Upgrade Triggers: Mandatory, Locking, Opportunity
A Dependabot PR, an EOL notice and a CVE bulletin share one queue but not one urgency. Sort signals into three types and give each a response time.
Tag
15 entries: Note, System, Essay.
A Dependabot PR, an EOL notice and a CVE bulletin share one queue but not one urgency. Sort signals into three types and give each a response time.
Separating old records that bloat the live table: partitioning, cold storage, and keeping query access while you archive
On a queue table, an index and an autovacuum threshold that grow with the table scale wrong; the measured case for sizing both to the pending jobs
Running migrations without causing downtime in production: backward-compatible steps, multi-phase column changes, and avoiding table locks
The questions to ask before adding a cache, why cache invalidation is hard, and the choice between TTL and consistency
Connecting a critical system to external APIs: using timeouts, retries, and circuit breakers to stop one service's collapse from taking the whole system down.
Vibe coding lowers the cost of a first version, not the cost of being wrong. That bill arrives in production, not at build time.
Generating legally sequential, gap-free numbers with parallel workers: the JIT reservation pattern that solves race conditions and gaps together
As data load grows, where does boring architecture break? Working set, read replicas, partitioning, write load, a separate data layer — in order.
The pattern I use to avoid key collisions and accidental deletes when a single Redis instance is shared across several projects
pg_dump alone is not a backup. A PITR-capable, compressed, verifiable backup architecture with pgBackRest.
Laravel queue workers are flawless locally and slow in production. The five most common reasons developers overlook.
The concrete benefits of defining a separate pool per application instead of a single PHP-FPM pool when running multiple PHP apps on one VPS
A production-grade Laravel setup with Nginx + PHP-FPM + Redis + PostgreSQL + Supervisor + Horizon. Each piece's job and what you lose if you drop it
A practical setup for dynamic user authentication via `auth_query` instead of `userlist.txt` when running pgBouncer