Mind the Gap

This is perhaps one of my all-time favorite paragraphs written by popular essayist Paul Graham. The truth is startling, and the imagery very very deep.

Materially and socially, technology seems to be decreasing the gap between the rich and the poor, not increasing it. If Lenin walked around the offices of a company like Yahoo or Intel or Cisco, he'd think communism had won. Everyone would be wearing the same clothes, have the same kind of office (or rather, cubicle) with the same furnishings, and address one another by their first names instead of by honorifics. Everything would seem exactly as he'd predicted, until he looked at their bank accounts. Oops.

From Paul Graham's "Mind the Gap" http://www.paulgraham.com/gap.html

What Slow Lectures Achieve

University students, and particularly their parents, are always afraid that their profs might go too fast during lectures thereby impeding their learning. They fear that if the prof goes too fast, they wouldn't absorb much, and they therefore have to spend extra time after-hours doing their own studying.

But there is an even bigger evil that causes much more damage in the long run. This is when profs go too slowly. Kids today can process much more information much faster thanks to the effect of video games and the internet, so if their information channel isn't being filled up fully or close to fully during a lecture, the kids tend to get distracted and think about something else, even if there is sufficient interest in the lecture material.

This might explain why smart kids sometimes perform poorly even on easy courses. One reason is that the prof proceeds with the lecture material too slowly especially during their first and second years, causing the kids to be frequently distracted. Therefore no information is retained from lectures and grades plummet. No smart kid wants to spend extra time studying at home for an easy course. Low traffic in a high bandwidth information channel will always be compensated for by the imagination.

So the point is that slow lectures, usually by older profs whose information bandwidth is much less as compared to that of today's students, can sometimes cause more harm than improvement. And because of the 80/20 pareto principle, if your smart kids are losing focus and interest, that puts your smart kids at a disadvantage, which in turn puts your entire school at a disadvantage because it's usually the smartest 20% kids that bring in 80% of your fame.

Not Succumbing to Audio Craving

So I found this somewhat cool technique that helps solve my motivational problems partially. I actually haven't heard anyone tell me that they use it. So if you do, please let me know.

The idea is to have a few songs that you really really like but only allow yourself to listen to them at key milestones of your life. Or when you've accomplished a major goal. I've heard of controlling your craving for food and the taste organ. I've heard of controlling your craving for seeing things and the vision organ. But I've never heard anyone tell me about controlling my craving for certain really good songs and the hearing organ.

A lot of people have cravings for certain songs at certain moments of their day, and usually when that happens, they eventually end up listening to that song sometime that day on their iPods, their laptops or on YouTube. What I found worked for me is taming that craving to force myself to listen to these songs only after I've made a major semi-long-term (8-12 months) goal for myself in life, and have successfully accomplished that goal.

On Sep 4, I had accomplished a major goal I had set for myself way back in January. Thankfully I had my iPod with me at the airport. And listening to that one song that I had been craving for at least 5 months was the most remarkable feeling of all times. And I think the motivation that resulted from all those months of yearning will really pay off its dividends for many months to come.

Music can be a great motivator. Unable to listen to your favorite music can be an even greater one.

That First Half Hour

People always think people write essays because they enjoy writing them. There's probably a decent amount of truth to that statement in my own case. But I enjoy writing essays because I enjoy publishing them on the web. And it's the first half hour after an essay goes live, a period where the number of page views shoots from 0 to 100, that's the most amount of fun.

I could do what Paul Graham does and that is write an essay, have it reviewed by some friends, then edit it multiple times, then polish it, and then publish it. And once it is published, he seldom modifies it. But I approach essays differently. I know I can get my essays polished if you gave me an hour, but putting the essay live in an unfinished state provides me with this boost of energy like never before. Polishing my essays would usually would take me 30 minutes spread out throughout a day, but now that only takes at most 5 minutes spread out across 30 minutes.

Because the number of views climbs up so quickly after publishing to Facebook and Twitter, I get this sudden surge inside me because there are so many people who'll end up reading a version of my essay that I can't quite say is my very best. It's a version far away from being "done". It's usually riddled with typos and several grammatical errors of the kind only an amateur writer would make.

