My first round of formal education was in Mathematics, and at 17 I was asked by a professor at UC Davis if I planned to do a PhD in it. I also won second place in a university-wide contest, and received a partial scholarship as a promising future researcher. The field, after all, is my family business.
I surprised everybody by switching to Comparative Literature and moving to Europe, and living a carefree lifestyle that almost bled all the mathematics out of me. I graduated with an MA in Comparative literature from the Free University, in Berlin. My oral exams included Computer Linguistics and The Theory of Evolution. I started a PhD on the relationship between the sciences and the humanities, but abandoned it, when I found out that I wanted to create new things rather than study just old ones.
I am very satisfied that I took this road and achieved an education in the humanities (though the carefree lifestyle might have been avoided!). Reading and writing were not second nature to me, but are now among the most valuable activities in my life. Reading great works of literature and scholarship is one way to achieve a truly general education, and writing is the best way to develop a thought, to find out its weaknesses, its hidden contradictions and assumptions, and correct them. The humanities also hones your language skills. I’ve studied a number of foreign languages, and language is an essential part of many great human endeavors.
I make software–especially for the web–and have given well-received presentations on functional programming and disillusionment with some aspects of Object Oriented Programming, especially deep inheritance structures and over-engineering. Unnecessary usage of complex design patterns, or division of medium-sized projects into micro-architectures, can lead to unnecessary complexity.
An interest in the most general aspects of software development has inspired my slogan: KISS before DRY. For readers who don’t know these acronyms: DRY stands for Don’t Repeat Yourself, and KISS stands for Keep it Simple, Sweetheart. When we take the DRY principle to its absurd limits, we end up creating so many dependencies and complex structures that changes become difficult to implement.
To see a program I wrote, check out FlopYoMama, a fully client-side web app that calculates the odds of winning a Texas Hold’em hand based on 1. your own two hole cards and 2. a range of hole cards an opponent may have.
Making New Things
However engrossing, broad, and difficult the actual techniques of software engineering may be, my interest centers on what we make rather than how we make it. Software is one kind of thing we humans can make–a very diverse category in itself– and programming just one of many techniques we use to create the things we need and desire. In general, I’m interested in great human creations of any kind, not just of the practical sort, but also of the artistic kind.
If you’d like to find out what I’m thinking about when I’m not making software, have a look at my blog. It’s literary rather than technical, but I do sometimes write about technology. One post considers the difficulties that arise in a world where distinguishing between a computer program and a human becomes impossible; I’m concerned, especially, on children who may grow up in such a world.