Avoid Merge Conflicts, Don’t Manage Them

When discussing continuous integration on the interwebs, inevitably someone pops into the conversation with this hand grenade of wisdom:

BUT ACTUALLY… you don’t need continuous integration. It’s good enough to just merge mainline into your feature branch regularly. You get the same benefit, without the effort of changing your workflow.

The Dangers of Fatal Logging

I want to talk about fatal logging. It’s practically always a bad idea. Let me explain…

I was recently reviewing some code written in Go, where I saw this pattern in a constructor function:

The 3 “Best” Config File Formats

There are countless configuration file formats. Some are custom-designed for a specific application, such as those used by the Apache webserver or BIND. But more commonly these days, new applications use some sort of standardized configuration file formats, such as YAML, JSON, XML, or INI. Some applications, such as WordPress even use executable code as configuration files.

Most modern languages have libraries that will let you read (and in some cases, write) to a wide variety of configuration formats. Go’s Viper package supports 6 distinct file formats. Perl’s Config::Any supports 5 (plus executable Perl code).

How To Learn DevOps

One question I hear a lot is “How do I learn DevOps?”

As straightforward as the question may seem, the answer is actually full of a lot of nuänce. There are many ways to answer, depending on exactly what is meant by the question. So in this article, my goal is to clear up some confusion about “DevOps”, and provide some pointers for those who want to learn about it.

How To Automate Anything

Introduction

I’ve been thinking a lot lately about the relationship between manual tasks and automation. In this process, I’ve found myself describing how to move from one to the other in various contexts, and a pretty clear pattern has popped out at me. Here I want to distill the pattern down to the steps necessary to automate practically any process.

  1. Document all the steps.