About

I lead ML engineering. Mostly that means getting models out of notebooks and into something that runs every day, whether or not anyone is watching it.

I also build Dutch Engineer, where I teach ML engineering the way the job actually runs, from notebook to production.

How I got here

I started in theoretical chemistry at the University of Washington, running quantum mechanics simulations on high-performance computing systems. That was my first time building big computational workflows, and my first time debugging them when they broke.

In grad school I joined DIRECT, a UW program on data-intensive research, and that's where machine learning got me.

My first two projects were a model that predicted how many copies a video game would sell and a tag recommender for Stack Overflow (I picked that one because Stack Overflow was basically how I learned to code).

The video game model scored about 0.375. Barely better than guessing.

Hiring managers kept bringing it up anyway. And because I actually cared about it, I could tell them exactly why it was bad: tweet counts with no sentiment, a four-week lookahead that compounded the error, and release-date spikes driven by things the model never saw. A model you can take apart beats one you can only describe.

Since then

I've worked across data science, data engineering and MLOps. A few things I'm happy with: a real-time model serving 8.6 million predictions a day, six-minute SQL queries brought down to under one, and deployment templates that took shipping a model from months to three days.

And the lesson ended up the same every time. Building the model was rarely the hard part. Getting it to run reliably, again and again, long after everyone moved on, was.

Writing

I write on Substack and Medium, mostly about the parts of ML engineering that happen after the notebook.

Say hi

LinkedIn is the easiest place to find me.