Matt Butcher's Blog, page 4
October 14, 2016
Go In Practice - The Autobiography
Go in Practice is now available in . 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 life events as we tried to get the book done. During the course of writing:
Revolv, where I was "Head of Cloud", released its first IoT product At our editor's prompting, we changed t...July 16, 2016
Why Explicit Versions Still Don't Solve the Problem
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 is making the rounds. It proposes a new versioning scheme based on a simple formula: release.breaking.feature.fix.
Comparing it to SemVer shows both its weaknesses and strengths.
Starting from SemVeris a well-defined way of versio...
June 17, 2016
The Illustrated Children's Guide to Kubernetes
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 beautiful illustrations of Baily Beougher. Oh, and Deis also has some cute little squishy Phippys.
Read more on .
Special thanks to the Boulder Kubernetes meetup group,...
April 8, 2016
Part-time Coffee Snob
Along with code, I get pretty fanatical about my coffee. It was pretty cool to be quoted in Barista Magazine's article .
The article is an interesting analysis of a survey that Hand Ground conducted about coffee shop quality and culture. The authors dive beneath the data in an effort to answer whether the results are really as clear cut as they appear.
March 30, 2016
Go Quickly - Cleaning Filepaths
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 seen several cases where people misunderstood one of the functions in path/filepath. The misconception is that filepath.Clean() is a security function that will sanitize a path. It's not.
...March 29, 2016
Go Quickly - 50+ Template Functions from Sprig
Go ships with a powerful template package. But the default template language has only a few functions. , a library from the authors of , augments the existing functions with almost 60 additional functions.
Go TemplatesGo provides a generic text templating language (text/template) and also an HTML-specific implementation of that same language (html/template). Both libraries work essentially the same way: You create a template, parse the template, inject some values, and then execute...
March 8, 2016
Go Quickly - Converting Character Encodings In Golang
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.
The package you want is , which comes with a variety of tools for working with text. And the one we're most interested in is the set of packages.
Decode to UTF-8, En...February 29, 2016
Go Quickly - Regexp Templates
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 ( "fmt" "os" "regexp" ) func main() { dst := make([]byte, 0, 1024) source := `"matt"` re := regexp.MustCompile(`"(?P<name>[a-z]+)"`) tpl := "My name is ${name}." matches := re.FindStringSub...February 25, 2016
The Alpine Mistake
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 HomesImagine for a moment that Linux distributions are homes.
Ubuntu is the , ready to be filled with shiny toys. RHEL is the . Debian is a home. And between...
December 22, 2015
My Top 15 For 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 the threshold of mobile. What follows is my (arbitrarily ordered) list of stand-outs in my development world.
This isn't a necessarily a list of "new" things, but things that stoo...