Writing about the work
Engineering write-ups on the things I actually run into — Django at scale, database and deployment mistakes, AI pipelines that survive contact with real data, and mobile apps that have to work without a signal.
-
A Django Deployment You Can Reason About at 2am
The measure of a deployment is not how elegant it is. It is how quickly someone who did not build it can put the previous version back.
-
Building a RAG System That Can Prove Where Its Answers Came From
The demo is easy. The hard part is the day a user asks a question your corpus cannot answer, and the model answers anyway — fluently.
-
Cache-Aside in Django: Getting Invalidation Right
There are two hard problems in computer science, and this post is about the second one — plus off-by-one errors.
-
Core Web Vitals for Server-Rendered Django Sites
Server-rendered sites start with an advantage on Core Web Vitals and then throw it away on fonts, hero images and a carousel nobody asked for.
-
Designing a Hospital Registration Counter That Survives the Queue
Hospital software is judged at the counter. If registration takes ninety seconds instead of fifteen, the queue reaches the door and the staff go back to the register book.
-
Django or FastAPI: Choosing by the Shape of the Problem
Both are good. They are good at different things, and the benchmark everyone quotes measures the part of your latency budget you were never going to spend.
-
Offline-First React Native: A Sync Queue That Does Not Lose Trips
A driver goes under a flyover and the trip-complete request dies. The question is not whether that happens; it is what the app does next.
-
Running Celery in Production Without Losing Tasks
A task queue that loses a job under load is worse than no task queue, because you stop checking.
-
Three Ways to Store Multi-Tenant Data, and When Each One Breaks
Every multi-tenant design is a bet about which problem you would rather have in three years.
-
Why Your Django App Runs Out of Postgres Connections
The error says "too many clients already". The instinct is to raise max_connections. That is almost always the wrong lever.
Working on something in here?
If one of these is the problem in front of you, I have probably shipped it. Tell me what you are building.