Why I migrated to the Fish Shell

Back in June, I started porting my dotfiles from ZSH to Fish. Here’s why. Initial performance Fish’s performance is a lot better than ZSH’s, and very similar to Bash. We can verify that by firing up a container with limited CPU and memory, like so: docker run --...

Engineering Management Books

We live in the world where there are so many offerings of information in all possible formats: podcasts, videos, blogs, etc. But reading a good book is something that you’ll never regret.

Working with SQLite using Go and Python

Introduction I prefer to use relational (SQL) databases in general since they provide several features that are very useful when working with data. SQLite is a great choice since the database is a single file, which makes it easier to share data. Even though it’s a single f...

Multi-platform Docker images with GoReleaser and GitHub Actions

GoReleaser v0.148.0 is out, and with it, the ability to release multi-platform Docker images, a.k.a. Docker Manifests. In this guide we’ll explore how to use it with GitHub Actions, and how GoReleaser releases itself in this way. PS: You will need GoReleaser version 0.152.0...

Cannot import main: a Go Module gotcha

Two questions for you: Do you name an app module simply “main”? And do you happen to write tests for a main package? If so, you are in big trouble! (Ok, that was a bit clickbait-ey…) Well, the world is not exactly going to end; however, you might encounter an unexpected err...

Making Python respect Docker memory limits

If you run Python inside containers, chances are you have seen Linux’s OOMKiller working at least a couple of times. Why? This happens because Python sees the entire host’s resources as if they were available for its use. Then, it may try to allocate more memory than...

Using dot imports in views in Go

Sometimes, what's considered bad practice may make sense.

Pointers Might Not be Ideal as Arguments

Author(s): Changkun Ou Permalink: https://golang.design/research/pointer-params We are aware that using pointers for passing parameters can avoid data copy, which will benefit the performance. Nevertheless, there are always some edge cases we might need concern.

Combining DDD, CQRS, and Clean Architecture in Go

In the previous articles, we introduced techniques like DDD Lite, CQRS, and Clean (Hexagonal) Architecture. Even if using them alone is beneficial, they work the best together. Like Power Rangers. Unfortunately, it is not easy to use them together in a real project. In this artic...

Python and Pandas : First Contact with Data

Introduction Every single company I’ve worked at and talked to has the same problem without a single exception so far - poor data quality, especially tracking data. Either there’s incomplete data, missing tracking data, duplicative tracking data. - DJ Patil I spend a...