Monday, April 16, 2007

The fire is burning.

Several people have asked me if I have a hard time motivating myself now that I'm starting something of my own. In fact, that's a question I asked my friend (and bluedot founder) a few months ago.

The answer is an emphatic no. I have this hot fire burning under my rear end that makes me do all sorts of odd things. Like wake up at 4:15am to start coding because I just dreamed up (literally) a line of code. Or pass on the wonderful california sun and sit inside and code all day.

I realized today that my first code-complete deadline is in about 15 weeks. And that just turned up the temperature a notch. The only redeeming thought is that what I have so far is only 6 weeks worth of actual coding.

Tuesday, April 10, 2007

eating whole and cheap

The wife is doing a story (possibly series of stories) on eating whole/ natural/ organic/ healthy on a low budget and without devoting your entire day to cooking (I'm busy coding all day, and she's busy with classes and assignments). We also live in a tiny studio with two hotplates, one bowl, two pans - you get the point - a minimalist kitchen.

This week we are on a $60/week food budget for the both of us.

My breakfast today was fig-bran muffins that she made (basic recipe courtesy our buddy guidoism) and a big strawberry/banana milkshake. For lunch I had a sandwich with guacamole (home-made), hummus (store-bought), yogurt (store-bought), cheese, tomatoes, and bread (store-bought). Dinner was lentil soup, asparagus, and bread. I want to try making my own hummus next.

I think we still have a few bucks left on our $60 budget, surprisingly, and a lot of ingredients with which to cook the rest of the week.

She hasn't yet decided how long this experiment will last. Part of me wants to continue with it for a while - just so I eat healthier and more creatively. The rest of me is hoping the budget will increase a little :)

Thursday, April 05, 2007

Magnifying mirrors

I've had this hunch for a while about people that really get on my nerves. The hunch is that the people that irritate me are the people in whom I see my bad qualities qualities reflected or, more often, magnified.

I wasn't sure about it but a few weeks ago the wife and I sat down and talked about all of the people that annoy each of us (both of us are pretty chill, if I may so say so myself, so the list was quite short - but both of us have a few people that drive us up the wall). We realized that, in each case, the thing that gets on our nerves about the person is some trait that we both are very conscious of in ourselves and try to change or improve.

So all of a sudden getting irritated by someone has a silver lining - it's just a little reminder about the things that we need to work harder on improving about ourselves.

I'm curious - have you found the same to be true in your experience?

Update: The wife claims that she came up with the idea long ago and I have just misappropriated it from her. The wife is always right.

Thursday, March 29, 2007

road trip

All of our belongings are now in a 17' U Haul, and we will be hitting the proverbial road shortly, to head for sunny California. Goodbye, Seattle. We'll miss you.

Wednesday, March 21, 2007

functional tests

The first time I played with rails (two years ago), I was super sloppy about writing unit tests for my models - I wasn't working on a very complex product.

This time, I've been very diligent about writing unit tests - and it has definitely paid off.

Since my application structure is still in flux, though, I haven't written a single functional test. SO far, so good. But now it's getting to the point where things are just starting to blow up a little at a time. Which goes to show that any shortcuts you take in life will come bite you in the ass sooner or later.

So now I need to temporarily stop working on refining the product and go back and get myself up to speed on how to write functional tests, and start writing tests for all of the stuff I've done so far. Once I get over the initial inertia, adding new tests, and refactoring them as the application changes should be actually quite easy.

Better now than after I have customers, I suppose :)

Thursday, March 15, 2007

Good old music

A few years ago when I got my iPod, I decided not to import all of the random mp3s that I had from college - mainly because they came from various sources and didn't have all the ID3 tags in a consistent format.

So I started by importing the CDs that I owned, and slowly grew my collection.

Eventually, I moved all those mp3s off onto a backup drive and forgot about them.

Then, the other night, I remember that I had a live recording of a U2 song - and I hadn't heard it in ages. So I found that stash of mp3s and started importing a lot of that music into iTunes; fixing up the ID3 tags as I went.

And now I have all this great music from when I was in college and high school and it's bringing back wonderful memories. What a gift.

Monday, March 12, 2007

startup lesson 1 of 496,324

Keeping quiet about my business idea has been very difficult for me. Anyone who knows me knows that you can't get me to shut up on something I'm excited about. But I've been trying hard to be pretty hush hush about what I'm working on.

Why?

