Ben Selby profile picture

Ben Selby

Software Engineer

Open Source, Process, Technical Leadership, Automation, People

Love building distributed teams, writing in Go, building CLI dev tools, engaging with other engineering teams, and learning new things


Mongo shell commands to get you through the day

May 1, 2022 · 6 min read

I recently started a new job. The data store is MongoDB, which I have barely used before. This post aims to document what I’ve learnt to get me through the day. Please feel free to tweet me if there are discrepancies. The first thing that I became aware of, is that there are/were two cli tools: The legacy mongo shell, which was deprecated in MongoDB v5.0. The new, and active, mongosh shell, which replaced mongo.

Read more ›

Define a contract between autonomous teams

Mar 1, 2022 · 6 min read

So you have a bunch of autonomous engineering teams that are allowed to work in their own way. Fantastic. However, maybe you want to provide centralised support or build tooling that exposes things in a certain way. For example, maybe you want to build a department wide Open API documentation site for engineering teams and partners. You don’t want to enforce anything on the teams, such as making them all create specific folders in their repo.

Read more ›

Multi-cursor support in Obsidian

Feb 3, 2022 · 2 min read

This post brings together two of my favourite things: Note taking, and multiple cursors. I remember the first time an engineer introduced me to Sublime Text. The main thing he would bang on about was multiple cursors. I was very quickly sold. It’s pure magic and speeds up so many things. I instantly switched from Eclipse PDT to Sublime Text. I’ve always liked writing notes, but always struggled with various tools.

Read more ›

The last few years

Jan 10, 2022 · 14 min read

It’s nice to reflect on what you’ve achieved over a certain period of time. I switched roles within the same business in 2018. I went from managing and coding in a software engineering team I built from scratch, to an Individual Contributor role in a few other engineering teams. This post aims to show at a high level what I’ve been working on during this time. It’s just about in chronological order (from memory!

Read more ›

Books 2022

Jan 3, 2022 · 2 min read

Reading is good for you. It keeps the mind occupied. In 2019, I made a real effort to read as much as I could, and it was a good year. Certainly better than 2020, and 2021 at least. So this year, my aim is to read 20 books, which is 10 more than in 2019, and about 20 more than last year! I’ll keep this post up to date throughout the year.

Read more ›

Use Docker Context to switch between different solutions

Nov 15, 2021 · 4 min read

You may be on the lookout for a replacement to Docker Desktop at the moment. If you are, you may be wanting to trial the different solutions. You’re going to need to know what is involved, and what the different cost models include. This post is going to show you how you can use docker context to run the different systems in parallel. The two solutions this post will cover are minikube and multipass.

Read more ›

Setting up a VS Code Dev Container - minikube

Oct 13, 2021 · 3 min read

This post builds on what we already learnt in Setting up a VS Code Dev Container. It’s more specific goal is to discuss running Dev Containers whilst using minikube as a Docker Desktop replacement on the Mac. There is lots of chatter about the new license for Docker Desktop. The license changes impacts the business I work for. I wanted to know what our options were. Getting minikube as a drop in replacement for Docker Desktop on the Mac, was relatively straight forward.

Read more ›

Getting started with Jenkins: Language Agent

Apr 24, 2021 · 5 min read

This post follows on from the Jenkins series: Getting started with Jenkins Getting started with Jenkins: Agents This post is going to get you running a language specific Jenkins Agent. In the example we are going to follow, we will setup a Jenkins Agent running Go. This means you will be able to run Go builds within your local Jenkins instance. This method can then be extrapolated to other languages.

Read more ›

Using Terratest to test your infrastructure

Apr 18, 2021 · 7 min read

This post is going to get you started with using Terratest to help test your infrastructure changes. Terratest describes itself as: A Go library that provides patterns and helper functions for testing infrastructure, with 1st-class support for Terraform, Packer, Docker, Kubernetes, AWS, GCP, and more. Now that infrastructure is becoming code and configuration, we want to write tests that check that our infrastructure code works as intended. This is where Terratest can help.

Read more ›

Technical Roadmaps and Dev Sustainability

Apr 14, 2021 · 6 min read

At a high level, most engineers are working on product backlogs, in some way, shape, or form. What happens if that product backlog dries up? Or, as a manager or leader, you need to fill a period of uncertainty? This post is going to take you on my journey over the years, and put forward a solution that can be applied to small projects, large projects, and even at an organisational unit level.

Read more ›
More ...