When S3 hangs: fitting client timeouts into your caller's deadline
Most services call other services, and most of those calls have two timeouts: the one your caller is willing to wait, and the one your client library is willing to wait. When the second is longer than the first, a single slow dependency can quietly freeze your service, and the logs will not tell you why.
After a CVE: how to keep a patched Node.js version from regressing
When a serious vulnerability is announced in a runtime, the fix usually looks like one line: bump the version. The harder question comes a few weeks later. Is every build still using the patched version? Or did a CI runner with a cached older toolchain, a contributor’s old laptop, or a Dockerfile nobody touched quietly bring the vulnerable version back?
Multi-step event pipelines: archive to S3, index, resume on failure
A common requirement in audit and compliance systems: keep the original event in cheap, immutable storage such as S3, and also put a searchable row into an analytics database that points to that archived object. The second write depends on the result of the first: you only know the object’s key after the archive has written it.
Event time vs receipt time: one policy for two clocks
Every audit event answers the question “when?”, but there are two different “whens”: when the action happened, and when the audit system heard about it. Mix them up and your analytics go wrong quietly: a backfill of two years of history lands in today’s chart, and a publisher with a wrong clock writes rows that are deleted the moment they arrive.
FastAPI health checks failing? Try def instead of async def
During load testing, Kubernetes started restarting every replica of a Python service, one after another. The service was not crashing and not out of memory; its health endpoint simply stopped answering in time. The cause was a single keyword, and the fix was to delete it.
Bounded waits beat fail-fast: stop dead-lettering under load
A load test against AuditFlow, the Labs64.IO audit pipeline, ended with 147 events in the dead-letter queue, although nothing in the pipeline was broken. For an audit trail that is the worst kind of failure: every component was healthy, and evidence was still lost.