The tools, hardware, and software I use day-to-day.
My default database for document-centric data. Flexible schema, great Node.js driver, and Atlas makes cloud hosting easy.
ODM for MongoDB in Node.js. Schema validation, middleware hooks, and virtuals make working with MongoDB structured and safe.
Serverless Redis for rate limiting, caching, and session storage. Serverless-compatible with a generous free tier.
Where this site lives. Zero-config deploys, preview URLs per PR, edge functions, and first-class Next.js support.
CI/CD automation. I use it for running tests, type checks, and build validations on every pull request.
Containerization for local development environments. Consistent setups across machines without 'it works on my machine' surprises.
My primary full-stack framework. App Router, RSC, server actions, and first-class TypeScript support make it the best React meta-framework today.
The component model I think in. I use it through Next.js but understanding React deeply — hooks, reconciliation, context — is essential.
Lightweight and unopinionated Node.js framework for building REST APIs. Straightforward when you need a quick HTTP layer.
My default language for everything frontend and backend. The type system catches bugs before runtime and makes refactoring safe.
The foundation of the web. I write TypeScript but think in JavaScript — understanding the runtime semantics matters.
Go-to for scripting, data processing, and automation tasks. Clean syntax, huge ecosystem, and fast to iterate.
Version control. Conventional commits, branching strategies, and a clean git history are non-negotiables on every project.
API development and testing. Collections, environment variables, and automated tests for REST APIs.
Design tool for wireframes and UI mockups. Even as a developer, being able to read and work in Figma is essential for collaboration.
AI assistant for coding. I use it for code review, exploring unfamiliar patterns, and accelerating implementation on well-understood tasks.