...

Subscribe To My Newsletter

A couple times a year, I publish a newsletter with a post or two I really enjoyed writing as well as a Scott Hanselman-style list of things that made me smile! If that interests you, subscribe below :)

Subscribe Here

Psychological Safety and the Only Pyramid Scheme That Works

A lot of my job is about safety. Safety prevents errors from happening but, more importantly, when people feel safe, things become safer. It’s a strange phenomenon that I’ve seen time and time again where if you lay out processes and tools that make things like software deployments safer, the effects continue to compound long after the change has happened.

read more

Snippet: Benefits of Leastconn Loadbalancing

Most of the time, randomly balancing requests across hosts is good enough. Every so often though, there is an edge case which benefits from another method of choosing a host. For example, the following graph shows the request latency of hosts that handle requests that were not all born equal. Requests happened on a recurring period so a longer request had a tendency to end up on the same host again and again, eventually compounding to increase request latency and slow down other requests that reached that host.

read more

Customer Communication During Incidents The How to of Status Page Updates

Something often overlooked during an incident is how we communicate with our customers and reassure them of the situation. How you convey an incident to the people paying for your service can make all the difference when it comes to contract renewal period. At a past company, our sales team regularly reported back from client meetings that they consistently mentioned how helpful and reassuring status page updates from the SRE team were, even when our service was fully down.

read more

How to Move From Dublin to Berlin

In October 2019, I moved from Dublin to Berlin. As a Worrier In Residence employed at the Life Of Evan, I planned a lot around the move, the new culture, the new city and all the wonderful things that come with a new adventure. In doing that, I found a common theme: All the resources about moving to Germany are written either vaguely for Americans or ultra-specifically for The English and finding resources for Irish Emigration to Germany was nigh impossible.

read more

Building Someone You’d Want To Have A Beer With

As Operations Engineers, we often overlook the user experience of tooling in favour of functionality. CLIs end up with vast sprawling seas of flags and nested commands requiring a minotaur to traverse. Now, I believe that ChatOps is the best path to giving independence and control to everyone in the company. This post is going to talk about why we rebuilt our ChatOps from scratch and what I learned along the way about UX, people and myself.

read more

Capacity Planning in Four Parts: Telling the Future without a Crystal Ball

This blog post is based on a talk I gave at SREcon18 EMEA. If you’d like to see the slides or watch the talk, click here to view the usenix website. Let’s start with a radical concept: you’ve already got 50% of the work done to start capacity planning. A lot of what SRE teams do already feeds directly into understanding and forecasting capacity.

read more

NIC Driver Facts for puppet

Recently there was an issue with particular dedicated hosts having network issues due to high traffic triggering a known bug in particular RealTek NICs. Unfortunately puppet doesn’t expose facts about the networking equipment of a server so I wrote the below to expose the NIC drivers in use, their firmware version and which interfaces use them.

read more

Tidying up puppet reports

A lot of puppet configurations recommend using puppet’s tidy directive to manage puppet reports. The problem with this though is that in order to delete the file, puppet will create a file directive in state.yaml. The state file grows pretty quickly then because of this and I’ve experienced it slowing down puppetruns after a certain point.

read more

Timed Product Categories (Woocommerce / WordPress)

A client recently asked to be able to put time-sensitive “flags” (badges) on products for showcasing that products were “new”, “web-only” or “exclusive” to them. These flags would only exist for particular periods as products wouldn’t be new or exclusive forever. As a solution, I used Advanced Custom Fields to create a section on product pages to add flags that had 6 fields:

read more

GoLang – Unit Testing Third-Party APIs

In my final year of college, I got swept up in creating Twitter bots and tools. As a result, I created several different projects in Go but the go-twitter package hadn’t been updated in over a year and was missing the majority of API functionality. At first, I submitted pull requests to the original library but received sparse answers and a never-ending list of semantic changes (despite passing the Continuous Integration tests).

read more

Hot-swapping a Go program

Sometimes, running an always-on program is important and there a lot of moving parts to move around in order to stop and restart a program. Recently, I’ve been helping UCC Netsoc develop a Discord Bot written in Go to help their committee and their members as well as provide a clean avenue for people to seek help and technical support from their Systems Administrators.

read more