macOS Command Line Tools

Today, again, I forgot the command to install Command Line Tools and had to search for it. This is post if for future me. You always forget how to install XCode Command Line Tools when a new macOS release comes out… specially because this always happens when you’re...

The story of the one line fix

Picture yourself, an engineer working at the hottest distributed microservices de jour, assigned to fix a bug. You jump into an unfamiliar codebase and quickly locate the line where the problem occurred. The fix is simple, just return early or substitute a default value in the ca...

Building view components with gomponents and TailwindCSS in Go

Reusable components for your server-side views that look good.

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.