So once an essay becomes live, it's sprint time. With all the adrenaline picking up, I have to work as fast as I can. I can't have my beloved readers reading anything but my very best. I shift gears and move into ninja mode. My typing speed picks up 4x. I can read twice as fast. I spot errors instantly. I'm moving entire sentences and paragraphs around in swoops. My fingers punch keys feverishly as edits and saves are happening semi-real-time. I'm adding punch lines at the end of paragraphs. I'm constantly asking myself if this paragraph is too long and if it needs splitting. Or maybe the essay itself is too long. Painful as it may be, sometimes entire paragraphs will go away 15 minutes after making an essay live.

I guess the only way to share this process with you is to use Etherpad's time-slider feature. But saving there won't save it here on Posterous. Maybe someone will write blogging software where you type all your blogs on etherpad and the static html pages are generated from the content posted there.

So this is why the first half hour after making an essay live is perhaps the most important and also the most fun part of the essay-writing process. Whenever I'm ready to publish, I make sure the next half-hour is completely available to me and is 100% distraction-free. It's just me, my desk, my laptop, and my music.

So yes, the reality is that it's probably better for you to read my essays a few hours after it's published. The unfortunate irony is that the people I wish are reading my essays, the target audience I have in mind as I write, are usually the ones who read my essays the minute they become live. They just happen to be good with the internet, and have superior notification systems. But they don't ever get to see my best work unless they re-read an essay a while later, which they seldom do. But even then, the punch lines are lost. What good is a horror movie the second time?

I've always wished I could lead my entire life in that kind of "sprint-mode" all the time. I'd get so much done that way. I once dreamt about living my life that way every single day. I got so excited that I fell off my 2 feet-high bed. True story.

But let me get to the real point. I always have tremendous difficulty explaining why I love writing web software so much and why I love writing essays so much. It's because they can both be iterated upon and constantly improved as the audience is consuming it. You can't do this with products like the Blackberry. You can't do this with an orchestra. You can't do this with a movie. Imagine Tarantino tweaking final scenes of Inglorius Basterds as you were watching the movie. You could probably do this in a live stage drama, but not so cleanly so as to altogether avoid invoking all suspicion in your audience.

I used this strategy to my advantage while I was building Fotavia. I'd spend a day building an unfinished and unpolished version of a feature, like photo comments or the news feed, push it out to production, and then spend a few hours polishing it and fixing bugs after. This was still a lot faster than trying to roll out a polished version after 3 days, often even failing due to a lack of continual motivation.

In the spirit of meta-ness, this very post was edited several times after being published and is probably undergoing edits as you're reading it. You should be used to this idea of edits happening underneath the rug if you've ever used Wikipedia for any length of time.

Properties of the High Bar

Sure, being an Indian, moving to Canada at age fifteen from a city as conservative as Dubai was a big culture shock for me. But what awaited me in Canada was a far bigger, a far more serious and a far more undocumented shock. It is the shock of discovering you had been brainwashed for the first fifteen years of your life.

Until Grade 10, I had gone to a school that made me unconsciously surrounded myself with friends, classmates and teachers who all had a few simple assumptions when it came to test and exam grades. Popular belief was that 90% on a non-language exam was a mere pass, 95% was average, 99% was considered rather decent, 100% was considered noteworthy, and 105% was considered pretty darn good.

Then I moved to Canada and started interacting with a lot of people who had come from various countries around the world. The popular belief here was that 50% was a pass, 75% or thereabouts was average, 90% was considered pretty good and 100% was considered remarkable, almost impossible. Imagine my surprise.

I discussed this problem with my Grade 10 French teacher at the time. I suspect she knew what I was talking about because the next evening she phoned my parents and asked them to find me a new school.

Never underestimate the power of setting the bar ridiculously high for yourself. You want your "good" to be other people's "excellent". In fact, you don't want to compare yourself with others at all. Because if you do, you'll probably end up doing pretty average. Why? Because the general population naturally deviates to well, the average, by definition.

A lot of the software startups and medium-sized companies like Tagged make this mistake quite frequently of juxtaposing themselves with universally-accepted "standards". That's where they place their bar. They're pretty happy when they ship a major feature in just 2 weeks. Employees at these companies say that the same feature would've taken a high-profile company like Google and Microsoft 2 months to ship. But if you set your bar high, 2 weeks is considered outrageously slow. It really should've been only 5 days.

