Wednesday, February 07, 2007

open source and deployment

I apologize in advance for those of you who don't particularly care to read any code.

But one of the things I'm going to try to do while working on my startup is to post as many code snippets as possible.

Why? Because I'm a believer in open source. My startup is not focussed around building great deployment tools. By posting my code, I'm helping other people who also need to solve similar issues. At the same time, there's a good chance that someone smarter than me will read this and tell me a much simpler or more elegant way of achieving the same result.

If it starts taking up too much of my time, I might post less stuff. If I start to see value in posting code, I might try to do more of it. Either way, I'm running as fast as I can to build an amazing product.

The following script should help me to write common config files and test them out on my mac first and then deploy them with no changes. See the usage function for more info.

Oh - and I'm still a newbie ruby programmer. So if you have code suggestions, or if there's a tool that already does what this does, then let me know. I have no qualms about throwing away my code and using someone else's. Less code = less bugs.


#!/usr/bin/env ruby
require 'yaml'

def usage( msg )
STDERR.puts msg
STDERR.puts <<EOF

USAGE
generate <config_file> <stage> files..

DESCRIPTION
Given the following config.yml:
--
test:
base: path1
user: name1
prod:
base: path2
user: name2
--
and a lighttpd.conf:

--
server.username = "$user$"
server.document-root = "$base$/public_html"
--

% generate config.yml test lighttpd.conf
will create the file lighttpd.conf.generated which looks like:

--
server.username = "name1"
server.document-root = "path1/public_html"
--

EOF
exit
end

usage() if( ARGV.size < 3 )

config_file = ARGV.shift
stage = ARGV.shift

usage( "config file #{config_file} not found. " ) unless File.exists?( config_file )

all_config = YAML.load_file( config_file )

unless( all_config.has_key?( stage ) )
usage("config file #{config_file} doesn't specify stage '#{stage}'.")
end

config = all_config[stage]

# build up the regexp to match all identifiers:
regexp_string = '('
config.each_key { |id|
regexp_string += '\$' + id + '\$|'
}
regexp_string.chop!
regexp_string += ')'
matcher = Regexp.new( regexp_string )


# Iterate through each file
ARGV.each { |filename|
unless( File.exists?( filename ) )
STDERR.puts "file '#{filename}' not found. continuing"
next
end
g_filename = filename + '.generated'
if( File.exists?( g_filename ) )
# TODO: move old file out of the way instead..
STDERR.puts "file '#{g_filename}' exists. OVERWRITING!"
end

generated = File.new( g_filename, "w" )
# check each line
File.open(filename).each_line{ |line|
# replace each instance of a token
line.gsub!( matcher ) { |match|
id = match[1..(match.size - 2)]
# with the value specified in the config file
config[id]
}
generated.puts( line )
}
}

Monday, February 05, 2007

Stepping over the edge.

After five years (well, technically about four years, eleven months, and change), I'm leaving amazon.com. It's been a pretty awesome time, and I've learnt a lot from some really smart and passionate people.

But sometimes, it's just time to move on. In my case, I'm stepping off the cliff of getting a paycheck to living on my savings and attempting to create something meaningful and with monetary value. I'm starting a company.

It's scary thinking about it.

Stay tuned here for more info, if you so desire.

-Hemant.

Update: I suppose, technically, the title should read stepped over the edge. I can feel the wind rushing by.

Thursday, February 01, 2007

Growing Up!

A few weeks ago I got the first DVD in the Up series, 7 Up!

The series is a set of documentaries, filmed every 7 years starting 1964, chronicling a bunch of British children from different backgrounds.

7-Up was funny, interesting, and boring at the same time. The kids were super cute, and their differences (most notably along socio-economic lines) were stark. At the same time, it was a little boring to watch the whole thing.

Yesterday I watched 21-Up (they skipped 14 apparently) and that was a whole lot of fun. It was amazing to see how the 7-year-olds had turned out 14 years later. And 21 wasn't so long ago that I don't remember what it's like! :)

The wonderful thing is to be able to see myself in many of the kids chronicled; and to try to remember back to when I was seven and fourteen and twenty-one and what my views were on life, politics, society, sex, class, opportunities, marriage, family, ... (the list is long).

I'm really excited to see the rest of the DVDs in the series. It goes all the way up to 49 Up, which was released in 2005.

Highly recommended viewing.

Sunday, January 21, 2007

playing with ruby

It's been a while since I played with ruby.

I have a Subversion repository that contains stupid stuff like my .emacs file, and then I have some personal wiki's and blogs that use files or mysql dbs under the covers.

I haven't been very diligent about setting up a backup process for all that crap, so I've been playing a bit with some scripts to automate all of that stuff using Ruby. My ruby skills are quite rudimentary and based entirely on some playing around I did with rails two years ago. But it's been exciting (and tedious) learning about stuff.

First off, the AWS S3 ruby libraries look cool, but don't work unless you have a ruby version > 1.8.4. I had 1.8.3 and it took me forever to find the root cause of an obscure error.

I also never knew about ri - the perldoc for ruby. Check out RI for emacs which lets you run ri from within emacs.

Also loading inf-ruby.el allows you to do M-x run-ruby and get an interactive ruby shell within emacs. This is great for a ruby beginner like me, because I can experiment with stuff from within emacs while I'm coding.

The S3 Rake file is a great starting point for backing up mysql databases and svn repositories, but is specific to a rails setup. I'm not working on a rails app; just trying to backup wiki databases and an arbitrary svn repository; so I'm rewriting it as a class that should be callable either as a command (from cron, which is what I want), or from rake. If I get it looking decent, I'll put it up somewhere.

Sunday, November 26, 2006

To पद्मामावशी from सुनंदा

