If you're getting a 400 Bad Request with "Invalid signature" from your
Stripe webhook on Cloudflare Workers or Cloudflare Pages, the actual
problem might not be your webhook secret at all.
The symptom#
The Stripe webhook endpoint returns:
400 Bad Request
Invalid signature
In St…
For years I have been running this blog on Zola without any comment system.
The static nature of Zola made adding comments non-trivial and I was not
keen on third-party solutions like Disqus or Giscus. When I migrated to
Astro (not yet published at the time of writing), the oppor…
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…
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…
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:
[…
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…
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/…