Writing

Notes from the load-bearing parts

Write-ups of migrations, rewires and production decisions — what broke, what it cost, and what I'd do again.

2026-08-21 9 min read

Pulling Auth Out of the Monolith

How I extracted authentication and authorization out of a monolith into a standalone FastAPI service backed by self-hosted Keycloak and Casbin, and migrated production organizations onto it with no user-facing downtime.

fastapikeycloakcasbinmulti-tenancyrbacmicroservicespostgresql
2026-08-21 10 min read

Leading a Contract Lifecycle Platform's Frontend to Production

How I took over and rebuilt the frontend of a multi-tenant contract/supplier lifecycle SaaS product, took it into production for two enterprise clients, and set the conventions two other engineers built against.

frontendnextjsredux-toolkitreact-queryengineering-leadershiptypescript
2026-08-11 10 min read

Comparing Documents and Rewiring Auth in a Vendor Editor Backend

How I added document comparison and gateway-based authentication to Syncfusion's ASP.NET Core Document Editor reference backend, without breaking its Redis-backed collaborative editing pipeline.

dotnetaspnet-coresignalrredissyncfusionauthcollaborative-editing
2026-05-13 9 min read

Retiring Celery: Rebuilding Our Task Pipeline on Taskiq + NATS JetStream

How we replaced a Celery/Redis task queue with Taskiq on NATS JetStream to stop duplicating expensive LLM calls, and split the workload into three purpose-built queues.

backenddistributed-systemspythonnatstaskiqasyncllm-infra
2026-03-24 10 min read

Building a Natural-Language-to-MongoDB Chat Pipeline

How I architected a chat endpoint that turns plain-English questions into safe, executed MongoDB aggregation pipelines — with an LLM intent classifier and a separate safety-check stage gating every query before it ever touches the database.

llmmongodbfastapibeanieredischatbotsystem-design
2026-03-01 8 min read

One Analytics Service, Two Products

How a single FastAPI analytics microservice served two separate products off one router, using a request-scoped resolver and a dependency-injector container to dispatch to product-specific services behind a shared Protocol.

fastapipythondependency-injectionbackend-architecturemicroservices