Stack
What I reach for,
and why.
A stack is a set of bets. These are mine, each with the reason it earned its place. No skill bars, no logo walls: percentages of confidence are a genre of fiction.
Languages & web platform
TypeScript
My native tongue. Strict mode, no excuses.
CSS
Layout is a physics problem. I read specs for fun.
Architecture & systems
Distributed systems
The request path is a system too to design it like one.
Systems design
Interfaces, boundaries, failure modes to before the first commit.
Automation
If it happens twice, it becomes a script; three times, a pipeline.
Rendering & performance
Web performance
Long tasks, INP, compositor discipline. I profile before I promise.
Canvas & motion engines
Typed arrays, no per-frame allocation, 60fps on five-year-old hardware.
Frameworks & architecture
Astro
This site: islands only where the physics runs.
React
Long enough to know all the escape hatches by heart.
Next.js
React with a server attached, when the product calls for it.
Design systems
Tokens are the API; components are convenience.
AI & agents
Hermes
Open-weight models. My default for local inference and eval work.
OpenCode
The agent harness I run daily for shipping code.
Platform & tooling
Terraform
Infrastructure as code. Environments are reproducible or they are not real.
AWS
Compute, storage, CDN. Where my architectures actually run.
Node.js
The runtime under my CLIs, builds, and APIs.
Build & CI
Bundlers configured, not tolerated. Perf budgets enforced in CI.
Testing for feel
Simulation tests that assert the curve, not the pixel.
Want the reasoning behind a bet, or to argue with one? Both are good reasons to write.
Get in touch