Languages, frameworks, and tools I reach for — grouped by where they live in the stack. Years are roughly when I first shipped something with each.
Where I spend most of my time — building expressive, accessible interfaces in the browser.

Typed JavaScript for web apps and servers.

React framework for full-stack web apps.

Component-based library for building user interfaces.
The language of the web, in the browser and on the server.
Utility-first CSS for fast, consistent styling.
Servers, databases, and the systems thinking I'm steadily growing into.
General-purpose language for APIs, scripting, and data work.
Structured Node.js framework for scalable server apps.
Minimal Node.js framework for APIs and web servers.

Document database, including Atlas and vector search.
Server-side language for dynamic websites.
Fast Python framework for building APIs.
Type-safe ORM for working with databases in TypeScript.

Relational database for structured data.
The dev-loop pieces — what makes shipping feel calm instead of chaotic.

Containers for consistent builds and deployments.
Web server and reverse proxy for routing and redirects.

Cloud hosting with EC2, S3, and CloudFront.
DNS, CDN, and edge services.
Automated build, test, and deploy pipelines.
Hosting and deployment for Next.js and front-end apps.
Automated build, test and deploy workflows on GitHub.
The non-code skills I lean on most.