Wednesday, October 21, 2009

Maker Shed, a dishonest store

I'm usually fond of O'Reilly media, however I had a bad run-in with Maker Store that has made me rethink my views of them.

I attended the Maker Faire this year, and liked the fair a lot. In an impulsive and generous fit, Neha bought the Advanced Arduino kit for me, which is a collection of parts being sold by Maker Faire. What a terrible decision.

A kit from hell

For starters, the kit comes with little or no documentation. It comes with a book, written by Tom Igoe, but the projects in the book have nothing to do with the components in the kit. The box claims there is a motor, tri-color LEDs, temperature sensors etc. However, there is little information on which pieces are which.
  1. The temperature sensors were particularly wonderful: they are two pin devices that only had the numbers "503" written on them. Search for that on the Internet!
  2. The motor had connecting wires that were half the length of a paper clip: too short to connect to any real circuits. Stripping the insulation off the wires left almost nothing to connect/solder to.
  3. The tri-color LEDs are puzzling. Ben-Collin Sussman wrote a review on the product page saying that the pinouts for them were different from every other tri-color LED. And lack of documentation means that you spend extra hours figuring the discrepancy.
  4. I did mail their support people (and open a ticket) about this lack of documentation. They wrote back saying that they were "getting the specs from the manufacturers" or some such thing. Do they mean to say they have no idea what they are selling? That was many months ago, and nothing has showed up.
All-in-all the kit seems like it was put together at the last minute, by someone who has never played with an arduino before. As an introductory kit, it is sorely lacking, and it should be avoided. If this were the end of it, I'd still avoid buying anything else from the Maker Shed. However, the story gets worse.

Lack of Quality Control

Recently, I've been working on a toy project. It is somewhat complicated, and it hasn't been working. After spending many hours debugging it, I isolated the fault to a non-functioning wire that came with the kit.

A faulty wire.

I know for sure because the only sheaf of breadboard hookup wire I have came with this kit. I usually avoid these hookup wires: I prefer my own 22awg solid core wires for cleaner breadboards. This wire had somehow remained on the circuit.


So now you're thinking this is pretty bad: well, it gets even worse! I went online to post a juicy review of this "kit", only to be told that I had already posted a review.

Funny, I don't see my name on the list of reviews, and it clearly states that there are exactly five reviews.

So I look into my reviews, and sure enough, I have written only one review: a review of this lousy kit, with a one-star rating.
So Maker Shed does not post my review, since it is negative, and they don't use it to compute the average rating for this kit either.

Not posting negative reviews is just plain dishonest.

After the poorly designed kit, the faulty wire, and the dishonest website, I'll avoid buying anything from their store. There are many better avenues in most cases, so this isn't a big limitation. Sparkfun, Futurlec, Lady Ada's store are all great options.

Saturday, August 22, 2009

Movies today

The recent movies have been a big disappointment, while the older movies are imaginative and creative.

A lot of the movies today are fatalistic: your fate determines everything.  Merit seems to be entirely missing.  Take "Kungfu Panda", for instance.  The panda was a loser, who did not train, did not practice, and had no kung-fu skills.  Yet, the kung-fu experts were still powerless against the tiger and  ultimately it was the bumbling panda who saved the village.  Lesson: don't bother learning anything since the experts are powerless against ignorance.  Another example: the recent Star Trek movie.  Kirk was an obnoxious, un-trained person, who became captain due to his father, and mostly luck.  I don't remember him demonstrating any special capability that others lacked.  Why was he the captain?  It seems every other movie is about someone's destiny.  You can be a complete loser, but if it is your destiny, you'll be the hero.  What a pathetic excuse of a story!  This was also done ad-nauseum in the Star Wars movies, among others.  

Another plot device that I'm tired of is "Saving The World".  Why is every movie about someone saving the world?  Earlier it used to be saving a village or a country, nowadays it is a whole planet.  Nearly every science fiction movie is about saving the world.  This might have been interesting the first time around, but it is hard to identify with.  I haven't saved the world recently, and I doubt many in the audence have.  Science fiction can be so much more interesting: you can dream up entire worlds.  But all the stories seem to be about bigger weapons, and men (it is always men) saving the whole world with their utterly massive... egos.  Is the world so fragile?  And really, why is one person the sole hope of humanity?
The world also seems to be painted in obvious black-white tones.  The good guys volunteer for orphanages and the bad guys eat puppies for breakfast.  There is almost no shade of gray, or any internal struggle.  There is none of the suspense of Hitchcock's "Suspicion", where you don't know whom to side with.  There is none of the internal conflict of "Marnie", again a Hitchcock classic.