(If you can't read the following all you can see is boxes or question marks, check out this site for help. (If you can see the fonts but can't read it, I can't help)

कै. ती. सौ. पद्मामावशीची श्रीसाई महाराजांवर खुप भक्ति होती आणि महाराजांची पण तिच्यावर कृपा होती. त्यामुळे ती गेल्यावर तिला त्यांच्या पायाशीच जागा मिळेल अशी मला श्रध्दा वाटली आणि त्यावरुनच मला ही कविता सुचली. हे तिच्या तोंडचेच शब्द आहेत अशी कल्पना इथे आहे ...

साश्रुपूर्ण नयनांनी तुम्हा सर्वांचा निरोप घेतेय
निघायची वेळ झाली माझी गाडी शिट्टी देतेय ।

पुनः पुन्हा डोळ्यात आणू नका पाणी
गेली बिचारी असे म्हणू नका कुणी ।

विरत चालल्या आहेत सर्व आठवणी
आता इथे माझे उरले नाही कुणी ।

गाडीने सोडले आहे ठिकाणं
पुसत चालली आहे एकेक खूणं ।

समोर दिसताहेत वळणदार वाटा
मऊशार माती इथे न काटाकुटा ।

फेसाळलेल्या समुद्रावरचा सुखद गार वारा
सोनेरी रेतीचा सभोवती किनारा ।

रंगबिरंगी फुलांचे तारवे फुललेले
सुगंधाच्या लाटेवरती मन माझे डोले ।

कवितेतल्या कल्पवृक्षांची गर्द गार सावली
ह्या गावाची हवा मला फारच बाई भावली ।

थांबू का जरा इथे, घेऊ का थोडा श्वास
नको! नको!! अत्त्युच्च सुखाचा मला लागाला आहे ध्यास ।

कसल्या तरी तेजाने उजळले आहे आकाश
दिसला! मला हवा तो दिव्य तेजस्वी प्रकाश ।

चिरंतन सुखाचं भांडार मला गवसलं
हाती आली माझ्या सद्गुरुंची पदकमलं ।

नको पुनर्जन्म, नको नाती-गोती
नको मोहमाया अन् पाप-पुण्यांची खाती ।

एकच मागणे देवा एकच द्यावा वर
पडू नये कधीही ह्या पाऊलांचे अंतर ।

- सुनंदा अभ्यंकर

Monday, October 30, 2006

pumpkin soup

I experimented with pumpkin soup yesterday. I think it turned out quite well - though you'll have to ask some of the taste testers for an honest opinion.

Basically I cooked a bunch (turns out that half a pumpkin serves way more than 6 people) of pumpkin in the pressure cooker along with some carrots. On the side, I sauteed onions and ginger.

Mashed the pumpkin, mixed it and the carrots with whipping cream, some milk, nutmeg, black pepper, and a tiny bit of cinnamon and cooked in a pot for a little longer.

Finally, put it through the blender and garnished it with some parsley.

I want to try adding some celery as well - I think that'll give it a nice bite.

Friday, October 20, 2006

data modeling

attended a pretty good presentation that Pierre gave on data modeling. Some things I learnt:
  • since 3nf captures most business rules, each subsequent denormalization that you may do should be countered or linked directly to a piece of code that implements the business rule that was lost during the denorm process. It'd be supercool if there was a way to document that in the code/model somehow.
  • successful normalization requires that you understand your business, whereas successful denormalization requires that you understand the runtime nature of your service (reporting, metrics, partitioning, performance, etc).
  • it's easier to backfill into a simple, crisp model than into a "flexible" model that probably doesn't work anyways and may be full of incorect business rules. Resist the urge to put random opaque fields (or arbitrary key/value pairs) into your data model.

Having worked almost exclusively on framework-level code, I haven't had to do much modeling of business problems. So I learnt a lot.

Tuesday, October 17, 2006

lamb

I need a web enabled cellphone. Everytime I go to the grocery store I randomly decide what I'm going to cook but then never have a recipe handy and have to guess how exactly I'm going to make it. Here is yesterday's impromptu lamb recipe, concocted from several recipes on epicurious, as well as a bit of creativity:

Ingredients:


  • Shoulders of lamb
  • Yogurt
  • Fresh mint
  • Garlic
  • Rosemary
  • Thyme
  • Balsamic Vinegar
  • Sea salt

Repeatedly stab the lamb with a fork on both sides. Sprinkle on some sea salt, spoon on some yogurt and let it sit for a bit. Turn on the broiler in your oven.

On a cutting board, chop some garlic and fresh mint. Add in the rosemary and thyme, and keep chopping until you have a finely chopped green mixture.

To the herb and garlic mixture, add in a little bit of vinegar and more yogurt and mix again. Spoon this onto the lamb and stab again repeatedly with a fork to help it absorb. Cover and let it set in the fridge.

Put it in the oven, about 3-4 inches from the broiler, for 6-7 minutes on each side.

Improvements? Ingredients that I mixed that shoudln't have been mixed? Let me know. I just made this up as I went along.

Monday, October 16, 2006

I'm dotting more than blogging

So you may be wondering why my blogging is suddenly less frequent than it used to be. Well often times what I have to say is related to something I read on the web. And there's a kickass service that lets me track that sort of stuff, and share/discuss it with my friends. bluedot.us.

I haven't figured out a way to splice my bluedot feed with my blog feed yet so you have to subscribe to it separately.

Note that unless you use a reader than can do authentication, this feed only contains my "public" dots, and not the ones that I reserve just for friends or particular groups of people to see. If you want to see those register/sign in, add me as a friend (I'll accept if I know you), and check out my dots on bluedot.

Update: With firefox 2 you can click on my bluedot feed and then automatically subscribe to it in bloglines.

Update: I put in a feature request to the feedburner folks to integrate with bluedot. They said that they generally wait to see what sites get heavy usage and then integrate with them. If more people ask for it, then they may start paying attention. bluedot folks - have you tried contacting them directly?

Tuesday, October 03, 2006

broadband by boeing

Wow. I'm on my way from Seoul to Seattle and have my laptop plugged into a power outlet under my seat and have broadband access (for free). I just tried skype-ing my wife's cellphone and was able to get a pretty damn clear connection, except that I'm guessing she heard a lot of white noise from the cabin noise.
That's pretty damn cool!
It's called Connexion By Boeing. Although it's free I was required to enter credit card information to use the service. Interestingly though, there were other payment options including what looked like tie-ups with telecom companies (maybe this gets tagged onto your monthly phone bill?)
I'm impressed.

Friday, September 29, 2006

link love from Mr. Bezos

Looks like I'm getting some link love following Jeff Bezos' keynote at MIT's Emerging Technologies Conference. He put up a quote from one of my earlier posts about Mechanical Turk (the last paragraph).

As I've said before, I work for Werner Vogels in the Distributed Systems Engineering group at amazon. We work on platform components (caching, messaging, persistence, logging, etc) that many teams (including AWS) rely on.

Put another way, we build the muck that powers the muck that could power your business.

Oh. and we're hiring. :)

Sunday, September 24, 2006

better tasting veggies.

I tend not to crave capsicum (green peppers) when I'm in India because I cook it so often at home.

The other day we had a simple cauliflower and capsicum sabji for lunch and the taste and flavor of the capsicum was fantastic. It sounds a little overly dramatic, but biting into it felt like I was eating capsicum for the first time.

Just a gentle reminder that the oversized, brightly colored, genetically engineered vegetables available in American grocery stores are not all that they appear; and all that glitters is not gold.

Monday, September 04, 2006

rain

mmmm.
I'm in Pune right now and it just started raining really hard after a morning/afternoon of sunshine.
I love (and missed) the smell of rain. mmm. And the sound of hard rain (vs. the seattle drizzle). And it's over before I could finish writing this.

I played golf on Friday morning and again today. Friday was great, but today I lost 7 balls. I came home more than a little dejected.

Saturday, August 19, 2006

Totalled by Muir

One of my friends was really enthusiastic about the two of us trying to summit Mt. Rainier this year. I was a little hesitant and committed only to doing some regular hiking with him in preparation for a summit next year.

Last week we decided to do a hike this weekend to Camp Muir, the basecamp for Rainier.

I picked him up early this morning and we were on the road by about 5:40am. We got there a little after 8am and hit the trail at 8:40am. Within an hour we had completed the first 2.2 miles and about 2000ft of elevation gain. This was on a very well-maintained trail that is actually mostly paved. The next 2 miles and 2000+ ft of elevation gain through snow took us 3 hours (3.5 for me).

The sun was painfully bright. In my mind snow is always associated with extreme cold. So I was dressed totally inappropriately. It was HOT. The high altitude (in combination with the heat/sun) caused my temples to throb and I got a slight feeling of nausea that intensified as we went up. The last hour of the ascent was quite gruelling for me because every time I got out of breath, I would also feel nausea. Coming down was somewhat fun because we would do controlled slide/steps down the snow (also known as Glissading). However, my nausea still persisted so I'd have to stop every few minutes - even though I wanted badly to get out of the sun.

It was a full 8 hour day for me; I got back to the parking lot around 5pm. In order to summit Rainier, RMI recommends that you be able to hike to Camp Muir in between 3-5 hours, with a full load on your back.

4.5 hours with a day pack is pretty pathetic but it's a checkpoint at least. At least now I know where I am vs. where I need to be in terms of my fitness level.

Friday, August 18, 2006

omakase

Amazon apparently launched Omakase recently. It's an adsense-like program that shows the user products based not only on the page-content (ala adsense) but also based on the user's preferences.

While this doesn't help sell services, it's an amazing way to sell products. Amazon knows products and it knows consumers. I know often-times on the amazon page, the products shown to you are in fact items from your own wishlist - that's probably because people are more likely to buy products for which they've already expressed interest.

Now, if I'm browsing around the web, amazon already knows what I've got in my wishlist, what I've been looking at on amazon, what "similar" people have been looking at, what they've bought, and how the site I'm looking at now might influence what I want to buy.

That's an aweful lot of information to put together. Although the current algorithms may not exploit all of this information my guess is that, as they iterate on Omakase, the recommendations will only get better.

Now if only you could ASIN-ize services...

Thursday, August 17, 2006

never work again...

Last weekend we were at Mother's Bistro (great place!) in Portland, OR and had a very cheerful server. The table next to us must've made some comment to him about how cheerful he was... his response:
"Find a job you love, and you'll never work again"

Though I'd read that before, it was great to hear someone say that about their own job.

Monday, August 14, 2006

windsurfing

This weekend, Nate, Sindya, and I to drove down to Hood River, OR to take windsurfing lessons. By the time we got in, it was about 2-ish. After signing waivers and swiping credit cards, we roamed around the city to looks for sunglasses for Sindya, and sunglass retainers for Nate.

The city is awesome. It reminded us of a ski town, except for water sports. There were windsurfing, kite surfing, and kayaking shops everywhere.

The windsurfing class was a lot of fun; I was able to get the hang of the basics after about 90 minutes - which left 30 minutes of confident surfing at the end :) We were in a lagoon, shielded from the strong winds. We later checked out the windsurfers on the Columbia river and man - they were flying by at absurd speeds.

Afterwards, we drove to Husum, WA to take a look at a white water kayak that I'd been eyeing on craigslist. After trying out a roll in the pool, I decided to buy it.

That evening we camped at viento state park. Since there weren't too many bugs in the air, we were able to sleep with just the rain-fly and no tent (it was cool enough at night that sleeping outside would've been a little too cold) - which was great because I could see the stars as I fell asleep and everytime I woke up.

We had planned on windsurfing some more on Sunday morning (exploiting the 1 hour free rentals that we got with the class) but there was absolutely no wind. Instead we drove into Portland and had a humungous brunch at Mother's. The line there has been too long the past few times so I was glad to make it in.

Luckily Sindya agreed to drive for the first hour after we left Portland; I was still digesting my food. The drive back was terrible. We left at 2:45 and didn't get back home until almost 8pm.

But now I have a white water kayak.

Sunday, July 23, 2006

kayaking

Five or six years ago I tried white water rafting as well as inflatable kayaks several times but I was always jealous of the hardshell kayakers on the river.

Last year in India I tried several times to go hardshell kayaking and learn how to do the eskimo roll. My three half-day attempts at learning didn't get me anywhere.

I took a class in Seattle in June this year but couldn't attend the second of the river days. Although I was able to eskimo roll in the pool, I couldn't pull it off in the river when I took a fall.

Yesterday I took a make-up class (for the second day that I had missed in June) and went down to a river again with NWOC. It was fantastic. It was only class II rapids but I was able to get in and out of eddies, I was able to roll comfortably in still water, and I even managed to roll twice while taking a fall in the rapids.

In addition to all that, I met some prety cool people during the class and had a beer with them at the Rogue Brewery in Issaquah.

Now I just need to go buy myself a kayak.

Friday, July 14, 2006

Thursday, July 13, 2006

cpu cycles

Yesterday I was faced with a design tradeoff on a Java API: make it
  • clean and easy to understand but slightly inefficient; or
  • more efficient in the simple case but a little more complicated overall?
My coworker provided some great insight. To paraphrase him :
APIs will never get cleaner, but CPU cycles will always get cheaper

That doesn't mean that one shouldn't try to design APIs that are efficient. It just means that you have to be careful how much emphasis you place on that.

Monday, July 10, 2006

making ghee

In general, I stay away from fried and oily foods - not because I'm watching my diet but because I just don't like them (there are exceptions, of course!). But I can't give up whole milk, or ghee. Eating hot chapatis with ghee on them is one of those pleasures that I'm not going to give up anytime soon.

