# 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.

Infrastructure as Code passing
21 Sept 2026

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.

TerraformSite24x7OAuthMonitoring
8 min read
Platform Engineering passing
20 Sept 2026

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.

MonitoringCloudWatchAWSObservability
8 min read
CI/CD passing
19 Sept 2026

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.

CI/CDGitLabAWSIAM
6 min read
CI/CD passing
18 Sept 2026

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.

CI/CDAWSGitHub ActionsServerless
5 min read
Kubernetes passing
16 Sept 2026

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.

KubernetesNetworkingIncident Response
6 min read
Kubernetes passing
12 Aug 2026

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.

KubernetesCI/CDReliability
6 min read
Platform Engineering passing
1 Jul 2026

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.

Platform EngineeringGovernanceSovereign Cloud
7 min read
Infrastructure as Code passing
20 May 2026

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.

TerraformIaCAWSGCP
5 min read
Kubernetes passing
8 Apr 2026

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.

KubernetesObservabilityTooling
4 min read
Team passing
3 Mar 2026

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.

Team LeadershipOn-CallPeople
7 min read
Cloud Foundry passing
14 Feb 2026

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.

Cloud FoundryNetworkingKubernetes
5 min read
Cloud Foundry passing
5 Jan 2026

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.

Cloud FoundryKubernetesPlatform Engineering
5 min read
Kubernetes passing
24 Nov 2025

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.

KubernetesIncident ResponseReliability
7 min read
CI/CD passing
30 Aug 2025

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.

CI/CDPlatform EngineeringAutomation
4 min read
CI/CD passing
17 Jun 2025

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.

CI/CDConcourseGit
5 min read