Go In Practice - The Autobiography

October 14, 2016

Go in Practice is now available in print and ebook. After a long haul for Matt Farina and I, the book is complete. Pausing for a moment, I realize how, behind all the code samples and callout boxes, some small part of life is captured in those pages.

Matt and I each went through some pretty crazy...

Why Explicit Versions Still Don't Solve the Problem

July 16, 2016

Explicit Versioning, the latest attempt at solving version naming problems, still doesn't quite cover the normal use cases I encounter daily. But it does capture an idea that SemVer doesn't.

A fascinating blog post on explicit versioning is making the rounds. It proposes a new versioning scheme based...

The Illustrated Children's Guide to Kubernetes

June 17, 2016

Once upon a time, there was a little PHP app named Phippy. The Illustrated Children's Guide to Kubernetes follows Phippy on her journey from a scary hosting provider to a pod on board Captain Kube's ship.

Along with the video, Deis has produced a limited run of the books, in full color with the...

Part-time Coffee Snob

April 8, 2016

Along with code, I get pretty fanatical about my coffee. It was pretty cool to be quoted in Barista Magazine's article How Customers and Coffee Shops Define Quality Differently.

The article is an interesting analysis of a survey that Hand Ground conducted about coffee shop quality and culture....

Go Quickly - Cleaning Filepaths

March 31, 2016

One of the more useful, but underutilized, packages in Go is the path/filepath package. This library contains a dozen or so tools for manipulating paths on the filesystem. Unlike path, filepath functions are aware of the filesystem, and the functions are not merely string manipulators.

I've recently...

Go Quickly - 50+ Template Functions from Sprig

March 29, 2016

Go ships with a powerful template package. But the default template language has only a few functions. Sprig, a library from the authors of Glide, augments the existing functions with almost 60 additional functions.

Go Templates

Go provides a generic text templating language (text/template) and...

Go Quickly - Converting Character Encodings In Golang

March 9, 2016

At one point or another, every developer gets stuck converting a pile of files from one character encoding to another. Go's native character set is UTF-8, and the core Go libraries don't come with tools for converting character sets. However, one of the Go extension libraries makes this easy.


Go Quickly - Regexp Templates

February 29, 2016

Did you know that Go supports Perl-style template expansion for regular expressions? Using this tool, you can capture a regular expression pattern and then expand it into a simple string template. Here's how it works.

package main

import (

func main() {

The Alpine Mistake

February 25, 2016

Alpine Linux is the new darling of the containerati. This is no big surprise. I too have bought into the story that Alpine's small footprint makes it the perfect fit for the Docker world. But it's not. Alpine is a short play that puts containerization in danger of losing the long game.

Trailer Homes

My Top 15 For 2015

December 22, 2015

It's been a phenomenal year for technology. The cloud landscape has shifted from VMs to containers. Go has enjoyed a meteoric rise while the venerable PHP has reached version 7. JavaScript continues to surprise us all. IoT seems to have tarnished its reputation. But Android and iOS continue to push...