Making ghee is not too difficult. The core process is as follows:

  1. Start with a few sticks of unsalted butter (assuming you're not using homemade butter!)
  2. Put it in a pot on medium heat but watch it carefully and stir it every now and then to make sure that the bottom doesn't burn. (I use a nonstick pot just in case)
  3. Once it begins to boil, you'll see a thick froth forming on top.
  4. My grandma told my mother to cook with her nose and not her eyes. Once the butter turns into ghee, you'll smell the unmistakable smell of ghee. If you don't smell it, or don't know what it smells like - don't worry. In addition to that fantastic smell, you see the froth will thin out a lot, and the liquid below it turn clear. That's the ghee. You will also see some grainy residue sitting at the bottom.
  5. Take it off the heat immediately and let it cool slightly. This is where you have to be watching it carefully. If you leave it on the heat too long, you'll burn the residue and all of the ghee will acquire a burnt taste.
  6. Carefully strain the liquid ghee into a jar while it's still warm (before it solidifies). I just use a metal tea strainer that looks something like this.
  7. Don't throw away the solid residue! It's edible and actually has a great (albeit maybe acquired) taste.
  8. To use up the residue and any ghee remaining in your pot, cook a cup or two of basmati rice in that pot. It'll taste fantastic!


It takes about 15-20 minutes from the time you put butter in a pot to when the ghee forms and as you can see, the recipe is quite straight forward.

That said, I think everyone has their secret mixins to make the ghee taste better. My mami (mom's brother's wife) puts in a Betel leaf for flavor, and some rock salt to make it more grainy when it cools (the opposite of 'grainy' ghee is 'waxy' ghee - not considered a good quality). My only mixin is a few cloves which help give it a nice color and subtle flavor.

If you have a special ghee recipe, I'd love for you to share by posting it in the comments below!

Thursday, June 29, 2006

Mr Anderson

No, not the dude from the Matrix. But Chris Anderson of longtail fame was at amazon today to promote his new book. I took away some good nuggets, even though I used to follow his blog quite regularly.

  • The long tail arises from
    1. variety
    2. inequality
    3. network effect

  • When plotted on a log-log scale, the long tail is a straight line. Most sales numbers drop off from this line because of limits of
    1. findability
    2. inventory

  • We can exploit the long tail by
    1. democratising production
    2. making distribution more efficient
    3. improving findability

  • Not everyone does everything for money:
    1. We are entering a "reputation economy" (people blog or write books for reputation, not money)
    2. Our talents are more varied than our job functions (I love this one!).
    Both of these point towards the rise of the amateur professional (the expert who doesn't do it for money)

  • Don't confuse limited distribution with shared taste (i.e. boxoffice hits happen because the supply of movies is limited by distribution, not because everyone necessarily loves those movies)

  • Everyone deviates from the 'mainstream' somewhere

Tuesday, June 20, 2006

Distributed Systems Engineering

So as I've mentioned tangentially before, I work on building large scale distributed systems at amazon.com.

These are systems that power not only all of our retails websites (.com plus the various international sites), but also our affiliate sites (like target.com) and all of the cool webservices (like the Simple Storage Service, Mechanical Turk, and ECS).

Now you can finally learn more about what we do by checking out the Distributed Systems Engineering site. This is a pseudo-official site that we wanted to put up to let people know what we work on. If you have comments about the site, feel free to post them here.

Monday, June 19, 2006

radio debut

We have a radio debut in the family! Listen here

Tuesday, June 06, 2006

google spreadsheet.

Google's much anticipated entry into the office-tools market has begun. They beta launched Google Spreadsheet. Wow.

Monday, May 15, 2006

service work in india

If you are of Indian Origin (aka 'brown') and have done any service work in India, then check out the call for submissions for fullcircle, an anthology of stories from people like you about their experiences.

Thursday, May 11, 2006

page 3

Last night, we watched Page 3, a Hindi/English movie about a journalist who covers "Page 3" (the page with photographs and gossip about the glitterati of a city) for a Mumbai newspaper. The journalist is played by Konkana Sen. I've seen her before in Mr. and Mrs. Iyer and 15, Park Avenue and she has been outstanding in all three.

Page 3 left me a little depressed, but I highly recommend the movie.

Wednesday, May 10, 2006

mechturk

this is a hilarious use of mechanical turk.

Monday, May 01, 2006

classical music

Last night I went to hear Ashwini Bhide Deshpande in concert, accompanied by Seema (Harmonium) and Vishwanath (Tabla) Shirodkar.

It was a pretty good concert although

  • Ashwiniji seemed to have a bit of a cold, though her singing was fantastic
  • Her penultimate song (a jhula) seemed to finish prematurely/abruptly; I think this was due to the tabalji going into a long improv.
  • To my very amateur ears/eyes, it seemed like she got off beat a few times. I feel stupid saying that because she's an extremely accomplished artiste, but I could swear that, a few times, she took the sam on the 13th maatra of a teentaal instead of on the 1st. I was relying both on my counting as well as on the tabalji's left hand playing the tin (with his palm instead of his fingers). Maybe someone can corroborate or shoot me down?


Regardless, I thoroughly enjoyed the evening. I also ran into my old music teacher, as well as some fellow vocal students and some amazon collegues.

In other news, we moved out of temp. housing and into our own apartment. To my surprise, I have a partial view of Mt. Rainier along with the Seattle skyline. Since we didn't really get to use our new furniture before leaving Bangalore, we spent much of the weekend excitedly unpacking and setting up the place. Unfortunately, we imported some dust from Bangalore along with our boxes and also spent a lot of time sneezing. Played squash yesterday after a long time so now my rear end is in pain. Am starting a 6-day white-water-kayaking class today.

Monday, April 24, 2006

The Journey of Man

If you haven't seen it, try to check out the PBS documentary 'The Jounrney of Man'.

I watched it with some friends on Saturday night and it was the first movie in a long time that caused so much discussion.

Here's the summary: by analysing the Y chromosome of people from around the world researchers were able to build a tree / map of how people migrated over time. Breifly:

  • Until 50,000 years ago, everyone was chilling in Africa
  • Drought caused by the looming ice-age drove one group of people to follow a coastal route through India and to Autstralia.
  • About 40,000 years ago, there was a big branching out of people from central asia - two groups moved east to China, one group moved down to India. Another group headed far north-east.
  • From the north-east, one group returned west to beome europeans and the rest trudged on eastwards in the arctic circle.
  • About 10,000 years ago around 20 people survived the crossing across Beringia (the land mass that was exposed when the Bering Strait water levels were low). Within 800 years they multiplied and inhabited the whole American continent.

That means that, only about 2000 generations ago, our ancestors were all buddies, chilling in Africa.

The documentary is a little slow but seeing portraits of people around the world makes the similarities so apparent - it's definitely worth watching.

Thursday, April 06, 2006

exceptions

A coworker lent me an amazing book: Framework Design Guidelines. Yes, yes, it's an MSFT book and talks about the .NET platform and is thus, by definition, evil. But it's still a phenomenal book and full of bits of wisdom.

Each time I've picked it up, I've wish I could condense it into a cheat sheet and paste it to my monitor while coding. The following excerpt is not exactly groundbreaking, but something I wish I could remember when I design APIs:
It's OK for exceptions to have a property returning some kind of error code, but I would be very careful about this. Each exception can carry two main pieces of information: the exception message explaining to the developer what went wrong and how to fix it and the exception type that should be used by handlers to decide what programmatic action to take. If you think you need to have a property on your exception that would return additional error code, ask yourself who this code is for. Is it for the developer or for the exception handler? If for the developer, add additional information to the message. If for the handlers, add a new exception type. (pp. 184/185)

(I'm sure I'm guilty of adding a stupid error code to an exception)

Wednesday, March 29, 2006

scobeleizer vs all things distributed

ok that's a stupid, exaggerated, eyecatching title for a post, really. But if print media does it, so can I.

Quite frequently employees at amazon have the privilege of getting into a small conference room with an author or artist and hearing them speak or perform. For example, yesterday I got to listen to Ben Harper busting out some songs from his latest album.

Well today Robert Scoble visited us to promote his latest book. The talk was okay, but what made it lively was the discussion between him and Werner Vogels (I guess it also helped that I won a copy of their book in a raffle)

Definitely a treat for an otherwise normal Wednesday at work.

Oh - and in addition to those perks, did I mention that you get to work on building real, large-scale distributed systems to power the most customer focussed company in the world? :)
(email me your resume if I didn't scare you off with all of that company kool-aid)

Thursday, March 09, 2006

summing it up

I'm kind of sick of trying to sum up 15 months of India into a hallway conversation. But I guess after doing it for the past week, I've become somewhat proficient.

I love that the air is fresh enough to go running in the (cold) mornings.

I love that I can take a quiet bus ride to work and do a bit of reading on the way.

I love the Seattle Public Library.

Thursday, March 02, 2006

catchup

Lots to catch up on...

At the end of January/early February, we made the trip to Goa with some friends. It was fantastic. In Palolem, where we stayed the first night, we had what S described as the best pizza she'd ever tried. It was pretty yummy. The place is run by some Italian guy. The next two nights were spent close to Baga. I was worried about S having a good time since she doesn't drink that much, is vegetarian, allergic to the sun, and not a big fan of motorbikes. But we sat on the beach (under umbrellas) and ate seafood (she ate alu paranthas), drank (she drank fresh watermellon juice), and rented motorcycles to get around town. And she had an amazing time.

After Goa we were in Bangalore for a week, taking care of lots of logistics in preparation for the move. At the end of that week, we got in the car and drove to Belgaum to visit my mama, and then drove on to Sangli to visit his daughter, and then spent a few days in Pune with my sister's family. We left the car there and flew back to Bangalore, sad that we won't be seeing them as often anymore.

Next we took a bus to Coorg, a large coffee growing region south-west of Bangalore. It was an amazing, week-long trip. We spent the first 2 nights at a resort called Misty Woods. I highly recommend against going there. It's not a value for money. The staff is great and the rooms are nice, but the food is terrible and the place doesn't justify the cost at all. Instead, try out Palace Estate, a small homestay close by (we didn't stay there but it looked pretty nice and we heard good things about it). Both are located near the palace, outside the town of Kakkabe. We spent the next 3 days at sand banks, a home-stay close to Ammathi. Mr. and Mrs. Kallappa were extremely hospitable, and made our stay wonderful. The food was fantastic and the location was very rustic and peaceful. Highly recommended.

We were in Bangalore only for 3 days after that, during which time we sorted through all of our belongings in preparation for the packer/movers. I flew to Delhi to spend a week with my parents, while S did a short trip around south india to visit more family, and then joined me in Delhi.

From Delhi, my mom and I did a short trip to Rishikesh/Haridwar, where we stayed at the small and rustic but comfortable Vitthal Ashram. I spent a morning kayaking in the cold Ganga waters, and the rest of the time checking out temples. I was quite disgusted by how commercialized the temple-areas were and how many people were out to get your money using God's name. I guess that's to be expected given the number of tourists that go there. oh well.

I landed in Seattle on Monday and it feels quite surreal to be back here. I have caught up with a bunch of friends already, and should get a chance to meet everyone by this weekend. I still haven't gotten a cellphone so I do feel a little disconnected still.

Yesterday was my first day at work. I'm not yet sure how excited I am to be working again. :) But I'll be looking into caching which looks to be pretty interesting.

Thursday, February 02, 2006

grasshopper

The other night we went to a restaurant way out on Bannerghatta Road called Grasshopper. I'd heard about it for a while and had been trying to coordinate a trip with a few people. But S and I finally decided to go there on Wednesday night lest we miss a trip there altogether.

We were the only people there. Seating was outdoor and they provided shawls since it was a little chilly. They have a boutique out front featuring clothes (and accesories) from 6 designers. The ambiance was awesome.

I wrote down the contents of our 6 course meal but seem to have misplaced it somewhere. I absolutely loved my food. S liked hers (she had the veg. option) but was not as enthusiastic as me.

I think I remember my meal:
- Oven fresh bread
- Fig stuffed with Feta
- Asparagus with mint and lime
- Prawn with ginger
- Walnut and pear salad.
- Sea bass
- Veal Chops
- Lemon cheese cake with grape reduction

S got bruschetta instead of the prawn, a feta-stuffed sweet chilli instead of the sea bass, and broiled vegetables in butter-bean sauce as her main course.

The Sula Sauvignon Blanc that we had was a disappointment. I ended the meal with a shot of espresso for the long drive home.

My mouth is watering while writing it down. In fact I may just stop writing for now because I need to go grab lunch.

Update: anonymizing.

rang de basanti

Last night Sindya and I went and watched Rang De Basanti, starring Amir Khan, Kunal Kapoor, Soha Ali Khan, and others. We tried getting tickets a few days back at the Forum Mall in Bangalore, but it was sold out for the full week. We were walking around Brigade Road yesterday and decided, on a whim, to try for tickets.

I'm glad we did. It's a great movie. The acting was solid, as was the cinematography. The soundtrack was fantastic too. The storyline was new and refreshing, and I think it struck a chord with many.

Monday, January 30, 2006

Red Tape: Getting a police clearance certificate

I realized that I should have started this as a series when I first moved to India but I didn't think of it until recently. There are many "gotcha's" associated with getting any government work done in India which result in this "Damn. Now I know what to do next time" feeling. However, many tasks (e.g. getting a Marriage Certificate) are such that one rarely needs to do them more than once.
So I figured I'd put down at least one such experience in writing for the benefit of others.
Please update this information by leaving a comment

What: Getting police certificates from the regional passport office, and the local police station in Bangalore.

Why: In my case, it was to apply for a visa.

Est. Time: 1 week (at minimum), 3-4 weeks normal time.

In order to expedite, you'll need a letter explaining why. If it's for business purposes, it should be on company letterhead. If for personal purposes (as in my case) make sure that you can explain the reason in one sentence, and that the letter is written in formal style.

For pretty much every step, you'll need a recent photo. Keep a stack of them and a glue stick with you at all times.

Summary of Events

  1. You submit all the applications
  2. The request for passport clearance is forwarded from the passport office to the commisioner's office to the local police station.
  3. The police clearance request is forwarded from the commisioner's office to the local police station.
  4. The local police check your records and residence and get a statement from your neighbors.
  5. The applications travel back along the same route they came
  6. You pick them up at their respective starting points

Hopefully this will help you waste less time in the process.

Step x where x < 4: Get familiar with the local police station


Since both requests will finally come to the local police station, you should go there at some point before completing step 5, and get to know the person who'll do the verification. Explain your urgency, and ask him for any documents that he'll need so that, once the requests get to him, he can complete his end of things ASAP. In my case this guy was really nice and did all he could to help me get things done quickly.

Step 1: Money


Passport Office


Accepts Cash

Commisioner's Office


The commisioner's office requires that you first go to the State Bank of Mysore, Treasury Branch and remit Rs. 200 to account number 005500103004. You'll need to specify "for PCC" and supply your name and address as you'll want listed on the certificate.
You don't have to do this in person; I was able to send my driver to take care of this. However, I didn't know that it needed a name and address and he just guessed the spellings of both, so he had to do it again, this time with a PostIt with my name and address written on it.
Time:My driver said that there was a line for this as well, and it took about three hours.

Step 2: Forms


Passport Office



  • Form 2
  • Personal Particulars Form in duplicate (pages 10-13) and index card (page 3) from the passport application form
  • Passport (make sure you make copies of the important pages and visas in your passport first, because they'll hold onto your passport once you submit the application).

Commisioner's Office


The forms required at the commisioner's office are not available online. You may be able to ask someone to get them for you though I'm not sure. That process is optmized for wasting your time.
Show up at the office called "Single Window" at the commisioner's office. There is an 'enquiry desk' at the front which supplies you with forms and information. If the guy there is in a good mood, you may be able to get a blank form from him up front. If you're having someone take care of the bank stuff for you, they can try getting you that form at the same time.
Time: Should take about 10-20 minutes depending on the size of the line.

Step 3: Submit the applications


Passport Office

Show up at the passport office a little before 8am. The counter only opens at 9:45, but the line starts at 7:45 or 8:00am.
What to bring:

  • Proof of address
  • Forms with photo
  • Cash (About Rs. 300 I think)

You'll stand in line where they'll check your paperwork and give you a token number. Then you wait for your number to be called at which point they'll take your money and passport and give you a receipt. Make copies of this ASAP.
Time: If you get in line before 8am, you could be done as early as 10:30am.

Commisioner's Office

Show up in the morning around 10 or 11am; you should be able to head there right after going to the passport office. You'll need:

  • Proof of address
  • Form with photo
  • Receipt from the bank

Even if there's a big crowd when you enter, that's either people waiting in line to pick up the stupid form and figure out the process, or foreigners on long term stays registering their presence. Just go to the line in front of the window that says 'police verification' (number four, I think).
After submitting the application, you'll get a receipt. Make copies for safe keeping.
Time: About 10-20 minutes.

Step 4: Check for the request from the passport office


At the commisioner's office, there is a big room at the front (facing Infantry Road) where you can go to check on the status of a verification. It should take a day or three for the request to get from the passport office to the commisioner's office; I wasn't able to figure out how to speed this process up.
When you walk in, you'll be confused; there are windows up front, but no lines leading up to the window. Sitting in front of the window will not result in someone coming to help you. The right thing to do is to observe for a few minutes and find someone who looks like they work there (you'll know by the fact that they keep coming and going from behind the restricted area).
Catch a hold of one of them and ask them to check on the status of the passport verification. Give them the original receipt and they'll go back into a room somewhere and search through their files to tell you if they've gotten the request.
Once they've gotten the request, move on to the next step.
Time:About 20 minutes each time you decide to go there and check.

Step 5: Expediting the process


The requests for verification could sit around for a while in the commisioner's office and we want to avoid that. Once you find out that the passport request has been received, find out if the police certificate request (that you submitted at the commisioner's office has been forwarded to the local police station or not). If it hasn't, then you'll need to complete the following steps for both requests:
  1. Go wait in line outside the DCP (Deputy Commisioner of Police), Intelligence's office along with your urgency letter and receipts for the requests and request him to let you take the requests 'by hand' to the local police station. He'll sign on the two receipts. His office is in a different building in the Commisioner's Office compound.
  2. Wait in line outside the ACP (Assistant Commisioner of Police)'s office and ask him to . This is inside the big room when you find out about status. It's on the right when you go in. Hopefully he'll grant your request by signing on the receipts as well.
  3. The ACP should instruct someone to go and prepare a sealed envelope containing both requests.

Time:About 45-60 minutes to get both signatures.

Step 6: Local Verification


This may vary. The cop dictated two long statements to me which I had to sign. Both were along the lines of "I am such-and-such person living at this address. I require police clearance / passport verification for the purposes of blah. I've provided the following documents as proof of residence. I request you to please provide the verification".
The cop came to my building and got a sworn statement from the building manager as well. Two huge packets consisting of the requests, along with address proof and statements were then signed by the head of the local police station (I forget his official title). Finally, they needed to stick my pictures in two registers, which I had to sign.
Thanks to an urgency letter, the responses were given back to me in an envelope and I was able to take this, by hand, back to the commisioner's office.
Time: Because I'd done a lot of ground work (i.e. been there many times), the actual physical verification took about an hour. I'd reserve about half a day to write the statements, provide address proof, and to get the appropriate statements and signatures.

Step 7:One down, one to go!


With the forms completed by the local police station, I was able to go back to the commisioner's office and submit them there. Again, just catch hold of someone and request to speak to the guy in charge of police verifications. If he's sweet, he might agree to complete the process that day itself.

Passport Verification


Just submitting the forms is not enough, you need to request that you are assigned a GR number. This should ensure that it is available for pickup from the passport office the next day.

Commisioner's Verification


The receipt for your verification would have listed a pickup date 3 weeks in the future. In order to pick it up before this date, you'll need to get signatures again from the DCP of Intelligence and ACP. Show them the urgency letter and hope that they approve your request. If they do, you should be able to take this back to the Single Window and get one your police certificate. Woohoo! One down, one to go!
Time:About half a day. Once you submit the local police reports, you should wait there to make sure you get the GR nubmer.

Step 8: Expediting the Passport Verification


Show up at the passport office a little before 11am with
  • your receipt
  • a personal statement of urgency
  • some proof of urgency (e.g. a company letter) and, of course,
  • one more photo.

In the front of the Bangalore office, two guards jealously guard the entrance to the "Tatkal" (expedited) area. Show them your proof of urgency and they'll let you in. Go up one floor and a security guard will give you yet another form, and direct you to stand/sit in a line.
When you get to the window, someone will check your paperwork and ask you to meet the Assitant Commisioner. You'll be shuffled along to another line outside his office. Explain your circumstances to him, and he may approve that you be provided your passport the same day or the next day.
Time: If you get there just before 11am, you should be done by about 12:30pm.

Step 9: All done!


On the day you're meant to receive your passport back, you show up at the passport office between 4 and 6pm. Show your receipt, and the guards will let you go back up to the same Tatkal hall. Do not bother standing in line.
They have this funky process whereby they call out 15 names or so over the PA system. Those 15 people are expected to go to the counter and pick up their passports (they'll call out the names again in the same order). If you don't show up, they'll try calling your name again in a little while.
While this may entice you to show up at 5:30pm, I'd recommend going a little earlier just in case (remember; they strive to waste as much of your time as possible, and may come up with some even less efficient system by the time you read this).


And that's it! After many man hours of effort, repeated visits to the passport office, the commisioner's office, and your local police station; you would have gotten your certificates!

Appendix A: Address Proof


I have had serious problems with address proof in India. My landlady provides a phone and gas connection, and the electricity bill is in her name. The following documents are NOT considered valid address proof:

  • Phone bills from private companies
  • Your lease
  • Credit Card bills
  • Bank statements from a non government bank

Finally, I was able to use my tax "Saral" (a stamped piece of paper saying that you've filed taxes) as proof of address.
I recommend getting a gas or govt. phone line in your name even if for no other reason than to provide address proof.

Appendex B: Bribery


I'm the worst person to comment on this, as I don't really know how to offer someone a bribe. I'm also not at all comfortable with it.
There were certain steps in this process where the people concerned, after completing my job in a somewhat timely manner, asked for money. I paid. There were other cases where there was no request for money but I had been helped. I asked to make sure the person would not be offended, and paid. I paid more in the second case because I felt that the person had been sincere and I think honesty is rarely rewarded in India. It was ironic and possibly defeated the purpose to reward honesty with what could be construed as a bribe.

Tuesday, January 24, 2006

done!

Though I can't believe it myself, today is my very last day at the Amazon office in Bangalore. I came here in October 2004.

The last few months have been somewhat crazy; I've been out of the office a lot for personal (family) reasons. So leaving today seems even more sudden.

But I'm quite excited. Tomorrow afternoon I'm catching a flight to Goa. We are going with Romain/Elise and Sanjay/Ashima; Vikas/Pooja join us on Friday morning, and Praveen joins us on Saturday morning. We're going to South Goa (Pallolem beach) where I haven't been before; I'm looking forward to the usual fish curry and rice, as well as some motorcycling. We'll hang out there over the weekend and then head over to Belgaum and Sangli/Miraz to hang with some family.

After that, things are somewhat unclear. If nothing more spectacular comes my way by middle/end of February(hint, hint!), I'm currently set to take up a really cool position back at Amazon Seattle starting March 1st. That leaves me with most of February to wrap up here as well as do some sightseeing.

That is so far unplanned; we're considering visiting some friends in SE Asia, or spending time seeing areas like the Northeast of India, or Rajasthan.

Obviously, both of us have mixed emotions about going back. We're excited and looking forward to it, but at the same time we've spent the past month (and will probably spend the next month) constantly pointing out things that we'll miss about India.

In terms of stuff we're taking back, we've picked up (and will pick up more) a bunch of small knick-knacks; some art work, and some really cool furniture. Oh, and of course, two heads full of wonderful memories.

Tuesday, January 10, 2006

Happy New Year

I'm a little late with the New Year wishes but since this is my first post of the new year, I figured it's legit.

It's eid today; I was trying to catch an autorik to go somewhere today and went out on the main road to find throngs of muslims blocking the main road. They had their prayer mats laid down and were kneeling and prostrating as prayers were chanted over a loudspeaker. It was an awesome sight. S is going out to take a look, and will hopefully catch something on video that I can upload.

Last week we went to Chennai for the day. We had a few hours to kill in the afternoon and were trying to figure out what to do. Someone suggested the museum so I reluctantly agreed, figuring that we'd just stop by for a while and move on to the beach. I'm glad we went. It was the best Rs 15. I've spent in a long time! The buildings themselves were grand and very picturesque. The exhibits were also fascinating - they had lots of bronzes and stone carvings from various periods in India history.

S and I didn't do much for New Years. We were in Pune at the time. On the 30th, we went out with my sister and brother-in-law to this cool little lounge called 'Kiva' that plays very upbeat 70s/80s music that just makes you want to move. We got pretty drunk there. On the 31st I was sick, and everyone was a little exhausted so we just hung out at home and chatted and watched some TV. S baked a cake which got ready at midnight, so we ate that and drank some dessert wine.

That's all. We're planning on leaving India in a few months, which brings with it quite a mix of emotions; excited to move on, but sad to leave behind lots of great memories. These days I'm busy trying to wrap things up at work and at home. S has been given a license to go nuts shopping since there're so many little gifts and such that we want to take with us.

Wednesday, December 14, 2005

passionate about your customers

Joel has a great article on how he sped up the process of shipping dvds. Joel is a prolific writer on software development, and runs a software company. Which is why I was surprised that he put three days of effort into building a kickass mailing system instead of getting some other company to do it.

Why he did that is explained here

sloppy, yahoo!

ugh. yahoo! buys del.icio.us, and now I get this<:
I'm disappointed. They should have error handlers that prevent detailed errors like this being shown to users.


System error
error: Can't call method "prepare" on an undefined value at /www/del.icio.us/comp/user/get line 13.
context:
...
9: my $usedb = 'master';
10: my $ret;
11:
12: if (!$auth_user) { $usedb = 'user' }
13: if (!exists ($db->{$usedb})) { $usedb = 'master' }
14: $user_name_q->{$usedb} = $db->{$usedb}->prepare('select * from users where user_name = ?');
15: my $query = $user_name_q->{$usedb};
16: $query->execute(lc($user_name));
17:
...
code stack: /www/del.icio.us/comp/user/get:13
/www/del.icio.us/comp/settings/antisocial:52
/www/del.icio.us/site/settings/dhandler:9
/www/del.icio.us/site/autohandler:110
raw error



Can't call method "prepare" on an undefined value at /www/del.icio.us/comp/user/get line 13.


Trace begun at /usr/share/perl5/HTML/Mason/Exceptions.pm line 131
HTML::Mason::Exceptions::rethrow_exception('Can\'t call method "prepare" on an undefined value at /www/del.icio.us/comp/user/get line 13.^J') called at /www/del.icio.us/comp/user/get line 13
HTML::Mason::Commands::__ANON__('dbh', 'DBI::db=HASH(0x1b66b20)', 'user_name', 'hbhanoo') called at /usr/share/perl5/HTML/Mason/Component.pm line 134
HTML::Mason::Component::run('HTML::Mason::Component::FileBased=HASH(0x1d03aa0)', 'dbh', 'DBI::db=HASH(0x1b66b20)', 'user_name', 'hbhanoo') called at /usr/share/perl5/HTML/Mason/Request.pm line 1069
eval {...} at /usr/share/perl5/HTML/Mason/Request.pm line 1068
HTML::Mason::Request::comp(undef, undef, 'dbh', 'DBI::db=HASH(0x1b66b20)', 'user_name', 'hbhanoo') called at /www/del.icio.us/comp/settings/antisocial line 52
HTML::Mason::Commands::__ANON__('cookies', 'HASH(0x2fcb2b0)', 'tagview', 'list', 'browser', 'ff', 'bundleview', 'show', 'auth_user', 'hbhanoo', 'dbh', 'DBI::db=HASH(0x1b66b20)', 'tagsort', 'alpha', 'items', 10) called at /usr/share/perl5/HTML/Mason/Component.pm line 134
HTML::Mason::Component::run('HTML::Mason::Component::FileBased=HASH(0x37d1ba0)', 'cookies', 'HASH(0x2fcb2b0)', 'tagview', 'list', 'browser', 'ff', 'bundleview', 'show', 'auth_user', 'hbhanoo', 'dbh', 'DBI::db=HASH(0x1b66b20)', 'tagsort', 'alpha', 'items', 10) called at /usr/share/perl5/HTML/Mason/Request.pm line 1074
eval {...} at /usr/share/perl5/HTML/Mason/Request.pm line 1068
HTML::Mason::Request::comp(undef, undef, 'cookies', 'HASH(0x2fcb2b0)', 'tagview', 'list', 'browser', 'ff', 'bundleview', 'show', 'auth_user', 'hbhanoo', 'dbh', 'DBI::db=HASH(0x1b66b20)', 'tagsort', 'alpha', 'items', 10) called at /www/del.icio.us/site/settings/dhandler line 9
HTML::Mason::Commands::__ANON__('dbh', 'DBI::db=HASH(0x1b66b20)', 'auth_user', 'hbhanoo', 'items', 10, 'tagview', 'list', 'tagsort', 'alpha', 'bundleview', 'show', 'cookies', 'HASH(0x2fcb2b0)', 'browser', 'ff') called at /usr/share/perl5/HTML/Mason/Component.pm line 134
HTML::Mason::Component::run('HTML::Mason::Component::FileBased=HASH(0x21c9ab0)', 'dbh', 'DBI::db=HASH(0x1b66b20)', 'auth_user', 'hbhanoo', 'items', 10, 'tagview', 'list', 'tagsort', 'alpha', 'bundleview', 'show', 'cookies', 'HASH(0x2fcb2b0)', 'browser', 'ff') called at /usr/share/perl5/HTML/Mason/Request.pm line 1074
eval {...} at /usr/share/perl5/HTML/Mason/Request.pm line 1068
HTML::Mason::Request::comp(undef, undef, 'dbh', 'DBI::db=HASH(0x1b66b20)', 'auth_user', 'hbhanoo', 'items', 10, 'tagview', 'list', 'tagsort', 'alpha', 'bundleview', 'show', 'cookies', 'HASH(0x2fcb2b0)', 'browser', 'ff') called at /usr/share/perl5/HTML/Mason/Request.pm line 760
HTML::Mason::Request::call_next('HTML::Mason::Request::ApacheHandler=HASH(0x2fc7ed0)', 'dbh', 'DBI::db=HASH(0x1b66b20)', 'auth_user', 'hbhanoo', 'items', 10, 'tagview', 'list', 'tagsort', 'alpha', 'bundleview', 'show', 'cookies', 'HASH(0x2fcb2b0)', 'browser', 'ff') called at /www/del.icio.us/site/autohandler line 110
HTML::Mason::Commands::__ANON__ at /usr/share/perl5/HTML/Mason/Component.pm line 134
HTML::Mason::Component::run('HTML::Mason::Component::FileBased=HASH(0x1b04180)') called at /usr/share/perl5/HTML/Mason/Request.pm line 1069
eval {...} at /usr/share/perl5/HTML/Mason/Request.pm line 1068
HTML::Mason::Request::comp(undef, undef, undef) called at /usr/share/perl5/HTML/Mason/Request.pm line 338
eval {...} at /usr/share/perl5/HTML/Mason/Request.pm line 338
eval {...} at /usr/share/perl5/HTML/Mason/Request.pm line 297
HTML::Mason::Request::exec('HTML::Mason::Request::ApacheHandler=HASH(0x2fc7ed0)') called at /usr/share/perl5/HTML/Mason/ApacheHandler.pm line 134
eval {...} at /usr/share/perl5/HTML/Mason/ApacheHandler.pm line 134
HTML::Mason::Request::ApacheHandler::exec('HTML::Mason::Request::ApacheHandler=HASH(0x2fc7ed0)') called at /usr/share/perl5/HTML/Mason/ApacheHandler.pm line 793
HTML::Mason::ApacheHandler::handle_request('HTML::Mason::ApacheHandler=HASH(0x1ac5e90)', 'Apache=SCALAR(0x27ced60)') called at (eval 43) line 8
HTML::Mason::ApacheHandler::handler('HTML::Mason::ApacheHandler', 'Apache=SCALAR(0x27ced60)') called at /dev/null line 0
eval {...} at /dev/null line 0


Update: Also, auto-complete for tags (when posting a new link) seems to not be working anymore. What happened to the kickass del.icio.us site that we know and love?

Sunday, December 11, 2005

VOIP

So I signed up for this service called SkypeIn - offered by skype. I now have a US number where you can call me and my laptop will ring in India. Contact me for the phone number.
PS: remember that I'm still in India; don't call me in the middle of the night! Check here before calling me.

Friday, December 02, 2005

origami

check out this podcast about origami. If you don't have 15 minutes to listen to it, check out this site and click on the 'science' section. It's amazing! I didn't know there was so much depth to origami.

fc goodness

just catching up on a few months worth of fc posts:

From The Value of Rough Seas
In life, it's the rough patches that build your strength and character. They test you. They make you dig deeper, think harder, and risk more. Use them to your advantage. Don't play the victim. Get up and get creative. It's what you do when the going gets tough that defines you.

In a separate post, they recommended Clapton's GuitarClick on the 'look inside the book' link to read a few pages from it.
From OXO's Favorite Mistakes
"Everybody talks about their successes, but the failures, the mistakes, are the most interesting things," says Alex Lee, OXO's president. "Our wrong assumptions lead to the best learning."

From Dr. Brilliant Vs. the Devil of Ambition
That is why Brilliant has devoted his life to understanding that one simple, puzzling mantra: "Live your life without ambition. But live as those who are ambitious." Do that, and you discover the discipline of living an authentic life -- and of living hard, as if each day counts. That said, there is no mistaking that Brilliant is, well, weird. He is maybe three statistical variations from the norm, which he also fully accepts.

Dublin, Helsinki, Montreal, Sydney, and Vancouver are listed as FC's global fast cities.

Tuesday, November 29, 2005

weddings!

The last couple of weeks have been hectic.
Last weekend, a bunch of us took a Friday night bus to Goa, to throw a bachelor party for Vikas. It wasn't too crazy but we did spend the entire weekend relaxing, getting massages, drinking (banana milkshake mixed with Old Monk dark rum was the unofficial beverage sponsor) and eating (goan spicy sausage, prawn-curry-and-rice, prawn-stuffed-papad).

This past Friday afternoon, S and I flew to Kolkotta to attend Naveen's wedding. We went out for dinner and drinks with some of his highschool friends on Friday night, and followed it with an evening of gambling. I don't gamble on principle, but it looked like a lot of fun and I was pretty tempted to join in. Instead I sat back and enjoyed the Black Label that Sahel graciously provided. On Saturday we ate, did a superfast city tour (the Victorial Memorial is breathtaking; S ate some Mishti Dahi, Roshogollas, and Sondesh), came back and ate again, and then got ready for the evening reception (yes, they had a reception before their wedding). The reception was at an amazing location next to some body of water. They had fireworks, candles floating on the water, unimaginable amounts of food (I guess the latest thing in Indian weddings is to have a bunch of food stalls where you can get different types of food; they had everything from mediterranian and domino's pizza, to north indian and chaat).

On Sunday morning, we took a flight to Delhi and hung out at my parents place in Gurgaon. Monday morning we went to the US Embassy to take care of some business and then drove to Chandigarh for Vikas's wedding.

I missed out on all of the heavy pre-wedding drinking with Vikas (they were up till 6am on Monday morning) but the wedding was awesome. Both Vikas and Pooja looked fantastic. My wife, though, will soon be publishing a treatise on Why Punjabi Weddings Should Not Be Late at Night. The actual wedding ceremony started at about 2am (outdoors) and it was frikkin cold. Luckily, I was wearing a set of heavy wool robes that I picked up in Ladakh earlier this year so I was nice and toasty.

On Tuesday we drove back to Delhi and almost missed our flight back to Bangalore (they had closed check-ins but I had been able to call ahead so they had blocked seats for us). I was extremely stressed out.

Now I'm back and should really get cracking on all of the piled up work.

Wednesday, November 16, 2005

usability

This article from a list apart talks about website usability and how design choices have a serious impact on site performance.

One of the things that I love (and amazes me) about amazon is that they have a really cool framework that allows you to test any design changes to the site. Almost all design changes go through this 'weblab' process which calculates the statistical impact of a certain change on various things (purchases, add-to-carts, etc. - I don't know the actual set of metrics we track).

Design is a wierd and sometimes counterintuitive thing. I couldn't guess which was the most usable site out of the three listed in the article above. I think the discipline of constantly collecting and analyzing metrics goes a long way.

news

news in india is not perfect; my wife often complains about the newspapers carrying mostly local news and only a page of international news. That said, the other media (magazines, tv) have pretty good coverage of international events.

I was having a conversation last week where I mentioned to a friend that, while I can't find much to complain about living in the US, the one thing that infuriates me is the subconscious messages that tell you that the world ends at the US borders (often accompanied by a very 'holier than thou' attitude towards the rest of the world). I'm not eloquent or observant enough to put my finger on exactly what it is that causes that, or even to be able to enumerate the ways in which it manifests itself. But the feeling was undeniable while I was there.

Although living in Bangalore is not always pleasant (dirt, dust, pollution - all the things I promised never to complain about if I moved to India) what I love about being in India is the feeling of being part of a world that is much larger, and much more diverse than the US of A.

On a different note, check out Toxic truths from the Iraqi battlefront.

Saturday, November 05, 2005

artificial artificial intelligence

Amazon Web Services released a beta version of mechanical turk last week. see here for a description of the term.

What does Turk have to do with Web Services? Mechturk is a framework that allows people to get paid for tasks that humans are much better at than computers (e.g. image recognition). But it allows applications to submit those tasks. So the tables are suddenly turned and we have this apocolyptic scenario where applications submit tasks, and you have a bunch of humans plugged into a system, doing jobs for the applications. How whack is that?

Without hyperboling, it actually takes outsourcing to the next level. It may change the economics of research; at least for a short while. Why bother putting millions of dollars of research into something like image classification when you can outsource it on a massive scale to people all around the world for a fraction of the cost?

I think a lot of economists, philosophers, computer scientists, criminals, and sociologists are going to have a fun time thinking/talking/writing about mech turk.

Thursday, November 03, 2005

Stallone

On the way to work today my cab driver, in slightly broken english/hindi said something about "fistblood, rumble,film?" After some clarification it turns out that he was asking me if I'd seen any of the Rambo movies. According to him my face looks like Stallone's. Funny.

update According to imdb, him and I do share the same birthday, though he's 32 years older than me.

ps: in hindsight, maybe Stallone's great acting and stellar portrayal of the I hate being in 'nam and I'm gonna kick your ass look and my I hate going to work and I'm gonna kick your ass look have something in common. ;)

Wednesday, October 26, 2005

go start a company

... but first, listen to this podcast, Paul Graham speaking at OSCON 2005.

Oh and also go watch The Corporation.

And then go create something.

Wednesday, October 19, 2005

pent up thoughts

some pent up thoughts from not having blogged in a while...

The other day my wife was complaining about how I'm too skinny. And it got me thinking. For my entire life, I've had relatives make comments like "hey - you've lost weight since we last saw you!", "you should eat more!", and "you're all skin and bones!"

I have tried retorting with the very logical "You say that everytime. If it really were true, I'd be non-existant by now." but that usually just gets brushed off and is followed by some oily snack being thrust in my face.

Anyways, it got me thinking how ridiculously biased society is. No one meets an overweight relative and makes comments like "hey - you've put on so much weight since we met!", or "you should really cut back on your food", or "you're all lard!". Why is it acceptable to publicly make fun of skinniness but not of fatness?

:) I'm not all that bothered by it, but I think the next time someone says I look skinny, I'm going to tell them that they look like an elephant.

On a totally unrelated note. Today I went to play tennis and this guy was just getting off the court from practicing; he was just picking up a basket worth of balls and putting them into his bag. After he was done, he went back to the court, bent over and touched it with both hands, lingered there for a few moments, straightened up, and touched his hands to his heart and then his forehead. The gesture was so pregnant with reverence and sincerity, that I was moved and disoriented afterwards. It wasn't a quick, ritualistic, obligatory movement; but slow, deliberate, and sincere.

On the one hand, gestures like these are so built into Indian culture (a similar gesture is used as an apology for accidentally touching someone with your feet) that most of the time they are done in a very obligatory-type manner (quick, unthinking, instinctive). On the other hand, the idea of revering your 'craft' (sort of "Zen and the Art of Motorcycle Maintenance"-like) is just built into most people.

Two examples of that: Almost every driver (chauffer) I have seen will fold their hands in prayer for a few seconds before starting the car for the first time in the day. Second, the other day there was a festival during which people gave the instruments of their craft a day of rest, and worshipped them. I know of a few IT companies where all the servers were shut down in the morning, coconuts broken and prayers and sweets offered before they could be brought back up in the afternoon.

Monday, October 03, 2005

the depths of your heart.

I've been a fan of Trevor Romain's blog for a while. It's a good daily dose of feedgoodness.

Among other things, it (his blog) gave me the inspiration to attempt to start drawing. Yesterday I was just feeling an alltime low at work so I left early to go home. My wife was feeling the same way so we went out to Gangarams (a stationary + book store in Bangalore) and bought a notebook, pencil, and some pens. Then we went and hung out at Infinitea - a chic tea store on Cunningham road. I drew a few pictures, and she got started on a story she's been meaning to write.

I remember when I was a kid, my mom would learn various art forms (oil and water painting, sculpting, sketching) from a teacher (Anna Aunty). A bunch of ladies would get together at our house and paint and gossip under Anna Aunty's guidance. Well one time I decided that I wanted to try as well. I was so distraught at the outcome that I decided that I couldn't draw.

My abilities haven't changed much but, after reading Trevor's blog, I've realized that it's okay to not draw masterpieces as long as they reflect the depths of your heart.

At the beginning of next year, I want to take some time off work and head up North to the Himalayas and learn to kayak, as well spend a week or so at one of the numerous ashrams. Thoughts of being in the mountains again and battling a gushing river have been going through my head for the past week (uh. sorry. tilt your head 90 degrees to the left):



I'm hosting this picture on our media - I'm surprised they don't have a way of scaling down images - so sorry if it takes a while to download.

Sunday, October 02, 2005

star traffic police

On Saturday we were driving around the Commercial Street area in Bangalore. At the busy intersection right near Commercial Street was a traffic policeman (wonder of wonders) dressed in a smart blue uniform. He was stopping traffic for pedestrians, stopping vehicale who were trying to cut red lights, and generally doing a fantastic and whole-hearted job.

We thought he must've been a private cop hired by the commercial street shopkeepers to keep order in the area. But low and behold, he was actually a Karnataka state cop. I felt pretty proud and gave him a big smile and wave. I wish I could remember the name I read on his badge. Whoever you are; keep it up.

On a side note; if the Bangalore Police allowed volunteers to do traffic police duty, I would gladly volunteer my time for that. I go berserk when people break traffic rules. The worst part is that they look at me like I'm a freak for doing things like stopping at red lights. grr

Wednesday, September 28, 2005

time to move on

I've fallen in love with the following lyrics from Tom Petty's "Time to Move On":
It's time to move on, time to get going
What lies ahead I have no way of knowing
But under my feet, baby, grass is growing
It's time to move on, it' s time to get going

It's such a chill song, and it's whispering intimately to my heart right now.

Sunday, September 18, 2005

six dumbest ideas in computer security

The Six Dumbest Ideas in Computer Security has some great stuff. (link from osnews)

fc goodness

from Digital Competition
Communication is a big part of making deals. One minute, I could be talking to three guys with pimples in a garage; the next, I could be speaking with the CEO of Deutsche Telekom. The most important thing is to get rid of all your prejudices. You have to open your mind. It doesn't matter if the people you're talking to are 22 years old or 57 years old. It doesn't matter what their color is, what their gender is, what language they speak, how big their company is, or even if they were a success before. The playing field today is a lot more level than ever before.

In Hollywood, you're expected to be intuitive. In the entertainment industry, you have people who have intuition and people who imitate. Nobody there analyzes. But for the most part, in our society, if you know and you don't know why you know, then obviously whatever you know doesn't matter -- which is stupid. If you have been right about things for 20 years, then you should be able to say, "I don't know why I know, but I know." If I'm hiring people, I don't want to know how they know, I just want to know that they have a good record of being right.

Interesting. Good intuitive decisions being applause, but when the bad intuition costs you money, I'm sure things hit the fan.
if you try to keep everything in your company under your own control, then your company has built its own coffin: It's limited by itself in every direction. If you think of your company as a box, then there should be only one side to the box. The rest of the box should be open.


From GM Has a New Model for Change
inside virtually all big companies -- is that you spend most of your time with people who are exactly like you. To counter this insularity, Ochalek, 43, lobbied to get his team out into the real world. Members of APEx went to work inside various car dealerships and visited with companies in different industries. They stopped attending auto shows and started going to Internet conferences, consumer-electronics trade shows, and toy fairs.

Thursday, September 15, 2005

sania

India's really proud of Sania Mirza. She's in the press all the time, and you can see her advertising jewellery on billboards all over town. Recently, some clerics made an uproar about her short skirts on court.

Here's a nice article in reaction to all the fuss. You go Sania!

file systems and web ui's

From an interview with Hans Reiser:
    I also learned to focus on the little things in the data that don't make sense. Often the guys I hire will disregard them, thinking there must be something wrong with the benchmark since it does not make sense. Being more experienced I know that the things that don't make sense are the most important data collected. Time and again, getting to the bottom of a minor performance anomaly that should not exist reveals a design flaw or failure in my understanding, and curing it leads to an advance in our performance that was well worth having. (link from osnews)


pretty cool. I think I tend to turn a blind eye to anomolous data. I didn't get all the way through the interview...

I forget where, but I saw a link to this site called A List Apart.
    A List Apart Magazine (ISSN: 1534-0295) explores the design, development, and meaning of web content, with a special focus on techniques and benefits of designing with web standards.
My first observation was that the site is beautiful. I read some of the articles today and they taught me a lot about CSS. I now subscribe to the feed so hopefully my web-authoring skills will improve. I hate crappy-looking sites. And I hate writing crappy UI code - even if it looks nice. Hopefully, some of the techniques mentioned will help beautify both the end-product and what lies beneath.

Incidentally, I'm working on a little app using Ruby on Rails. After working on very platform-level distributed systems code, it's fun to work on a web app. Sometimes I focus on db stuff, sometimes I work on the functionality, sometimes it's usability, and sometimes I just putz around trying to make it look pretty.

Update: I really want to make sure I have a ticketing system in place before I release my web-app (even though it's not going to be a huge release). Here's a somewhat long, but informative rant that reminded me why it's a great idea.

Wednesday, September 14, 2005

gems from FC

From Here's How to Make It to the Top:
    "I've been so successful in my climbing because I usually haven't turned back during that final, exhausting 5%. Making it to the top isn't about a final sprint; it's about maintaining your rhythm - even if that rhythm is five breaths for every one step. That kind of focus means that you're more likely to have the energy to deal with unforeseen challenges - and less likely to lose sight of why you're climbing the mountain in the first place."

I thought upward (manager) evaluations were standard practice. I'm horrified to know that they are not.

From The Fall and Rise of David Pottruck
    Just before the meeting got started, Andy Grove, the gruff chairman of Intel's board at the time, pulled Pottruck aside. " 'When you got promoted to CEO,' " Pottruck remembers him saying, " 'did that make you a better man?' I said no. He said, 'Well then, do you think the fact that you're no longer CEO of Schwab means you're not a better man?' I said, 'No, I don't think so.' He said, 'You're as good a man as you were last week. Hold your head high.' It helped me a lot."

Monday, September 12, 2005

my wife's murder

Last Wednesday was Ganesh Chathurthi, so we had the day off. Sindya and I decided to go watch a movie with Praveen. We ended up watching My Wife's Murder, a Hindi movie about, well... read the review I linked to if you want to know. I loved it because none of the characters are overly exaggerated. And, although the main character ends up making some pretty crazy decisions, he seems to be responding to the very real first instinct that we (at least I) have of running and hiding from problems. Apart from hoping that I never get into the same situation as the protagonist, I found myself constantly being like "shoot... I wonder if I would've made a similar decision?"

This weekend Sindya and I went shopping for a small music system. In the process of driving around town, we also stopped by an exhibition of 'nature lamps'. This one artist has made lamps out of tree bark. We ended up buying a free standing lamp. It should get delivered today; I'll see if I can post a picture.

On Saturday night we had an anagrams party with a twist; everyone had to bring a guest who we didn't know. It was cool; I ended up meeting some really cool people. It's funny because all of the random people actually ended up having some connection to someone else at the party; small world.

(If you haven't played anagrams before, you have, to try it. It's frikkin awesome)

Back to Monday. No rowing for the next few weeks; the Army rowing team is preparing for a competition so they hog the boats and don't let civilians play. Oh well.
Update: Lamp pictures here and here. Hiking pictures from two weekends ago here and here.

Thursday, September 01, 2005

(more) rowing

Maybe it's annoying reading about day-to-day progress in my rowing abilities. But it's still pretty exciting for me so I'm writing anyway.

Today I went on a double-scull with this girl Sarita who's been rowing a few months. It felt awesome. I got a really good workout (arms are in pain) and it was just so cool to have two sets of oars rowing in time (most of the time) and the boat just shooting (at least compared to rowing when you're tied to the dock) across the water.

When we were out there, I looked to shore and saw that Sindya was out on a single scull. She was actually standing up on it without holding the oars. That's super difficult to do. She eventually fell in. But given that I fell in while sitting down with only one hand off the oars, she did pretty damn well. She divulges the secret to her balance here.

Pretty soon, Sindya and I may be able to go out on a double-scull by ourselves. And if it's anything like riding a tandem cycle with her, I'm sure I'll get a solid workout. :)

On an unrelated note, check out amazon's cool ajax UI for doing a
diamond search.

Monday, August 29, 2005

waterskiing!

So this morning we went to Ulsoor for rowing. Sindya and I did ran around the lake and were just stretching and waiting in line for a single-scull. Today was the day we were meant to practice balancing in a scull while tied to the pier.

Just then, they brought out some waterskis and there was an army guy trying to learn how to waterski. He wasn't able to get out of the water, and I made some comment about his skis not being positioned correctly. One of the coaches overheard so he turned to me and asked if I knew how to ski. Then he was like "will you show us?" It was issued as sort of a challenge. So I said that I could definitely give it a try.

Well eventually the boat came in and I got into the water. The only thought going through my head was "shit. now a bunch of army guys are going to get a laugh out of me falling" Luckily, I was able to get up on the first try and even cross the wake a few times.

After two rounds of the lake I came back to shore and watched Sindya's balancing act in the scull (she had already gotten in). There wasn't time for me to try today, but that's okay. I haven't waterskied in oh about... fifteen years. So I've spent the rest of the morning smiling from ear to ear.

PS: I should mention that Ulsoor was no cleaner today than it was yesterday. So if I die because of sewage ingestion, then we all know why. :) (actually it wasn't that bad)

Wednesday, August 24, 2005

gluttony

Moral: Gluttons shouldn't go to an all-you-can-eat place when starving.

Story: After rowing this morning and attempting to improve my running time (no luck: still did 16:54 around the lake), I rushed to the office and forgot to pick up breakfast either at home or near the office. By 11am I was starved and light headed.

Every Wednesday they have an all-you-can-eat salads-and-cold-cuts buffet at a german cafe (Cafe Schlomegger) above the Max Meuler center in Bangalore. I called and made a reservation for 12:30 (when they open). I ate about four full plates of meat and salads, after which Sindya (who didn't eat quite as much as me) proceeded to order dessert. Of course, I had to have some of that too.

After a 90 minute lunch, I could barely walk the four flights of stairs back down to the road. An hour later I'm at work feeling unbearably sick. ugh

On a side note, Moohaha writes about bad drivers in the US. I'm amused

Thursday, August 18, 2005

running

The rowing coaches want us to be sufficiently warmed up before starting to row, so I've been running around Ulsoor Lake every morning for most days the past two weeks (the long weekend excluded).

I was told that it's 3.6 km around the lake.

I timed myself the past three days and the times were 18:34, 17:40, 16:54 respectively. Pretty rapid improvement once I started timing myself, but I know I'm getting closer to my current limits.

As soon as I get under 15 minutes I'll be close to a six-and-a-half-minute-mile, which is my current goal. I'm told that the Army dudes run it in under 15.

Given that I do an hour of rowing after that, I'll probably just stick at that, until it becomes painlfully easy for me (wishfull thinking)

Wednesday, August 17, 2005

Kerala

Will update this entry later; need to head to bed. But here's a link to photos from a weekend in Allepy, Kerala.

(If you're subscribed to the feedburner version of my feed, you should already see the pictures)

So last Thursday night, Sindya and I took off for Kerala. We got in a bus at 4:30pm, and reached Allepy at 5:15am on Friday. A car from the resort was waiting to pick us up. We got to the resort minutes before sunrise, and were able to take some great snaps. The resort itself is very rustic. No TV in the rooms, all wood construction, outdoor openair bathrooms, etc. It was so beautiful there that we just stayed up and watched the sunrise and hung out in a hammock until breakfast time.

For breakfast, we had Appams and Stew - a traditional Kerala breakfast. The stew is basically vegetables boiled in coconut milk - it's delicious. After eating about 4 appams and exhausting the stew that we got, I asked the waiter to bring me a bowl of coconut milk and a jar of sugar, and proceded to eat six more appams doused in coconut milk and sprinkled with sugar. That about set the tone for the rest of the trip.

At around noon we took all our luggage and checked onto a two bedroom houseboat (there was no one in the other room so we had it to ourselves). There were three people on the boat with us; a fulltime cook, a dude who steered the boat, and a dude to run the motor. :) The cook made some amazing lunch (shredded coconut in some kind of gourd, some daal, and a yummy kerala fish curry) and dinner.

There was a mattress on the front of the boat where you could just lie under the sun and watch the world go by. That's where we were most of the time. We stopped in the middle of a lake for a while and I went for a swim though was a little scared because the dude told us there were water snakes (non poisonous) in some parts. At around 6, we docked somewhere and went for a walk, had dinner, and went to bed.

We got back to the resort by about 10am the next morning (breakfast was just toast along with an amazing dessert of caramalized unripe banana - why is it that we don't have dessert after breakfast all the time?). At noon we got on another boat to go watch the annual snakeboat races.

Each snakeboat accomodates about 120 people (usually representing one village). There are several heats with 4 boats each; it looked like they rowed about 2+ miles but I'm not sure. It was great fun to watch the first 3-4 heats but it got old quick.

After finally making it back to the resort at 6pm, we hogged some more on the buffet dinner (appams and coconut chicken curry, followed by many more appams eaten with - you guessed it - coconut milk and sugar) and hit the sack.

Sunday morning was spent just chilling in preparation for a 4pm bus back to Bangalore.

Overall it was an amazing trip. Did I mention the coconut milk?

Tuesday, August 09, 2005

innovation week

A few months ago, I had a really kickass idea for a relatively simple web app that, I think, could make web surfing much better (yes, another one of those ideas). I worked on a proof of concept but, being close to a big release at work, I couldn't find the time to concentrate on work as well as a prototype.

With support from Management, I was able to spend all of last week (minus a few hours each day when I had to attend meetings) working from home on my prototype. It was great fun to stay up late with pizza, coke, and some good music and hack away; I haven't had that much fun coding in... well... a long long time.

On Sunday night, I slept at 10pm (because I was going to start rowing classes at 6am on Monday) but ended up waking up at 2am with a head full of code. The last time that happened to me was probably during OS class way back in 2001. I ended up coding from 2am - 5am, going to the rowing class at 5:30am (we ended up not starting until today so just went running), playing tennis from 8-9am, and then being at work all day. Just when I thought I was ready to pass out at home in the evening from exhaustion, I just had to bust out a few more features that were spinning around in my head.

The app is not ready to go live yet, but it's at the point where I was able to demo it off to a few people at work today (sans any browser crashes or error messages). It's the first time we've done an 'Innovation Week' at Amazon Bangalore. Working on something small and innovative gave me a badly needed recharge; back to 'real' work now.

I'm totally convinced that RoR is the way to go for frontend development. It's funny; Ruby on Rails made the webapp/db coding so trivial/nonexistent that 90% of my time was spent writing javascript. I've mostly been doing backend, server framework-type coding at work so I'm not exactly an authority on frontends. But the little jsp that I've been exposed to tells me that RoR is the way to go.