Fragment link checking in Astro

In my previous post I covered how Zola validates internal links and anchors at build time. As I'm considering migrating my blog to Astro, I needed to solve the same problem: how do I ensure that fragment links (anchors) actually point to existing headings? Here's how I set up fra…

Wi-Fi ACL on RouterOS 7 - The WPA3 Retreat

In my previous post I described my setup with WPA3 on the 5GHz band and WPA2 with MAC filtering on the 2.4GHz band. The idea was sound: modern devices get modern security, legacy devices get extra protection through access control lists. Reality, however, had other plans. The WPA…

RouterOS syntax highlighting for Astro

While migrating my blog from Zola to Astro, I ran into an issue with RouterOS syntax highlighting. Astro uses Shiki for code highlighting, and Shiki doesn't include RouterOS out of the box. Here's how I solved it. The problem# When building the Astro site, I saw warnings like: […

No module named keyring

After running brew upgrade on my Mac M3, OfflineIMAP suddenly stopped working with this error: OfflineIMAP 8.0.1 Licensed under the GNU GPL v2 or any later version (with an OpenSSL exception) imaplib2 v3.06, Python v3.14.0, OpenSSL 3.6.0 1 Oct 2025 Account sync Peter: *** Proc…

Fixing bitwarden cli commonjs error

I have already write an update post about bitwarden backup. After running smoothly for months, my automated Bitwarden backup GitHub Action suddenly started failing. The error message was cryptic: Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/peterbabic/backups/bitwarden/…

Make yazi quit nvim compatible

If you're using yazi as your terminal file manager and coming from vim/neovim, you've probably tried to quit with :q out of habit, only to be greeted with: q: command not found This happens because yazi's : key opens a shell command prompt, not a vim-style command mode. So :q li…

Bitwarden backup GitHub Action update

I have already write a post about bitwarden backup, about this very topic. At first, I thought to just update it as I did with cloudflare backup and later with faktury-online backup. After a bit of changes to that post I have found out that I have made so much changes to the whol…