Saturday, November 07, 2009

Eurotrip: Prologue.. with 20/20 hindsight

So as most of you know, I had been planning a Eurotrip earlier this year. Well.. I did it. Backpacked across western Europe.. had a crazy schedule. Covered 6 countries(1 city per country :)) in 15 days. Here's something for people who are planning to do so too but just couldn't get off their collective asses or think its too expensive or think its dangerous or don't know how to go about it.

Things I did right, and thing you SHOULD do too:
  • Get a good backpack. Can't stress this enough. You have to carry something equal to twice the size of your torso, about 15-20kg, on your back. You might have to walk a mile or two(unless you are rolling in money, in which case don't backpack). Get a good backpack.. I got a 65lt Osprey Waypoint.. worth every single penny.
  • If you are directionally retarded(for the lack of a better word), like I am, get a friend to tag along with you who isn't. Frankly, I need a GPS to walk to my restroom(that's bathroom for the non-American junta), so treading my way across the cobbled streetways of Prague was an unlikely possibility. My friend just used to look at the map and used to guide me to all the places like a local.
  • Buy a guidebook. There's no shame walking around with the fat book in a foreign place. I just used to mark the places we HAD to visit and we MIGHT visit, factor in the time to travel, and time allotted to the city, and use TSP to do the rest :)
  • Concentrate on soaking up the culture and the history, not just looking at buildings. Just go to all the small alleyways, drink the local wine, taste the local favourite dish in a bistro. Look for places that are not really close to a touristy place (like the restaurant right next to Eiffel tower or on the Old town square in Prague). Its fun talking to complete strangers in a different country.. the language barriers just fade away.
  • Surprise yourself. I'm not the artsy/emo sortta guy, try to analyze everything, so I was vary of visiting any museums. But boy was I wrong. Went to about 3-4 museums, took the audio tour in each one of them. It is one thing reading about it in history books and quite different experience altogether to really see them. You have no idea how human you feel after seeing/touching artifacts from 2000BC, paintings of Van Gough, Remembrandt and Da vinci, pages from the diary of Anne Frank ( I can go on and on about the things I saw and felt.. if you care to listen just call me and I'll eat you head off with my long philosophical rant about humanity and mankind in general). Bottom line, don't judge yourself.
  • Suck it up when need be. I'm a lacto ova vegetarian, that been said, I had meat in Europe. Not that I couldn't find Subway/Salad bars/Indian vegetarian restaurants in Europe.. I just didn't want a superficial view of the cities. As I said earlier, I wanted to soak up the local culture and custom. After all, what Eurotrip is complete without the German currywursts. :)
  • Relax when you need to. Backpacking is a hectic affair. If you are not a marathon runner, backpacking tires you out soon. Just kick back and call it a day early on.
  • If you are into photography, carry lots of memory card. I carried 10GBs in CF cards, filled about 8GB. Shoot some artsy good pictures, but when push comes to shove, shoot anything and everything. You are making memories here, not trying to sell prints. That being said, a non-photog friend helps. I used to study the composition, look at photogenic stuff and angles and then take the pics. The non-photog friend used to cry "photo please" at every damn place, so sometimes I used to shoot photos, begrudgingly, without properly composing the picture. Although irritated then, I'm thankful to him for pushing me take all those photos. Shot about 650 photos.
  • Check out craigslist and other local websites to find cheap accommodation. Some people let you crash on their couch or just rent a room for a night for pretty decent price. Hostels again are not that expensive. Avoid backpacking in summer.. just too many tourists in Europe during that time. I went in autumn.. just the right weather.. just the right crowd.
  • Any backpacker should know the importance of a towel (what? you haven't read hitchhiker's guide to the galaxy?.. what are you doing here). Please O please don't carry a thick towel, its hard to dry and gets stinky pretty soon.

