Tuesday, September 04, 2007

The Art of Presentation

This time I thought of writing something about how a presentation should be. This DOESN'T mean that I am good in presentation skills. I have done ONLY ONE presentation so far and it was not a big success. But definitely increased my confidence that I too can do presentations.

This blog post is about how I think a presentation should be. The presentation I mention here is more related in terms of teaching something new to the audience. Doesn't involve annual reporting, sales and those kind of things.

First and foremost is to mention "Who will be benefited with this session". If the topic is not related to them, people like me will obviously sleep :)

Never make it a presentation. It should be a discussion. Presentation, I feel, is one way communication. But since the topic is about presentation, I use the same term below.

Lets assume that the presentation is about a technology or tool. Every tool/technology is introduced definitely to solve a specific problem. Otherwise there is no need for it. Give an overall picture of the problem that this technology/tool is intended to solve. Make statements like "This is where this technology/tool can be used."

The presenter should find out some sample problems that the audience can face, so that, the listener can get familiarity with the problem. Better if the listener is asked to state a similar problem and the presenter use it in that session or If possible explain the problem like a story ( I don't know anybody who hate listening to stories. Except excuses. Sometimes excuses will also be interesting).

The important thing is to make the session interactive or keeping the listeners awake. Very tough task man. :) Place the listener as the person who has to solve the problem. Ask questions like "What will you do if you have to solve the problem?". Get their inputs. Find out the loop holes. Explain them that "This is the problem with your approach". I like to bring the solution from the listener's mouth. This will give some comfort feeling to the listener that "Cool man. I too can solve problems". This is one of the most important factors in making the presentation a successful one.

If the problem stated is entirely new, tell the solution with some gaps to be filled up. Like an overview of the solution. And use the above mentioned approach to fill up the blanks.

Prepare slides/ppts for this kind of approach. So that even after a long time after the presentation, when a persons looks at the slides he should be able to make some sense out of it. Assuming that he remembers something out of this session. I have a weak memory. So tough for me to remember. Success lies there if I could remember ;) )

Never ever have essays in the slides.(Most of the people know this)

Doubts should be cleared immediately. This will stretch the presentation. But with a doubt, I cannot be fully involved.

This is PURELY my personal opinion. I think these are the most important steps as per my knowledge. Once I get more experience on this, I hope to write more.

I'll try to follow these ideas when I get an opportunity to do a presentation. Lets see what effect it has :)

Thursday, July 05, 2007

Memories from Aztecsoft :)

Today is my last working day at Aztecsoft. Thought of sharing some of my sweet memories from Aztecsoft. The place where I took my first step in my career as a "Project Trainee".

First few days, after the induction programs we, around 20-25 people, were given training (for 1 month) on Java. It was much of a college environment that a software company. :) Enjoyed like anything. During the last week of training, we were asked to do a project. It was about an "Online Treasure Hunt". We were asked to keep it a secret. Nobody outside the room should know what we are doing. It was fun. The most unforgettable thing is "OnDemandAPI". :)) This is the name of the class, that connects to the database and retrieve values. Whenever we need some information from Database, we will ask the people implementing this, "Hei, can you create a method called this that takes these as parameters and returns this?" We didn't think about whether a similar method exists or not. Just do it.
Nice experience. Now it sounds funny.

The next interesting event is my allocation to a project. All my batch mates were getting allocated to different projects. Very few people were left. "Mera number kab aayega" (When is my turn) kind of expectation.

Then WE THREE were called. Who are we??

Rohit
(My linux guru), Siva and Mani (me). In the training period, we know each other. Thatz all. Our Manager (Ramesh) called us. My inspiration. I never expected a manager to be like him. He is very talented, polite and always provides advices whenever we needed it. Our meeting was to give an overview of what we'll be doing.

We entered his cabin. There was one more person with him. Prabin. Another inspiration. He will always tell us, you guys got a very good opportunity which others wont get. Make use of this. You have to do this, do that. Sometimes, he will sit with us, do night outs before releases. These two people did quite a bit of work in shaping us up.

We had our introductions. Then Ramesh told us that we'll be working on PostgreSQL. This is the first time I heard that word POSTGRESQL. I didn't know whether i heard it correctly as it didn't meant anything for me. Then he said, "This world might not be as sexy as the java world. But you can learn a lot". The same words he used. After this meeting, I came out and asked Rohit and he told me what PostgreSQL is.

