I build and harden production AI systems
I build production AI systems - pipelines, agents, and the evals that keep them honest. Right now that means a pipeline that turns 500+ news articles into a digest every morning, unattended - and most of the work isn't the model, it's the schema validation, the retries, and the observability that keep it from quietly breaking at 6am. Same impulse that had me build a Rails app that ran the Ottawa Jazz Festival's volunteer program for 9 years and write a gem to tell me which of my dependencies were actually still maintained.
That instinct has a decade of platform engineering under it. At Hivebrite I scaled a Rails platform serving over a million users, cut €160k a year in infrastructure, and shipped a performance fix to Rails. LLM systems need that production discipline more than most code does, and that's where I point it now.
I want to know why we're building something, not just what's on the ticket, and I'd rather test a theory against real data than blindly apply it. I write about what breaks and what I learn on my blog.
Need an AI system you can actually trust in production? Drop it in my inbox. More in the CV, or ask the assistant here about my work (or point your own LLM at /llms.txt).
Calls Claude every morning, curates 500+ articles from 30+ sources into a digest, emails it to subscribers. Python pipeline, Rust web server, Terraform deploys.
Finds the dependencies nobody maintains anymore, before an abandoned one leaves you stuck on a security hole you can't patch. Looks past outdated versions and known vulnerabilities to whether anyone's still home, across Ruby, JavaScript, Python, Rust, and more.
Mac app that turns a game controller into a keyboard and mouse. Pair a pad, press a button, it presses a key. Menu bar, open source.
Merged a performance fix to Rails ActiveSupport (20x-670x) and a lock-free DNS concurrency fix to NextDNS's Go resolver. Designed and proposed production-safe Rack 3 streaming for Sinatra 5.0, a long-standing help-wanted feature. Also drove a Rack::Deflater streaming-body fix (rack#2470) upstream: root-caused it, proposed the approach the upstream PR adopted, and caught a bug in its implementation during review.