Uses
What I reach for
The stack that runs this site and the work behind kwil-db, with one reason each. No aspirational tools. Everything here earns its place in production. Hardware and editor I'll add as I get to them.
Languages & data
Go
One static binary. The deploy story fits in a sentence.
PostgreSQL
Boring durability, beaten on for thirty years. I trust its failure modes over mine.
TypeScript
The cheapest tests I keep.
Zod
Parse input at the edge, then trust it everywhere inside.
Web
Next.js
App Router. One framework for the page and the API behind it.
Tailwind
Design tokens live in the markup, so there is no stylesheet to drift out of sync.
shadcn/ui
Components I own in the repo, not a dependency I rent.
Drizzle
SQL I can still read, with types I did not hand-write.
Ship & run
Vercel
git push is the deploy. I spend the saved minutes on the actual problem.
Neon
Postgres over HTTP that scales to zero between requests.
pnpm
A sane lockfile and a disk that is not full of duplicate node_modules.
Resend
Transactional email that is just an API call.
AI in the loop
Claude
Structured outputs, so the model returns schema-valid JSON instead of a parsing gamble.
Claude Code
Agentic coding in the terminal. Parts of this site were built with it.