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.