
There is some justice in life.
How did you win that? It's so good that you know what you want to do. Wah, what you're doing is so interesting! How you so keng arr?! That's pretty cool. How come you so lucky?
Sometimes I walk down from Tembusu college and see people playing frisbee on the commons. There's a lot of shouting. It seems like a lot of fun.
And sometimes I read blogs from people of my age group, where the bloggers go out with friends, take pictures with each other in restaurants and on beaches and in cars. They go to church; they thank God for saving them from the latest weekly catastrophe.
That could be me, I think to myself.
Then I return to my work. On a given day I deal with at least 15 emails from 5 different people, minimum (still manageable due to the filters I have in place in Gmail). I code; I write, I do homework for school. Then, when it's late at night, I open a different set of editors and write code for external projects (Pandamian, NUS Hackers, contract work to finance my trip to San Francisco).

I wonder how things might've been had I had chosen the easy path - to study and go out with friends. Like how everyone else is doing it. This blog might get updated more often. I might attend big campus parties.
But I didn't. And so I don't.
In exchange, I am head of NUS Hackers. I'm invited back to San Francisco, for Books in Browsers 2011. I am a member of the private Reading20 mailing list. But I don't go out with friends much. And I don't party at all.
Today, my school gave me 600 dollars to fly to San Francsico.
"You're so lucky!" my friend tells me.
I am not lucky. Life just gives as good as it gets. It is — occasionally — fair.
Wednesday, October 05, 2011
Decision Trees
Monday, October 03, 2011
Some Quick Lessons From Barbara Liskov's Talk
I don't have much time to write this, but I think I should get everything down before I forget it.
I attended a talk by Turing Award winner Barbara Liskov last Thursday. The Turing Award is Computer Science's equivalent of a Nobel Prize. She won it because she invented Object Oriented Programming (gross oversimplification, but I'm just writing to provide some context).
A number of things struck me about her talk. The first was that she said that ideas had their time — not a new observation, but one worth remembering (see this Gladwell essay on just that). She discovered OOP because i) it seemed like its time had come — she could see hints of the idea in all the papers of the time. And that ii) she thought really, really hard about the problem.
The next thing to strike me was how important Programming Languages research is. Her view of the current languages in vogue (Python, for instance) was that "you can see the attraction, but it does so many things wrong" and that "it's sad that the academic community dropped the ball on creating a language ... (that meets the requirements of) industry. The kind of language that's easy enough to teach programming to a student, but also good for industry. Instead we've been so hung up on the theoretical bits. So we've had languages created by people outside the field, and they get so many things wrong."
Which is an interesting observation - and pretty true, no? Ruby was created by Matz; and Python by Guido, and they weren't doing PL work at the time. Nor, for that matter, was Ritchie, who did the bulk of the work on C.
And lastly, I'm struck by how Programming Methodology is really a study on human thinking. Before Liskov invented OOP, programming languages were flying spaghetti spitballs. What OOP did was to introduce a level of abstraction that made it easier to think about programs (and more importantly — made it easier to reason about correctness).
I had never considered this. I'd always wondered at research done in the field of programming languages - weren't languages these dinky little things you used on a daily basis? What discoveries could possibly be made in the field?!
But of course that view was wrong. There are good ways of doing PLs, and also bad ways. Liskov said that we haven't yet found the right kind of abstractions for concurrent programming (and I asked her about Go, which proposes to create an abstraction for exactly that, but she professed to have not heard of it. Sigh. I wished she did; her opinion would undoubtedly be very interesting!). She also argued that we didn't yet know the right way to think about massively distributed computing systems, though Google's MapReduce algorithm was a big step in the right direction.
At any rate, that is what I've learnt, and I'd do well to remember some of it.
