Essays
Why Your SaaS Needs a Docker Compose Setup Even If You’re Just One Person
Because the only thing worse than debugging production is debugging your local machine.
Stop Forcing Subscriptions on your SaaS. Do this instead.
Not every product earns monthly rent. Sometimes selling your code once — and letting users host it — makes for a saner, more profitable business. Here’s how to pull it off sustainably.
The Kubernetes Controller That Auto-Reloads Your ConfigMaps
It fixes a problem so fundamental, you wonder why Kubernetes didn’t do it first.
What LLMs Reveal About Human Cognition
A reflection on how LLMs mirror our minds — and remind us how to grow.
Did We Overthink Frontend?
Before the npm abyss, you could just open a file and start building.
AI Can Build Anything—Except Product Taste
AI can build anything for you, except taste.
5 Ways to Survive an Inherited Codebase
We spend more time reading code than writing it. And most of that time? We’re reading someone else’s code. Chances are, it’s not an uplifting experience. Maybe it was a rushed MVP. Maybe it’s a legacy system built by three devs who’ve all since disappeared into the ether. Maybe it’s your code from six months ago, which is somehow worse. Whatever the case, you’ve inherited it now. Congrats. Here are five things to do when faced with a gnarly codebase that makes you question your career choices.
The Real Skill AI Won’t Replace
Because someone has to clean up after the AI’s code suggestions.
Don’t Build the Login Box
Unless you enjoy reinventing broken wheels with security holes.
It Was Just a Primary Key. What Could Go Wrong?
Turns out, databases don’t love randomness as much as I do
AI Made Me Faster at Procrastinating
A painfully honest look at how I used cutting-edge tools to avoid shipping real work.
Your Python Web App is a Memory Hog. Admit It.
Why boring choices save you in the long run
Your AI Pair Programmer Doesn’t Need a Buffet
How I learned (the hard way) that more code ≠ better answers
The Language That Wasn’t Supposed to Be One
If you hang around DevOps Twitter or Reddit long enough, you’ll stumble across a familiar fight: “Why does Terraform use HashiCorp Configuration Language (HCL) instead of a real programming language?” Half the crowd insists HCL is the perfect middle ground. The other half sees it as YAML’s slightly hipper cousin — still clunky, but with more curly braces. So, how did we end up with HCL at the center of infrastructure-as-code? And what would’ve happened if Terraform had just picked Python or Go instead?
When DIY Beats Managed Kubernetes
When I first started working with Kubernetes, I immediately gravitated toward managed offerings like EKS, GKE, and AKS. The promise was compelling: let AWS/Google/Azure handle the control plane while you focus on your applications. Fast forward a few years, and I’ve come to a somewhat contrarian position—for many teams, especially those with some ops capability, running K3s on virtual machines often makes more sense than using managed Kubernetes. Let me explain why, and the important caveats to make this approach work.