Monday, June 11, 2007

About Me

This is a short stroll down memory lane, a little bit of history about how I got started, and how I got to be where I am today. Since this is the technology blog, I'll resist the urge to write a shameless autobiography, and give this a more modest tech focus.

I got my first computer, a TI-99/4A, in 1983, when Texas Instruments started practically giving them away in the price war with Commodore. For awhile, I mostly used it to brush up on my chess skills (which have since fallen into dormancy); but eventually, out of curiosity, I started typing in the sample BASIC programs from the Beginners' Guide and Users' Guide books, and modifying them in small ways to see what would result. My cassette player, not to mention the upper range of my eardrums, got a serious workout.

My next purchase was an Atari 800XL, also for $50. By 1987 it was already obsolete, but still more powerful and better supported than the TI. A friend and I procured them at the same time in order to work on projects together remotely, carry on electronic correspondence, and trade games. Over the next few years, my BASIC programming skills had gotten fairly good, and I even managed to do some rudimentary machine code optimizations and display list programming. (A wonderful little feature of the Atari 8-bit family was that the "graphics mode" was actually a program written in a mini instruction set, whereby you could alter screen resolution, swap color and font tables, and even jump away to short assembly subroutines, in between the drawing cycles of your monitor or TV. Scary stuff.)

Sadly though, that was going to be it for programming for awhile. With both my machines already in the graveyard, and no low-cost computing options on the horizon, I basically assumed I'd had my fun, and it was time to move on. I maintained my enthusiasm for math and science throughout high school, but I became more interested in the arts and in music. I entered the conservatory at Wheaton College a music composition major, and flew the coop four years later with a liberal arts degree in philosophy. (But that's a story for another blog.)

Fortunately, the Unix-based e-mail machines in the college computer lab rekindled my love of programming just in time, providing a convenient little sandbox for playing around with basic shell scripting, and when I was feeling especially brave, a C compiler. For fun, my final semester I petitioned to take an artificial intelligence independent study course for philosophy credit, during which I wrote a decent checker player in DOS/C. Then in 1995, as I donned my cap and gown, the World Wide Web began to explode with a vengeance, and I was fortunate enough to get in on the ground level.

After a couple brief admin/web projects over the next two years, I was invited to join an incredible consulting company, founded by two former Motorola engineers, which introduced me to everything from web application architecture to embedded systems development. It was here that I first had any serious mentoring, any actual design meetings or code reviews, and most importantly, the privilege of working with such talented friends. This formative six-year period was in every way a giant leap forward for me as a developer. When my interests began to turn to different design and development approaches, I brought my experience to a new team, and have helped them navigate significant platform changes and a host of new product offerings.

Today, I think of myself as a kind of software philosopher, trying to bring conceptual clarity into the process of developing software systems. I approach software development as a kind of applied philosophy: a concrete exercise in analyzing problem domains down to the most appropriate and sensible level of detail, and then dealing with the entities and relationships that arise on their own terms. In my experience, I know of no other way to keep systems from spiraling out of control, and becoming unmanageable. I strive for separation of concerns and readability of code above all, unless there are about twenty pressing reasons not to.

And, as in all other areas of life, I try not to take it too seriously, and try to maintain an open mind towards what I know, and what I learn.

Labels: