For many years, I was a software engineer and loved it! I’m still contributing to open-source projects sometimes and open to doing part-time contract work.

Microsoft, Software Development Engineer 2, September 2012 – May 2015

I worked in Azure (cloud) on the Compute team. My work focused on the IaaS (Infrastructure as a Service) provisioning and features, including: Stop-Deallocate (stopping a VM removes it from the cloud and stops costing money), VM Images (saving a complete snapshot of a Virtual Machine’s state so that it can be replicated or restored later), VM Images in PIR (allowing partners to create Platform Images from VMs that they could make available for purchase, such as a database product pre-installed on the VM), PIR (Platform Image Repository) moved to the new Azure Resource Provider model.

The really fun thing about working at Microsoft, even on a little corner of a service, is that so many people end up using your work. I once met a random acquaintance who used Azure’s VM Images every day.

Opto 22, Senior Software Engineer, September 2004 – August 2012

Opto makes industrial automation control systems. Anywhere you have electrical signals to control (factories, water treatment plants, traffic lights, elevators, …) there is a control system somewhere nearby that turns your button press into all the switches, motors, heaters, doing the right thing.

I worked at Opto for a long time and did a ton of stuff there, some of the things I’m most proud of are:

Groov, a web-based human-machine-interface tool. I started this project, designed and implemented the core communication pathways and back-end systems, led & directed the daily work of three other software engineers.

The Redundancy Project. This one was cool. Opto’s controllers run programs (implemented in FORTH) that you create in the PAC Control tool. In this scenario, you can have two controllers, one is the primary, one backup. As the primary executes FORTH commands it sends state to the backup. You can switch off the primary and the backup will pick up within 3 milliseconds and continue as the primary. Opto’s programming language had over 500 commands, 203 of which could change state (yes, I counted). I wrote automated tests to cover all 203 state-changing commands in 10 different fail-over scenarios. No, I did not write 2030 tests. I wrote 203 command patterns and 10 test patterns and combined them. (This is known as M times N testing).

Installs. So, installs are not that hard to write, but they’d been a major headache before I took them on. I switched tools to InnoSetup, and instead of each release of the software requiring two weeks to update the installer, it took 30 minutes. We were able to start releasing the software on a more regular schedule which reduced the risk of each release.

More stuff: Device drivers, firmware, wrote OptoDataLink from scratch and released it in five months, OPC Server, OptoConnect, PAC Control.

ESRI, Software Engineer, September 2001 – September 2004

At ESRI I was a Dev on the Network Analyst team. ESRI makes mapping software, and Network Analyst is about how those map features are connected (lines and points, here, not polygons) and how you can route paths through those connections. Back then MapQuest (remember MapQuest?!?) used a previous version of ESRI’s Networks software to do their routing.

The biggest task I took on at ESRI was the Network Build Algorithm. This was how we extracted a connected graph out of line and point data. It’s a well-understood algorithm, but there were some cool things about mine. Size – previously ESRI had only been able to build about 8 million roads in a network, I included a file-based sort in mine and we were able to build all 50 million roads in the US map data the first time we tried. Speed – That 8 million road network took over a week to build, my 50 million one took a couple days. Rebuilding – by keeping track of edits I could rebuild just the parts that had changed and connect them back up to the existing network so you wouldn’t have to rebuild the whole graph every time.

Gordian, Software Engineer, June 2001 – September 2001

So, this company started going out of business a couple months after I started because of the dot-com crash. But, while I was there: I implemented the -r option on the rm command in their embedded operating system (Punix – Puny Unix) and fixed formatting for ls*. I also wrote my first Win32 GUI program for capturing images off their camera product and changing device settings.

Harvey Mudd College, BS Computer Science and Math, August 1997 – May 2001.

I started in Math but found out that I loved Computer Science, too. CS is like Math but it’s more immediately useful. But then you can never learn enough Math; it constantly stretches your brain. So I did both.

I loved Harvey Mudd, but it is a tricky school to recommend to anyone. I worked harder there that I have before or since and if you’re going to do that you have to really know you want to.