Diminishing returns of static typing

When talking about static type systems, we often tend to focus on one side of the equation. I’m trying to make explicit how I view the question as a tradeoff and why I neither agree with “more is always better”, nor with “a little is enough”.

September 12, 2017

Why context.Value matters and how to improve it

In light of recent discussions about its removal, I try to discuss what kinds of problems context.Value tries to solve. I then try to describe a design which would address most (but not all) of the criticism surrounding it.

August 14, 2017

What I want from a logging API

Logging in Go is a notoriously lacking topic in the standard library. There are 3rd-party libraries trying to work around this. I’m trying to explain, why I find them still lacking

August 6, 2017

The trouble with optional interfaces

I take a look at the pattern of optional interfaces in Go: what they are used for, why they are bad and what we can do about it.

July 30, 2017

How to not use an http-router in go

Trying to provide some advice on how to do easy, readable, scalable routing in go, without relying on any muxers/routers (or writing your own).

June 18, 2017

Backwards compatibility in go

There are next to no “backwards compatible API changes” in go. You should explicitely name your compatibility-guarantees.

July 29, 2015

Lazy evaluation in go

I did lazy evaluation in go.

July 17, 2015

The four things I miss about go

A short list of four things that I might want to add to go (but probably wouldn’t).

September 12, 2014

Applying permutation in constant space (and linear time)

A mildly interesting algorithmic problem and my solution to it.

August 12, 2014

go stacktraces

A small pattern to add stacktraces to errors.

February 19, 2014