Another event is Allocation of machines. Rohit is a bit senior to us as he did his academic project there itself. Since he is passionate on Linux,
he told Ramesh that we all need complete Linux boxes with no windows in it. He wanted us to explore the power of Linux. Siva too had some hands on experience on a Linux desktop. I never had. I was scolding Rohit like anything. The only commands I knew, when I got a machine, were, "ls", "pwd", "cd" and nothing else. I didn't even know how to open a terminal to execute these commands. :)) I was very embarrassed. I will always ask Siva for commands and how to open this and that. Since Rohit is the the main cause for all my sufferings, I avoided asking him. Later I thought of taking revenge on Rohit and bugged him for all "how to do". If he got fed up with my questions, I'll tell him, "I could have been well with a windows box. You selected linux. Teach me." We were asked to sit a separate cabin. Only we three. Sometimes, Siva will play a single song for a whole day. Me and Rohit will get sick of that song and scold him like anything. But he wont listen to us. Will continue. :)

As days passed, I got to know about Rohit and realized that he is really a nice person and he is now one of the best friends I have. I'll frequently start arguments (a trick to learn more about linux) with him saying Windows is good. You cannot do this in Linux. Then he will tell me, this is how to do that in linux. Now I feel more comfortable in Linux than Windows.

We three became good friends. Sometimes, 2 of us will form a team and start ragging the other. We'll behave like elementary school boys. Literally pulling the other's chairs and falling down on the floor, shouting... People have asked us many times whether we three are school/college mates. We'll tell them that "No... We three are from different places. We met only in Aztec." Really a wonderful period in my life.

Siva was not much into java. He was doing some work in C, and me and Rohit were working in Java. Days passed. Our team expanded. We got a new Lead. Anoop. He has given us some work to do. Which we couldn't finish. We could not finish another work that was given before he was introduced to us. So we thought, if we didn't do this, he will think that we people are not good. We are not doing anything properly. So me and Rohit decided to do a nightout and finished the work. Then next day Anoop came and he appreciated us for completing it. As we came to know more about Anoop, we felt that we had wrong assumptions on him. (We should not have done that night out ;)) He is very very friendly. He never talked to us like a Lead. He never maintained a distance between us. Always talk as a friend. He is one of the persons who will frequently give his comments on me. "You have this good quality. Improve it. These are your -ve points. You have to do this to overcome that". Really a nice person.

One person I have to mention here is, Vaidhy. I have already mentioned his name in one of my blogs. He is a geek. Whatever technical problems you give him, he will come up with a simple working solution. He is another role model of mine.

Then I got a project in which we had to work at the client location. While doing this project I got another good friend. Sumit. Nice person. He is senior to me. Always we'll have discussions like "this is what we should do to solve this problem". We have learned a looooot from each other. The winner is obviously me (haa haa) :). I have learned a lot more from him than he did from me. Not only technical stuff but also other things like how to interact with clients, and other personal qualities like the way we talk and do things.

We were accompanied with one more girl, Veena. She is very sincere in her work. That building had 8 floors. She will never use elevators to go between the floors until and unless any of the employees from the client location accompanies. :) Me and Sumit never used stairs :). Anoop was leading our team. He will tell us "Learn from her. You lazy guys". Work(This word is hidden from our present and future managers) / Walk like her.

After a few other projects, comes my last project. We were 5 people in this project. Me, Sumit, Rajasekar, Daya and Ashwini.
Rajasekar is the guy I interviewed and selected. But when selecting, I didn't had much hopes on him. I thought he wont work very hard. But on working with him for a couple of projects, I realized I have selected a right person.
This is the first project in which we are working with Daya and Ashwini. These two girls are really good and they work like anything.

Me and Sumit took the advantage of being seniors. We will find architects, talk to them, design and distribute the work. (I am honest. We DID take up some important modules of the project and finished those modules. I am making it clear that we WORKED). We learned a lot in this project.

Sweet memories... Will definitely miss Aztec.

Sunday, May 06, 2007

Microsoft Invents Split Screen PC

