~/gerard-ceraso $ ls writing/

Writing

2026-10-05

A nodeSelector Is a Capacity Request

Somewhere in a cluster I look after, an autoscaler had provisioned a full compute node to run two small controller pods. Nothing else would ever schedule onto it. Noth...

2026-09-25

The Dockerfile Flag That Silently Ships the Wrong Architecture

Pods on our arm64 nodes were dying instantly with:

2026-09-22

Do the Arithmetic Before Blaming the Database

Every slow-application investigation has a moment where someone opens the database dashboard, sees a spike, and the room exhales. There’s the culprit. Read IOPS triple...

2026-09-16

A Disposable Production Clone on a Laptop

Most of my mistakes in GitOps-managed infrastructure aren’t logic errors. They’re mechanical: a values path that doesn’t exist in the chart, a template that renders di...

2026-09-10

Your Liveness Probe Is Checking the Wrong Thing

The pod was Running. The liveness probe was green. There were 521 items in the queue and every worker was idle. It had been that way for hours.

2026-09-04

I Built a Speed Camera for My Street

The street outside my house has a 15mph limit. It also has, as far as I could tell from standing at the window, a steady supply of people treating that as advisory.

2026-09-04

107 Days of Data From Four Different Instruments

I spent a summer building a speed camera to measure the street outside my house. That’s the previous post. This one is about the afternoon I sat down to report what it...

2026-08-31

Your OOM-Killed Pod's "Peak Memory" Is a Lie

There’s a piece of Kubernetes advice I believe in and repeat constantly: don’t guess resource limits. Ship the behavioural change, watch the real baseline in metrics f...

2026-08-19

When 353 "Speeding" Events Were Actually a Parked Bus

I built a speed camera for the street outside my house, mostly out of curiosity about how bad the speeding actually was. It uses a Raspberry Pi, a wide-angle camera, a...

2026-08-10

Postgres Won't Auto-Upgrade, and Your GitOps Bot Will Happily Break It Trying

I run a handful of self-hosted apps at home on top of a small Kubernetes cluster, managed the boring, correct way: a dependency bot watches container image tags across...

2026-08-01

The Silent Killer of Cron Jobs: stdout vs stderr

I set up a small scheduled job in my home lab to keep an eye on outdated container images and post a summary somewhere I’d actually see it. The scanning tool runs, pro...

2026-07-24

Your Dashboard Is Lying to You — The Case of the Ghost Config Flag

A small site I run had a contact form that quietly stopped working. Not “returns an error” — worse. It just 404’d, silently, with nothing in the platform’s own dashboa...

2026-07-15

Two Things Writing the Same DNS Record Will Always Fight

I run a small home lab behind a dynamic residential IP, so a handful of subdomains — the ones I use for remote access to stuff at home — depend on a dynamic DNS update...