Why I Stopped Using ORMs in Production
After three years of fighting N+1 queries, opaque migration failures, and ORM-specific gotchas, I went back to raw SQL. Here's what changed — and what I learned about the abstraction trap.
writing
Notes on backend systems, DevOps, distributed computing, and whatever I'm working through at the moment. Written for engineers who want to go deeper.
A single ConfigMap change cascaded into 6 hours of incident response, two rollbacks, and one very long retrospective. Here's the full story — including what we changed so it can't happen again.
The best way to understand a system is to build it yourself. In this series, we implement a Redis-compatible server from scratch — starting with the RESP protocol and in-memory data structures.
Microservices solve distribution problems you might not have yet, while introducing operational complexity you definitely weren't ready for. A pragmatic look at when to split and when to stay monolithic.
I've run both in production at scale. The answer isn't one-size-fits-all, but after writing hundreds of thousands of lines in each, I have opinions. Strong ones.
Your pods don't just appear on nodes by magic. The Kubernetes scheduler runs a complex scoring algorithm on every pending pod. Understanding it helps you avoid surprising node pressure and mysterious OOMKills.