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...

Configuring Kubernetes on Vagrant

December 15, 2015

One of the most frequent questions I see about setting up Kubernetes is how one can modify the configuration of a Vagrant/VirtualBox cluster. This, for example, is required to set up an insecure Docker registry or to use Kubernetes extensions like DaemonSets.

Running Kubernetes on Vagrant


Why Glide 0.8 Is Our Biggest Release

December 11, 2015

The Go package management ecosystem has been missing something -- something most other language ecosystems have had for a long time. The new version of Glide brings it.

Historically, Go dependency management has shied away from a package management philosophy. Instead, two approaches have been advocated...

What it Really Takes to Build a Container Platform

November 13, 2015

Here is the video of the ContainerDays NYC 2015 session I did entitled "What it Really Takes to Build a Container Platform: 10 Lessons We Learned the Hard Way".

The session covers the Deis project's learning experiences as we've built and re-built our PaaS architecture. I cover some of the encounters...