Thursday, March 24, 2011

My programming history

The following is an autobiography of events relating to my programming knowledge. My programming adventure started at the age of 14 with VB and has transformed into a way of life at the age of 21 with c, python and ruby.

"VB was so cool":
When I started my first year of engineering, I already had a growing list of half-completed Visual Basic projects(about 15 odd experiments). VB was in my school syllabus and I picked up an interest in programming because of the ease with which magic can be created in few mouse clicks. Sadly I lost a few projects when my harddrive failed(I had no idea what the word opensource meant at that time).

"TurboC was a good IDE":
It was only near the end of first year I got into c(turboc to be accurate) programming. I didn't know, when I started, that TurboC and C programmming are different things. I remember solving my first c puzzle in under 5 minutes, swapping two variables without using a third variable. Data structures lab and System software lab helped me learn TurboC and its debugger. I used to create my own versions of college given programs and have version controlled few of them.

"Java was a real programming language":
I spent most of my second year loving the beautiful object-oriented world of Java. I remember modeling chess game elements in Java and re-using some of the code to solve N-Queen's problem. I learnt c#.NET through NIIT despite my recently found love towards Open-source world of Ubuntu. I started believing that Java is more powerful than c(I regret it now).

"I am a proud pythonista":
I met yuvipanda in my third year and it is amazing how much I have changed since then. It was almost the same time when the icell was formed. Since my college's website was awful I decided to take it up as an icell project. When I asked yuvi for the way forward, he suggested me to use django. Thus I became aquainted with python and since I am comfortable at learning through examples, I forked the code and started looking at the code. I used BRI to develop most of my web development skills. I contributed to BRI by implementing A* routing, little changes in UI, fixing bugs and server maintenance stuff.
Yuvipanda encouraged me to attend the unconferences happening too often in Chennai. Attending the unconferences brought me more contacts than I had saved all my school days. Our friendship grew steadily and I got busier and busier doing more "off-academic learning".

"Ruby on Rails 3 is a nice pet":
After having an year of django experience, I wanted to learn RoR way of doing things. I joined a startup as an intern and learnt rails programming by developing an in-house project. I should remind myself to continue with rails 3 in the near future.

"I have great respect for gcc":
I regret that I should've started with gcc instead of turboc. The difference dawned on me when I started building source of software in Ubuntu. Using Ubuntu was a learning experience every day. I was exploring TORCS and Flightgear when I realised that the final year projects need to be decided very soon. I proposed to improve TORCS by implementing machine learning. The funny thing was TORCS source code is in C++, the language which I never tried learning. Having completed the project's stated objectives early, I helped one of my classmate with his project(PCICV) redone in C using ffmpeg library and a GTK+ frontend. This drill, though ate through my busy schedule, gave me opportunity to learn GNUMake and other gcc friendly programming practises.

PS: Motivation for this post is two-fold. First is that it has been long since I updated my blog and felt I should register the memories before the harddisk becomes full. Another reason to do it today is that I am going to apply for GSoC this time and need to keep an updated version of my programming history to share with my would-be mentors.