You see this at the Olympics every four years. The Africans always seem to perform much better at running. Why? Because they train at higher altitudes so when they actually run at the Olympic stadium close to sea level, they find it much easier. In short, their coaches set the bar high for the runners. They force the runners to forget they're actually training at high altitudes by never mentioning it. So when the runners finish a 100m sprint at 8 seconds during practice, it's considered quite crappy, and the coaches pretend they're upset, when we all know 8 seconds is actually quite a remarkable feat at that high of an altitude.

People consider Steve Jobs as the epitome of perfectionism and attention to detail. But imagine if you set Steve Jobs as your minimum standard instead. Now you've only given yourself room to do better than him.

If you find something hard, force yourself to do something that is 10x times harder. I found driving in suburban Vancouver stressful and confusing until I forced myself to drive in Downtown. When I lived in San Francisco, climbing up Green and Vallejo seemed so arduous until I forced myself to climb Taylor everyday after which Green and Vallejo basically became a walk in the park.

You might already be familiar with this idea of setting yourself incredibly high bars and then forgetting that you did so. Our neighbour used do something similar with all the clocks in his house. He'd set them all at different times that were anywhere from 10 minutes slow to 10 minutes fast from the right time. Thus, the only clock that was reliable was the fastest one which made him 10 minutes early for all his appointments. I'd imagine he never missed a bus in his life or any other appointment for that matter.

This idea of messing with yourself and then proceeding to forget that you did so is what psychologists famously call mind programming. And you can certainly program yourself to set really high bars for yourself and then forget that you did so. This will make your high bars seem rather normal to you, but will leave everyone else in your wake scratching their heads, wondering how you got to the finish line so incredibly fast.

Two Types of Girls

I hate lines. Not the geometric figure, but line-ups where all you do is wait. Anyone who has hung out with me sufficiently long will know how much I can't stand queues (haha, excuse lame pun attempt). Queues are the bane of our society's existence.
 
Anyways, I think of really weird stuff when I'm forced to wait in lines. On Friday, I was forced to wait in line to return my rental modem to Comcast Internet. And I started wondering how I instinctively classify girls when I meet them for the first time and am interested in continuing a conversation with them. And after much introspection, here's what I discovered about how I do it.
 
There are the girls that I meet for the first time and I'm interested in carrying on a conversation with them online on IM. And I ask them if they have MSN.
 
Then there are the girls that I meet for the first time and I'm interested in carrying on a conversation with them online on IM. But with this bunch, I ask them if they have Google/GTalk.
 
Prejudiced as it may be, I'm mostly interested in the 2nd bunch. Not just because they use GTalk, but girls who use and prefer GTalk over MSN on their own accord and not just because someone close to them is also using it, or someone forced them into using it, tend to have some very interesting characteristics that I'd consider really cool.
 
I hadn't even fully recovered from my first realization when I also realized this is a more general kind of classification I tend to do pretty frequently. Given a population P, come up with a qualifier X such that a subset of the population P1 belong to bucket B1 if X holds true for them and the complementary subset P2 belong to another bucket B2 if X does not hold true for them. Most importantly, the cardinality (i.e. the size of the set) of P1 must be much smaller than P2, close to the ratio of 1:10 or smaller.
 
In my example above, P is the set of all girls I meet everyday at school, at work, at airports, in the plane, on the bus, while walking on the streets, random facebook private messaging, etc. The qualifier X is if the girl prefers GTalk over MSN. Clearly the subset of girls for who the qualifier X holds true is much smaller than the complementary subset of girls for who the qualifier X does not hold true.
 
This is actually a pretty general problem. It's a problem we encounter so frequently that we all have very fast heuristics to sub-consciously come up with the qualifier to quickly compartmentalize our sets. We always only want to deal with the cream of the crop, and filter out all cruft. Farmers call this process winnowing.
 
Then there are the girls that I meet and want to ask them if they use Yahoo IM. Thankfully I've never have to deal with this bunch yet. I hope I never will have to.

The Post-Exam Session

