Go Quickly - Parsing Anonymous JSON

October 2, 2015

Go is great for parsing known JSON formats. But what if you don't know ahead of time what the JSON will look like? There are a few ways to handle this case in Go. On one hand, you can use the tokenizer and sequentially read through the JSON. On the other, you can simply parse the JSON into generic...

Quick Go Hack - Renaming Structs

September 26, 2015

Today I found myself needing to rename a struct throughout the codebase of a project. In many languages, doing this would either require some perl/sed kung-fu or an IDE tool like you'd find in IntelliJ. Go, however, comes with a handly tool for doing this: gofmt. That's right, it does more than just...

How Elixir Does Project and Dependency Management

September 19, 2015

I am going to come right out and say it: In less than an hour, Elixir's Mix tool won me over. Elixir seems to have done project and dependency management right.

Elixir is a Ruby-like functional language that runs in the Erlang VM. One of Elixir's more interesting features is its built-in project...

The Snooty Developer's Visual Guide to Kubernetes

September 15, 2015

With its own vocabulary and architecture, Kubernetes can seem downright scary. To tame the beast, I give you a simple visual (and snarky) guide to Kubernetes concepts.

Don't look here for nitty gritty implementation details. For that is not the way of the Kubernaut. We are platonists, concerned not...

Software is a Sugarmill

September 12, 2015

About a year ago, Google acquired Revolv, where I led the Cloud team. I coined the code names for several of Revolv's projects, including our primary cloud platform. I named it Sugarmill.

But I never told anyone the reason. It was long-running joke that I wouldn't say why I named it. Frankly, I...

Don't Condemn Go To Repeat Past Mistakes

September 2, 2015

The American philosopher George Santayana famously quipped:

Those who cannot remember the past are condemned to repeat it.

A litany of "history repeating itself" variations have trickled down from Santayana's phrase. But the original captures something that those "history" variants do not: the...

It's Time for an Alternative to PHP

August 22, 2015

PHP has had a good run, and still is the basis for a huge percentage of the websites out there. But it looks like its popularity may be waning. The thing is, PHP is meeting a very real need in the web development world. It's time for a replacement. Something that meets the same needs, but is updated...

Managing Go 1.5 Vendor Dependencies with Glide

August 20, 2015

There is a new way to manage Go dependencies, and Glide 0.5 makes this process efficient and powerful. Glide 0.5 is a feature-packed release supporting:

  • 100% full vendor/ support, including deeply nested projects.
  • Recursive dependency resolution
  • Dependency management aware of...
    • Git, Mercurial...

Functional Testing in a Containerized World

August 18, 2015

In an age of REST, IoT, and cloud services, well constructed functional tests can exercise substantial portions of the code by simply emulating a client of the service, and then testing the environment. But the real challenge of building good functional tests is creating a clean and reliable test...

The Future of IoT Protocols

August 17, 2015

I'm excited to see DZone's new 2015 Guide to the Internet of Things out today. My article "JSON, HTTP, and the Future of IoT Protocols" is among the articles in the new guide.

In the article, I suggest that JSON's time may have come. Other encodings, like CBOR and Protobuff, may supplant it. But...