Blog

Here is a collection of articles that I have written about software development, software testing, DevOps, and developer education.

While I've been writing tests for my PHP code for years, I'm still learning. One of my recent learnings was understanding the difference between mocks and stubs - and when to use each one. In this article, I'm going to share that difference and why it's important.

Recently, I rebuilt this website from scratch using PHP's Mezzio framework, moving away from static site generators that I've used for years. Here's why I did it and what I learned in the process.

Introducing Resterm

November 6, 2025

Today, I learned about Resterm, a TUI (Terminal User Interface) app for making for HTTP (and GraphQL and gRPC) requests, plus so much more. After only a pretty short time, I’m really taken by it, and want to show you what it is and the basics of how it works.

Recently, as I’ve been rebuilding my website, I had to create a redirect setup as the old and new blog structure was different. Here'show I did it, using Apache 2's mod_rewrite extension.

While I find Git Tower to be a very professional and polished GUI for Git, viewing staged changes, when only some changes have been staged, to me, is pretty unintuitive. In this short post, I’ll step through what I mean, how it works in other git guis, and how it’s pretty trivial on the command line.

After around 20 years as a web-based software engineer, I’ve decided to invest in learning as much as I can about website accessibility. In this short post, I want to share why, and why it might be worthwhile for you as well.

TDD is something that I strongly recommend, but it’s not without its drawbacks. In this post, I discuss the one that I get caught out by the most – testing the wrong thing.

If you're having trouble getting PHP's Memcached extension working in a Docker container, this tutorial will show you how.

Docker Secrets are a good way to start storing sensitive data that your PHP apps need in an organised and structured way. You don’t need to use environment variables, and you continue avoiding them being stored in code. In this tutorial, I’ll show you how to use them, and consider some of their pros and cons.

So. Magic Numbers.