Again got this from slashdot. One of the nice features. Sometimes when working with my friends (parallel programming), I'll be thinking what if we had two keyboards connected to a machine. I tried it once :), connecting two keyboards on both linux and windows boxes. Both OS accepted inputs from both the keyboards simultaneously. Thought about what if they accepted inputs for different applications. ie. Each application receiving inputs from each keyboard. :)

Now Microsoft has come up with a software that splits a computer screen in two halves, each side with its own operating system, desktop, applications, cursor and keyboard. Really a cool software from M$.

Wednesday, February 21, 2007


Open Source Replacing M$???

Im back...

Again I got this information from Slashdot. Previously Mono had support for .NET platforms. Now they have support for VB WITHOUT any code changes. For every software we use in Windows, we have a equivalent (sometimes even better :)) FREE open source software.

IE - Firefox,Mozilla......
Office - Open Office
Outlook (Express) - KMail, Evolution.....
Media Player - xine

U name it... there will be an equivalent open source software.

So what does M$ going to do, to keep it unique in market??? Lets C...

Saturday, February 03, 2007

After a loooooooong time :)

Recently I installed Adobe Reader 7.0.8 on my Fedora 6. There is a known bug with this release of Adobe Reader. "expr: syntax error". As usual, I googled for the solution and fixed it by changing a couple of lines. But still, adobe reader didn't open. Whenever i start, it terminated. No error messages. No windows :(

Later I came across this link. It instructed me to export a variable. Habbaaadaaaa.... Atlast, it is working now.

When i started my career 2 yrs back, before each release, my Manager always ask the testers to do some smoke test and stop us from touching the code (even adding comments). At those times, i felt like, why he is doing this!!! Now I understand the complete reason. No bug should creep while doing even a minor change. Especially, when a product is released to thousands/millions of people, we should take some extra care. Otherwise, it will affect the customer b'coz, he has to spend some sleepless nights trying to fix, and this in turn affects the manufacturer.

Monday, December 11, 2006

My Experiments with Mandriva (Not with Truth :) )

Lately (2 days back) I got the Mandriva DVD from one of my friend. I was fascinated with the 3D effects it provides and installed in my machine. I faced a lot of issues.



1) Gaim - I was chatting with my friend. In the middle, i opened another window and started reading something. After a couple of minutes, when i saw the chat window a whole bunch of messages were waiting for me. He was about to scold me. I was NOT NOTIFIED about any new messages. Felt really bad :(



2) The X server crashes when i try to login for the second time. Seems like X server is not yet stable... im not sure. When I switch between the virtual consoles also, sometimes it crashes.



3) I installed netbeans. After installation when i attempted to start it, i could see only the netbeans window without any contents inside it. No menus, nothing. The reason being, AIGLX conflicts with netbeans. When I disabled the 3D effects, it launched fine.



4) I dont think Mandriva has to advertise that their linux is Free throughout from the booting screen to login screen, KDE start menu. It is really annoying...

Thursday, November 09, 2006

Firefox trusts Google in Linux a lot?????

Most of you might have known the feature provided by Google. Using your id you can save your search and use other services offered by Google. I'll do it regularly. I am using a dual boot (FC5, XP) machine. I was logged into my Google account using Firefox on my linux. Without signing out, I closed my browser and rebooted to Windows. When I logged in to linux again and opened Firefox, I saw that im logged in to my Google account. I could not believe it. I tried it multiple times. It was happening repeatedly. But this does not happen in Windows.

Seems like the session information is serialized by firefox in linux and it is used subsequently. This happens only with Google and not with any other sites like Yahoo, Hotmail....

Can anybody explain why??

Wednesday, November 08, 2006

Export Variables from Shell scripts

This time, I got a script that sets some environment variables. They had suggested to run as . script . I noticed it, but I didn't cared about that and ran it in the traditional way as ./script . When I echoed the variable, it was not displayed. Then I tried as they have mentioned (Obviously after meddling with the scripts :)). Wow, I got the values. But how????? I googled and then found out that

"When we run a script using ./script it creates a separate shell and then run it. So, since the variable is exported in that shell, it is not available to the parent shell after completion.

When we run a script using . script it runs the script in the same shell which makes the variables available even after the completion of the script."


In Tamil, we have a saying "Katradhu kai mann alavu. Kallaadhadhu ulahalavu". Meaning, Whatever you know is the amount of sand you can have in your hand. Whatever you dont know is as huge as the world. :)

