Insights
Technical & Industry Writing
Opinions and analysis on cloud architecture, platform engineering, migration strategy, AI in DevOps, and leading engineering teams.
Ethan Hunt Would Blow Your Error Budget
Movies need a protagonist who goes dark, works alone, and saves the world with one second left on the clock. Incident management needs the exact opposite. Here's what the silence between first responders and stakeholders actually costs.
The Best Retention Metric Is Who Follows You and Who Outgrows You
Conventional retention metrics measure who stayed. The more honest measure is who joined your next program voluntarily, and who left because they grew into something bigger than you could offer. Both are good outcomes.
`count` Is a Production Outage Waiting for a Deletion
Terraform's `count` assigns resources by index. Delete the middle item and the indices shift — Terraform destroys and recreates everything after it. On subnets, node pools, or persistent volumes, that's not a warning. It's an incident.
Default-Deny Starts in Observe Mode
Kubernetes NetworkPolicy default-deny is the right posture — but enforcing it cold in production breaks applications and creates an incident. The right approach: observe first, map actual traffic, enforce progressively. Same staged approach as a migration.
Disk Full at 10am: Logs Are an Architecture Decision
Log storage is treated as an afterthought — set a retention, set a volume, deploy. It becomes an architecture decision when the disk fills and the logging agent takes down something else. Logs need their own failure modes designed in.
Estimates Are Architecture: Writing SOWs That Leave No Loose Threads
A Statement of Work is architecture for delivery. The same failure modes apply: if a dependency is undocumented in the SOW, it will bite you at the worst moment. The discipline is to write the SOW as if the project has already gone wrong.
The First Production Cutover Should Be Embarrassingly Small
The first cutover on a migration is almost never the last. The value is not the traffic shifted — it's proving the machinery works under real conditions before you need it at scale. Make it comically small on purpose.
I Built QuotaLens Because a Quota You Can't See Is a Quota You'll Hit
Claude Pro and Max meter usage in five-hour session windows, with a weekly limit on top. The in-app view shows a snapshot. No history, no burn rate, no forecast. I kept running into the end of the window mid-session with no record of how I got there. So I built the tool that keeps the record.
Quota Is a Dependency: Planning for a Cloud Capacity Crunch Mid-Migration
Cloud quota — CPUs, IPs, load balancers, API limits — is an invisible dependency in every migration plan. Teams discover it at the worst moment: mid-cutover, rollback window closing. It belongs in the dependency map before day one.
Replace an Alerting System the Way You Migrate a Service
You wouldn't cut a production service over in one shot. Alerting deserves the same discipline: shadow the new system, prove coverage, retire rules incrementally. Silence isn't proof the new system is working.
The Safe-Use Rules I Wrote for AI in a DevOps Team
When AI coding assistants arrived in the practice I was leading, the question wasn't whether to use them — it was how to use them without creating a new class of production risk. These are the rules we landed on.
What 100+ Interviews Taught Me About Hiring Platform Engineers
After more than a hundred technical interviews for platform and DevOps roles, the patterns are consistent. The strongest candidates don't demonstrate depth in every tool — they demonstrate how they think across boundaries.
Write the Rationale, Not the Runbook
Engineers write runbooks. AI tools can execute runbooks. What neither can generate from scratch is the rationale — why this architecture, what constraint drove a decision, what was tried and failed. That context is what makes the output trustworthy.
Debugging Across Layers Is the Platform Skill Nobody Hires For
Job descriptions list Kubernetes, Linux, networking, storage and virtualization as separate skills. The fault you get paged for lives in the seams between them. Here's how I work a problem that crosses layers, and why I think that's the skill to hire for.
Map What Exists Before You Draw What Should
Every migration and modernisation programme I've run started with a target architecture someone had already drawn. The ones that worked threw it away after discovery. Here's why the dependency map is the real architecture artefact, and how I build one.
Migration and Improvement Can Share a Window, Not a Change
Every migration customer eventually says it: if we're taking downtime anyway, let's fix a few things while we're in there. I say no every time. You can share the window and the error budget. You cannot share the change.
You Don't Own a Kubernetes Platform Until You Own the Layer Beneath It
Running self-managed Talos Kubernetes on Nutanix, with no cloud provider under it, changed how I design platforms on managed clouds too. Here's what the layer beneath teaches you.
Idle Capacity Is the Most Expensive Thing on Your Platform
I built my first capacity tooling in 2015, bursting HPC jobs to the cloud when the on-prem queue backed up. A decade later, on much bigger fleets, the lesson is unchanged: idle capacity and queue wait are the same number seen from two sides, and both should be on the dashboard next to latency.
Give the Agent the Keyboard, Keep the Approval
I've rolled out AI tooling across a delivery team and I'm building an agentic workflow that drafts Terraform and opens pull requests. The rule that's held up: agents may author, humans must approve, and the review bar doesn't move.
Compliance Is a Design Input, Not a Review Gate
I've designed HIPAA-scoped platforms, led an ISO audit to completion, and run a security remediation programme on a trading platform. The pattern that holds: if compliance shows up as a review at the end, you've already lost the argument with the auditor.
Ten Years of Designing on Other People's Constraints
Consulting means you never get the greenfield you'd draw on a whiteboard. Fixed windows, shared databases, no managed control plane, a team that has to run it after you leave. I've come to think the constraint is the design.
Onboarding 100 Apps Onto One Pipeline Is a Governance Problem
The CI/CD part took weeks. Getting a hundred application teams to accept one standard, with image governance and deployment controls they couldn't opt out of, took the rest of the engagement. That's the actual work.
A Noisy Pager Gets Worse With an LLM on Top
AI-assisted incident response is arriving fast. It inherits whatever alert quality you already have. Fix the paging first, automate the deterministic responses second, and only then let a model near the triage.
Reliability You Can't Rehearse Isn't Reliability
Ten years, every migration I've led, zero unplanned downtime. The reason is boring: every risky change had a rollback we'd actually run, and a set of controls that made the safe path the easy path.
Cloud Abstraction Layers Fail When They Hide the Wrong Things
I've moved workloads between AliCloud, AWS, Azure, GCP, and bare metal. Every abstraction layer I've met made the same mistake: it hid the cloud primitives and exposed the workflow, when it should have done the opposite.
BYOC Is a Landing-Zone Problem Wearing a Product Hat
Bring-your-own-cloud deployments look like a product feature. Underneath, they're the same landing-zone discipline I've built for migrations for years: account structure, identity, network boundaries, and a Terraform model you can run in someone else's tenant.
The Operating Model Is the Product
I've built landing zones in weeks. The programmes that stalled afterwards didn't stall on the cloud. They stalled because no one had decided who owns what, who approves what, and where the evidence lives.
Zero Downtime Is a Constraint, Not a Goal
Most teams treat zero downtime as something to aim for. After leading migrations at 4.5M req/sec, I've come to see it differently — it's a design constraint that shapes every architectural decision from day one.
Cloud Migrations Are Org Problems First
I've led migrations at companies ranging from 50-person startups to platforms processing millions of requests per second. The technical challenges were rarely what threatened delivery. It was always something else.