Things I did wrong. Learn from my mistakes:
  • I booked accommodation and inter-country travel tickets just 3 weeks before the departure date (that too when I HAD to because I needed it for the shengen visa interview). Ideally you should always travel at night so you can sleep on the bus/train/plane and keep the days for sightseeing. Unfortunately we were cursed to travel during the day, which made our days shorter by 4 hours.
  • If you are a photographer, carry all your gear, all your lenses, even your big ass tripod, the backpack is gonna be heavy anyway, but atleast you wont crib about needing an extra 5mm of focal length to get the perfect shot, or about not having a tripod for capturing the eye popping nightlife in Europe (unless you like the shitty ISO 1600 pics of course).
  • Get a proper shoe. I had a relatively new Nike Air, but all the cushiony, airy, squeaky comfort goes for a toss when you are lugging 20kgs around and walking for miles at end. Within 2-3 days, your feet will conspire against each other to kill you. Research shoes before you get one for backpacking.
  • Get lots of socks, lots. Atleast get a pair for each day (or you can use the laundromats which are easily accessible from the hostels). Failure to comply to this advice might result in a "biohazard" symbol sutured on your forehead.
So what I did in Europe, i.e Paris,Zurich,Munich,Prague, Brussels, Brugge and Amsterdam, is a completely different blog post.. stay tuned in.

Monday, August 10, 2009

The Buildbot Experience..

I've had been pushing myself to submit a patch to buildbot and then write a post about it, but days,weeks and months have passed by and I haven't even read the source code (let alone writing some of my own).. well what can I say, I've been incredibly lazy (the word "busy" can be substituted here.. but that would be a lie). Let me spread some buildbot love rather than just be yet another leach.
Now what is buildbot? According to the website:
The BuildBot is a system to automate the compile/test cycle required by most software projects to validate code changes. By automatically rebuilding and testing the tree each time something has changed, build problems are pinpointed quickly, before other developers are inconvenienced by the failure. The guilty developer can be identified and harassed without human intervention.
It's a build/test automation system that can run on a variety of platforms. Well there are a variety of free and commercial apps out there which do the same. I chose it because it was relatively light weight and was written in python (an impressive list of clientèle was a factor too).

As the relatively small company (note "small" here just means employee strength) where I work in grew; software maintenance, integration and the task of porting the code to all the platforms and then testing them just became an incredibly arduous task. We already had a semi-agile system in place and were using version control, but it was just not enough. In a small firm, even a single dev day spent on anything other than coding/design is a day wasted (and we devs are known to be lazy and don't really like doing the same things again and again).

Our product is supported on many different platforms, ranging from the ancient(linux 2.2, mac 10.2, Sun Sparc 5.8 etc) to relatively new ones(freebsd7, macosx-universal, windows 2008 etc) totaling to about 13 different platform. Commercial systems were out of the question because none of them supported all the platforms that we had, so were any .NET based ones (not possible for *nix systems) and we preferred python based system over java because our test bed was completely in python and we just didn't think that adding another language to the mix would be a good idea in the longer run. Setting up buildbot on the newer systems was a breeze (just apt-get/yum/portage etc was good enough in most of the cases, a rare recompile on some others). The older systems and Windows were a bit messy (big surprise there!). Some of the systems didn't even have python (or had a really old version), let alone twistd (a buildbot dependency). After 3 days of hushed cursing, head banging and a lots of ugly hacks, I got buildbot to run on all of the *nix platforms. Windows kind of made me feel completely handicapped because once the install failed, I had absolutely no idea how to get around the situation. I ended up setting up a proxy Linux system for windows (credit for the idea goes to one of my colleagues), which identified itself as a windows machine and just did the needed compilation over ssh on Windows (using VS2008).

Once the crude system was setup, we started adding bells and whistles. Every svn update now triggers a build on all the 12 different platforms, sends emails to a group of people who want to be notified if something is broken and to the person who broke the code. Another process triggers a nightly builds which updates the code,does a clean build, run a set of core regression tests, creates a package(tagged with date and revision number) and posts the status on a pretty page. The status page (html and css) was also hacked to list the tests that failed on particular machines. It also uploads the package to a different repository which can then be used by the QA team. Later some more hacks were done to maintain just a small history of packages (nightly builds, not the production builds) and then some (idiosyncratic to the product)... Check out Google Chrome's buidbot page.. now imagine that for 12 different platforms!!.

We did get the obvious benefits:
  • no integration downtime.
  • no downtime to port the product to different OSes.
  • continuous integration made the development process more robust/agile.
There were some not-so-obvious benefits too:
  • Since creating a package on all the platforms just involved clicking a button on the web interface, debugging->packaging->testing cycle was made a lot faster as the QA didn't have to wait for developer to create the package (who would normally try to include all the fixes in a package before creating a package), which means faster feedback on the remaining issues/builds, which means a happy PM :)
  • Automating build across different platforms meant that all the platform specific hacks would have to be cleaned up, which meant a more elegant build process, which lead to faster build time and did point to some issues that were being overlooked.
  • The green color signals a "pass" on the buildbot status page. Surprisingly we(all the devs) find it rewarding to see a green on the status page with our names beneath it, I think I can safely say that our productivity has gone up and our favorite color is "buildbot green" :) .
