The Relationship Between Interfaces and Reflection

Interfaces are one of the fundamental tools for abstraction in Go. Interfaces store type information when assigned a value. Reflection is a method of examining type and value information at runtime.

Debugging with Mozilla rr project and GoLand

Debuggers. Traditionally they are used to find complex bugs and reason about how they happen. But what if you cannot explain why some changes happen between steps?

Monitoring GitHub releases with Prometheus

I have written some exporters to observe things on GitHub. This is how and why. We will talk about 2 things: other projects’ releases; my projects’ releases; So let’s get started! Other Projects’ Releases On my work and personal projects I use a lot of...

Exploring byte parsing APIs in Go

Several years ago, I began exploring Linux’s Netlink inter-process communication interface. Netlink is used for retrieving information from the Linux kernel, and in order to cross the kernel boundary, information is typically packed into Netlink attributes.

NASA Collage

One of the most popular websites at NASA is the Astronomy Picture of the Day.

Bringing Sanity to your Dependencies with Go Modules and Athens

As many of us know, Go version 1.11 introduced Go Modules, a brand new dependency management system. A Little Bit About Modules Before 1.11, our dependencies were a collection of Go packages with a single version number attached to all of them.

Automatic Semantic Versioning in GitLab CI

In the previous post I showed how to keep all the scripts used in the CI in one repository. Let’s see what more advanced scripts you could put in there. This time I’d like to show how to add automatic versioning to your pipeline. You will also see how to push commits...

gpython: a Python interpreter written in Go "batteries not included"

Gpython is a Python 3.4 interpreter written in Go. This is the story of how it came to be, how it works and where it is going.

Improve Your Breadmaking Skills with Go and Open-Source Monitoring

I have many different interests, including baking, open-source software, and more recently, systems monitoring and learning Go. As a way for me to expand my practical knowledge on each item, I devised a fun little project that leverages sensors, Raspberry Pis, and Prometheus to i...

How to Hash and Verify Passwords With Argon2 in Go

Thanks to Andreas Auernhammer, author of the golang.org/x/crypto/argon2 package, for checking over this post before publication. If you're planning to store user passwords it's good practice (essential really) to hash them using a computationally expensive key-derivation functi...