Saturday, October 14, 2006

More on VIM

I was bored and just browsing through del.icio.us. And got a link saying that VIM is easy than you think. Got interested and Wanted to know what they are telling about vim. They said that VIM 7.0 supports tabs. Here is the link

Browsers, editors in linux and now???? vim.
Everybody is after tabs... :) For people like me, who don't like to see the desktop cluttered with windows, like in some operating systems, it will be gud to use.

And will those OS introduce tab based explorers for browsing the local file systems in future????

Wednesday, October 11, 2006

Power/Weakness (???) of Reflection in Java

Blogging after a loooooooooooooooooong time. :)

I got this question and answer from somebody else and thought of sharing:

public class test{
  private String id;
    public String getId() {
      return id;
    }
}


In this class, how to set value to id?

The answer is "Reflection"

Use the following code:

test obj = new test();
Field myfields[] = test.class.getDeclaredFields();
for (int i = 0; i < myfields.length; ++i) {
  if ("id".equals(myfields[i].getName())) {
    Field f = myfields[i];
    //This is important , otherwise u get a access denied exception
    f.setAccessible(true);
    f.set(obj,"I modified it");
  }
}


Seems like this is a security issue in Java. I read that if we used SecurityManager, this can be avoided. ( Have to learn about SecurityManager :) )

Thursday, July 13, 2006

Finding Symbolic Links in Java

This time, I had to list all the files in my PC using Java. I wrote a java program and while running it, I got a error saying, "too many levels of symbolic links". I searched in Google, and found that, I can eliminate the symbolic links using the following code.

File system listing shows (b.txt -> a.txt).

File f = new File("b.txt");
System.out.println("Canonical : "+f.getCanonicalPath());
System.out.println("Absolute : "+f.getAbsolutePath());

Output :
Canonical : a.txt
Absolute : b.txt

Here, if both the path are not same, then the file pointed by Absolute path is a link or may be present inside a folder which is a link to another.

This didn't told me whether a file is sym link or not. coz, if the file is present inside a directory which is a link to another, then I this code will say that the file is a sym link.
ie. if dirB is a link to dirA and the file is present in dirA, then this code will tell me that the file is a sym link, which is not true.

But I will know that, there is a path without any sym links to access this file.

Sunday, July 02, 2006

Devices can generate smells

I was going through Slashdot and I found that devices can be used to generate smells. I got interested and went to the following link. It explained me more. Some time back, My friend has asked me for some object. I just jokingly told him that I'll send him thru attachment of an e-mail. He said that, there are things which are tangible and untangible. But after seeing this, I feel that that the day by which we can send objects through emails is not tooooooooooooo far... :) :)

Tuesday, June 27, 2006

Adobe Reader can READ

This time I got a mail saying the above subject. I can't believe it. I tried and it worked...
But it is only for windows. :(

Short cut keys for making Adobe to Read a pdf file for you:

Ctrl+shift+b - to hear the entire Document
Ctrl+shift+v - to hear the page
Ctrl+shift+c - to resume
Ctrl+shift+e - to stop

There are lot of ways to make people lazy... This is one among them...
Just kidding. :) :)

Joining lines in sed

I copied some text from a web page. I wanted to print the doc. It was pre aligned. When I copied it to my word processor, it was not aligned properly and it ate up lot of space. I wanted to combine the lines to a single paragraph. Since Im not much familier with the word processor, I decided to use sed. After googling, I found

sed -e :a -e '$!N;s/\n\([a-zA-Z]\)/\1/;ta' -e 'P;D'

Done...

Friday, May 05, 2006

CAT or REDIRECT

Today I had a strange problem. Let me explain...

I want to read a property file and assign values to variables.
My code was like cat prop_file | while read line ; do value=$line; done
print $value


Guess the output I got !!!!
Output: (Nothing) :(

I and my collegue fought for a looooooooooooooooooooooooong time. Then he asked me to use as follows. Modify the code as:
while read line ; do value=$line; done
print $value


and asked it to run as ./myfile.sh prop_file
Hurraaaaaaaaaaaaaaaaaaaaayyyyyyyyyyy!!!!!!!!!!!!!!
I got the output.

Reason: After some trials he told me that the reason might be: The cat might spawn a new shell and execute the entire while loop inside the shell. So the value might not persist after the end of while.

And this entry is dedicated to Vaidhy (my collegue) ... :) Thanks Vaidhy...

