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

Cookoo's New Syntax

June 17, 2015

Cookoo is a Chain-of-Command (CoCo) library for Go. It's good for building web services. We used it to build all of the Revolv RESTS endpoints. It's also great for building tools that handle a sequence of steps. That's why we used it in Glide.

Yesterday's release of Cookoo 1.2.0 makes some major...

The Year Google Bought Us

December 23, 2014

For me, 2014 will be remembered primarily by one particularly big event: Revolv was purchased by Google, and is now part of Nest Labs. But that has only been one piece of an entire year of interesting projects and events.

At this time last year -- December 2013 -- I was not kicking back before a...