Blog

Turn the Pi-hole Admin Dashboard into a Progressive Web App

Pi-hole describes itself as “A black hole for Internet advertisements”. I think the GitHub description is more apt: The Pi-hole® is a DNS sinkhole that protects your devices from unwanted content … Fewer ads are nice, but tracker and malware blocking at the LAN DNS level is nicer. Pi-hole is the first install of my self-hosted adventure. The […]


Hardware and Self Hosting

Today my main computer is a Mac Mini 2018. Quite likely the last Mac I’ll buy for day-to-day work. I’d like it to last a little longer than previous ones. Following Apple’s ARM chip announcement I have my doubts about future support. Here’s my office setup: I was a dual-monitor person for years. That changed […]


PWA Encryption and Auto Sign-in

Mute Swan is a progressive web app I’ve been coding for my own amusement. It’s a playground for me to mess around with experimental web standards. Also to remind myself to buy milk. I’ve recently implemented hidden Dropbox backup and sync functionality. With that in place I decided that my grocery list was of […]


Bubblewrap Apps in Android Studio

Bubblewrap is a convenient tool to generate an Android app from a Progressive Web App. I used it to bundle my PWA recently. It’s run from the command line: bubblewrap init --manifest "https://muteswan.app/manifest.webmanifest" Bubblewrap generates the build config and assets for the app. Continuing with bubblewrap build results in an .apk if you’ve installed the Android build tools. I […]


WordPress Gutenberg Example Blocks

Following my last article I’ve published a new GitHub repo: WordPress Gutenberg Example Blocks In there I’ve coded examples of Gutenberg block development wrapped up in a tidy WordPress plugin you can try out. I start with the most basic block possible. I follow with iterations of more advanced functionality. I’ve kept the boilerplate and dependencies to a […]


WordPress Gutenberg: React & Advanced Custom Fields (ACF)

The new WordPress Gutenberg editor has been in release for over a year. Post content is composed of “blocks”. Everything is a block. From the humble paragraph to the more advanced gallery and video embed — all blocks. There are two common methods to create Gutenberg blocks. The first is to follow the offical handbook. Blocks and […]


Debugging a Todo App

So lately I’ve been boasting about how easy it is to build Progressive Web Apps. I’ve been dogfooding my glorified todo app Mute Swan for weeks thinking it was perfect (bug-free) and quite possibly a game changer, if I dare say. As it turns out these things are not so easy to test. This week I […]