alexwlchan
Abusing ID3 chapters to turn videos into glanceable podcasts
I listen to a lot of podcasts, and I like how they fit around other tasks. I press play, lock my...
2 days ago
I listen to a lot of podcasts, and I like how they fit around other tasks. I press play, lock my phone, and put it down.
I’m free to wash the dishes, fold the laundry, or shop for groceries.
Unfortunately, more and more information is only published as a video. Technical talks,...
alexwlchan
How Tailscale tracked down a 16-year-old SQLite bug →
I wrote a post for the Tailscale blog about a long-running series of corruption incidents, and how...
13th Aug 2026
I wrote a post for the Tailscale blog about a long-running series of corruption incidents, and how they eventually led us to find an SQLite bug that predates my entire programming career.
I’m incredibly proud of this, both the work and the blog post.
Before Tailscale, I was...
alexwlchan
I don’t want to repeat repeat myself
Yesterday at work, a customer spotted a typo in our UI: “you can use the use the Tailscale...
3rd Jul 2026
Yesterday at work, a customer spotted a typo in our UI: “you can use the use the Tailscale CLI”.
After the typo was fixed, I wanted to find other cases of accidentally repeated words or phrases.
I used two regular expressions to search every codebase for unnecessary...
alexwlchan
Using Pytester to test my Playwright fixtures
A month ago, I wrote about my Playwright fixture for testing static websites in a browser.
I’ve been...
5th Jun 2026
A month ago, I wrote about my Playwright fixture for testing static websites in a browser.
I’ve been copying that fixture from project-to-project, but recently I decided to add it to chives, the utility library I use for all my static websites (or tiny archives).
One of my rules...
alexwlchan
Using Playwright to test my static sites
I build a lot of static websites – including this site and all of my local media archives – and I...
2nd May 2026
I build a lot of static websites – including this site and all of my local media archives – and I want to test them.
Most of my pages are static HTML and I can write automated tests that analyse the HTML, but for more complex sites I have JavaScript that runs in the browser and...
alexwlchan
Quietly quantum-resistant blogging
Among the other fun news recently, two papers were published that suggest quantum computers capable...
9th Apr 2026
Among the other fun news recently, two papers were published that suggest quantum computers capable of breaking classical public-key cryptography algorithms are much closer than previously believed.
What was thought to be years away might now be months.
I found Filippo Valsorda’s...
alexwlchan
Gumdrop, a silly app for messing with my webcam
During the COVID lockdowns, I spent long evenings at home on my own, and I amused myself by dressing...
5th Mar 2026
During the COVID lockdowns, I spent long evenings at home on my own, and I amused myself by dressing up in extravagant and glamorous clothing.
One dark night, I realised I could use my home working setup to have some fun, with just a webcam and a monitor.
I turned off every light...
alexwlchan
Creating Caddyfiles with Cog
I’m currently restructuring my site, and I’m going to change some of the URLs.
I don’t want to break...
5th Feb 2026
I’m currently restructuring my site, and I’m going to change some of the URLs.
I don’t want to break inbound links to the old URLs, so I’m creating redirects between old and new.
My current web server is Caddy, so I define redirects in my Caddyfile with the redir...
alexwlchan
Quick-and-dirty print debugging in Go
I’ve been writing a lot of Go in my new job, and trying to understand a new codebase.
When I’m...
8th Jan 2026
I’ve been writing a lot of Go in my new job, and trying to understand a new codebase.
When I’m reading unfamiliar code, I like to use print debugging to follow what’s happening.
I print what branches I’m in, the value of different variables, which functions are being called, and...
alexwlchan
When square pixels aren’t square
When I embed videos in web pages, I specify an aspect ratio.
For example, if my video is 1920 × 1080...
5th Dec 2025
When I embed videos in web pages, I specify an aspect ratio.
For example, if my video is 1920 × 1080 pixels, I’d write:
<video style="aspect-ratio: 1920 / 1080">
If I also set a width or a height, the browser now knows exactly how much space this video will take up on the page –...