Uses · Stack and tools

What I reach for when I sit down to build.

Editor config, the dev stack, and hosting. Updated when something meaningful changes.

  • VS CodePrimary editor. TypeScript language server, ESLint and Prettier on save. Keeps style consistent across projects without manual effort.
  • ESLint + PrettierLint and format baked into every project. One less thing to argue about in code review.
  • Claude CodeAI coding assistant. Used for scaffolding, refactoring, and working through unfamiliar APIs. Runs in the terminal alongside VS Code.
  • Next.js (App Router)Framework of choice for new web projects. Server Components by default; client components only where interactivity genuinely requires it.
  • TypeScript (strict)Strict mode on every project. The compiler catches more bugs at write time than any amount of defensive runtime checking would.
  • pnpmFast installs, content-addressable storage, and reliable lockfiles. Consistent across machines without the disk bloat.
  • Tailwind CSSUtility-first. Avoids the dead-CSS problem that builds up in long-lived codebases. The constraint of working with a design system pays off on every project.
  • shadcn/uiCopy-in components built on Radix primitives. The code lives in the repo, not inside a node_modules black box. Easy to read, easy to modify.
  • Magento / Adobe CommercePHP-based ecommerce platform. Fifteen years across OSS and Enterprise editions: builds, upgrades, performance work, and security audits.
  • PHPStill a significant part of the day job via Magento. Modern PHP (8.x typed, strict) is a different language from what most people remember.
  • MySQL / SQLThe database behind Magento and most of the long-running projects. Query optimisation and schema design are part of the ecommerce performance work.
  • Git + GitHubVersion control and code review. One branch per task, squash on merge. Linear history makes bisect and blame actually useful.
  • VercelHosting for Next.js projects. Preview deployments per pull request, production on main. Zero-config for the cases that matter most.
  • ResendTransactional email. Simple API, reliable delivery, no mail server to maintain. React Email for templates.
  • GitHub ActionsCI/CD. Lint, typecheck, and build run on every pull request. Third-party actions pinned to commit SHAs.
  • DependabotAutomated dependency update PRs on GitHub. Keeps the supply chain current without a manual audit cycle.