Trevor Burnham

Sure, it works in practice…

Dreaming in Lisp?

March 24th, 2010

This is the eighth and last in a series of posts about Paul Graham’s book Hackers & Painters.

One of the finest books ever written about the practice of pro­gram­ming is Dreaming in Code, the tale of the long delayed and now ignored Chandler. The project was, in prin­ci­ple, the best of all worlds: a group of talented hackers and design­ers building open-​​source software on a generous budget. The project leader? Mitch Kapor, himself a talented hacker best known for the inno­v­a­tive spread­sheet app Lotus 1–2-3. (There’s an excel­lent inter­view with him in Founders at Work.) The language? Python, probably the most hacker-​​friendly language there is with suitable libraries for building cross-​​platform graph­i­cal apps. Their com­peti­tor? Microsoft Outlook, a user-​​hostile piece of bloat.

In Graham’s view, which I’ll call “language deter­min­ism,” Chandler should’ve suc­ceeded. Granted, they weren’t using Lisp, but Graham ranks Python just below Lisp in his language hier­ar­chy. And, of course, Graham is mainly writing about webapps. (One of the recur­ring themes of Dreaming in Code is: Maybe Chandler should’ve been a webapp.) Still, Hackers & Painters and Dreaming in Code seem to occupy dif­fer­ent planes of exis­tence: In one, startups that bring smart, pas­sion­ate hackers together always win against the lum­ber­ing mass that is Big Software. In the other, even the most promis­ing projects can suffer setbacks, peter out, and even­tu­ally release version 1.0 to little fanfare. Graham knows full well that this can happen; as he put it in his “How Not to Die” talk to YC founders: “Half of you are going to die.” So I’m a bit puzzled. Are his wild claims about Lisp merely rhetor­i­cal exag­ger­a­tions, or am I over­look­ing a critical piece of his theory?

Chapter 14 of Hackers & Painters, like the two that preceded it, is mostly about Lisp. In “The Dream Language” (a revised version of his 2001 essay “Being Popular”), he describes the prop­er­ties a language needs in order to catch on among hackers, from the per­spec­tive of someone design­ing a language. The clear subtext is: “Why hasn’t Lisp caught on (yet)?” One property he suggests is very com­pelling: “The language is built in layers. The higher-​​level abstrac­tions are built in a very trans­par­ent way out of lower-​​level abstrac­tions, which you can get hold of if you want.”

I’m reminded of the only under­grad CS course I took, Data Struc­tures. It doubled as an intro to Java (I’d taken the AP CS exam, which was in C++), and I remember when one of the test ques­tions asked us to find an item in a par­tic­u­lar kind of linked list, given the code for the LinkedList class. Now, there was a very natural and effi­cient way to do this, but it was impos­si­ble because the per­ti­nent property was marked as private. So I figured out a kludge that let me find the item anyway, but with a lot of grossly unnec­es­sary tra­ver­sal. I felt rather pleased with myself, because I thought it was a trick question. I received only half credit. The private turned out to be a typo, and those who ignored the typo and used the obvious, effi­cient algo­rithm were given full credit. Needless to say, I was upset—my answer was the only one anyone gave that would’ve compiled! That expe­ri­ence was part of the reason why I stopped taking CS courses, and majored in Math instead while dabbling in pro­gram­ming as a hobby. In hind­sight, perhaps I should’ve blamed my pro­fes­sor less and blamed Java more.

Graham’s final chapter, “Design and Research,” is what might be called an Ode to Agile: Focus on users, refine grad­u­ally, iterate rapidly. The most striking theme is respect for your users, which he jus­ti­fies on prac­ti­cal grounds: “It’s hard to stay inter­ested in some­thing you don’t like yourself. To make some­thing good, you have to be thinking, ‘wow, this is really great,’ not ‘what a piece of shit; those fools will love it.’” This is some­thing that we don’t hear often enough in the coding/​design world, and it makes for a pleasant conclusion.

Reflect­ing on the book as a whole, I think the most merit is in the early “Graham as Public Intel­lec­tual” chapters, rather than the later “Graham as Hacker King” ones. This is unex­pected; surely Graham’s expe­ri­ences better qualify him to write about pro­gram­ming than about deep philo­soph­i­cal ques­tions? Yet somehow, “Why Nerds are Unpop­u­lar” and “What You Can’t Say” stand out as the most tren­chant, original and subtle writings in the book. Graham’s essays on eco­nom­ics, “How to Make Wealth” and “Mind the Gap,” are also first-​​rate, and I’m sur­prised that they haven’t achieved broader traction in the lib­er­tar­ian com­mu­nity. His writings on pro­gram­ming lan­guages, on the other hand, are intrigu­ing but ulti­mately unper­sua­sive. Learning Lisp feels like some­thing I should do, in the same sense that doing yoga every day is some­thing I should do. It’s not some­thing I need to do.

Is Hackers & Painters still relevant? Absolutely. While much has changed in the last six years, the only chapter that actually feels dated today is “A Plan for Spam.” Most of the essays have a timeless quality that, unfor­tu­nately, is less preva­lent in Graham’s post-​​YC writings. He’s now writing for a fervent com­mu­nity that knows and loves him, and has certain expec­ta­tions of him. That’s under­stand­able. Still, I hope PG has another mass-​​market book left in him. Even as a startup founder, it’s nice to read some­thing not related to startups (or English lit­er­a­ture) from time to time.

[Addendum: Here is Graham himself giving a talk a few months after the book’s pub­li­ca­tion, entitled “Great Hackers.” In it, he clearly artic­u­lates how the lib­er­tar­ian themes connect with the hacker themes. It’s also worth reading for the simile: “At our startup we had Robert Morris working as a system admin­is­tra­tor. That’s like having the Rolling Stones play at a bar mitzvah.”]

Tags:     No Comments

0 responses so far ↓

Comments are closed.