Story lines are not the only things that have suffered.  Camera work is much jerkier than it used to be.  Notice how these days cameras jerk around incessantly?  There are no long shots and no close-ups of emotion.  To see the difference, watch the recent Star Trek movie and then watch Alfred Hitchcock's "Rope".  There are continuous scenes lasting entire minutes in Rope.  You see close-ups of actors, there is suspense built through silence, though emotions.  In Star Trek, the camera work was a jerky mess, with no shot lasting longer than a few seconds.

So instead of watching the completely formulaic movies, I have started watching old movies. Of course Alfred Hitchcock is a favorite, with movies like "Rope", "Lifeboat", and "Marnie" providing some welcome relief.  Another movie that I enjoyed was "The Apartment".  It had beautiful camera work, a charming story, and lovable characters.  A big surprise was an ancient movie called "Sherlock Jr." starring Buster Keaton.  Buster Keaton's splendid acting and stunts were marvelous, and I intend to watch more of his movies as a result.    Combined with a home projector, there is no reason to suffer through new movies.  

Thursday, June 25, 2009


A co-worker introduced me to Radiolab recently. It is a radio show that is also available as a free podcast. Each show discusses a specific topic from a scientific angle: why we sleep, how we remember things, even love! It is, without doubt, the best radio show that I have heard. Go get it now, get all the episodes. Buy a music player if you don't have one already, if only for Radiolab.

The hosts of RadioLab are Jad Abumrad and Robert Krulwich, and they do a wonderful job of interviewing people to bring out the joy of inquiry. Each show leaves me with a sense of wonder for the topic. In addition to the excellent production quality, Jad and Robert have a knack for finding the experts and asking insightful questions.

This might just be the second coming of radio. The Internet has allowed good content to find its audience. Without the Internet, a show like RadioLab would be confined to the few cities that broadcast it, and at very specific times. Now, a student in India can listen to Jad and Robert at whatever time is most convenient.

Monday, June 22, 2009

"Indians are smart!"

This is a statement heard often in schools and companies in the US: "Indians are smart", or "Indians are good at Math". Sometimes it is Asians (Chinese, Japanese, Koreans) instead of Indians, but this notion persists. Since this is such a common perception, it helps to understand where it originates.

