A poorly made cartoon image of the author

Hi, I’m Felix!

I’ve spent the last 15 years building impactful software as a product leader. This is my blog. Are you a founder building consumer products, crafting your first growth strategy, or struggling to scale your product team? I would love to help. Get in touch!
A cartoon image showing an Atlas-like god carrying a Macbook on its back.

Compiling Android apps on a remote machine

Using Mirakle, Tailscale and WSL to enable remote Gradle execution for a more pleasant Android development on weaker machines like my Macbook Air.

May 14, 2025
A screenshot of workout-song-log.bouleau.dev

Automatically adding my running soundtrack to Strava activities

Building a public app for the first time, syncing song names to relevant Strava activities using the Strava and Spotify APIs, Redis, Flask and Postgres.

May 2, 2025 · 4 min

Making my door buzzer smart (ish)

Non-invasively integrating my Aiphone GH-1AD intercom into Home Assistant, read only, by hooking it up to an ESP32 and programming it with ESPHome.

May 1, 2025

Hosting my own feed to avoid doomscrolling

Replacing Reddit, Hacker News and global news scrolling with a self-hosted RSS setup using Miniflux and Tailscale, and then vibe-coding an RSS feed summarizer.

April 27, 2025

Solving "403 Forbidden" when trying to pull a public Docker image

I just re-installed Docker Desktop on my Macbook Air after a few months of exclusively using Docker on remote machines using VS Code and ssh. I was puzzled to see a 403 coming back when pulling an image from ghcr.io, which obviously is an open registry: $ docker pull ghcr.io/astral-sh/uv:latest Error response from daemon: failed to resolve reference "ghcr.io/astral-sh/uv:latest": failed to authorize: failed to fetch oauth token: unexpected status from GET request to https://ghcr.io/token?scope=repository%3Aastral-sh%2Fuv%3Apull&service=ghcr.io: 403 Forbidden Turns out that docker login credentials survive when you uninstall Docker Desktop, and an ancient (now expired) GitHub token was being used in the above request. ...

April 25, 2025
a crusty old product manager preaches the hot new blog posts of 2016

Vintage link collection: "Good reads for the aspiring PM"

Finding good material about software product management used to be pretty hard. I put this reading list together as an internal Spotify document in 2017, and often shared it with folks that expressed an interest in product management. At some point I made a public version, and it’s mostly been collecting dust in my Google Drive since then. For my PM peers, maybe it’ll be a fun, nostalgic throwback to the stuff we used to share and emulate. ...

April 14, 2025
A cartoon image

Are AI tools turning us all into supervisors?

Exploring the difference between AI-powered augmentation and AI supervision, and how the future of knowledge work may involve less doing and more orchestrating.

April 11, 2025 · 5 min
An animated gif showing runningconverter.com converting running paces in real time

Mini project: Runningconverter.com

Building a running pace and race time converter in 2 hours, using Claude and Cloudflare.

April 4, 2025

Keeping tabs on Proxmox backups with Healthchecks.io

Monitoring scheduled Proxmox backup jobs, using the free Healthchecks.io service and custom hook scripts.

January 30, 2025
An animated gif showing a VM being created in Proxmox, and then that same host popping up in the Tailscale console

Pre-installing packages on fresh Proxmox VMs using cloud-init

Using custom cloud-init scripts to quickly pre-configure new Proxmox VMs.

January 27, 2025