Skip to contentTag · 7 entries
PostgreSQL
- A Cron Job That Did Nothing Took Down My Deploy PlatformOct 6, 2026 · 10 min readIn July 2026 a stock-replenishment job that produced zero results ate the memory on Polaris's 4 GB VPS until the kernel killed Dokploy. How it got there, what made it worse, and what I changed.
- Taking Obelisk's Backend Deploy From 54 Minutes to 32Oct 6, 2026 · 10 min readOur backend deploys had crept up to almost an hour. Docker was fine. Most of the time went to migration tests waiting on one Postgres advisory lock, and to five Cloud Run services promoted one at a time.
- Polaris Performance Log: The Django Mistakes I Made FirstFeb 10, 2025 · 4 min readRefunds that queried once per line item, stock updated one row at a time, and signals that recalculated ledgers nobody asked about. What I changed in Polaris, and what I'd tell myself earlier.
- PgBouncer Transaction Pooling Broke Row-Level Security in PolarisOct 6, 2026 · 9 min readI put PgBouncer in front of Postgres to stop a login outage. Two weeks later customer search started returning empty lists on some requests, because tenant isolation depended on a session variable and transaction pooling doesn't keep sessions.
- Moving SMS Realtime Off Postgres Polling and Onto Redis StreamsOct 6, 2026 · 9 min readA Django app whose SSE endpoints polled Postgres from sleeping request threads, and the outbox, relay and Redis Streams setup that replaced them in March 2026.
- I Shipped a Race Condition That Oversold Stock (And Other War Stories)Apr 8, 2026 · 4 min readTwo cashiers selling the last item, a chain that returned nothing, and a lock that only worked when both requests hit the same process. Bugs I shipped, and the small fixes that held.
- PolarisFeb 10, 2025 · 3 min readRetail operations software for shops that bill all day: invoices, refunds, batch stock, supplier orders and customer ledgers that have to agree with each other.