MY TECH
STACK

I've been writing software professionally since 2014. In that time I've worked across agencies, startups, and enterprise teams — shipping everything from landing pages to distributed systems that handle millions of requests a day.

The tools below aren't aspirational. They're what I actually open every morning. I've shipped production code with every single one of them, broken things, fixed those things, and learned something in the process.

I'm opinionated about my stack, but not precious about it. The right tool for the job is the right tool — even if that means something I haven't used before.

TOOLS I
ACTUALLY
USE IN
PRODUCTION

Not the ones I listed on a resume in 2018 and never touched again.

FrontendYes, I do design too. No, I won't use your old CSS framework.
ReactReact
Next.jsNext.js
TypeScriptTypeScript
TailwindTailwind
ViteVite
ReduxRedux
FigmaFigma
ReactReact
Next.jsNext.js
TypeScriptTypeScript
TailwindTailwind
ViteVite
ReduxRedux
FigmaFigma
BackendThe part users never see but always blame when things break.
Node.jsNode.js
PythonPython
FastAPIFastAPI
FlaskFlask
GraphQLGraphQL
PostgreSQLPostgreSQL
RedisRedis
ElasticSearchElasticSearch
Node.jsNode.js
PythonPython
FastAPIFastAPI
FlaskFlask
GraphQLGraphQL
PostgreSQLPostgreSQL
RedisRedis
ElasticSearchElasticSearch
InfrastructureWhere 'it works on my machine' goes to meet its maker.
AWSAWS
DockerDocker
KubernetesKubernetes
GitHub ActionsGitHub Actions
TerraformTerraform
NginxNginx
DigitalOceanDigitalOcean
AWSAWS
DockerDocker
KubernetesKubernetes
GitHub ActionsGitHub Actions
TerraformTerraform
NginxNginx
DigitalOceanDigitalOcean
Emotional SupportMission-critical infrastructure. Non-negotiable.
VS CodeVS Code
GitHub CopilotGitHub Copilot
NotionNotion
SlackSlack
SpotifySpotify
RaycastRaycast
VS CodeVS Code
GitHub CopilotGitHub Copilot
NotionNotion
SlackSlack
SpotifySpotify
RaycastRaycast

On Frontend

I've been building with React since v0.13 and Next.js since its first stable release. My preference for TypeScript isn't ideological — it's because silent type errors at 2am on a Friday are worse than the extra keystrokes. I believe in server components, progressive enhancement, and measuring Core Web Vitals before shipping.

On Backend & APIs

My go-to is Node.js with TypeScript for most API work, and Python (FastAPI) for anything that touches machine learning or heavy computation. PostgreSQL is my default database — it's been around since 1996, it handles JSON natively, and it doesn't try to be clever about your data. ElasticSearch joins the party when full-text or faceted search is in scope.

On Infrastructure

I containerize everything with Docker and deploy on AWS or DigitalOcean depending on the project's budget and complexity. Kubernetes for orchestration when scale justifies the overhead (and not a day before). GitHub Actions for CI/CD because it lives next to the code. Terraform when I need something that can be version-controlled and rolled back.

What I Don't Use

jQuery. Class-based React. Any ORM that hides the SQL query from me. Any deployment pipeline with more YAML than logic. The word "disruptive" without a hint of irony.

GOT AN
IDEA?
LET'S BUILD.

Whether you have a half-baked idea or a fully-specced system ready to build, I'm happy to have a real conversation about it. No sales call. No deck. Just talk.

Good fits
  • Building your product from scratch
  • Fixing the mess someone else left behind
  • Automating workflows that are eating your team's time
  • Scaling a system before it becomes a crisis
SAY HELLO