Welcome to the personal blog of student,
writer and occasional bum Eli James. More...

Friday, October 07, 2011

Steve

I was very sad when I heard of Steve's death. It was the first thing I woke up to, thanks to BBM:

Sam: OMG STEVE JOBS IS DEAD
Followed by, a few seconds later:
Idasu: Steve Jobs is dead?!

(Ida then drew a fantastic cartoon of my (real!) reaction to Steve's death on her blog, you should go read it).

But in the hours after his death I couldn't help but think back to Steve's commencement address, in the summer of 2005:
Remembering that I'll be dead soon is the most important tool I've ever encountered to help me make the big choices in life. Because almost everything — all external expectations, all pride, all fear of embarrassment or failure - these things just fall away in the face of death, leaving only what is truly important. Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart.
I choked a little when I read that.

The most important lesson I've learnt, I think, from Steve's life (and really, from Barbara Liskov's talk, or Brewster Kahle's life, or any great person's life) is the importance of doing great work.

You and I will only be remembered for what we leave behind. Liskov will leave behind her the creation of Object Oriented Programming. Kahle will leave behind him a digital archive of humanity. Jobs will leave behind too many things to count.

It is true that we will all leave something behind — for most of us, it would be the effect we have had on our families and friends. But as youngsters, it would do to remind ourselves: if we are to be ambitious, we have to create value for more than the people around us.

We have to do great work. Everything else follows.

This begs the uncomfortable question: what are you working on today that is great work? Getting good grades is — economically speaking — a null value. Nobody says "he was a great man, he got straight As in all his exams." It is a means to an end — the end being a place from which you may do great work (medical doctors, here, come to mind).

Turing Award winner Richard Hamming used to go around the University cafeteria and hound the other scientists: "What are the most important problems in your field?" and "Why aren't you working on them?". After a few weeks, Richard Hamming was banned from eating with most of the other scientists.

(The few who did listen did rise in stature in the scientific community).

But asking this question helps, I think, in other areas. Even in smaller spheres there is opportunity to do great work. You can start clubs, or revamp existing ones (to make them more valuable for the existing members). You can volunteer at NGOs, and then think hard about ways to make that work more efficient.

We are remembered by how much value we have created for those around us. Steve created whole industries around his work. I am writing this on a Macbook, and I work in a field he helped pioneered. He will be remembered for a long time.

Go with grace, Steve. May you rest in peace.

Wednesday, October 05, 2011

Decision Trees

Dead Bird

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).

Friday Hacks #4Friday Hacks #4

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.

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.