Most Indians that are visible to Americans are university students, co-workers, or other hard-working geek types. This is a very select group of people: those who were good at school, loved standardized tests and were willing to work hard and travel a long distance from their families. (People claim this is the cream of Indian intelligence, which is too generous. There are many smart people who choose to stay in India, because they can't bear the thought of leaving friends, family, food behind.)

So when you come across one of these folks in the university or at work, it occurs to you how all Indians are so different from the average American. What's more, every Indian seems to be hard working and reasonably sharp. After meeting a few such people, you cannot help forming an opinion that, "All Indians are Smart". Bang! You may have generalized a bit too far!

Back home in India, I made similar generalizations myself. I had met some foreign students studying in India and I was amazed at how bright they all were. Of course, they knew the university coursework, but they also knew about art, music, cooking and wine. They knew more Indian history than I did! Had I seen enough of such exchange students, I would have concluded that Western students are brilliant at everything they do. Similarly, many of my father's Japanese colleagues seemed to be exceptionally interesting, hard-working and sharp. But if you think about it - these were men with a high levels of responsibility so a dull person would automatically be disqualified from the job.

Something similar happens when Indians watch TV, and conclude that all Americans look gorgeous. Big mistake! They haven't encountered the average American, with his excess baggage of fat.

This is just a Sampling Bias, which was my original title for this post. However, a technical term would scare off half the audience, so I selected a suitably sensational title.

Thursday, June 18, 2009

Android Developer Videos from Google IO 2009

I've been having a lot of fun programming the Android. The Android talks from Google IO this year were informative and are a great resource for android programmers. You can view all the talks at the Google Code page listing IO 2009 videos.

Google has released these videos under the Creative Commons Attribution-Share Alike license so you can download them in the US from Youtube. For everyone outside the US, I created a torrent with Android developer videos from Google IO 2009 that you can download.

You can read the full details about the Creative Commons Attribution Share-Alike license to ensure that your use of the videos is legal.

Have fun programming the Android!

Sunday, June 14, 2009

Best Place to Work

Google gets held up as the best place to work, year after year. Reporters seem to focus almost entirely on the following factors:
  • Free gourmet food
  • Free massages
  • Free fitness centre
  • Awesome transportation options
Sounds good, doesn't it? Well, I'm here to tell you that reporters are wrong. None of those matter, or at least, none of those matter too greatly. What really matters is the work environment and peers. I can buy gourmet food, massages, can pay for a gym membership and drive to work. All those things cost money, but are easily available. What I cannot control, and cannot buy is a work environment. If my peers are jerks, I cannot do anything about it, short of leaving altogether. I haven't worked at many places, but from conversations I've had with friends, I maintain that Google is great because of their work environment. Here are some examples:
  • Google encourages people to work on something they enjoy. Don't like what you're doing: you're free to shift, within reason, to a project you enjoy. There's plenty that a smart engineer can do, and Google appreciates that.
  • Managers are technically sharp and have tremendous organization and communication skills. I've attended plenty of meetings, and have always walked away with renewed respect for how well the managers understand all aspects of an issue. After one scintillating meeting, a peer observed this as he remarked, "Well, the brilliance was at display there, wasn't it"?
  • The people I work with are warm individuals who care about their colleagues. When I had an unfortunate accident, my manager specifically instructed me to stay at home and recuperate. He also personally offered to transport things from my office to my house. I wouldn't need it, but it was a remarkably warm gesture: and this is just one example. I can recount countless such examples.
  • Peers are talented and sharp people: to the point that I reserve Mondays and Tuesdays for feeling like an idiot. Most people seem to understand complex issues faster than it takes me to describe them. The people I have worked with are sharp, and yet they are humble. They encourage inquisitiveness, and lack egotism. And this is a team consisting of people who have authored text books in this field.
  • My location, attire and timings don't matter to anyone. I can work from home on days that I'm feeling ill, or just too lazy to get out of bed. As far as I get my job done, why should it matter what clothing I have on? I have never been asked to be present at specific times, or specific places. Sure, there are meetings that I could attend: but if they're not related to my immediate work, I'm not required.
  • I have a choice of computing environment. I choose to run Linux on both my desktop and laptop, and both are well supported by the administrators.
  • Beyond the immediate work environment, Google seems to be a fertile ground for meeting other sharp people. All around, people are reading interesting books, having fascinating discussions, and building cool things in their spare time. The Google doctor is the best doctor I have ever seen, and her reputation confirms this. You can have great discussions about world cuisine with cafe staff, and they'll follow up the discussions with email.
  • Even walking around the office is a rewarding experience. People post interesting snippets along office walls, and there are mini-libraries and common bookshelves stocked with interesting books. Large meeting rooms are abuzz with interesting talks by authors and technical experts.
It is this wonderful environment that employees enjoy. Take away these positive interactions and no amount of free food or massages will retain employees.

Friday, June 05, 2009

Worse than an error

I've been using website quality as a metric of the quality of an organization, and it has been surprisingly accurate. Organizations that put effort into their website tend to be customer focussed. A sloppy website means that either nobody uses the site or that the site owner doesn't care about the users.

I had heard that Indian census data was online, and I was always curious to find out what the Indian divorce rates are. So I visited the census site at You can see a picture of the website here. It is a very poor, shoddily designed website. A summer intern can do better with a day's work.

But what's better is not a single link works.

You can replace the server with a toaster and nobody would notice.

That entire website is worse than an error page!

Some of the links take you to the site. Let's ignore the two domains, maybe there is a strong reason to have two different domains for data. Let's focus on the content. I spent the next ten minutes clicking on links that don't work. Here is a collection of images of error screens I got. As before, most of the links have very sparse content, and many of the links result in errors.

Here is another error screen:

Despite having very little content, they did go through the effort of adding links for translation (through Google Translate). So you can view the website in any language. Given that you will be looking at error pages most of the time, here is the entire website summarized in Russian!

Those two sites are absolute user interface nightmares. The second website does have some useful data after you go through a hilarious registration screen. Instead of putting up a single data file, they have elaborate drop downs that show you information in nibble-sized chunks. The site does not contain links to actually download the data. But they do have CDROMs and books in their "store" if you are eager for more. If you were to do any meaningful analysis, you'd have to spend hours just navigating their interface. Here's a radical suggestion: why not just put the data online and do away with the flashy images, the registration, the 'store', and the labyrinth of drop-down boxes? You know, like the rest of the world does? The site has been developed by LogicSoft, just so you know where the blame lies.

I was showing this to Neha, and we were discussing how bad the websites themselves were. Neha had a wonderful story which was related to the subject. Many years ago, while she was a Statistics student, she figured that it would be interesting to play with real-world data. She was in Delhi, and the relevant government offices were nearby. So she and a friend went over to the office to ask for data. They were treated with such utter contempt that they gave up any hopes of ever working with government data. Further, their story was a cautionary tale to other students in their university, who quickly steered away from any area even remotely connected with the Indian government data. Some of them were considering jobs that would have involved Indian government data, which they quickly abandoned for better employment.

Maybe there is something connecting the quality of the website and the organization. The census bureau website does turn out to be a good indicator of the attitude of people working at the Indian census bureau.

Sunday, May 24, 2009

My father, computer security expert

Check this transcript, carried over IM between my father and a friend of his (called Nikhil).

Nikhil: am not fine
Nikhil: am stuck here in uk
Father: what happened
Nikhil: i came here for a resort
Nikhil: and i was mugged at a gun point'
Nikhil: my moeny and so many other thig have being taken away by tis hoodlums
Nikhil: are you here with me
Father: yes
Father: Very sad to hear

Nikhil: am thinking if you could loan me some money to pay my hotel fee and some other thing and as soon as am back i will payyou back
Father: Who was your last boss, and which company you worked for
Father: Which floor was your office on

Nikhil: why asking me all this
Father: What was the PIN code of the office area
Nikhil: i cant talk right now
Nikhil: all i need is your help
Nikhil: my boss
Nikhil: pls help me
Father: Who used to sit next to you
Father: with whom did you fight everyday

Nikhil: ok
Nikhil: bye

In case you didn't understand it, it is a very sophisticated scam, where a fake Nikhil is asking my father for money. My father is not convinced that this person is Nikhil and tries to validate identity through secret keys (answers to questions only the real Nikhil would know). When my father first told me about this, I did not understand what he was doing. This is a very sophisticated phishing attack and I was amazed that my father saw through the scam immediately. There are a couple of lessons from this:

  • Security is a mindset, not a product. My father's computer was not compromised. Most probably the attacker has the password to Nikhil's account. No antivirus or firewall on my father's computer would have prevented this attack.

  • Unsafe websites and computers are a threat to everyone. Unsafe Windows computers and websites that our friends and family use could potentially be a threat to us.

  • With users of online social networks, this attack could be made very convincing. Another reason to avoid putting too much information about yourself online.

  • Security is about teaching people healthy skepticism. In this case, my father is already a security expert!

Wednesday, April 29, 2009

Watchtower updated. Now with Spy Glass!

Watchtower is a program that turns an Android phone into a wireless surveillance device. I recently revised Watchtower: it now includes the option of staying awake, a new icon, and a cleaner UI.

The real advance has been a desktop program called Spy Glass, which shows you the view through the Watchtower. It is completely written in Java, and works beautifully on Linux, Mac and Windows.

Downloads for both Spy Glass and Watchtower, and updated information is available.

Go get it now, that's all I can say.

Alright, for the more technical aspects. This was the first time I wrote something large in Java, for the desktop. I had looked at Java earlier (in the jdk 1.0 days), when it would compile and run on my Linux machine, and the binary also worked on Windows. I had written some dopey Blackjack program for the commandline, and was suitably impressed about how a single class file could work beautifully on two systems. I did not bother writing applets, partly because I had a terrible network connection and no use for them, and partly because my Pentium 100 would have a cardiac arrest at the sight of applets.

Before writing Watchtower, I had used Remote Droid for the Android, which turns the phone into a remote keyboard and mouse. Very handy when controlling a media center, and it worked perfectly in Linux. The Remote Droid authors had written their desktop program in Java. I figured it was a good idea for Watchtower to have its own pre-packaged desktop program, to make it easier for lay persons to use. Given that the Java marketing slogans routinely abuse the words network, cross platform and rapid, I figured it was a good time to give Java a try.

The good parts: The Jetty project has written a full J2EE web server in Java, which makes it trivial to embed a full web server in Java code. All I had to do was write a simple servlet which accepts POST requests, stores the images in a location and displays them. The Apache library had awesome servlet-side code which could parse a POST request and return the file.

So all one had to do was put it together, write some trivial Java code to display an image, and update the image when it changed. My work is a single class which is a servlet, contains an embedded web server, and is a JFrame as well! The Eclipse IDE was astonishingly good, perhaps better than IntelliJ on this project due to the vast hordes using Eclipse along with Jetty.

I put in some effort to unpack all the jetty and apache class files, put my own class files, and then packed it all together as a single jar. Again, the Java commandline tools were quite painless, and it was easy to handle, once I knew what I was doing.

In summary, this was ridiculously easy.

The bad parts: the documentation was often quite confusing. Java API documentation is a great reference, and beyond the Java Tutorial, one has to do a lot of searching on the Internet to find how to hook the parts together. Some of this was my own lack of understanding, since I was totally clueless at the start. That said, it seems that there should be a better way to highlight what the bits are doing beyond some pithy API document. Google was very helpful, of course. A minor hurdle remains that jar files cannot have file-specific icons, which means that spy glass gets platform-specific icons.

Finally, I am using some beautiful icons developed by Jacal Team and Artua. Thanks to them for sharing their work and letting others use it.

Thursday, April 23, 2009

Watch Tower: Android as a wireless surveillance camera

I recently developed a program called Watch Tower. This turns an Android phone into a wireless surveillance camera. The phone takes images periodically and sends them (via HTTP) to a computer which can accept files. It can use either the cell phone's data plan or Wi-Fi to send the images.

Watch Tower requires setting up a receiver program on some computer, but this is very easy to do. This can be done on Windows, Mac or Linux using any web server and some trivial cgi scripting. Details on how to do this are also on the Watch Tower page.

The entire source code is available under the GPL.

Monday, March 16, 2009

Building your resume in a bad economy

The previous post discussed building your resume. While an internship or a startup might work well when the economy is good, they aren't always good options when the economy is bad. So what can you do when nobody has internships for you? Or what can you do if the previous options do not appeal to you? First, it is important to note that a bad economy is not all bad for students. Students have few commitments and responsibilities: they are usually unmarried, and can continue living with their parents for a while longer. So as a student, the goal should be to continue working on your interests and wait for things to get better.

The best candidate in this section is writing Free Software: software that is licensed under a very generous license, like the GPL, the LGPL, and others. This is fast becoming one of the strongest signals for the capability of a technical candidate. Working on a mature product like Apache, and being able to make good progress says volumes about a candidate. These projects accurately reflect real-life software projects, and expose students to many problems that are difficult to simulate in classrooms. Being able to contribute to an existing project is much tougher than starting from scratch, so these make wonderful playgrounds. Even if you fix three big bugs in the summer (a bug a month), you are off to a flying start in terms of a resume. Free Software projects have a huge impact. Everyone from small startups to the biggest of online companies use a variety of Free Software. The projects are widely distributed, and contributors include the best and the brightest. Also, the wide variety of software ensures that there is bound to be a project that fits your interest and level of programming. All the resources are freely available. This is an amazing networking opportunity: working on the Linux kernel would put you in touch with some of the brightest systems engineers in the world! Finally, your contribution is visible to the entire world: all the source code is publicly available. The payoff from such work can range from little or nothing (you work and nobody pays you) to very competitive (you take part in Google's Summer of Code or other bounties). Free Software work on a resume shines through, so rest assured that your work is recognized even if it isn't financed. I took part in Google's very first Summer of Code while I was a student. It was an amazing program and has improved in successive iterations. I highly recommend it. The time required depends on your level of commitment, ranging from a month to three months.

If nothing else, you can build a community in a very direct way. Putting up a blog, putting up a forum, or a way for like-minded individuals to get together might just work. This pays nothing, will probably not amount to much, but requires little or no time. Many people make long-lasting connections through their local Linux User Groups, and learn a great deal as well. This is noteworthy only if your contributions are. In any case, you get in touch with people of similar interests that might suggest more fruitful ventures. Linux User Groups tend to have a high concentration of sharp people, and the number of fundies and fanatics has been limited in my experience. Your mileage may vary, but it makes a good start. As you can tell, the payoff varies widely. The networking opportunities have a very wide range, depending on the area. However, you do learn new things, and get to explore some field of your interest. This might not be the real world, but it comes pretty close.

I would caution students against unpaid internships. If pay is a measure of your worth, an unpaid summer internship speaks poorly about your skill or the employer's view of you. A far better option would be to spend time exploring your own interests and working on something that is directly interesting to you. Even a summer spent learning the guitar is more fruitful than being someone's slave. A friend of mine spent considerable time teaching in a third-world country, while another spent nearly a year bicycling through Asia. All these people gained vast experience. This experience did translate into some marketable skill, and it also reflects in their remarkable world-view. Another friend of mine spent his summer building huts in an earthquake-hit area. In addition to losing naivete, he lost quite some weight. That summer turned him from a chubby character to a fit, handsome boy. Neha volunteered at the SPCA for a month one summer, and enjoyed it thoroughly. I would recommend volunteer work over unpaid labor in a commercial organization. Here's the reason: unpaid work hints that you either do not have any marketable skills, or that the employer isn't capable of making use of them. Both speak poorly of the transaction. Even as a student, you do have valuable skills: new ideas, exposure to new technology, enthusiasm and time, in addition to your professional skills. So it means that the employer doesn't really know what to do with you, and is hoping that your slave labor will be compensated by their name on your resume. It isn't worth it. Good companies pay their interns well, and poor employers do not shine on resumes, making an unpaid internship one of the worst deals. If you do decide to volunteer, the time requirements for volunteering are completely up to you, the networking opportunities are limited. Why do it? You get a wonderful understanding of the world, and a remarkable feeling of achievement that is hard to match.

As always, your goal should be to do what is interesting and fun to you. Building on your interests is the best way to build your resume.

Saturday, March 14, 2009

How students can build their resume

Life is tough for students. It often seems like the lessons are worthless, and the real world is too disconnected with the toy examples you get to play with in school. Bad programming classes reinforce this idea of learning through toy examples. I've seen more than a few resumes where the software experience is limited to trivial projects done in school alone. Both students and employers realize that this is not enough. Ideally, students are expected to get some industry experience before they enter the job market. This post talks about some of these avenues. This will be a long post, so it is split into parts.

Internships are great at building a resume. Most good internships consist of solving a small subproblem that is directly useful. The employer gets to test the student's skill in a real-life problem. The student gets to see a real problem and apply his understanding to it. Needless to say, rote learning is not rewarded. A solid grasp of concepts and an inquisitive mind are the best thing you can bring. Students might be asked to implement something simple and time-consuming that both tests their skill and frees the remaining developers. Internships are among the best sort of resume building: the student earns money and learns valuable skills. Both sides build contacts, and evaluate each other. The average internship lasts 3 months and pays close to your full-time salary.

Startups seem to be a popular resume builder, especially in the West. Depending on how much time is spent in the startup, they can be great opportunities. In a startup, you get together with like-minded people to form a company to solve some problem. Everything from the idea to the implementation must be done in-house. This is perfect for small teams of highly capable individuals. Web-based startups were quite popular a few years ago. Making a website is easy especially if it is tuned to a specific need. Unlike internships, the average startup takes a lot of time and effort. It is more risky in terms of payoff as well. Your resume does not take a big hit if your company folds: startups are inherently risky, and everyone understands this. Depending on the problem you tackle and how far you get into it, it can have a wide range of impact on your resume. At worst, it still shows initiative and drive. You learn a lot of top-level issues that are generally not made available to junior employees. Finally, you get to solve a problem from beginning to end. That said, startups take a lot of effort and time. It can easily impact your academic career if you aren't careful. Finally, your networking options are limited compared to students doing internships.

A simple alternative to a full-fledged startup might be a simple website demonstrating an idea. These work best if the idea needs the long tail of audience for the best impact. Say you've developed a new way for people to pick the best commute times. You buy a domain ($8), some space ($30?), and put up a website showing off your idea. People use it if they find it useful. You get the satisfaction of having made a real product, even one that is simple and small. You could try monetizing it with Google Ads or similar services. If you find a lot of people using your website, you could turn it into a startup. If there's no traffic, at least you have a working product and a better idea of the work behind a real service. The time you put in depends largely, but shouldn't be more than three months. The payoff is very limited: you're unlikely to make much money. Networking opportunities vary, but the website lives on as a proof of what you can accomplish all by yourself. The biggest payoff is actually making a useful product and learning the entire process, even at a tiny level.

The next post will consist of options like software development that you can do yourself, and why unpaid internships are a bad idea.

Monday, March 09, 2009

Average Quality

Is it worthwhile to have good janitors and administrative staff in universities? How about staff in dining halls (called "mess-boys")? My dad certainly thought so. He often told us how the dining hall staff in his university was top notch. As children, we thought it strange that someone would remember the quality of such things. Who cared about mess-boys when you had wonderful teachers?

At IIT Bombay, I faced some of the worst staff. While there were a few gems, like the kind lady who arranged transcripts, most of the clerical staff were rude and unhelpful. The sought to assert their power over students rather than help them in any meaningful way. Many of them saw students as an annoyance, and as temporary visitors in their bastion. The worst were the security guards, who thought that their position somehow gave them unlimited power. While the best interaction was remarkable, the average interaction was abysmal.

Such low-life staff really bring down the average quality of the place. While your best interactions might be pretty good, you also have to live through many terrible interactions. Interactions that you cannot avoid and whose frequency you cannot control.

When I began working, I was amazed at the quality of the best engineers. They seemed like super-humans: smart, fit, affable, polite, productive. I was discussing this with a person from my team. He mentioned that he had worked in plenty of places where the top 5% were very good indeed, but that this was no indicator of quality. According to him, what really set this place apart was the quality of the average engineer, which was much higher than his previous companies. You are lucky if you only get to interact with the best. Usually, you interact with all kinds, and then the average quality is a better indicator of how happy one would be in a company.

Recently I had a chance to witness a dramatic lowering of average quality. A friend of mine was grumbling about how she wasn't happy with the system administrators at her job. While her peers were very nice and smart, she dreaded interacting with two system administrators. In the past, she had no interaction with them but due to some hardware change, she was forced to deal with their antics. They wouldn't let her install emacs on a machine, for some utterly contrived reason. They wouldn't even install Python, even when it was essential for her to do her job! These two clowns are causing her so much misery, that it overshadows any sense of satisfaction or accomplishment due to her everyday work. This isn't in some backwater either, this is happening in the main office of a prominent Silicon Valley web company. If this company had been a little more selective in their system administrator hiring, she would have been a lot more productive. I've talked to some more people from this person's team, and her observations are shared by others. The consensus is that firing these two people would have a huge positive effect on the productivity of everyone in her team.

So maybe my dad really had something when he spoke of the quality of the mess-boys. A collection of many good mess-boys make a great campus!

Saturday, March 07, 2009

The Indian Diet

In a lot of countries people divide themselves into two populations according to diet; the vegetarians and the non-vegetarians. There might be a couple of additional marginal groups but the variety in diet types is still fairly limited.

Among Indians, we find a plethora of dietary groups. Here's an abridged list:

  • Pure vegetarians (plants only)
  • Regular vegetarians (plants primarily, but eggs are fine, especially when eggs are hard to detect, as in cakes)
  • Eggetarians (plants and eggs)
  • Jain vegetarians (plants, but not all plants)
  • No-beef group (the cow is holy)
  • No-pork group (pigs are unclean)
  • No-beef-and-no-pork group (the cow is holy and the pigs are unclean)
  • Chicketarians (chicken is fine, but no other kind of meat)
  • No-meat-on-certain-days-of-the-week group (because life is not confusing enough?)

For many, the adherence to their form of diet is not just a preference, but is followed with a passionate vigor. When offered several things on a plate, some of which are a strict no-no, they do not simply ignore the no-no portion and eat the rest. They will often send back the entire plate and go hungry. This is pretty extreme! It is fine to have rules, and to stand up to them, but only if the rules make sense. Vehemently defending silly rules is not the mark of maturity or intelligence.

This finicky diet preference is not usually well thought through and logically arrived at. In most cases is something that people inherit from their family. They know that the diet preference is somehow loosely linked to family or religion, but they can't exactly pinpoint how. It is a preference that is inherited through religion, society, or family. Nobody thinks it through, nobody digs deeper.

This lack of a questioning attitude leads to a inconsistency in beliefs and rational thought.

Let's take the chicketarians, for example. If they're vegetarian because they don't want to eat a thinking and feeling animal, then how is it they're willing to make an exception for chickens? Even if they're in it for religious reasons, where exactly does it say in a religious text that it is okay to eat chicken, but no other animal?

If the dietary preference was rational, we should be been able to feed pork to a no-pork person by breeding the pig in extremely clean surroundings and feeding it carefully. But I doubt this actually possible. In the movie Pulp Fiction, a strongly-worded dialogue tries to get into why Jules doesn't eat pig: What if a pig has personality (search for pig on the page)? If pigs are bad because they eat dirt, what about mushrooms? The tasty button mushroom grows on manure. Whatever is offensive about pigs is doubly true of mushrooms.

It might be beneficial to re-examine why we don't eat certain foods. Preferences without rational reasons are not worth keeping.

Thursday, March 05, 2009

The Golden Rule

Recently there was a terrorist attack in Pakistan. The details of the matter are not clear yet, but they are somewhat similar to the terrorist attack in Bombay a few months ago. During the Bombay attack, I had heard a lot of talk for a pre-emptive strike against the country harboring the terrorists. At that time the blame generally fell on Pakistan, as Indians are often quick to blame Pakistan for a lot of violence. I am never in favor of any pre-emptive strikes. I fear what such an action would allow, if there was a terrorist attack in Pakistan. A terrorist attack, such as the one last week in Pakistan, would be enough justification for hostility against India. That is, if your standards were consistent.

Let's put it another way: what if China had a terrorist attack in Tibet, and some Indians were suspected? Is China justified in attacking India?

The proponents of first strike rarely consider the reverse situation, and that is where the double standards emerge from. I had a wonderful discussion with a friend of mine, who supported Israel's first strikes into targets in Gaza and Syria. The official reason is to attack military targets. After he had made his point, I asked him if Syria should also be allowed to carry out first strikes against military installations in Israel, his home? Of course, this is where he disagreed. It is fine for us to attack someone on the flimsiest of reasons. Our enemies, on the other hand, should provide a lot of evidence before they strike us. What was amazing was that this person, a logical and intelligent man otherwise, could not spot the fallacy.

I see a similar situation with immigration. I was discussing America's opposition to immigration with an Indian parent. His child is a successful engineer in a successful tech company. So his point was that educated Indians make a huge sacrifice in moving to America. They work hard, pay taxes, and are model citizens. So he couldn't understand the discussion over H1B visas, which limit the number of foreign citizens that can work in the US. This person was a Maharashtrian, so I asked him, "Well, since this is how you feel about immigration, you certainly must be opposed to Shiv Sena?" The Shiv Sena is a political party in Maharashtra, which is build on a platform of keeping non-Maharashtrians (for instance, people from Bihar) out of Maharashtra. This is even more aggressive than being opposed to immigration. Imagine California limiting the number of people from Montana that could come to work in California. This is what the Shiv Sena proposes. To my surprise, he supported the Shiv Sena, and was offended that any parallel could be drawn between the two situations! The Biharis are often trouble-makers, he said. The Shiv Sena was justified according to him. The same person was a Bihari in someone else's Maharashtra, and offended.

It is such a simple concept, "Treat others like you'd like to be treated", and yet we manage to get it wrong so often.

Saturday, February 28, 2009

Asymmetry in Couples

Many of my peers are getting married or having babies. While I see many well-adjusted couples; I also see many for whom the couple's life is very asymmetric. The wife is expected to stay within one very rigid role while the husband has to fill another. While Indian families typically tend to constrain the role of the wife, the husband's position is also very strictly determined by society.

This is something that's been bothering me for a while. I see a lot of families in which the wife only manages the house. She is incapable of earning money, having a career, or being an intellectual. While the feminist movement makes us aware of this situation, we don't see the husband's limitations. Many husbands are incapable of cooking, running a household, being a loving and tolerant parent, or playing childish games with kids. This asymmetry is plainly visible in older Indians and many new couples face it as well.

Let me begin by saying that this isn't always the case. I am familiar with many examples of very determined wives, who are motivated, intellectually sharp, and have successful careers outside home. I am also familiar with husbands who can cook wonderfully, are warm and affectionate (and even childish) around kids, and can run a home with the grace and ability of the best house-wives. But these are the exceptions. These exceptions are exactly the ones where I see the most balanced couples: their relation seems the happiest and most fulfilling. So let's focus on families in which the couples have very asymmetric roles and they don't want to correct this asymmetry.

This asymmetry is most visible in the death or illness of either partner. When the wife is very sick, the husband is called upon to take care of the house, perhaps cook for everyone, and have the gentle touch required when taking care of the family. If the husband is ill for an extended period, the wife might have to start a career, to avoid becoming a dependent upon family. Even if the couple is healthy and never have to deal with such a situation, there might be days when the wife cannot take care of the house alone: and needs a person who is skilled to lend a hand. This is often the case with pregnant women. Or there might be trouble with the husband's career where the wife's career can ease the burden on the family.

This asymmetry is quite dangerous. It makes each person limit themselves needlessly. Women gradually convince themselves that car or the computer is off-bounds for them: it is something they cannot understand. Men learn that cooking or cleaning is futile -- a skill that is worthless. Such men are incapable of living alone for any length of time. They don't appreciate how hard it is to soothe a crying child or to discipline one. When such men are asked to take care of the child, they are either too strict or too lenient.

Society hurts the situation too -- It frowns on women earning more than their husbands. I'd be quite happy if my wife earned more than me. I would know: it has been true for most of my marriage. Also, Indian society does not lay much stress on the husband's cooking, cleaning, or child-rearing ability. How often do Indians compliment a husband for being great with kids? In the West, being good with kids is a strong attraction for women. Tommy Testosterone might be a great guy, but he isn't always a great father, or a loving boyfriend. Cooking well is as easily a way into a woman's heart as it is to a man's.

Finally, the world is moving away from these very rigid roles. Women are just as educated as men, and are just as determined and capable. Their earning ability and their intellectual interests are just as valuable outside the home. Men are marrying later, spending their youth with room-mates, learning how to run a house: cooking, cleaning, and figuring out the politics behind keeping a house-servant. Well balanced couples are more appreciative of each other. A husband who has tried to cook can truly appreciate the skill and effort required. He is generous with praise, inquisitive, and genuinely useful in the kitchen. Kids howl less when such a father proceeds towards the kitchen to make dinner. Similarly, a wife who can earn and is capable of doing taxes is a true asset. Some of the happiest married couples I know are ones in which the wife is just as good at fixing the computer or the car! Their kids get a very powerful role-model, where mommy is seen as daddy's equal.

After all, the healthiest relationships are between equals.

Vikram's Thoughts on

I've been writing this blog, mostly as an experiment of what can be done with the blog as a medium. Some posts have been excellent, while many others have been as drab as dish-water.

In the years, I've learned that the best posts are those that talk about a topic close to my heart, and that trying to stay on a single issue often distracts from this. I'd like to discuss growing up in India alongside with computing, being a programmer, and even cooking. All these issues figure in my interests, and sticking to any one topic is too restrictive.

Also, the name of the blog, while lofty and ambitious, is also snooty and smug.

Thus, a change of name, and a change of address. "Vikram's Thoughts" are now available at in addition to the usual address.