Skip to content
Available for work
Adam

Tools

The stack I reach for every day, and why.

01

Editor & shell

VS Code / Cursor
Primary editor, with Copilot and custom keybinds.
Windows Terminal
PowerShell and WSL2 for cross-platform work.
Git / GitHub
Branches, reviews, and Actions in one place.
02

Languages

TypeScript
Strict mode everywhere. No any.
JavaScript
Where a build step would cost more than it saves.
Python
Scripting and analysis outside the web stack.
SQL
Written by hand before reaching for an ORM.
Bash
Glue for local tooling and CI steps.
03

Web

Next.js
App Router, server components by default.
React
Client boundaries only where hooks or events need them.
Tailwind CSS
Utility-first, with every token in one stylesheet.
Framer Motion
Opacity and transform only, never layout.
04

Data & messaging

PostgreSQL
Composite and covering indexes, read with EXPLAIN ANALYZE.
Redis
Cache-aside, TTLs, and locks against a stampede.
Kafka
Topics, partitions, consumer groups, ordering guarantees.
05

Cloud & delivery

AWS
S3, ECS on Fargate, IAM roles, and VPC networking.
Docker
Multi-stage builds and containerised local dev.
GitHub Actions
Test, build, push, deploy, on every merge.
OpenTelemetry
Traces and metrics once print debugging stopped working.
Vercel
Where this site runs.
06

AI tooling

Claude / Claude Code
Building alongside agents, not pasting from a chat box.
GitHub Copilot
Inline completion while writing.
Cursor
Editor-level context over a whole repository.
07

This site

Next.js 16 · React 19
Statically generated, server components throughout.
shadcn on Base UI
Primitives owned in-repo, mapped to the design tokens.
MDX
next-mdx-remote, with frontmatter validated at build time.
rehype-pretty-code
Shiki with a custom greyscale theme, so code carries no accent.
Canvas
The instrument field: one loop, drawn behind everything.