Automating a Linux in Windows dev setup

Last time I used Windows on my main development machine was sometime in the early 2000s. Over the years, I had several side Windows machines (usually because I needed Visual Studio) but I was never really serious about using a PC as my main dev machine. Things have changed a lot...

Different approaches to HTTP routing in Go

Compares routing techniques in Go, including five custom approaches and three using third-party routing libraries.

Go filesystems and file embedding

A presentation of the Go draft designs for a filesystem interface and a standard way to embed files in a Go binary (LWN.net).

Kubernetes pod shutdown lifecycle

I always forget the details about Kubernetes pod shutdown lifecycle is something when I need them, so this is my now made public notes on the subject. TL;DR When a pod is signaled to terminate (deleted, for example), what happens is: it enters in Terminating phase run all preSt...

4 practical principles of high-quality database integration tests in Go

Did you ever hear about a project where changes were tested on customers that you don’t like or countries that are not profitable? Or even worse – did you work on such project? It’s not enough to say that it’s just not fair and not professional. It’s...

Generics Part 01: Basic Syntax

Changes The draft is a living document which means these posts will need to change over time. This section documents when changes have taken place to this post. 21/08/20 : Moving forward with the generics design draft Series Index Generics Part 01: Basic Syntax Generics Part 02:...

Giving Rust Another Shot in 2020

Spanner's SQL support

Spanner is a distributed database Google initiated a while ago to build a highly available and highly consistent database for its own workloads. Spanner was initially built to be a key/value and was in a completely different shape than it is today and it had different goals. Sinc...

The sad, slow-motion death of Do Not Track

Talks about the valiant but almost-dead 10-year effort to prevent tracking with the Do Not Track header.

The Repository pattern in Go: a painless way to simplify your service logic

I’ve seen a lot of complicated code in my life. Pretty often, the reason of that complexity was application logic coupled with database logic. Keeping logic of your application along with your database logic makes your application much more complex, hard to test, and mainta...