The whole system works so well and has relieved me of so much of repetitive/boring work, that I was guilty of using it for free. And since I am a poor developer, all I could do was offer some CPU cycles on my home machine (did that for about 4-5 months, until the summer heat forced me to switch off my PC) and offer my help to write some code (which I'll get around to doing one of these days).

On a totally unrelated note, I'll be taking a trip to Europe (Paris, Zurich, Munich, Prague, Brussels, Brugge, Amsterdam), so drop me a line if you've been to any of these places and would like to recommend me something that I should not miss.

Saturday, March 21, 2009

Some Sci-fi love

Sci-fi and fantasy as a genre have few patrons, the rest however are non-appreciative, or just downright insulting.

I not only love the out worldly experience that can only be communicated by these genres, but also the profound depth and messages these deliver. Yes, it's not real and yes it can never happen, but when has that stopped it from being communicative of human values.

I'm making a case for sci-fi movies like The Matrix trilogy, The Watchmen and television shows like Battlestar Galactica. Let me tell you by saying that I'm a big.. I mean really big fan of these shows, so it really grind my gears when people just go and watch these for special effects or just dismiss them as "kids category". The beauty of these genres is that they are the only ones successful in mixing socially relevant messages with entertainment. Others don't even come close..

Today BattleStar Galactica aired its final episode and I was in tears (yes geeks do cry, you just need to know how to make them cry). On the cover it deals with a race of humans (preceding our own, but somewhat still futuristic) in conflict with cylons (androids, which are almost humans), but at it's crux it spotlights human nature, both its dark and bright side, and tries to stretch the morally grey area in the middle to include everyone of its audience. The show was carefully engineered to instill hate against the cylons into the audience, the show then had the "good guys" commit justifiable crimes against the cylons, like torturing/suicide bombing (socially relevant ones at present), which although as I said, were justifiable but unethical, thus making its audience a part of the show. Its shows like these that make you introspect and helps you discover yourself.

BSG presented me with same moral dilema as The Fountainhead, and hands down, has been the best thing I ever saw on the tube. If you can look past the FTL drives, the dilithium crystal, the mental projection of cylons, i.e. all the jargons that alienate some people (mostly non-geeks), the message conveyed is pretty strong, you just need an eye to spot it out. This message is ofcourse hidden, if it wasn't, it would be a documentary. At some level, sci-fi/fantasy movies are documentaries after you peel the onion. Plot in these movies/tv shows is so thick, that it almost pains me to find people talking about it at a totally superficial level.

Take Matrix: The Revolution, the last fight sequence, when Neo is walking amidst darkness, rain and hundreds of Smith copies, and fights one of them at the end. The fight ends with Neo fighting Agent Smith and ending the war between the man and the machines, but how many of you noticed what the director wanted you to see? The song in the background was ancient Vedic hymn "Asatoma Sadgamaya", which signifies the victory of good over evil, the multiple copies and the darkness signified multiple faces of evil in dark times and the song itself points to the fact that Neo had already won the war by making his choice and knew the outcome. The choice, that architect was advocating in most of second sequel. The movie worked on so many levels, and each time I see it, I discover a previously uncoverd hidden meaning in the movie.
Coming back to BSG, well, that is the only sci-fi piece I know of that married belief, faith and science. It talked about angels & daemons, about gods, about prophecy, while still being mostly a sci-fi show.This show made some startling plot twists by projecting one of its main protagonist as a real angel, while couple of others as some sort of agents of "God", who play major role in turn of events. It tried to perpetrate the existence of destiny, of hope, of human values.. kudos to the BSG team, when they could have just got about same TRP ratings, had they shown a nonsensical, visual effects loaded series.

Watchmen, is another such movie. I read the book about two years ago, and I must say that although I don't really like the casting (except Silk Spectre ofcourse), it conveys the real essence of the book (not what Harry Potter movies did to the books). The book is more detailed, of course, but movie comes quite close. It makes you see the world from the eyes of the demented comedian, the omniscient Dr Manhattan, the genius..yet human Veidt, the idealist Rorschach, the observer Night Owl. I really love how the actions of each superhero is justified by their portrayed viewpoints, and forces the reader/viewer to agree with writer.

Sci-fi has come a long way from "Attack of Mars" to BSG/Matrix, it deserves prime time... definitely more than the mind numbing reality shows and soaps. Isn't it time the kirks, spocks, jon shephards, adamas, starbucks,trips, gaetas,McCays etc got more attention than "gossip girl" or Simon Cowell?

Thursday, January 01, 2009

Happy New Year.. so whats the game plan??

2008 was an interesting year. Definitely less geekier ( which I sort of did not prefer.. but was ok). All the personal goals I set for myself were met with relative ease.. learned to swim, learned to drive, got a car, got more involved with the local meetup groups (hiking and photography). Due to apparent lack of time, I had lesser time to update this blog, I however have gotten active on twitter.
I didn't believe in New Year resolutions until last year, but hey... if I can follow a deadline at work, I can definitely set a deadline for myself too right.? I just shouldn't be vague and should put concise goals (like it's done monthly at Mailshell). So here they are:
Conservative goals (Must be done):
  •  Read 5 books.
  •  Make two marketable arduino prototypes.
  •  Practice atleast 1 topcoder challenge each week.
  •  Cook atleast twice each week.
  •  Earn atleast $5000 in the stock market.
  •  Release ver 1.0 of my personal project.
  •  1 Personal goal (undisclosed)
  •  1 Professional goal (undisclosed)
Aggressive goals (Should be done, but .. ):
  • Exercise atleast once a week (yeah right..)
  • Have a new blog template... maybe move it from blogger to my own website.
  • Limit monthly spending to $X, where X < Salary. It is currently true, but I want to smoothen the spikes.
  • Drive carefully.
  • Write atleast one blog entry per month.
  • Attend atleast 1 LUG meets in two months.
  • Attend Entrepreneur meetup every month. The amount of info you get about new technologies and the number of like minded people you meet there is amazing.
  • Check out atleast two noisebridge events in SF.
  • Atleast one hike every two months.
I know it seems like a lot even for one whole year, but the list is concise, either it will be done or it won't be done. I just hope that am better at time management this year and meet my goals. I am a big believer of Pavlovian theory, so to make sure I get these things done, I'm gonna gift myself something everytime I hit a schedule (another concept borrowed from Mailshell's work culture). Of course, awards for weekly/monthly goals would be cashed in at the end of the year (hmm.. I'll buy something really *nice*)
Anyhoo.. hope the new year brings new joy in your life and I do hope that you achieve all the goals you set for yourself. Have a *groovy* new year.. WOOHOO!!