For one I've found that, for some inexplicable reason, whenever I talk about something, my effectiveness at actually executing on it dwindles. I dunno why, but it's as if the energy expended in talking about it takes away from the energy required to do it.

Second, I really want to get a first customer on board so that I can hone in on the idea and also develop some comfort that I'm barking up the right tree.

Well this morning I had breakfast with a friend, who's also starting a company. He's a little further along than me, though, and has funding and a formal company structure. After some conversation where I was being my usual evasive self when talking about the idea, he offerd to sign a mutual NDA so we could talk more freely. That threw me off - it's the first time someone has offered that. So I accepted and we spent the hour talking about our respective ideas and challenges and stuff.

After leaving, though, I felt like a bit of a dumbass. Why? Because the reason I wasn't talking about the idea wasn't/isn't lack of trust. It was for the reasons above. And yet, by agreeing to talk after signing an NDA, I basically affirmed that I don't trust him enough to tell him about my idea without signing some stupid piece of paper.

Obviously I don't regret the conversation itself - I learnt a lot from it. And hopefully you (I'm assuming he'll read this at some point) didn't walk away thinking that I don't trust you unless I have a signed piece of paper saying so. I think I just have to be a little more aware in the future.

Maybe I'm being naiive, but I think friendships are much stronger than any signed document.

What are your thoughts?

Specifically: 1) would you sign an NDA with friends? 2) are NDA's even effective at all when talking to peopled you don't know that well?

(NDA = Non Disclosure Agreement)

Friday, March 09, 2007

table conformity in rails

I want all my tables to have certain characteristics. E.g. I want them all to be UTF-8, and all have a field called 'created_at'.

Instead of duplicating that code everywhere, here's what I'm doing:


class MyTables < ActiveRecord::Migration
  def self.create_table( table_name, options={}, &table_definition )
options[:options] = "" unless( options.has_key?( :options ) )
options[:options] += " DEFAULT CHARSET=UTF8 "
super( table_name, options ) do |t|
t.column :created_at, :timestamp, :null => false
table_definition.call(t)
end
end
end

class Foo < MyTables
# use this like a regular migration
end



So now every migration Foo that inherits from MyTables automatically gets some default goodness.

Thursday, March 08, 2007

browser plugin idea...

There are a lot of books that people recommend to me that sound awesome but I don't quite want to own or read right away.

Imagine if you could select an ISBN number, or just visit the amazon.com page for a book, and click on a button in your browser. The plugin would automatically add it to your list of holds at the Seattle Public Library. You'd have to store your library number and PIN, and preferred pickup location with the plugin.

But after that, SPL will just send a notification when the book is available. Takes the hassle out of borrowing.

Also cool would be a wishlist importer that takes books (and maybe even cds and dvds) off your amazon wishlists and adds them to your list of library holds...

If such a thing exists, or if you write one as a result of this post, please let me know as I'd like to use it :)

insight

I recently attended a 10 day meditation retreat in Onalaska.

The course teaches Vipassana (loose English translation: 'insight'), and comes with quite a rigorous code of discipline (including no talking/reading/writing) for the duration of the course - which makes it a bit of a daunting endeavor to undertake. Nevertheless, at the recommendation of a few friends, I decided to go for it.

In line with what I had heard from friends, it was probably one of the most difficult things I've done in my life. Also in line with what others experienced, neither the 'noble silence' (see code of discipline) nor the limited meals and early wake up time (scroll to the bottom of the page) were as difficult as I thought.

While I was preparing myself for days of peaceful introspection followed by tumultuous emotions, this was quite the opposite. It ended up being a harrowing mental and physical experience (lots of thoughts, and pain respectively) that made it exceptionally difficult for the first few days.

The course was really an introduction to a theory of consciousness as espoused by Gautama Buddha, along with a technique that allows you to validate portions of that theory for yourself through direct experience. Obviously one cannot hope to completely understand consciousness within 10 days - no matter how rigorous the experience - but I feel as though the things I experienced first-hand allowed me to validate enough small pieces of the theory that I'm willing to not disbelieve the rest and trust that continued meditation will allow me to validate it for myself.

It's a little hard to attempt to lay the theory out here. But from mentioning it to a few people, it seems that it has enough in common with modern neuroscience, that it doesn't sound completely implausible. Specifically, I was recommended the book On Intelligence and told that some of the theories laid out there are very in line with the parts of the theory that I learnt.

In addition to that, I had a really cool conversation with someone who knows a lot about bipolar and the framework provided some interesting and different (no comments yet on whether they are useful) insights on what bipolar may mean.

