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

Comparison: AWS CodePipeline, GitHub Actions, and Jenkins

May 14, 2020 · 10 min read This post has come about as I’ve written up this content in different formats multiple times, and it’s easier to write this up once, and just reference back. The tools this post is going to compare are: AWS CodePipeline (As I happen to be working in the AWS space at the moment) Jenkins GitHub Actions A couple of things to note: This post almost exclusively talks about AWS CodePipeline, but you will almost certainly require AWS CodeBuild too.

Burndown reporting

May 2, 2020 · 7 min read If you’re happy with the automated burndown reports from tools like Jira and Azure Devops, then this post is probably not for you (except maybe the CLI tools section). If you prefer to manually generate a burndown report, or use a tool that doesn’t have that feature built in, then read on. My first foray into the world of work management tools starting about 13 years ago, and my team used Trac.

Gollum Page Watcher GitHub Action

Mar 12, 2020 · 1 min read Finding out when code changes in your project is easy. Whether it is version control, build notifications, GitHub/GitLab notifications, there are many delivery mechanisms to notify you. But what about all that documentation you spend a lot of time on. Curating your system, tweaking guidelines, and examples. How do you get teams of engineers to know about changes? There isn’t that many options in this space. If you are a Slack user, and if you use GitHub as your documentation/wiki space, then the Gollum Page Watcher can help.

Logically atomic commits

Feb 23, 2020 · 4 min read When forming a new team (or joining a team for that matter), I always try to get the following item in our code review standards, or ways of working. Make sure all commits in version control are logically atomic. What is a logically atomic commit A logically atomic commit is the smallest, most meaningful change you can make to the software. It’s big enough to add value, but small enough to be manageable.

Hugo Deploy GitHub Action

Feb 15, 2020 · 1 min read I’ve just released version v1.2.1 of the Hugo Deploy to GitHub Pages GitHub Action. This means it now fully conforms to the metadata specification as defined here. I wrote this action back when GitHub Actions were still in beta, and there were very few actions out there. It turns out there are a plethora of GitHub Actions to now deploy a Hugo site to GitHub Pages, but where is the fun in using someone else’s?

Books 2019

Oct 5, 2019 · 3 min read One of my new years resolutions was to try and read 10 books this year. That may not sound a lot, but when you have a myriad of other things going on in your life, that’s a tall order. This is what I’ve managed to read. Books Dark Sacred Night Michael Connelly I’m a massive Connelly fan, I’ve read and kept all the Bosch novels he’s ever written. I’m not a hoarder at all, but this is the only series of books I’ve kept.

Joining a new engineering team

Jun 24, 2019 · 6 min read This post aims to cover off a simple checklist 📝 to work through when joining a new engineering team 👩🏾‍💻👨‍💻. Whilst this is aimed at senior or technical lead positions, these tips can help everyone. I’ve recently switched teams at work, and something dawned on me. Over the last 8 or so years I’ve generally built teams, and not really joined an existing team. So joining an existing team, with their own established ways of working, and existing decisions is something rather 👽 to me.

Design Authority

May 12, 2019 · 9 min read This post aims to cover off how to drive quality in your software products, by defining and using a “Design Authority”. It tries to call out what the problem is, and how you can use a self assessment to set the standard within your organisation, as to what is acceptable levels of quality within your product. There are many ways to assess software quality, be it using automation tools, top down assessments from a governance board, or peer reviewed assessments.


May 1, 2019 · 11 min read My aim with this blog is to document how I like to run my teams, and note the various things I’ve seen during my career. When meeting new people, there is a tendency to cover old ground (I’m skilled at this), which is useful in the sense you have a common understanding, but it can be time consuming. A few times recently I’ve wanted to provide substantial opinions, but the communication format doesn’t lend itself well to that style.

Running pa11y in Jenkins for accessibility testing

Apr 24, 2019 · 5 min read The best thing about being a software engineer is all the learning you can do. I’m now working on a web based product where accessibility is critical to the success of the team, and therefore I’m in full learning mode at the moment. Web #a11y is my new passion it seems. Don’t get me wrong it’s like day 4 of learning, but what a new world I find myself in! Raised two PRs into the project I’m working on.

