Tuesday, January 14, 2014

Learnings from 2013

Here are a number of things related to programming I did in 2013:
  • Started creating a new wordpress theme for selfawarenessforchange.com -- my friend Frederic Labarthe's site. The work never progressed beyond a prototype of the home page. The only takeaway is that I used Twitter bootstrap for the first time and that was a very easy experience.
  • Did some freelancing with some friends in a php-based project. Added some tiny features but could not do everything the client wanted, and not on time either. I dissociated myself from the project pretty soon.
  • Tried some data visualisation hacking at a Hacks n' Hackers session.
  • Started some coursera courses and one udacity course -- none even halfway done.
  • Watched around 12 lectures by Brian Harvey of UCB which were part of the CS61A lectures of 2008. This was a fantastic experience and opened up my thinking process. The lectures are all available on youtube and I look forward to completing them.
  • Started an open-source project with some other folks, an attempt to reincarnate fossevents.in . This is in limbo right now since I don't know enough of Flask and the people who know are busy.
  • Resurrected the code of a product I wrote 9 years ago when I was in college. I could build the source code after some effort but it is not in a working state on Ubuntu (I wrote it on RedHat of that era). I need to update the code related to Xlib keyboard event handling.
  • Participated in a hackathon where an ambitious news mining and visualisation project was hatched over a day-and-a-half. I think this is the most promising project I've taken part in, mostly due to the technical prowess of others in the group.
Now that I wrote it down, it does seem a lot of work for doing on the side after giving time to work, personal life and repeated hopeless attempts at becoming a violinist! Nevertheless I see the year as a year of failed attempts and I want to pen down my key learnings:
  • I thought that since I had once coded a site alone in php, I could work in anything written in php! So I boldly tried to write wordpress themes and make progress on a huge legacy php codebase. Even if a language is 'easy' it doesn't mean it is easy to work with. Knowing a language and the underlying platform well is what makes work easy -- otherwise even Javascript can be difficult.
  • I was much inspired by the quotation 'Talk is cheap, show me the code'. Hence whenever I heard of a project, I started browsing its codebase on github! I think it is self-explanatory to mention that now I first read the documentation and then think about looking into the code of any project
  • Coming back from office and jumping into doing something else -- this is a sure way to burnout. Unless your mind and body are relaxed and ready to do some work you cannot do anything creative.
  • Trying to do multiple things apart from office work is futile. Only one thing can be done at most apart from office work -- this is what experience taught me.
  • Office work is what you get paid for and what you spend most of your energies in. Do not expect to do your side-activities at the same pace as your office work. It is not possible. Just keep on taking baby steps and that will be more than enough.
  • Unless you know the semantics of a language and its debugger -- don't start coding anything. Interpreted languages give an illusion of being easy since they don't complain so fast -- but that is a dangerous trap for getting lost in silly problems.
  • Try to read good articles and hear good talks. Articles in journals like Communications of the ACM or Dr Dobbs are really good and written by solid engineers or good experts. Blog posts popping up here and there may look attractive but there may not be much to learn from them.