Anyways, I know 10 days is a long time to take out of one's schedule, especially to sit quietly in one spot all day. But I think it was a fantastic experience. If you are a neuroscientist especially, I think you'd absolutely love going through this experience.

On a very very different note, A thought occurred to me today which I had to share. There are people that say that you make your own destiny and yet there are those that claim to be able to predict your future. I think I have an analogy that helps reconcile these into something that makes sense to me.

I've read many times that time is like a river. Always flowing, but always 'there'. In a whitewater course, one learns the very very basics of reading a river. Diagrams like these (scroll down) help tell you how bends, rocks, and changes in width of a river can affect its flow. Presumably if you know enough about the topology of a river, you can make a pretty educated guess about the strength and qualities of the currents at various points along it. And yet, nothing is preventing a big rock from rolling down the cliff and into the river and completely changing its flow. Or from erosion increasing the width and thus decreasing the strength of the current in a given place.

So if time, and life, are really like a river; then maybe there are people able to see the entire river at once and make fairly accurate predictions about downstream currents, given its current topology. But nothing prevents you from throwing a big old rock at the point of the river that we call 'now', and completely changing the downstream currents.

On that note, back to coding and attempting to start a successful business...

Tuesday, March 06, 2007

breakfast instead

I recently set up several breakfast appointments with friends instead of dinner. I really like the idea and think I'm going to do more of this if possible:
  • People generally have stuff planned in the evenings but not early in the morning
  • it's much healthier to eat a big breakfast instead of a big dinner (and I usually overeat when I eat out)
  • breakfast places are usually packed on the weekends (esp the good ones) - I'm guessing (hoping?) they're not as bad on the weekdays


So let's get together for breakfast sometime. There are a bunch of places that I haven't been to in a while, and a bunch that I haven't ever tried.

Wednesday, February 14, 2007

part of the seattle coffee shop scene

I guess one common way to get over the loneliness of working for yourself is to work out of a coffeeshop.

But, given my recent ergonomic adventures, I have been a little reluctant to do that for fear of my hands hurting from prolonged laptop typing.

Plus, it just seems superdorky to walk into a coffeeshop with your own keyboard.

Well, I'm a dork.

I'm at a cofeeshop right now with my keyboard sitting comfortably on my lap and mostly out of sight under the table. You'll have to ask the other people here how dorky they think I look.

For the most part I've been pretty productive, minus the distraction of listening to some startup deals taking place (that was very informative)

Tuesday, February 13, 2007

an unbalanced life

I remember when I was in college, more so in grad school, I had to try really really hard to take time out of my day to go running or to work out.

Whenever I actually got myself into the discipline of doing so, I'd usually be more productive and creative, but deciding to take that time out of my day was very hard.

A few weeks ago I was thinking that, now that I can choose my own hours, I'll be very good about going to the gym or at least going for a run. But somehow it's been ridiculously hard to pull myself away from the computer; I've been spending most of my waking hours getting up to speed on ruby on rails, and getting started on building my application. It sucks; I can even feel my energy levels dropping.

I think the commonality between grad school and now is that I own my own time. Maybe subconsciously in undergrad and at work I was able to say "you know if you're going to make me work this hard, I'm going to damn well make sure I have 'Hemant-time' to go be healthy". Whereas now (and to a large part in grad school) the entire day is 'Hemant-time' so it's harderer to justify taking time out of that.

Either way; I'm at the point today where my productivity is going to suffer if I don't get in some solid exercise. Hopefully, having written this, I'll make it out to the gym today.

Thursday, February 08, 2007

dvorak, anyone?

this is probably an incredibly stupid idea, but i'm thinking of trying to use a dvorak keyboard layout. has anyone tried that? anyone using one right now?

Wednesday, February 07, 2007

a simple tcp server

In the past, I've found it really useful to have a simple server that is able to listen on a TCP socket and print out everything it receives. It's a great debugging tool.


The following ruby snippet (adapter from an example in 'Programming Ruby') does just that:


require 'socket'
port = ARGV[0] || 80
server = TCPServer.new('localhost', port )
while( session = server.accept)
while !session.eof?
puts session.gets
end
end

Probably cooler would be if it took everything on STDIN and echo-ed it back to the socket as well.


Update: Thanks pooja. I couldn't think of netcat at the time but that does exactly what I want. I'm such an idiot for not remembering.

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