# tail -f blog.log
The Blog
Field notes on platform engineering, Kubernetes, Cloud Foundry and CI/CD: real incidents, generalised and stripped of anything landscape-specific.
Uptime Monitoring as Code: Site24x7, Terraform, and Zoho's OAuth
An external uptime check, defined in Terraform, on a free plan. It took a data-center mix-up, a trial-versus-free-plan question nobody documents, and a provider whose defaults pointed at Asia Pacific. The journey, the Terraform, and the Zoho OAuth flow underneath it.
Watching It: Golden Signals, a Region Quirk, and Logs on a Timer
Part three of the CI/CD series: once the pipeline could be trusted to ship, the next question was whether the site itself could be trusted to say so. Golden signals on a static site, why two alarms had to live in us-east-1, an uptime check from outside AWS, and why every log here expires in three days.
Building the Pipeline: GitLab, Two Jobs, Zero Dollars
The follow-up to the CI/CD decision post, covering what actually got built: why GitLab won, how the pipeline is wired, what it costs, and the security choices that turned out to matter more than the vendor pick.
Cheap CI/CD: What 'Free' Actually Means
A side project with a genuine $0 budget forces a question most teams never ask: does this pipeline need a server at all? Real free-tier numbers, one real OIDC failure, and the one question that actually predicts the bill.
The NetworkPolicy Drop That Looked Like Three Different Bugs
A missing egress port, a flawed debug test, and a live patch that kept silently reverting: how one dropped Kafka connection sent an investigation down three wrong paths first.
Zero-Downtime Kubernetes Deploys: The Checklist I Actually Use
Rolling updates, readiness probes, PodDisruptionBudgets and the CI/CD gates that turn 'it should be fine' into a guarantee.
Governing a Sovereign Cloud Platform Without Slowing Teams Down
Notes from building an operational delivery function for a regulated, national-infrastructure cloud platform, where governance has to be an enabler, not a gate.
Terraform at Scale: From One Landing Zone to Twenty Teams
What actually breaks when Terraform grows from a single account to a shared platform: state, modules, and the boring conventions that save you.
Why 'No Errors Found' Can Mean Your Tooling Couldn't Check
A short-lived cluster credential expired mid-investigation and quietly turned every log sweep into a false all-clear. The failure mode that should worry you most is the one that looks like success.
Leading a Platform Team Is Mostly a People Problem
Eight engineers, one 24/7 production platform, and a constant stream of requests that are rarely just technical. Notes on rotas, upskilling and the parts of the job nobody puts in the job description.
When the Backend Recovers but the App Still Can't Reach It
A message broker's HA failover completed cleanly in three minutes. Client apps kept failing for fifteen more. The gap between those two numbers is where the real bug was hiding.
The Leader Election That Was Looking for a Sidecar That Wasn't There
A Cloud Foundry app kept failing to connect to localhost:80 for something it never should have been talking to localhost about. It had brought a Kubernetes assumption with it that didn't survive the move.
Anatomy of a Cluster-Wide Outage: When One Component's Bad Luck Breaks Every Node
A CNI sync component lost both replicas to a run of bad scheduling luck, and for about an hour, no node in the cluster could route Service traffic, including nodes that never stopped reporting healthy.
Two Boring Pipeline Bugs That Teach a Bigger Lesson
A blank config default that silently meant 'no image pinned,' and a deploy stage for a component that no longer existed. Neither is exciting. Both should have been impossible.
The Pipeline That Didn't Fail, It Just Waited Forever
A submodule clone inside a CI task hit a credential prompt no human would ever see, and instead of failing, it just sat there. A hang is a worse failure mode than an error, and it's usually self-inflicted.
no posts under this label yet