I became fascinated by computers and programming when I realized that it’s like playing with Legos—except that you’ve got an infinite number of bricks. (Until you run out of memory, that is.)

I grew up on the web—probably the most important knowledge management system of our time. I watched it morph from a medium of simple hypertext documents to a fully fledged application runtime for screens of all sizes. Understanding the separation of content (e.g. HTML) from presentation (e.g. CSS), made me realize the power of design principles for the first time. Incidentally, the separation of content from presentation is a philosophy that most (but not all) word processing systems still have to come around to.

Concerning programming languages, I belive for all but a few applications, we should continue to climb to higher levels of abstraction. First we wrote assembly. Then we got Fortran and C. The next level were languages like Java that introduced memory safety to the masses. And sooner or later, the time will come for purely functional programming to go mainstream.

Fundamentally, I see myself as a designer, in the broadest sense of the word. I am not only fascinated by graphic and interaction design, but also the design of complex systems and beautiful code. Whether you’re crafting a tool, product or process—for me, the essence of good design is that you’re doing it properly. This may be a somewhat old-fashioned word, but it describes best the antithesis to the arbitrariness and thoughtlessness that is too often the root cause of subpar products and unnerving processes.