Terraform is a very useful tool for managing infrastructure as code (IaC), it allows us to easily define our desired state via a common language (HCL or JSON), then using the Terraform engine, parse this desired state compare it to actual state and make the necessary updates our environment(s). It is obvious that the biggest benefit of Terraform is this delta based approach whereby we only ever update/create/destroy the minimum amount of things necessary and keep our environment consistent.

But what happens when Terraform doesn’t work quite the way you expect it to? Just why does Terraform sometimes cause your…


I guess you could say I have been a software engineer for some 30+ years now. I started out writing my very first program at the age of 4 or 5 on a Commodore 64. It was a super simple program/game to help me practice maths problems, but I was totally hooked!

Roll the clock forward to 2012, after many years of education and professional software engineering roles under my belt, I decided to throw myself into the lions den and chased my dream job at Microsoft as an SDE. Microsoft is one of those companies that truly embodies the…


Welcome dear readers, hopefully this blog post finds you well, and not as I was… ripping my hair out trying to get an ACI running within a VNet on Azure. I am sure most of you have probably seen the Azure docs about how to get this setup, am sure some of your have likely read the Terraform docs too and still been a bit confused.

Well fear not dear reader, I want to try and relieve any pain points here with my quick and simple guide.

First off if you haven’t read the official docs, I would recommend that…


As Software Engineers, we all know that Continuous Integration and Continuous Delivery (CI/CD) are things that we should strive to achieve in the systems we build. There is nothing worse than having something we build sit locked away in Git, rotting, unable to see the light of day/production because our team have an archaic release process. Or even worse, when companies do not trust their engineering teams to have automated deployments for fear of breaking production environments.

I recently worked on a large scale data ingestion project using the Azure cloud platform. Naturally Azure Data Factory V2 (ADF) became our…

For the last 15 years I have been working in software engineering. From large scale big tech, to public sector and smaller agile companies my time in this industry has given me great experience in working within teams of different sizes.

As the Agile methodology started to gain momentum around the early 2000s, it soon became apparent to me that it was the future of software development, and so I began to advocate its implementation to the teams I worked in. …


Ok, so we’ve all been there before, we join a new team, we clone the source code repository, we look at the… and then we see the huge list of prerequisites required just to compile the code and instantly we want to start crying…

A few months ago I started my voyage of discovery with Kubernetes; a very powerful DevOps platform/technology. As I began to dig more into how Kubernetes worked and how to best utilize it I started to see the term “Prometheus” being thrown around frequently on blogs. What is this “Prometheus”? Why all the hype about it?

In this blog post I want to give you a complete beginner guide to what Prometheus is, what it does and how to use it. I will not be digging into “How to install Prometheus” in this blog post. …

Last month I wrote an article about the struggles I experienced getting my head around the Operator Framework used to build custom state managing components in Kubernetes. In this post I’d like to take those concepts and findings further and go into a little more technical detail.

Please note: I am not intending to go into “How to write a custom operator” here, I will do that in a future blog post. This post is intended as a deeper dive into what operators are and how they work.

A Quick Recap

So first let’s cover some basic concepts I introduced in my previous…


Ok so I know this isn’t new tech (as such) but it is something that seems to be gathering a lot of momentum in the K8s space right now, and looking around when I first started, there wasn’t a lot of “low level” documentation out there.

After a lot of head scratching, reading, more head scratching, YouTube videos, even more head scratching… I finally had my lightbulb eureka moment when it all finally made sense to me. So I thought I’d write this blog article in an attempt to save people the pain I went through.

What is an Operator?

Right lets start at…

Timers in Java can be hard

A recent Java project I worked on presented a very interesting challenge to solve. We needed to poll a queue of messages on a regular cadence and then push those messages onto another upstream service. There were however some caveats, if we got the timings wrong we could potentially overwhelm our upstream dependencies, and in addition, if we didn’t poll often enough, we wouldn’t reach the expected throughput and our services performance would suffer.

Now it turns out that timers in Java can be quite hit and miss. There are a lot of different ways to do them, but each…


Software engineer & lover of all things code. Too much to learn and so little time. Currently working at Microsoft London.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store