Python
How to Read a Python Traceback Properly (Most Developers Read It Backwards)
The last line tells you what broke. The middle tells you why. Here is how to get a working hypothesis out of a traceback in about ten seconds.
Method rather than tooling: forming a hypothesis, choosing the cheapest experiment that falsifies it, and finding the wrong assumption underneath a bug.
Python
The last line tells you what broke. The middle tells you why. Here is how to get a working hypothesis out of a traceback in about ten seconds.
AI
It was sharp for an hour and now it is contradicting itself and reintroducing bugs you already fixed. That is context degradation, and it is manageable.
Debugging
Why I started a blog about software failure instead of software success, and what a debugging writeup should actually contain.
Databases
The code reads beautifully and issues four thousand queries. Here is how to detect them automatically instead of discovering them in production.
Debugging
When your profiler shows nothing and your logs are silent, strace shows you every syscall with timings. Here is a practical subset worth knowing.
DevOps
A plan showing forced replacement of a database is a good moment to stop. Here is how to read why, and the three ways state gets out of sync.
DevOps
Most logs are unqueryable prose written for a human who will never read them. Here is what makes a log line useful during an incident.
AI
Your tool is registered, the agent knows it exists, and nothing happens. Here is how to see what is actually crossing the wire.
DevOps
Not a guide to observability platforms. Just the three signals that, in retrospect, would have given me warning before nearly everything that went wrong.
Kubernetes
nslookup resolves and your application cannot connect. The two use different resolvers, and the difference is where the bug lives.
Networking
A missing timeout turns a slow dependency into an outage. A badly chosen one turns a blip into a retry storm. Both are common.
Performance
Everyone blames the platform. Most of a cold start is usually your own initialisation code, and you can measure exactly which part.