Flash games in 2026, courtesy of Ruffle
Vendoring a Ruffle build into a Nuxt site so a pile of old SWF files still run, and being honest about the pages that do not
vohzd.comVendoring a Ruffle build into a Nuxt site so a pile of old SWF files still run, and being honest about the pages that do not
Porting a UT99 package parser to TypeScript so you can drop a .unr or .utx on a page and see the names, exports, textures and sounds inside
Importing the bash.org IRC quote dump into SQLite, indexing it with an FTS5 virtual table, and putting bm25 ranked search and a pager on top
How I built a client-side Last.fm scrobble exporter with rate limiting, cancellation, CSV export, and a security review
Diving into Firefox's C++ source to find out why navigating away from a Web Audio page freezes for 5-10 seconds on Linux
A quick look at why Bun is brilliant and how to get it running
How replacing hardcoded pixel values with a spacing scale made my site's layout more consistent and easier to maintain
Setting up Ubuntu Server on a Beelink mini PC, covering LVM, SSH hardening, Podman, and the bits nobody tells you
How to set up Pi-hole on a Raspberry Pi and make your entire network ad-free
How to handle large file uploads with Uppy and S3 multipart without blowing your server's RAM
Using yt-dlp to download audio and video from YouTube with all the metadata
How to get automated Docker deployments via GitHub for a fraction of the cost of Heroku
Get your Docker container live on a VPS behind Nginx
How to provision a fresh VPS, install Nginx, and get HTTPS working with Certbot
How to build a Docker image from a basic Express app and push it to Docker Hub