Logging & Metrics: It’s a Journey

Understanding the way applications behave is critical to ensuring they are effective. For much of my career, application logs have been the dominant tool of choice for system observability and with good reason: Logs are present in most vendor applications and are easy to add during custom development. Logs (or print statements) are often the tool of choice for debugging during application development. But if logs are all powerful, how did metrics become so popular. In this first of a series of posts, I look back of my experiences with logging.

Conveying Context at the Terminal

I’ve run a few workshops recently that have involved streaming live terminal sessions to remote participants. During these workshops, we explore how different personas interact with Kubernetes. As we work through the topics, we switch between various personas. The terminal provides few visual clues as to the active persona. We can fix that.

Go on ARM: why struct field alignment matters

I’d assumed the Go compiler provided a robust abstraction across CPU architectures. Code that ran on one CPU architecture would run on another. It turns out I was wrong. In this post, I provide a minimal example application that demonstrates the importance of field alignment when using sync/atomic and 64-bit values.

How I Manage Kubernetes Config

If you work with Kubernetes, you’ll be aware of the config file that defines contexts. This config is what kubectl uses to gain access to a cluster. I work with a large number of ephemeral clusters and have found that this config is difficult to manage. This post shows how I’ve switched to using individual config files for each cluster.

Your Path to Production

So you’ve done the Kubernetes thing, you have micro-services, and use all the frameworks. You’ve rolled out one or more continuous thing doers and have more metrics than you know how to dashboard. Despite all this, you are struggling to release products as fast as the business would like. It might be time to explore your path to production.

Keep Your Tech Discussions on Track with Fish Bones

As a child, I had a nasty experience involving pizza, anchovies and a small fish bone. I’ve never touched anchovies since and it has taken me a long time to get used to the idea of eating fish at all. But that’s not what I’m here to write about. I’m here to share a different experience of fish bones, the fishbone diagram.

The importance of Health Probes

To capitalise on modern platform capabilities, applications need to be platform aware. They need to be cloud native. An oft overlooked example is health probes. Without these endpoints, platforms can only make crude assessments of applicat

Privacy Conscious Web Logs

Anyone looking for statistics on their blog will find themselves pushed towards the big names in web analytics. In return for statistics, you are encouraged, if not required, to gather more information about your readers than strictly necessary. Even if you gather statistics from your server logs, you are almost certainly logging unnecessary information about visitors. It doesn’t have to be this way.

Chinese Practice Sheets

I’ve been looking to start practising my Chinese more deliberately than I have been, particularly my character recognition. I couldn’t find any character practice sheets that I liked and so I made a couple of my own.

Dive Through the Layers

I’ve been working with a container image for a Django application and was surprised to find that an image for a simple application was 1.2 GB. I wanted to understand how this storage was being used and came across Dive, a tool for navigating container layers.