Working

Zendesk

2016 — Present

Joining Zendesk was a big step up for me in my career. This is a truly large-scale enterprise, and I'm writing code that affects millions of people.

I've continued my habit of shaping the culture of the company around me by writing a chat bot that nudges people away from papercutting their colleagues. I've also had the opportunity to architect and develop a microservice system for conversations, which can handle all the scale that Zendesk demands.

Gridium

2014 — 2016

When I joined Gridium, I was engineer number 6, and employee number 13. I had never worked at a company at this early stage, and the opportunity to shape the course of its history was very interesting to me.

I've found that being part of such a small team had some major advantages, among which is the ability to shape the culture and technological substrate. I helped to build the kind of company I want to work for. Working on a software system at the beginning of its life gave me the opportunity to apply all the lessons I've learned from working on more-mature applications. I've taught and learned a lot about being making remote teams work.

I worked on all parts of the web-application stack, from hosting in Docker to data storage to API design to Ember on the front end. I also hacked the culture with Hubot, and spreadg organizational, cultural, and technological wisdom by speaking at conferences.

GitHub

2012 — 2014

GitHub had been on my I-need-to-work-here list since about 2009, and when I was offered a job there, I jumped at it. It was everything I had hoped for, and more.

This was where I found out what it is to be a citizen of the Internet in a real way. I traveled the world, speaking at conferences. I worked with some of my personal heroes. I was freed from having a commute. I learned what it was to help make a company.

My main focus was libgit2, an implementation of git with a nice API, and no dependencies on a UNIX environment. This led me to helping out with back-end systems, mainline git, and even the native clients (GitHub Desktop). I helped run an open-source project, wrote its documentation, and found out how I work best.

Monsoon Commerce

2011 — 2012

Wacom Technology

2006 — 2011

Side Projects

Pro Git, 2nd Edition

This is effectively the book on Git, and I was honored and excited when Scott asked me to co-author the second edition. It's now even better than it was when I read it as a younger engineer. The ability to help developers new and old become better at their craft is a point of pride for me, a strong reason why I do what I do.

Building Tools with GitHub

I contributed two chapters to Chris Dawson's book on GitHub's API. This is like the missing manual for GitHub, and includes lots of examples of how to write code that works with source control, issues, and lots more. I wrote a chapter on the search API (in Python), and a chapter on the commit-status API (in C#).

Training and Teaching

I've been working with the Linux Foundation and its partners to provide on-premises training for Kubernetes. I've also been recording training videos on various topics:

Speaking

Robots and Culture

I'd been thinking a lot about how automation can change a company's culture. The best example of this that I've seen is the addition of a robot to a team that uses chat. I gave this talk at Joy of Coding 2015 in Rotterdam, and also in an updated form at CascadiaFest 2015 in Blaine, Washington.

Better at Git

While I worked at GitHub on a Git implementation, I was very interested in teaching people about the tools they use every day. I found that just a little bit of knowledge about Git internals made people much more effective at using the tool. I gave a tips-and-tricks talk in various forms at many conferences over the course of two years:

Skills

Languages

I've written device drivers, cross-platform libraries, and GUI applications in C and C++. I've worked on production applications in C#, using both WPF for client-side apps and ASP.NET on the server. I've taught a course on converting from Python 2 to Python 3. I've done user experience work on front-end web applications using Ember, Angular, Knockout and Vanilla.js.

But that's just application code. I've automated deployments using bare shell scripts, Perl, Ansible manifests, and Kubernetes definitions. I've tinkered with Objective C, Swift, Lisp, and Haskell. I came close to writing a parser for an installer DSL, but settled for an Emacs syntax highlighter instead.

Platforms & Tools

I've written code for OS X, Linux, and Windows, and I've written code that runs on all three. I've solved some of the same problems Docker solves. I've written device drivers, GUI applications, HTTP backends, and HTML/CSS/Javascript front ends, with and without frameworks.

I know the weird stuff too. I have a favorite source control tool. I have opinions on defect tracking. I know the difference between UCS-2 and UTF-16. I know what how you say what you say says about what you're saying. And I'd love to debate agile versus Agile.

My Secret Weapon

I love to learn. Especially when it comes to technology.

Give me two weeks and a good book, and I'll help you find bugs in an iOS app, and I'll be happy doing it. Scala? Sounds like fun. COBOL? Well, we all have our limits.

This is what I bring. I'm really good at staying up to date, bringing in fresh ideas, and trying new things.

Education

Portland State University

Master's Degree, Software Engineering • 2006 — 2012

I took night classes to earn my master's degree in software engineering. It's been a long journey; taking classes part-time at 30 is a little different than when I was doing it full time. The benefits have been worth the cost and effort, for me and my employers.

Oregon State University

Bachelors Degree, Computer Engineering • 1999 — 2003

This is where I cut my teeth, and where I got my first taste of professional engineering. I was part of an internship program, and had a full year of experience before I graduated.