Å·±¦ÓéÀÖ

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...
 •  0 comments  •  flag
Published on October 14, 2016 07:49

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 SemVer

is a well-defined way of versio...

 •  0 comments  •  flag
Published on July 16, 2016 13:38

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

 •  0 comments  •  flag
Published on June 17, 2016 07:39

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.

 •  0 comments  •  flag
Published on April 08, 2016 08:27

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.

...
 •  0 comments  •  flag
Published on March 30, 2016 20:39

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 Templates

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

 •  0 comments  •  flag
Published on March 29, 2016 07:43

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...
 •  0 comments  •  flag
Published on March 08, 2016 20:44

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...
 •  0 comments  •  flag
Published on February 29, 2016 08:28

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 Homes

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

 •  0 comments  •  flag
Published on February 25, 2016 01:26

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

 •  0 comments  •  flag
Published on December 22, 2015 06:58