Tools

The stack I reach for, and why.

Languages

  • TypeScriptOne language from the infrastructure to the component library.
  • PythonScripts, data work and Django when a project calls for it.
  • PHPWhere I started; Laravel on two early products.
  • C#ASP.NET on an incident management system I modernized.

Back end

  • Node.jsThe runtime behind every service I have built since 2022.
  • NestJSStructure for services a whole team works on.
  • ExpressThe plain option when a service needs nothing more.
  • HonoSmall and fast for edge-friendly APIs.
  • DjangoBatteries included for APIs with a relational model.
  • LaravelMy first framework, still a fast way to ship a PHP product.

Front end

  • ReactComponents that design systems can share.
  • Next.jsStatic pages and app routes in one place; this site runs on it.
  • React NativeMobile in parity with the web app, same team.
  • Module FederationMicrofrontends when several teams ship one product.
  • StorybookA component library you can see and test in isolation.
  • CypressEnd-to-end tests before touching legacy code.

Cloud and infrastructure

  • AWSEvery production system since 2022; Lambda, API Gateway, EventBridge, ECS, Cognito, IVS, MediaConvert.
  • TerraformInfrastructure as code across teams at Designli.
  • AWS CDKInfrastructure written and reviewed like the rest of the code, at Oka.
  • DockerSame environment in development, CI and production.

Data

  • DynamoDBPredictable access patterns at any size, the default for event-driven services.
  • PostgreSQLRelational data that needs real queries.
  • FirestoreReal-time chat without running a socket server.

AI engineering

  • LLM workflowsMulti-step flows in products, with measured and evaluated outputs.
  • RAGGrounding answers in the product's own data.
  • Claude CodeThe agents that build with me, through overmind.