engineering
Dispatch
Your service crashes and the logs you needed are not there. stdout is line-buffered in a terminal but fully buffered when piped, which is what Docker does. The buffer flushes on exit unless the process crashes first.
engineering
Dispatch
Streaming replication lag is invisible until a failover turns it into data loss. pg_stat_replication exposes the gap between primary and replica in real time. Here is how to read it, what the columns mean, and when the numbers should worry you.
engineering
Dispatch
Your /healthz endpoint returns 200 OK, but is the service actually healthy? The gap between process-alive and ready-to-serve traffic is where cascading failures hide.
engineering
Dispatch
The pg_stat_progress_vacuum view tells you exactly what VACUUM is doing mid-run. Here's how to read it, calculate a rough ETA, and wire up a monitoring query that actually makes sense.
engineering
Dispatch
Cron's five-field format has been stable for fifty years. It's also full of implementation traps that vary by system and stay silent until they don't.
engineering
Dispatch
COPY loads data 10–100x faster than INSERT batches. Most teams use it wrong—wrong format, wrong direction, wrong error model. Here's what it actually does.
engineering
Dispatch
The CORS preflight OPTIONS request exists because the web platform cannot revoke trust retroactively. It is a scar from the design choices made in 1999, and understanding why it exists tells you how to stop fighting it.
engineering
Dispatch
pg_advisory_lock gives you named locks that the database tracks but your schema doesn't. They solve coordination problems that row locks can't.
engineering
Dispatch
An untested backup is not a backup. It is a hope. Three failure modes look fine until restore day, and you discover them at 3 AM during an incident.
engineering
Dispatch
EXPLAIN ANALYZE shows you what Postgres actually did. Most developers look at the wrong parts. Here is what to read first.
engineering
Dispatch
Your firewall silently drops idle TCP connections. Your pool thinks they're alive. The first query after a quiet period hangs for minutes — and if traffic surges, your pool drains to zero working connections in seconds.
engineering
Dispatch
Most teams reach for a B-tree index by default. On a 100-million-row timestamp table, BRIN does the same job in 100KB instead of 2GB — if your data's physical order matches your query range.