With perhaps only a very few exceptions, the best time during any exam period, at least to me, would be the post-exam session. Those 15 minutes after everyone exits the exam hall is really quite a time I cherish and enjoy being in the middle of. People talking excitedly, some looking dejected, some looking relieved they actually managed to pass, and others just plain exhausted from all the mental exertion. It was a period of intense communication and knowledge sharing.

Why people would want to discuss the exam after the exam is still beyond me. The exam is over. You couldn't do much to change the outcome now could you?

In March of 2001, we had this particular nasty and exhausting math exam. It was an examination administered by the gulf boards and these exams were supposed to be hard, by design. I was in Grade 9 at the time, and even after several years of experience, I still hadn't quite adjusted myself to the idea of being tested on an entire year's worth of curriculum in just one exam sitting. The exam was an exhausting 3-hour long exam for exactly a 100 marks. Actually they'd design the exam to be 4 hours long, but only give you 3 hours to see how you performed under time pressure. I hated it.

At 2 hours 30 minutes, people would start to leave. The people who had obviously failed the exam or were pretty close to failing didn't give the exam much thought. They'd just be glad to be able to leave the stuffy exam room and go play soccer. But the others, the others that were serious about their grades would wait outside the door. And as each person would exit, the same question would be asked over and over again.

"Did you get 7b)?"

It was the same question they'd ask every person that exited the exam hall. And in almost all cases the student exiting the exam room would shake his head in despair. "No way! I have no clue how to approach 7b). It's impossible." Of course it's impossible. It's trigonometry. And then he'd go join the crowd of people so he too could now ask the very same question to the next person who'd come out of the exam hall after him.

And so this process would continue. These kids would actually wait for half-an-hour just so they could find even one person that could solve 7b). Maybe they're motivation was that if no one could solve 7b), then it wasn't their fault. Maybe there was a mistake in the problem after all.

But eventually, there'd be that one guy, the one student that everyone would soon come to hate. He'd be one of the last students to exit the room. You know, one of those kids who'd be feverishly writing his solutions down on his answer sheet up until the very point the proctor called out "pens down!"

But when he'd pick up his backpack and leave the classroom, the whole crowd of 15 or so students who had been waiting outside the exam hall, in the hot un-airconditoned Dubai heat, for over half-an-hour, would all groan together in unison.

And ever so calmly, that one guy, one hand in his pocket, a wonderful smile plastered all over his little delighted face, would stick his other hand back to make sure the door closed gently behind him. The groaning would get a tad louder as soon as the exam hall's door had been shut.

He'd then proceed to brush his hair off his forehead, wipe off some sweat trickling down his cheeks, and then adjust his nerdy glasses so they sat correctly on the bridge of his nose. All with a cool air of calm surrounding him as his classmates watched with deep chagrin and remorse.

The pretense was unmistakable.

Mr. Smart Guy had indeed solved 7b).

What Fall '09 Has In Store For Me

In the spirit of self-improvement and the onset of the month of September, I've decided to revamp my life and try something completely new. A Rajesh 2.0 if you will. Astute readers will notice I started this new posterous blog on September 1 not without good reason.

I've spent 8 months thinking about this solidly, encountering first-hand, people who do this sort of stuff day-in and day-out. I've also read hundreds of blog entries and essays by other students (or ex-students) who do this kind of challenging academic stuff again and again successfully. Finally, I feel I'm ready to take the plunge into some more exciting challenges!

Fall '09, which is 4A in Waterloo speak, looks like it's going to be even tougher than Spring '08, and that too by quite a far shot. So what does Fall '09 have in store for me?

  • I'll be writing my last work term report, a 6000-word (or more) report I haven't started yet.
  • I'll be taking 6 courses, 4 of which are at the 400-level.
  • I'll be in 2 labs, one of them being an advanced 6-hour lab every other week.
  • I'll also be spear-heading a final year engineering design project I have no clue about. Looks like we might be doing something related to high-performance water filters or maybe thermal shirts?
  • I'll be maintaining and improving Fotavia, a photography website project my friend WIlliam and I started earlier last month.
  • I'll be applying to top graduate schools. This implies I'll have to lobby my professors and mentors for reference letters and write well thought-out personal statements and essays.
  • I'll also be applying and interviewing for graduating jobs that are challenging and will probably require many hours of interview preparation.

