Profiler labels in Go

Go 1.9 is introducing profiler labels, a way to add arbitrary key-values to the samples collected by the CPU profiler. CPU profilers collect and output hot spots where the CPU spent most time in when executing. A typical CPU profiler output is primarily reports the location of th...

GKE in production

I’ve been working with DigitalOcean, Heroku and AWS for some years now. Recently, I decided to give GCE (Google Compute Engine), and, more specifically, GKE (Google Container Engine) a try. In this post I intend to show a few things I learned and/or struggled with. SSL and...

Custom pprof profiles

Go provides several pprof profiles out of thet box to gather profiling data from Go programs. The builtin profiles provided by the runtime/pprof package: profile: CPU profile determines where a program spends its time while actively consuming CPU cycles (as opposed while sleeping...

Embracing Failure in a Container World

For Range Semantics

Prelude These are good posts to read first to better understand the material presented in this post: Index of the four part series: Language Mechanics On Stacks And Pointers Language Mechanics On Escape Analysis Language Mechanics On Memory Profiling Design Philosophy On Data And...

goman - the missing man pages for Go binaries

Most Go binaries come without any man page. The tool goman fills this gap. If the corresponding project includes a decent README file (and most projects do), goman find this README file and displays it on the terminal.

gRPC-Web with GopherJS

In a previous blog series I’ve talked about how to work with a gRPC backend from the GopherJS world. It relies on the gRPC-gateway which is a great piece of tech, but unfortunately carries a couple of downsides: Clients don’t know what types are used - the interface i...

Go, Mental Models, and Side Effects

Design Philosophy On Data And Semantics

Prelude This is the final post in a four part series discussing the mechanics and design behind pointers, stacks, heaps, escape analysis and value/pointer semantics in Go. This post focuses on data and the design philosophies of applying value/pointer semantics in your code. Inde...

Auto-deployment of your app from Github

Update Docker Cloud is being discontinued. For an alternative easy app deployment, check my new post on automatic app deployment. Furthermore, I would nowadays recommend Hetzner Cloud over Scaleway. Scaleway was running out of instances last time I tried using them, and Hetzner&r...