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