Software I use, technologies I build with, and tools I rely on.

The stack behind my day-to-day work: a TypeScript backend on AWS, LLM features on the Anthropic and OpenAI APIs, and an AI-assisted development loop. Most of it is what I run in production at Runn right now.

Workstation

  • MacBook Pro

    My main machine for everything from backend development to running eight services locally with Docker and Temporal.

  • Claude Code and Cursor

    I build daily with AI-assisted development tools. Claude Code handles multi-file changes, migrations, and test writing from the terminal; Cursor is my editor for the rest.

  • Terminal and SSH

    A large part of my workflow lives in the terminal: logs, containers, Git, AWS CLI, and the scripts that keep a production platform honest.

  • Docker Desktop

    Every service I ship runs in a container, so local development mirrors what AWS App Runner runs in production.

  • Three-node Kubernetes homelab

    Repurposed hardware running Ubuntu Server. It is where I try distributed-systems and observability ideas before they touch production.

Backend

  • TypeScript, Node.js, and Fastify

    The core of the platform I maintain: a Fastify API with 200+ routes, a background worker, and an MCP server in a pnpm monorepo.

  • Python, FastAPI, and Flask

    My other production language. I used it for backend services at Oracle, ML endpoints, and data pipelines, and still reach for it for tooling and analysis.

  • Temporal

    Durable workflows for anything that must survive retries and restarts: campaign launches, metrics syncs, and scheduled jobs.

  • PostgreSQL with Drizzle and Prisma

    Schema design, versioned migrations, and zero-downtime changes. I have applied every production migration on a 79-table schema with zero data loss.

  • Spring Boot and JPA

    From my time at Compass Group, where I designed REST APIs handling millions of daily transactions with Ignite and Hibernate caching.

AI and LLMs

  • Anthropic API and Model Context Protocol

    I build agents and custom MCP servers, and use prompt caching and structured outputs to keep production LLM features fast and affordable.

  • OpenAI API

    Used for LLM-powered automation at Compass Group and as the second provider behind the ad-copy pipeline at Runn.

  • TensorFlow and scikit-learn

    My applied ML background: computer-vision and geospatial pipelines for crop classification from satellite imagery.

Frontend and payments

  • React and Next.js App Router

    Customer, admin, and marketing apps all run on Next.js, deployed as containers to AWS App Runner.

  • Tailwind CSS

    My default for shipping clean, responsive UI quickly, including this site.

  • Stripe

    Subscriptions, metered usage reporting, webhooks, coupons, and partner pricing, built end-to-end.

Cloud and operations

  • AWS App Runner, ECS, ECR, and S3

    The production footprint for the platform I run. An infrastructure audit and rightsizing cut monthly spend by 52%.

  • GitHub Actions with OIDC

    Every service deploys through GitHub Actions and GitHub OIDC with no long-lived AWS credentials.

  • Docker, Kubernetes, and Terraform

    Containers everywhere, Kubernetes for the homelab and earlier work at Oracle, and Terraform for infrastructure as code.

  • Prometheus, Grafana, and incident response

    Metrics, dashboards, and log-based debugging. I have kept 99.9% uptime on production services and owned on-call for critical incidents.

  • Vitest, pytest, JMeter, and Locust

    1,300+ automated tests on the current platform, and load testing whenever a change touches throughput.