According to my business card, I make my living as an embedded software engineer.  Like so many people my age who ended up as engineers, I cut my teeth programming in BASIC on an Atari 800XL 8-bit home computer, starting in 1984.  It began with keying in programs from computer magazines.  Once that grew tiresome, I graduated to modifying programs and eventually writing my own from scratch.  The major epiphany came around 1990, when I built an electronic interface for the Atari which let me control some external motors and read sensors.  The idea that software running on a computer could control and respond to something in the real world was so intoxicating that it changed the course of my life.

I graduated from the Atari to my first IBM-compatible PC shortly thereafter, and learned more programming languages within a couple years: QBasic, Pascal, and finally C.  I spent my high school years writing and rewriting a series of complete robot control systems, from low-level motion control up to elaborate GUI.  When I wasn’t working on robots, I spent a lot of time with my hands in code for Bulletin Board Systems (BBS), as I was equally fascinated with mixing software and telecommunications.

In college, I had another life-altering epiphany.  In 1993, I installed a very early version of Linux, and since that time, it has factored in heavily to my work and personal projects.

These days, I mostly program in C, C++ and ActionScript 3.  I write bare metal embedded code for tiny microcontrollers, Linux device drivers, application code, and GUI code.

Software Projects