Docker Compose provides a succinct way to define services that make up an application. However it doesn’t allow services to be marked as optional so everything is started by default. In this post I outline a use-case for optional service and show how I defined service dependencies to provide a solution.
The sidecar is a multi-container pattern used to provide additional functionality to a containerised-application without requiring changes to the application itself. The sidecar is the foundation of popular tools like the Istio service mesh. But how does it work? In this post, we'll learn more by implementing one from scratch.
There are two reasons I regularly use a VPN connection on my portable devices; to give myself some privacy when using untrusted networks and to get around network filtering or censorship when traveling abroad. I've recently settled on a new favourite, WireGuard. In this post I'll take you through how to get set-up with your very own WireGuard VPN.
Browser tools have come a long way in helping us debug the performance of web applications. They have been constrained by the fact that they can only display client-side performance metrics, leaving us to look elsewhere to gain an understanding of back-end performance. I recently came across the Server-Timing specification that allows developers to augment this with a limited set of server timing information.
Over the last couple of days I lost the ability to copy and paste from Vim using the macOS system clipboard. I hadn't knowingly changed my Vim configuration and the only major change I'd made recently was to upgrade to macOS Catalina. This post points outlines how I resolved the issue and points the finger squarely and Full Disk Access on Catalina.
Joining strings is so common that many of us take it for granted. While working through the exercises in ‘The Go Programming Language’ book as part of the London Study Group, I wanted to understand the differences between the various approaches for joining strings. This is what I found.
Last Wednesday I gave a talk at the London Gophers meet-up about life Beyond the Tour. This post includes the video and slides from the talk, but also looks at a couple of the doubts I had going in to the event. Were they justified?
Docker has had the ability to build multi-architecture images for a while. I’ve never had cause to use it, until now. In this post I’ll walk through building a docker image that should work on your laptop and a Raspberry Pi.
Google recently announced an update to App Engine that brings support for the Go 1.11 runtime. This release also enables the deployment of standard Go applications on App Engine. In this post, I show you how.
I noticed that the recursive implementation of an algorithm performed slightly worse than its inline equivalent. I didn't know whether I could attribute this overhead to the cost of the additional function calls needed in a recursive implementation. I set out to see if I could see behind the scenes of a Go function call.