UUID without dependencies in Go

Today I saw that the size of my vendor/ folder in Golang project is around 150M. I am using glide there and there are 24 dependencies (it’s a program with multiple data storage connectors, notifications, etc.), so I decided to review it and reduce the amount of 3rd party li...

The Obvious, the Easy, and the Possible

Balancing a binary search tree

Only a well-balanced search tree can provide optimal search performance. This article adds automatic balancing to the binary search tree from the previous article.

How Complex Web Systems Fail - Part 2

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

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. A data race occurs when two goroutines access the same variable concurrently and at least one of the accesses is a write. It’s really hard to recognize it without specific tools or without...

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.