Setting up a Go build with Glide on CircleCI

I’ve lost a considerable amount of time trying to bind those things together, so I decided to write this quick post about it, so others could also benefit from it. The tips are: Don’t install Glide using go get. Use apt; Override dependencies and test sections; You&rs...

A Binary Search Tree

Search trees are everywhere: In databases, in file systems, in board game algorithms,… This post explores the probably most basic form of a tree: a binary search tree.

How Complex Web Systems Fail - Part 1

ld.so: glibc's dynanic linker/loader

The post “10 LDFLAGS I love” by Jessie Frazelle reminded me that I know a thing or two about the dynamic linker that many people using Linux rarely need, but when they need them, it’s because they really need them. I came by this knowledge a couple of decades ag...

Concurrency. Data race

What does data race mean in Golang? Data race is a common mistake in concurrent systems.

GopherCon 2016 - Retrospective

GopherCon 2016 has come and gone, and in keeping with our tradition we wanted to write up a brief retrospective to capture some of the highlights of the event.

Who needs generics? Use ... instead!

What are generics? Why are they considered useful? Why does Go have no generics? What shall Gophers use instead? This article examines the nature of generics, and surveys various techniques that can be used to work around the absence of this programming paradigm.

Toil: A Word Every Engineer Should Know

Working with ClickHouse in Go. Part 1: Basics

ClickHouse is an open-source column-oriented database management system that allows generating analytical data reports in real time.

The Faneuil Hall problem

The “Faneuil Hall” problem comes next in line in “The Little Book of Semaphores” and deals with taking the Oath of Citizenship in the city of Boston: There are three kinds of threads: immigrants, spectators, and a one judge. Immigrants must wait in line,...