Go json.Decoder Considered Harmful

If you are coding with Go and using json.Decoder to deserialize a JSON payload, then you are probably signing up for unexpected outcomes. You should use json.Unmarshal instead.

  1. json.Decoder is designed for JSON streams; not for single JSON objects
  2. json.Decoder silently ignores certain malformed JSON syntax.
  3. json.Decoder does not release network connection for reuse (slows down HTTP requests up to ~4x)

None of this should be a surprise for someone reading the godoc of the ... Read more →

Introduction to Azure Docker Extension

Even for someone who does not care about Microsoft Azure at all, I think the “Virtual Machine Extensions” concept is something pretty darn interesting and other cloud providers do not have an equivalent.

This article is about one of them: Azure Docker Extension.

First of all, you must be wondering what a VM Extension is:

What are Virtual Machine Extensions?

In Azure, we give you a way to install things or run scripts on the virtual machine instances from outside ... Read more →

Effortless Docker Swarm Clusters on Azure

I wanted to re-iterate an article I published on Azure Blog more informally, so here we are. In the past few months, I have been trying to make it damn easy to create Docker Swarm clusters on Microsoft Azure.

Whenever I have some distributed workload I want to deploy to cloud, I prefer Docker Swarm right away:

  • it is easy to set up
  • it is simple (it speaks the Docker CLI language)

Other orchestrators (as of writing) are more tedious ... Read more →

My talk at DockerCon EU 2015

I am honored to give a talk at my most favorite dev conference ever, DockerCon 2015 Europe! When I got the email saying my proposal got accepted, I thought it was going to be the happiest moment of my year.

I was proved wrong when my talk turned out to be the top rated session of the conference! The video recording and the slides are finally here. Get your popcorn ready, sit back and enjoy the show! Read more →

wagl: Service Discovery for Docker Swarm

wagl is a DNS server which allows microservices running as containers on a distributed Docker Swarm cluster to find and talk to each other. It is minimalist and works as a drop-in container in your cluster.

This article is intended to describe inner workings of wagl and give a broader sense of the state of service discovery problem in today’s container clusters. Read more →