Engineering


Mar. 28, 2026

Has DevOps Outgrown Being a Job Title?

Devops

Ask ten companies what a “DevOps Engineer” does and you’ll get ten different answers. In some places it means writing Terraform. In others it’s owning CI/CD pipelines, or managing Kubernetes clusters, or being the person developers throw tickets at when something doesn’t deploy. The title has become a catch-all — and in becoming everything, it’s started to mean nothing.

I’ve held variations of this title. I don’t use it to describe myself anymore.

Mar. 22, 2026

Hugo's Image Processing Pipeline — Worth It?

Hugo image processing

While building out this site I looked at switching the post images over to Hugo’s built-in image processing pipeline. Here’s what that means, what the trade-offs are, and why we kept things simple.


What Is the Image Pipeline?

Hugo has an extended build mode that can process images at build time. Instead of serving images as dumb static files, Hugo can:

  • Resize them to specific dimensions
  • Compress them at a given quality level
  • Convert them to modern formats like WebP
  • Generate multiple sizes for responsive srcset attributes

The result is that a 6MB iPhone photo becomes a 150KB WebP for mobile and a 300KB JPEG fallback for older browsers — automatically, every build.

Mar. 14, 2026

Docker in Docker with GitLab CI

GitLab

If you’ve worked with GitLab CI for any length of time you’ve probably needed to build a Docker image as part of a pipeline. The go-to solution is Docker-in-Docker (DinD) — running Docker inside a Docker container so your CI job can build and push images. It works, but it comes with enough quirks that it’s worth understanding what’s actually happening under the hood before you commit to it.


What is Docker-in-Docker?

Normally, a GitLab CI job runs inside a container. That container has no Docker daemon — it’s just an isolated environment for running your build steps. If you want to run docker build inside that container, you need a Docker daemon to talk to.

Mar. 14, 2026

Getting Started with Terraform

Terraform is an Infrastructure as Code (IaC) tool by HashiCorp that lets you define and provision infrastructure using a declarative configuration language called HCL (HashiCorp Configuration Language). Rather than clicking through a cloud console or writing imperative scripts, you describe the end state you want and Terraform figures out how to get there.

Why Terraform?

  • Cloud-agnostic — Works with AWS, GCP, Azure, and hundreds of providers including Cloudflare, GitHub, and Datadog
  • State management — Tracks what’s actually deployed via a state file, so it knows what needs to change
  • Plan before apply — Preview exactly what will be created, modified, or destroyed before anything happens
  • Declarative — You describe what you want, not how to create it
  • Idempotent — Running the same configuration multiple times produces the same result

Installing Terraform

On macOS with Homebrew:

Mar. 14, 2026

Hosting This Site on Cloudflare Pages for Free

Cloudflare

Will It Cost Anything?

For a personal Hugo blog — no. Cloudflare Pages has a genuinely free tier that covers everything this site needs:

WhatFree allowance
BandwidthUnlimited
Static asset requestsUnlimited
Custom domainsUp to 100
Builds per month500
Max files per deploy20,000
Max file size25 MB

No credit card required. A Hugo blog typically deploys in under a minute and produces a few hundred files at most. You’d have to be doing something unusual to hit any of those limits.

Feb. 15, 2026

From Datacentres to Cloud: How Computing Changed Through My Career

A modern data centre

When I started my career, infrastructure was something you could touch. Servers sat in racks. Cables ran between switches. If something went wrong, you walked to the datacentre, physically seated a card, checked a link light. The work was concrete in a way that’s hard to explain to engineers who started their careers writing Terraform.

That world is largely gone now — or at least it’s hidden behind layers of abstraction. But I think starting there gave me something that’s quietly useful: an understanding of how computing actually works, from the bottom up.