Posts
First of all, I’d like to point out that I’m not saying Atlas is not a great product! If I would start a greenfield SaaS product next week, I would definitely still consider Atlas! The issues I’ll address in this article revolve around blind spots - whether they’re intentional I dare not say - in the free version of Atlas, particularly when the product is designed to work with multiple database management systems (DBMS).
As shown in my previous article when using sqlc in a hermetic way - i.e. you want to build sqlc from source instead of relying on some pre-built binary - it requires some adjustments because out of the box, the build will fail.
One of the biggest changes (from what I know so far) in Bazel 9 is that the cc toolchain is now extracted to its own rule (rules_cc).
This means that the previous
This is a follow up on my original post Build & deploy a Hugo site with Gitea/Forgejo actions. Almost two years later, I wanted to write down some experiences I had so that I could remember why I am where I am now 😅
Recap
Back then I used Cloudflare pages to host my blog. There’s still nothing wrong with this approach! There are multiple reasons why I moved on from this approach:
Bazel (checkout also their new docs) is a build system that advertises itself with
{ Fast, Correct } — Choose two
and that is absolutely correct, as long as we’re talking about execution time, not (necessarily) engineering time 😄
I’ve been trying to learn Bazel for a few months. To achieve this, I’m updating most of my projects to build with Bazel. In my spare time, I work on various small projects, mostly using Go. These range from command-line applications to server apps running in containers, and even a custom GitHub action for installing Hugo.
Supabase is an awesome tool for building (CRUD) applications in no time. For those who are not familiar with Supabase, it is an open-source Firebase alternative with a focus on privacy and security. Compared to other tools, Supabase is focused on the Postgres database and provides a lot of features out of the box, like authentication, authorization, and real-time subscriptions. Also their tech stack appeals to me, as they are using Go, Rust, Elixir and (sadly) Node.js for all their services.1
I admit it. I like self-hosting. I like the idea of being able to control every aspect of my infrastructure. It was only consequent to also self-host my blog. This article describes my odyssey and why I ended up letting Cloudflare do the hosting.
In the beginning - there was a repository. As we all know, the repository is the truth. When the time came for deploying the blog, I already had a Kubernetes (K8s) cluster at hand so the obvious choice was to containerize the web page and host it there. I wrote a simple Dockerfile with a multi-stage build, just like this:
This is a follow up post to “Joining libvirt VMs and Podman container in a common network”. Therefore I won’t cover all the basics again and how to configure libvirt because nothing’s changed on that side.
Podman 4.0
Podman 4.0 comes with a completely new network stack replacing the previous CNI stack:
There are great resources that explain the backgrounds of both tools and I don’t think I could describe it better than the folks implementing it :smile: so if you’re interested have a look at the aforementioned article or the release post.
Disclaimer: I tested all this with Podman 3.x even though Podman 4.0 is already announced but the CNI driver is still available with Podman 4.0 and as soon as I get my hands on 4.0 I’ll give Netavark a try, too!
When playing around with containers and VMs one might ask if it’s possible to bring VMs and containers into a common network segment. I see ‘why the hell would I need a VM anyway when already having containers’ or something similar I almost see on your face :stuck_out_tongue_winking_eye: