Saturday, June 9, 2012

Updates - June 2012

I rejected an offer from Microsoft and decided to ponder about the questions in complexity theory instead. I got married on June 23, 2011 to Rohini (I managed to freak out a lot of people by saying that I'm a student.). In November, we rented a small house in Alwarthirunagar, Chennai. Rohini is now employed as a teacher in a school nearby. Life is cool in Chennai except for the weather which is really hot. I've finished all my course requirements for a PhD. Next semester, I'm going to attend a free elective on Karnatic music.

Thursday, December 9, 2010

Workspace Switcher Add-on - The End

I tried out Firefox 4 beta. It has an inbuilt feature for grouping tabs. So that removes the necessity for my add-on. Only a matter of time before we need a feature to group "groups of tabs". :-)

Tuesday, December 7, 2010

Updates - 7/12/2010

I have been quite busy with my M.Tech project and placement. I have realized that everyone who read my posts does not read my profile and other garbage that I used to put up at the bottom of my page (at least not every time). So I've removed them. I've also cleaned up the sidebar section to make it more simplistic and clean. That way you get to read my pages quicker than ever (feed readers excuse). Some technologies I recently peeked into are:-
  • HTML5 - Tries to standardize video on web (flash is not a standard), Input forms for email, Animation, Cookies (I know html5 guys have given it a different name, but technically it is just cookies).
  • Clojure - Finally, a Lisp-ish language that could become immensely popular. It is designed with concurrency in mind. It allows the developer to catch concurrency issues earlier in the life cycle. Simply put, while other programming languages allow thread-unsafe code to execute and let the programmer figure out when race conditions occur, Clojure detects such code and says "I can't allow you to do that".
  • Google Chrome add-ons are written using HTML, CSS, and JavaScript. This is much cleaner than Firefox add-ons which uses XUL (a non-standard).
  • An arsenic-based life form have been discovered by NASA!
And finally, I got an offer from Microsoft, Hyderabad.

Monday, November 1, 2010

Sending binary files and large attachments over gmail

Here are some handy tools which can be used to send attachments that Gmail will disallow.

The trick for sending binary files is to encode them into ASCII using a program called . Suppose you have a binary file foo that you want to send over Gmail. Then do this

$ uuencode foo foo >foo.uue

The foo.uue contains plain ASCII and can be send over Gmail. The recipient can decode the file using uudecode.

$ uudecode foo.uue

But what is the file is too large (>25MB is too large for gmail). Use the split command to split the file into multiple chunks.

$ split -b 24m foo.uue foo.uue # splits into foo.uueaa, foo.uueab..

The recipient can reassemble using plain-old cat

$ cat foo.uue[a-z][a-z] > foo.uue

and decode using uudecode.

Monday, May 31, 2010

Workspace switcher (wss) updates

Workspace switcher add-on was accepted sometime back into official add-on repository. Please try it out.. go to add-on page

Sunday, January 10, 2010

Firefox add-on

I have been working on a Firefox extension which will provide multiple workspaces within a single window.

You can find the source repository here.

To download version 0.2 Right click > Save link as here.

Note that version 0.2 supports only 2 workspaces. If you're unhappy with that try Version 0.3rc1 is available here.

I have tried 0.3rc1 on Firefox version 3.0.6. Version 0.2 is known to work in 3.0.6 and 3.5.6 (I hope it implies that it will work in all intermediate releases).

If you are interested you are welcome to test/enhance the extension. For any bug reports/queries/suggestions contact me.

A TODO list should be up shortly.

Sunday, November 15, 2009

Ingredients to be a successful software engineer

Ok, the title is a bit exaggerated. But this is not a post which gives the resume list "hardworking, willing to learn new things..blah blah". These are my views on what it takes to be successful (read make a lot of money) in the services industry.

50% Luck
30% Management skills
10% Mental strength
5% more luck
5% Technical skills

Now I know that all you geeks will be raising your eyebrows after seeing the last item on the list. Frankly, software industry is not the place for you, go and do research, don't waste your Grey matter.


Believe it or not, you will surely need a lot of luck even to survive, let alone be successful. You will understand this once you get to know about how projects come into existence.

First of all, some top-level management guys have to find out something that people need (or atleast think that there is something that people need). After that there will be some 20 or so companies fighting it out to get hold of that project (or part of that project). Usually this is decided by doing a small prototype of the actual thing in about 1 month. This prototype would be done by a very small team, only about 1/10th of original.

Now you can imagine that most of them would show up after one month with almost the same thing. Now the guys at client side have to determine which one of them is best. Since most of them turn out to be almost the same, the selection can be as random as throwing a dice. It will depend even on they had for breakfast that morning.

So finally your company gets the project and starts working on it. The team gets expanded by a factor of 10, managers fly-in from everywhere and take charge, schedules are prepared and.. kick-off...

Management skills

Now that you have finally started working on the project you have to ensure that you are in good terms with your colleagues (not that difficult), managers (Moderately difficult), and HRs (very difficult).

If you were in the team which was doing the prototype, then you are going to get lots of requests to do other people's work. If you say "Yes to all", then you will be one of those who gets stuck at office and burn midnight oil. If you say "No to all", then you are at the risk of pissing off some of your colleagues. Unfortunately, the aforementioned two responses are the most popular for a programmer. I wonder when we'll learn to say "Yes or No appropriately" instead of a "Yes to all" or "No to all".

Now assuming that you were not part of the team initially. Then you have to get others to talk so that you could learn about the project and start being useful to the course. If you don't, you better be good at pretending (and convincing) that you are really important for the project, which again is MBAish skills.

Mental strength

How would you respond when customer wants a code clean-up and your auto-indenting tool doesn't work as expected, or the hardware doesn't work according to the spec and it takes two days to find out. These are exactly the kind of nuisances that you face while being a software engineer. Lets face it, nobody is going to do all the dirty work for you, sometimes you have to dig deep and do all that dirty stuff (Fixing makefiles, copy-pasting poorly written code...) to survive in the industry.

Technical skills

After all the dirty stuff, some technical stuff has to be done to make the customer happy. And it is the 10% you are actually going to enjoy.

I'm not claiming that the situation is exactly the same everywhere. But with my experience and what I hear from friends, it's pretty much the same.