https://github.com/ryan0x44/local-git-server

Today I was trying to create a pipeline-as-code using Kotlin and TeamCity. I’m a huge fan of fast Feedback Loops, so my first thought was: how can I test these changes faster. And my second thought was: how can I eventually automate testing these changes.

In particular, when experimenting with the settings.kts file of the Kotlin DSL, the way you test this is to put it under a .teamcity directory in the root of your Git repository and then loading that repository in the TeamCity UI. However, that meant pushing up a settings.kts


Photo by Shiro hatori on Unsplash

If you haven’t heard the hype, search “10x Developer” or “10x Engineer” and you’ll find something like:

“an engineer who’s 10 times better at their job than their peers”

You may also come across a 1968 paper, or a recent thread of tweets on the topic. This article isn’t going to waste your time on that topic. However, if you want to find a highly productive software developer/engineer, or you’re looking to become more productive yourself, my tip for you is: focus on continuous optimisation of feedback loops.

Feedback Loops

In the context of software engineering and this article, I define a…


Photo by Andrés Gómez on Unsplash

(This post is also published as presentation: video here / slides here)

If you’ve ever worked at a high-growth software engineering company, you might have heard a conversation about technical debt that goes like this:

Person A: “We could release so much faster if we just did X…”
Person B: “That makes sense — so why haven’t you done it?”
Person A: “Well, with all this feature work, we just don’t have time.”

Or comments like this:

“We really need to do this. We should just stop all feature work until we fix this.”

I’ve been on both sides of…


Photo by Annie Spratt on Unplash

There’s a lot of great content out there for learning Go — so much, in fact, that I often get asked for a list of resources people should look at. Whether you’re a beginner programmer or experienced engineer, if you’re interested in learning Go here’s what I recommend checking out — roughly in the order given.

Installing Go

Editors/IDE’s & Plugins

Free & Open Source:


If you’re interested in learning the Go programming language, this guide will walk you through how to set up a brand new Mac step-by-step, with all the tools you’ll need to write and run Go programs.

In this guide will cover how to:

  1. Download & Install Go; the programming language tools/binaries.
  2. Download & Install a Code Editor; a tool to write Go code in.
  3. Create Your Go Workspace; a place to store your code.
  4. Write Your First Go Program; a simple “hello world” program.

Let’s begin!

1. Download & Install Go

Installing Go

Download Go for “Apple macOS” from: https://golang.org/dl/

Double-click on the downloaded file (e.g. go1.10.2.darwin-amd64.pkg)…


Photo by Thomas Kvistholt on Unsplash

Go has an amazing standard library; building web servers and working with JSON doesn’t require any 3rd-party code — but for complex applications, you’ll find yourself exploring 3rd-party packages. Many newcomers to Go frequently ask me which packages I most commonly use outside of the standard library — so here is my list!

Dependency Manager

Dep https://github.com/golang/dep will help you manage all of the packages you’re using — an appropriate first entry in my list :)

Don’t be put off by the words “official experiment” in its README. Dep is the best tool for your production-ready code right now.


Photo by Jad Limcaco on Unsplash

Have you ever wanted to keep a Docker container running after it finishes running a script? e.g. if your container exits once your script finishes it will result in rolling restarts (which probably sends you a bunch of alerts — yay!).

Well, good person, I have some shell script magic for you!

Disclaimer: in this scenario, you should always assume that the container may run multiple times (e.g. machine dies and container gets rescheduled elsewhere). Here we just want to prevent it restarting constantly and unnecessarily alerting people.

Important background knowledge

First, some background on Docker & signals:

  • Running docker stop [container]will (by…


Photo by Yuriy Rzhemovskiy

I’ve always wondered if I could turn a Chromebook into a full-time development machine, so I recently started tinkering with Crouton to get a Linux CLI running.

Crouton creates a chroot environment and installs a distribution such as Debian or Ubuntu. It even let’s you run a full X server and get a GUI like Xfce — but my initial impression of this was that it’s a little buggy, and personally I don’t really mind the Chrome OS GUI, I just want a Linux shell.

Finally, rather than back up my Chromebook using traditional file syncing methods, I wanted to…


Recently I migrated a network of Mac Mini’s to Chrome OS, running on ASUS Chromebox Celeron 2955U’s (a Chromebox is the desktop version of the Chromebook).

The setup works great since users rely on Google Apps/Drive and various SaaS products for operating their business. However, businesses like to print, so I had to connect their ‘classic’ printers to Google Cloud Print.

If your network still has a PC or Mac connected to your printers with Chrome installed, all you need to do is run Chrome as a Google Cloud Print proxy (GCP proxy). I decided to re-purpose one of the…


In recent years I’ve tried and used several PaaS offerings; AWS Elastic Beanstalk, Google App Engine and Heroku. Yesterday I finally had a chance to try OpenShift by Red Hat, and was pleasantly surprised by a few particular details. Here’s a quick summary:

The free tier
Like Heroku, the free tier offered will idle with inactivity. If that’s cool with you, the free tier is pretty great — for example, you can add multiple domain aliases and host a multi-site CMS using your own domains.

Custom SSL certificates If you’ve upgraded to a paid plan, this is an option and…

Ryan D

#DevOps, #Security, Go (#golang), #Linux, #Docker, #Kubernetes. DevOps Manager @Xero. Previously: DevTools Engineering Manager @Cloudflare. Opinions are my own.

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