backend: java (backend services, tested before they ship), spring (the microservices i work on day to day), kafka (async consumers for high-volume updates), spark (batch jobs on emr), python (data jobs and the glue between them), node.js (minmailist's backend, on gcp), graphql (rest and graphql api design), mysql (query tuning on hot tables at work), postgres (the relational default for new things), cassandra (wide rows for millions of users), mongodb (documents, when the shape keeps moving), redis (elasticache and memorydb, in front of everything)
frontend: react (minmailist's extension and landing page), typescript (everything that runs in a browser), next.js (this site, and its notion diary), tailwind (this site, tile by tile), react native (luxiom, a visual life-planning app), chrome (minmailist, a chrome extension)
cloud / ops: aws (lambda, step functions, emr, dynamodb, sqs), gcp (cloud run, cloud tasks and vertex ai), workers (luxiom's api, with r2 for storage), firebase (auth and data for luxiom), docker (every service, in a box), kubernetes (where the boxes run), grafana (dashboards and alerting across services), prometheus (metrics and promql behind the alerts)
ai: claude code (agentic coding for luxiom and this site), codex (a second pair of hands in the terminal), gemini (reading text out of images), rag (vector stores and retrieval for agents)