Shipping AI features that don't feel like AI features
The AI features users trust are the ones that don't announce themselves.
The environment gap
There's a class of bugs that only exist between your machine and production. They require a different debugging mindset.
Onboarding is a product, not an afterthought
Onboarding is the first time a user sees whether your product is coherent. Most teams build it last.
The parts of a product nobody wants to build
Billing flows, deletion with grace periods, subscription sync. Invisible when done well, damaging when skipped.
The cost of a schema decision you can't take back
Code is reversible. A schema, once in production with real user data, mostly isn't.
One year in: what production code taught me that tutorials didn't
Notes from twelve months of shipping code that actual customers run, after two years of tutorials, courses and personal projects.
Notes on shipping a feature you inherited
What it takes to deliver something you didn't design, in a codebase you didn't build.
Reading the codebase before reading the ticket
A different order of operations that changed how fast I move.
Small teams, fewer meetings, more questions
What works in a small team that doesn't scale, and why that's fine.
Why I log decisions as I make them
A running record of decisions that answers the question you'll have in three months.