So it seems like I'll be needing some real ninja skills to pull this term off without regret. It'll also be the first time I'll be living off-campus during an academic term. This has a huge impact on my productivity. And finally, I'll be working out of a tiny room that has no natural light whatsoever. This will be a huge hit to my productivity during weekend mornings which happen to be my most efficient working time because of the availability of contiguous blocks of free time and the availability of natural lighting.

So what does this mean for me?

  • It means no more snap decisions. Everything I do will have to be explicityly planned, scheduled and instrumented carefully. My Google Calendar will prove tremendously useful here. Also, my schedule.txt (ask me about it) that my good friend Devin helped me implement 1.5 years ago will be crucial to ensure I don't miss any due-dates. But, stuff will still come up all the time without notice, but everything that can be planned will be planned. Everything else will be decided and acted upon on the fly, in true engineering fashion.
  • It means careful and conscious implementation of all that I've read over the last 8 months.
  • It means taking time to celebrate each mini-success, no matter how small. I'm all too used to finishing a task, and then asking what's next immediately after. Every little success needs to count and will provide the motivation to keep pushing further without burning out. Reward-based performance is something that works really well for me.
  • It means taking some real risks and doing things that force me out of my cushioned comfort zone.
  • I simply can't afford to waste any more time on random websites (like youtube) like I used to do in previous terms. Even a few wasted hours before a midterm can make the difference between getting a 95% on a course versus failing that course.

And as usual, expect a post-mortem of the term at the end of December. It's going to be an interesting one I think!

 

 

On Partially Cooked Chicken

I'm cool being a vegetarian, but people are always telling me that I'm missing out on something big, on something juicy, on something tasty. But since I've never (consciously) eaten chicken, I have no clue how good it tastes. But I'll give the meat eaters the benefit of the doubt and agree that it probably tastes good.

But today I decided to re-examine my decision. We had a situation at work today where there was a company-wide alert that the chicken may not have been cooked entirely. So if you need to tell people and warn them about partially cooked chicken, it means they didn't know it themselves, which means they couldn't taste the rawness in the first place.

I'm not sure about you guys, but if there isn't enough salt in my food, or if my okra is too unripe, I'd definitely notice it. If my cabbage is too raw, I'd certainly call it a coleslaw. The question to my fellow meat-eaters is, if you can't even taste that your chicken has been only partially cooked, how could you possibly claim that chicken tastes good? Maybe you meant the texture of chicken was good? Maybe you meant the curry in the chicken tastes good?

The Trouble with window.name

So I was reading http://www.sitepoint.com/blogs/2009/09/02/cookieless-javascript-session-varia... today that talks about storing cookie-less session variables in javascript by storing it in the window.name property. But read caveat #1 down below:

The window.name property can be analysed and changed if you navigate to page on another website. That’s easily thwarted by not providing external links within your application’s main window. However, to be on the safe side, don’t use window.name for storing secure data (unlikely to be a major problem for a client-side-only temporary data store).

Umm, doesn't that kind of defeat the whole purpose? Imagine two javascript-powered apps running side-by-side in two tabs, each one competing to write their own data to window.name. So you set your session data, and then you try to fetch it, and voila, your data is gone. But at least you'll get someone else's data, useful or not.

One solution to this problem is for all apps to SHARE the window.name space by using a key-value store. So we can prescribe a standard variable called session (so window.name.session), initialize it to an empty hash if it's not set, and then manage ONLY window.name.session.yourappname. That way multiple apps can co-exist, but it would require all apps to follow this practice. Say what you like, but it's really hard to convince app developers to agree upon a standard as we have seen with all things web related.

But even if we got all app developers to agree upon this standard, we run into the problem of room. Some versions of Opera only allow 2 MB. So if you have 5 apps running side-by-side (not so uncommon these days), how do we ensure you'll always have room to write what you want? You could check window.name.length to ensure you'll have space. But what if a monster app comes in first and steals 1.5 MB in one snatch? Do you delete his space?

This is the most awesome kind of war. It's a war for resources, except you don't know how many people are competing for those resources. Since you don't know how many people are in the war, you don't know what your "fair" share should be.

Update: I've since realized that window.name is tab-specific, not window-specific. Thanks to Paul for bringing this up!