Logging mid pipe in Powershell

I've been writing a lot of powershell recently and I really like the functional aspect of piping: $Websites | Stop-Website -Passthru | Remove-Website As it's a lot easier to read than constantly using foreach to iterate through collections. The Stop-Website cmdlet will stop the website and pass on an object that the…

Read this article

Fighting the Urge to Block your Delivery

I'm by no means the first person to talk about this problem within our industry. But in the past year I've seen it happen more and more. Imagine this scenario, A company is working on releasing some software, and upon release the user finds a bug. The manager comes back…

Read this article

Learning Ops Tooling, Part Four - Pulling and running the blog

Learning Ops Tooling, Part One - Vagrant Learning Ops Tooling, Part Two - Starting with Ansible Learning Ops Tooling, Part Three - More Ansible Learning Ops Tooling, Part Four - Pulling and running the blog Last time we looked at using Ansible to install the dependencies for the ghost blog…

Read this article

Destroying all your Vagrant Boxes

TLDR; for vb in `vagrant global-status | grep virtualbox | awk '{ print $1 }'` ; do vagrant destroy $vb ; done I've been playing around with Vagrant a lot recently and in doing so I've ended up with lots of unused vagrant boxes on my machine. I could go and delete them all…

Read this article

Learning Ops Tooling, Part Three - More Ansible

Learning Ops Tooling, Part One - Vagrant Learning Ops Tooling, Part Two - Starting with Ansible Learning Ops Tooling, Part Three - More Ansible Learning Ops Tooling, Part Four - Pulling and running the blog In the last part we looked at setting up an Ansible inventory file and running…

Read this article

Learning Ops Tooling, Part Two - Starting with Ansible

Learning Ops Tooling, Part One - Vagrant Learning Ops Tooling, Part Two - Starting with Ansible Learning Ops Tooling, Part Three - More Ansible Learning Ops Tooling, Part Four - Pulling and running the blog In my last post I talked about setting up a Vagrant script to create a…

Read this article

Learning Ops Tooling, Part One - Vagrant

Learning Ops Tooling, Part One - Vagrant Learning Ops Tooling, Part Two - Starting with Ansible Learning Ops Tooling, Part Three - More Ansible Learning Ops Tooling, Part Four - Pulling and running the blog I've been wanting to explore the world of "infrastructure as code", or IaC,…

Read this article

Command Handlers

The command pattern is one of the patterns defined in the gang of four's behavioural patterns but I rarely see it get much use. The idea behind the pattern is to encapsulate all of the information required to execute an action within a single object or class: public interface ICommand…

Read this article

Escaping the Big Ball of Mud Talk

Earlier this year I was invited to give a talk at NDC Oslo. My chosen subject was the "the big ball of mud" where I go into a number of ideas and patterns to help keep your code base clean and free for extension. Here it is Escaping…

Read this article

DevDay Omnisharp Talk

Here's the recording of my session about Omnisharp that I gave at DevDay in Poland. The audience were great and I can honestly say it is one of the best conferences I've been to. So thanks to Rafał and Michał for having me.…

Read this article