Golang and local datastores - fast and flexible data storage

Local datastores may not be a fit if you are building a web application that may have more than a single instance and a somewhat rich data schema.

Best Practices for Using Mage To Build Your Project

On my team at Mattel, we have a magefile for every Go project (and we have several Go projects). Our use of mage has grown with the team and the projects, and it has been a big help keeping our dev practices uniform and shareable.

Postmortem debugging Go services with Delve

One day, several instances of one of our production services stopped accepting incoming traffic. HTTP requests successfully went through the load balancer reaching the instance and just hanged.

Splitting Data with Content-Defined Chunking

In this post you’ll learn what Content-Defined Chunking (CDC) is and how you can use it to split large data into smaller blocks in a deterministic way.

Introducing Watermill - Go event-driven applications library

Watermill is a Go library for working efficiently with message streams. It is intended as a library for building event-driven applications, enabling event sourcing, CQRS, RPC over messages, sagas. Why? Lack of standard messaging library There are many third party and standard lib...

Goroutine Leaks - The Forgotten Sender

Introduction Concurrent programming allows developers to solve problems using more than one path of execution and is often used in an attempt to improve performance. Concurrency doesn’t mean these multiple paths are executing in parallel; it means these paths are executing out-...

Keeping json files formatted

I’m working in a project that uses Chef, so it has a lot of JSON files. I like everything to be preperly formatted. The choice of format itself does not bother me much, giving that there is one. This project did not (although it was surprisingly not that bad). So, I decide...

⭐️ Go: The Complete Bootcamp Course

Keeping common scripts in GitLab CI

With this post, I’d like to start a series of CI-related tips, targeted mostly at GitLab, since that’s my go-to tool for things CI/CD-related. I’m sure most of them could be easily applied to other CI systems, though. While GitLab does a great job at many things...

GoReleaser: build and push Snapcraft packages from TravisCI

GoReleaser was able to build Snapcraft packages for a long time, but it wasn’t able to push them until today. Let’s see how to wrap to your TravisCI build! Since v0.28.0, GoReleaser can create Snapcraft packages and upload them to the GitHub release. On v0.91.0, we a...