I'd rather be in the woods: this is Portland, after all!

But when not hiking, baking, or volunteering, I tweet occasionally, write about technology, and contribute to a variety of open source projects.

What I've Learned So Far.

Specialization is for insects. Robert Heinlein

By now I've had the good fortune to fumble, learn, practice, and teach my way through much of the software development stack.

My first tech job, managing IP allocations within Hewlett Packard, taught me a little about the challenges of large-scale networking and a lot about using automation to reduce errors and improving service times.

My first large development project—a long, hot summer, using Trolltech Qt to develop a traffic simulation—introduced me to the inestimable value of version control and earned me my first stripes in cross-platform development. Around the same time, curiosity was taking me from C++ to Office macros, with a liberal dose of UNIX and foundational web technologies in between.

I can probably still impersonate a dial-up modem and might still be able to pick out a QBasic 1.1 program in a sea of 4.5s.

I never did learn Java.

At Oregon State University (2005-2010) I got a whirlwind tour around the messy businesses of philosophy, history, political science, and economics. I learned to apply the scientific method through a series of summer research projects on topics as varied as liquid crystal phase transitions, fleet-vehicle emissions policy, and optical communications. My major focus (Mechanical Engineering) offered both the grounding one would expect—in mechanics, thermodynamics, controls, and design—but also a healthy appreciation of project management and engineering ethics. Computers interjected themselves regularly: homework favored finite differences over algebraic solutions (I remain a mediocre mathematician at best) and my role in group projects tended to focus on the algorithms, embedded systems, and digital interfaces beneath systems' hard, mechanical shells.

Outside the classroom I continued to practice web development, overhauling much of the web presence for the College of Engineering, the online payment system used by the University Foundation, and the student information system maintained by the University Honors College. I swore at SOAP APIs, choked down an alphabet soup of database vendors, finished the better part of a minor in PCI compliance, and learned not to go anywhere without TLS.

I keep telling myself that I'll return to academia to finish a Masters degree, probably in molecular biology or possibly in one of the many liberal arts. But those plans remain unmade.

In Kaiserslautern, Germany (2009), I gave engineering an honest shot. Take eighteen tons of massive, autonomous earth-mover and do the math. Giant robot? Design and validation for its reflexive controls? Near-realtime mechanical systems are fun. But (besides a spot of German and a few things about technical mentorship) I learned that I like software better.

I spent the next few years puttering around America's West Coast. I was a free agent—first at Core Communications, dragging systems and pratices into the modern age, and then as a roving contractor with anybody's guess of projects. Melange: that's what they call it. I learned to design defensively, recognize good documentation, cherish the test suite, and pay it forward where I could. The stable gained a few new languages (Ruby, PHP), and I spent enough nights practicing operations to be dangerous. I didn't expect to learn Amtrak's interstate schedule, the conductors' names, or their name for the train. The Starlate. Five years later, it's still trying to make up time.

At Versal (2012-2016) I learned the importance of architecture and good tech choices and developed a healthy respect for the blessed souls who have devoted their lives to performant, globally-distributed systems. Increasing responsibilities gave me an appreciation for exactly how hard people are—they're hard—and I learned how to build camaraderie across a team as dispersed as our operations. I learned that software frameworks aren't always what they're cracked up to be; that well-designed ones are good teaching tools; and that some of them (React) are pretty good anyway. I think fondly back on our work and the still-enormous opportunities for technology to improve education. EdTech remains a huge passion for me. I hope it stays that way.

Now, at Koan (2016 - present), I've tacked on a bare-modicum of experience in mobile development and more Amazon Web Services than you can shake a stick at. And there will doubtless be more soon...


The notes included on this site present reduced solutions to real-world problems and are released under the MIT license without warranty of any kind. Bronowski said, “in ten years, everything I've said will be wrong;” In software we're lucky to get three.

Attribution is not necessary, but a linked citation (or just a quick note) is certainly welcome.


In no particular order, this site's content and production would not have been possible without:

  • The authors of the many tools and libraries discussed herein.
  • The many, many contributors to the open-source ecosystem, whose oft-unnoticed contributions have enabled modern computing
  • Evergreen browsers