Software engineering team structures

Apr 20, 2019 · 8 min read This post aims to outline a useful structure for software engineering teams. This feels like a fairly standard structure, or at least with the teams I’ve had exposure to. The main principles here are: to keep communication flowing; accountability is defined and understood; and the ability to scale horizontally when your teams become saturated (and for this to be easily quantified). For the purpose of this article, a team is going to be a product based software engineering team.

Feature Toggling

Mar 19, 2019 · 8 min read As mentioned previously, we are documenting a whole bunch of stuff at my current gig. Documenting what tools and languages we should be using for our new products and platforms, but also what techniques we should be using. Techniques is an interesting area to be documenting, because how far do you go? Taking a step back, I’ve always wanted to be a conference speaker, ever since I saw my boss do a talk at PHPNW back in 2008 / 9.

Why teams are important

Mar 8, 2019 · 7 min read After talking about communication recently, it felt natural to follow up with a post about Teams. The beginning I love teams. I love my teams. I love building teams. I love working in teams. I love to see what a team can deliver, and grow, and evolve, and have each others back. I would describe myself as a team player, first and foremost. I don’t like to be isolated. I like to have a home to anchor me.

Technology Radar

Feb 10, 2019 · 7 min read It’s all of a buzz at my current job at the moment. Change is in the air. Stacks. Tools. Paradigms. The way we work. The way we deploy. The way we communicate. There is a lot to take in, and a lot to learn. Recently, I was one of two people who presented to our Project Management Office (PMO) on what was happening in our department. The main aspect of this presentation, and my life at work at the moment, was the Technology Radar.

The software development pipeline

Jan 14, 2019 · 4 min read Pipelines. They are very important in software development, in my opinion. If you do not get your pipeline right, you likely have problems within your team(s). So, what is a pipeline? Well, think of it has a conveyor belt in a factory. The software development pipeline is a conveyor belt. From projects, to requirements, to building/testing, to deploying, and to everything in between. Those processes/items are moving along the conveyor, ideally in a smooth fashion.

Squashing commits

Oct 2, 2018 · 6 min read I recently got involved in a project where I contributed a patch to an inflight feature branch. I then raised a Pull Request into the feature branch, so I could annotate the code in the GitHub PR to explain why I had done it a certain way. After a bit of back and forth the PR was merged into the feature branch. Later, I found that the feature branch I had worked on had been merged into master, but the entire branch was squashed down into one commit.

Development environments

Sep 19, 2018 · 7 min read It works on my machine We have all heard it, and secretly, we have all probably said it too. Setting up your development environment really is a thing. About 10 years ago, I remember spending about two weeks getting a full ISP platform up and running on my host machine. There were a lot of moving parts I didn’t understand in my first week. I was fairly junior at the time, and this was the first time I was doing development, to this level, on a Linux platform.

SugarCRM deployment process

Aug 26, 2018 · 11 min read SugarCRM is a Customer Relationship Management system for both Enterprise and small business. I’ve worked on SugarCRM for around 6 years, and this post is going to cover off how we release/deploy the software on a 2 week cycle. The Aim As with any software, the aim is to have an automated release process first and foremost. We wanted this process to be simple and allow for a completely automated release to our staging platform on a nightly basis.

Team communication tools

Aug 6, 2018 · 9 min read In a previous post I talked about communication, and what it’s like as a remote engineer. I also hinted at the tooling I prefer, and outlined what I look for. This post is going to cover off why I prefer Slack for team chat/communication. Spanning a 10 year period I’ve used: IRC, Google Wave, XMPP in various forms, Skype, GTalk and Google Hangouts, Slack, Microsoft Teams and Workplace. Slack is a clear winner for me, although at the time Google Wave blew me away.


Aug 1, 2018 · 7 min read It’s cliched to say, but communication really is key, and yet it’s one of the common issues folks seem to raise in departmental or company feedback. “Communication isn’t great”. However, this is both a top down, and a bottom up issue in my opinion (and everything in between). Top down like to send out update emails, but the flow of communication is one way. Do I reply, reply all, face to face?