Thursday, March 23, 2006

Recording in VIM

Today I had to do something like moving a text following a pattern to a next line.

Eg: sometext; othertext

I didn't wanted to go through all the lines individually and move it
to next line. At that time, I heard something called as "recording"
from one of my friends. As per that I did the following and I felt in
very deeeeeeeeeeeeeeeeeep love with VIM.

  • Entered recording mode by pressing "q" followed by a letter say "a"
  • Then searched for ";" using "/" and then went to insert mode
  • Inserted a new line and then moved down to next line.
  • Pressed "q" again to quit recording mode.
  • Then pressed "@a" and it replaced the first occurance of the pattern to next line.
  • To repeat 10 times, I used "10@a"
Once we are in recording mode, vim stores all the key strokes with the name we give. Then replays all the actions when we use "@". Similar to "play" in a tape recorder.
The number (10) indicates the number of times to replay.

Really a nice feature of VIM...

Thursday, February 23, 2006

Tips

From today, I like to add new some useful tips that I came across in "Tips" title.

  • Check Folder size in Unix thru console : du -h
  • Check disk free space in Unix thru console : df -h
  • List all open ports : nmap -sT < host name >
  • Read file contents through bash : cat file.lst |while read line; do echo "${line}"; done
  • We know that top gives the information about the CPU, MEMORY usage of a process in a Linux Box. For Solaris, we have prstat command. This gives the similar information.
  • Setting priority for a process in Linux : nice -n -20 <command>. Starts the "command" with highest priority. 19 is the lowest priority.
  • Setting priority for a running process : renice <priority> -p <pid>
  • Listing directory structure in tree format (I stole it from a website ;) ) : ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'

List will grow as and when I learn new things... :)


Monday, January 02, 2006

Creating Shared Libraries using GCC

I have used a lot of shared libraries. Then thought of building one with gcc. Before building, I thought that it will be difficult thing to do. After creating one, I felt like "Is that all we have to do ?????". I followed the steps:
  • Created a function in a file (myshared.c) without a main() function.

  • Compiled it with -enable-shared option and renamed to libmyshared.so. Thatz all. I have created a shared library.

  • For using it, I updated the LD_LIBRARY_PATH to the location where the .so is present. The other option is to run ldconfig.

  • To use it, I used gcc -lmyshared myfile.c.
    • -l option searches for libmyshared.so in the library path.
    • myfile.c is the one that uses the function that I have created in the myshared.c
  • Done.....

Thursday, November 24, 2005

Cache-Busting with Javascript

Got an opportunity to work with Javascript. On reading, got this information.

What it is?

As we all know, when we are browsing the pages fetched by the browser will be stored in the browser's cache. If we want to get the page from the server and not from the cache, using Javascript, it is very simple. Just add a random key-value pair to the URL. This should be unique for each request.

How to do?
Set your request URL as :
URL +"?rand=" + (Math.random() * 99999999);

How it works?

I assume that, the browser MAY maintain a key-value pair (Something like a HashTable), that contains the "URL of the requested page" as the key and the "contents of the page" as its value. So when a request is made, it first checks its cache and if it finds a page it returns it, else fetches from the server. In our case, since random() generates different values for each call, the browser will assume that this is a new request for a page and fetches it from the server. This in no way affect the server. Since the server may not know about the additional parameter, it will discard the variable.

Wednesday, November 09, 2005

printf(_"string") - What does that "_" mean?

Most of us might have encountered a code like the one mentioned above. What does this mean? Goooogling gave me its meaning.

Actually, a macro by name _(str) will be defined as follows:
#define _(str) gettext(str)

What gettext() does?

The gettext function translates the "str" from the natural language message into the user's language by looking up the translation in a message catalog.
From this, what I understand is, suppose I am using Latin language in my machine. And the string "str" is in English. So whenever printing, the gettext() translates English to Latin gives it to printf(). So I'll be seeing the messages in Latin.

Hope Microsoft also uses a similar kind of macro "_T" for displaying strings in multi-byte format.