Watermill v0.2.0 released

Let me start by thanking all contributors for feedback on Watermill - it drives us to add new features. Thanks! It’s been almost a month since the initial release of Watermill. However, it’s just the beginning and we are still working hard to ship new features. What i...

Go and Apache Arrow: building blocks for data science

Today we will see how Apache Arrow could be useful for data science, or – really – a lot of analysis workloads. Lingua franca In Data Science and in many scientific fields, the lingua franca is Python.

Apache Beam and Google Dataflow in Go

Overview Apache Beam (batch and stream) is a powerful tool for handling embarrassingly parallel workloads. It is a evolution of Google’s Flume, which provides batch and streaming data processing based on the MapReduce concepts.

Golang: cache things using interfaces

Caching things can be hard to do and hard to test. In this post I’ll demonstrate a convenient way of doing that using interfaces. The problem Let’s suppose we want to cache calls to the GitHub API. Let’s say we want to get the my repository list for whatever re...

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.