Writing
Essays and notes on engineering, leadership, and building software.
TypeScript patterns that prevent production bugs
The type checker passing is not the same as the bug being impossible. A few patterns I reach for to make whole categories of production failure unwriteable.
What I look for in senior engineers
After twenty years of interviewing, the signals that actually predict seniority are not the ones we test for.
How AI changes engineering — and how it doesn't
AI has changed how we write code. It has not changed what software engineering is.
A new home for the writing
After a decade on WordPress, I have rebuilt this site from scratch — and here is why.