I Love Vim

I have used Vim for a number of years now.  I love its simplicity.  I love its flexibility. I love that it is cross-platform.  While its controls can be somewhat complicated, I love that you can just do so much with it.

It was only once I started configuring the .vimrc file that I really started to appreciate everything that it could do.  Integrating select plugins can really make a difference to how it works and how you will use it.

My primary platform is OS X.  I run iTerm with ZSH, Tmux and Vim to edit 90% of my files.  As a developer, flexibility and speed are important.  Being able to do something in 2 keystrokes, as opposed to 4 keystrokes, mouse movements and another 3 keystrokes really cut down the time tasks take to do.

I have a friend.  I’ll call him Glen… because that is his name. He absolutely detests Vim.  In fact, it appears to make him slightly nauseous.  But, I am certain that if he took a little time to investigate how to make it work for him, then even he would fall in love with Vim because of how it could improve his workflow.

I doubt there are two people who would have the exact same use-case for Vim, but this is where it scores over many other editors.  You can configure it to do what you want, and not what the editors developers want you to do.

Sure, it’s not as easy to configure as ticking a box in a GUI, but it’s not that difficult either.  Having been around for so long, there are many examples available.

Don’t get me wrong, I’m not an expert by any means, and I am still learning.  I do forget keystrokes sometimes, but for the things I do all the time, it has become almost subconscious.

Try it, you might just like it… and that means you too, Glen!

Back to Go

It’s been a while since I played around with Go, but I have decided that I have the need for a command line tool, and thought that Go would be the best tool for the job. It’s going to be a command line tool for interfacing and managing a GitHub Enterprise instance.

As a developer, I became fond of using TDD for development. I have previously done this in Java, having spent so many years developing in Java. I was comfortable with Java, but it’s not really suitable for creating a command line tool. I’m always for developing new skills and having moved to DevOps for the past 2 years, I’m still keen to keep my software engineering skills sharp.

Go has many useful libraries that can really help with the development of a professional feeling command line application, and will help to cut down a lot of the boilerplate development. I have found the following libraries that I will be investigating for this project.


A highly configurable command line parsing library that allows me to configure the commands that I want my tool to have.


Pairs nicely with Cobra and allow for configuration through a config file to specify defaults or custom values to configure your tool.


A wrapper for the GitHub API which will allow me to make calls and handle the responses from the GitHub instance.


I am still investigating libraries for Testing and Logging.  There are many options, but I need to check out more of these to find out the ones that work for me.

I will post progress and any details that I find interesting… stay tuned

Configuring a Kubernetes Cluster

So I am having another look at Kubernetes.  I used it a few years ago but switched to using Docker Swarm.  I like Docker Swarm;  I like the simplicity, I like the familiarity.  But the industry is predominantly using Kubernetes, and a lot has changed since I last used it.  I am going to document here how I go about re-familiarising myself with Kubernetes.

I am using an Apple MacBook Pro todo the majority of the work and as my development machine.  It is quite easy to get Kubernetes running on a Mac by installing minikube and kubectl. Ensure that Docker is installed. I installed it from the Docker web site here. This is very simple with Homebrew. Just run the following commands:

brew install kubectl
brew cask install minikube

You will also need to install a virtualisation technology to use this. VirtualBox is probably the easiest to install. Follow instructions on their site here. Once everything was installed, I validated that all is installed fine with the following commands:

kubectl version --output=yaml
minikube version

Then, to start a local Kubernetes cluster, run the following command:

minikube start --vm-driver=virtualbox

running minikube status responds with:

minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at

From this, I know that everything is up and running as expected.

I can now launch the dashboard using minikube dashboard. This will launch the dashboard in your default browser.