Platform2022 – present
The Rails monolith at the centre of a social platform
185 models, 211 background workers and ~28 Sidekiq queues serving a regional social network. Four years of feature work, performance work, and the discipline of keeping a large monolith habitable.
Ruby on RailsMySQLRedisSidekiqOpenSearch
Infrastructure2024 – present
Running a 24-service fleet from a Git repository
Helm charts, per-environment values and automated image bumps describing every service in production — most changes deliberately small, so the tree stays reviewable.
KubernetesHelmFluxArgoCDKEDAKarpenter
Backend2023 – 2026
A real-time messaging service, and the parts that were hard
NestJS and Socket.IO with Redis pub/sub for cross-instance fan-out and MongoDB for persistence. Three years of ownership — including adding a message broker and later removing it.
NestJSSocket.IORedisMongoDBBullMQ
Infrastructure2024 – 2025
Moving production from Azure to AWS, service by service
A live migration from AKS to EKS — Terraform for the new estate, one service at a time, DNS and CDN last, then a deliberate decommission. No maintenance window.
TerraformAWS EKSAzure AKSCloudFrontRoute 53
Backend2024 – present
The media pipeline behind the paid tier
Compositing user photography onto templated poster and video designs at festival-day volumes. Moved from Lambda + FFmpeg to KEDA-scaled in-cluster workers driven by queue depth.
NestJSFFmpegPuppeteerRedisKEDAS3
ML2025 – 2026
Replacing a vendor vision API with a self-hosted GPU service
Background removal moved from per-call cloud API to an ONNX model on GPU nodes in-cluster, then a face-detector swap validated against 200 real production images before shipping.
PythonONNX RuntimeOpenCVBiRefNetSCRFD
Backend2024 – present
A Go notification service for fan-out at population scale
Targeting users by district, state, party and circle, then dispatching push through FCM without touching the main API's request path.
GoGinGORMAsynqRedisFCM
Infrastructure2024 – present
The release path, and knowing when it broke
CircleCI with timing-based test splitting, build capacity on our own cluster, plus the instrumentation and backup drills that make production legible.
CircleCINew RelicPrometheusGrafanaLokiVelero
Open source2026
Seeker: a search engine built from first principles
An inverted index, BM25, Levenshtein automata, FSTs, BKD trees, a byte-level segment format and a breakable cluster — ~20,000 lines of TypeScript with a 43-chapter book.
TypeScriptNext.jsReact
Open source2026
rails2x: translating Rails to Go through an AST
A migration engine that parses Ruby with tree-sitter, lifts it into a typed IR, and scaffolds Goravel code — with static gates that refuse to publish a partial tree.
Gotree-sitterRubyGoravel
Open source2025
sidekiq-assured-jobs: not losing the job when the worker dies
A Ruby gem that tracks in-flight Sidekiq jobs and re-enqueues whatever a killed worker was holding, because Kubernetes evicts pods and Sidekiq does not remember what it lost.
RubySidekiqRedisRSpec