I have just been slammed with travel, so apologies for my radio silence. I'm just back from two weeks in Europe followed by ten days in Florida, I'm just a few hours from wheels up to San Francisco, and then next Monday I'm off again to Europe for the remainder of June, doing some work in London, Dublin, and Paris.
I'm so looking forward to today's trip. As I've descibed in an earlier posting, I've started a project with the Computer History Museum to preserve classic software. A few weeks ago, the source code to MacPaint fell into my lap (thanks to help from Tim O'Reilly). Tomorrow, I'm conducting an oral history on MacPaint with Bill Atkinson and Andy Herzfeld, two of my heroes.
Studying the source code to MacPaint (which is written in Object Pascal) is a delight. Don Knuth calls it one of the most beautiful pieces of software he's ever read. Its curious, you know: people in most other disciplines learn by studying the artifacts of other masters, but I've yet to see a computer science course titled Readings in Software (Code). There is fortunately a new book that finally does cover this subject which I'd highly recommend, Code Reading by Diomidis Spinellis. Don's work in literate programming is also a good source.
What makes for beautiful software? The dot bomb era was fully of profoundly stupid business models, but in retrospect, it did tell us one thing: solid engineering never goes out of style. For me, that means building software-intensive systems that follow just three fundamentals: craft crisp and resilient abstractions, maintain a good separation of concerns, and create a balanced distribution of responsibilities.