Tools
The stack I reach for every day, and why.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.