Articles and Papers

A Simple Model of Agile Software Processes, or Extreme Programming Annealed (2005)
A peer-reviewed paper for the essays track at OOPSLA/Onward! that points out a simple, useful structure that underlies the apparently haphazard practices of Extreme Programming (and other agile methods).
Clojure Templating Libraries: Fleet and Enlive (2010)
An article for Steve Vinoski’s “Functional Web” column in IEEE Internet Computing, describing two different templating libraries for Clojure. Published in September 2010, the article is now seriously outdated, but I think it still has useful insights about the problem of templating and how it interacts with functional programming languages.
Learning to Love JavaScript (2007)
An article for the second NFJS Anthology, describing my experiences with JavaScript: first dismissing it, and then later becoming a fan.
Buried Treasure (2006)
An article for the first NFJS Anthology, about a promising trend I was seeing: that our field was starting to take its history seriously again.
What I Learned from Icon (2002)
A short essay I wrote for a local meetup, where attendees were supposed to come prepared to share their experiences (good or bad) with non-mainstream programming languages.
Strata, Slices, and Cores (2001)
A position paper for the Software Archeology workshop at OOPSLA. It focuses on aspect-oriented programming using AspectJ. Today I would stay far away from that particular technology, but I think the ideas in the paper are still applicable, and could find expression today using metaprogramming techniques found in most popular languages. Say what you will about aspect-oriented programming, but the concept of a pointcut remains extremely useful.
A Review of “Handbook of Programming Languages” (1999)
A long review of Peter Salus’ four-volume compendium on programming languages.


In the late ’90s, I did some longer-form writing. I was fortunate enough to be one of the first few people outside Sun Microsystems to write a Java program, and at the time was writing a chapter for the second edition of The Internet Unleashed about the World Wide Web. (Remember when you could have a single chapter about the web? Or, for that matter, a single book that purported to cover the Internet?) I believe that chapter to be the first mention of Java in book form, and one of the earliest mentions of the language in any print medium.

Later that year, I served as the lead author for Tricks of the Java Programming Gurus. Despite the terrible title, I’m proud of the bookit was the first genuinely advanced Java book (too advanced, too early, as it turned out). The next year we revised it and changed the name to the somewhat better Maximum Java 1.1.