When I start a new project I begin by working on the interfaces like command line, services, plugins, etc. (the APIs). Once my API draft is good enough, I started writing tests. And I had to find out recently that Testing in Golang takes a little bit more attention than usual. Workarounds for bad design like mocking and monkey-patching are not readily available in Go like they are in dynamic languages. Many testing remedies are already available in Golang that promise to ease the pain but the general advice is not to use them. Instead one should make ones code testable and use the standard testing tools that are shipped with Golang itself. As always tools are a matter of taste and personal preferences - I wanted to do it in the recommended way.

(read more …)

If I am about to implement something it usually turns out to be a good idea to first start with some prototypes & benchmarks. This post summarizes the outcome of such an experiment to read data from compressed tar archives effectively. I did some similar benchmarks about 30 month ago so I repeated the measurements to see if there have been improvements and added results for my new Go reader.

(read more …)

This week I am visiting Gotocon Berlin 2015. Today I took part in a crazy workshop by Jez Humble and by crazy I mean crazy-good. We were discussing how difficult it actually is to implement sufficiently good Agile practices in todays enterprises. Jez made multiple reports on what he calls Water-Scrum-Fall. But the workshop was not at all problem-centered. Jez outlined useful approaches on how to improve the situation and gave us many useful references on companies who successfully made the transition.

(read more …)

I am currently preparing for the Linux Professional Institute (LPI) Certification. I enrolled in a two part course at Udemy:

In order to follow the course and to study the exercises it is required to use different Linux distributions. I use Vagrant at work so I thought "hey, why not use it to run different Linux distributions on my laptop". The remainder of the article describes how I setup Vagrant and used it to run virtual machines of CentOS and Debian distributions on my local machine.

(read more …)