Organising my cross-stitch patterns: alexwlchan.net/2026/cross-s... I kept losing digital cross-stitch patterns on my disk because they weren’t organised, so I created a local static website for them. (Was I going to do it any other way?)
Alex Chan
Abusing ID3 chapters to turn videos into glanceable podcasts: alexwlchan.net/2026/glancec... If you create hundreds of second-long chapters which have a video frame as cover art, you can get a video into an audio-only podcast player.
Why can’t you combine .tar.gz files with cat? alexwlchan.net/2026/cat-con... I wanted to combine some archives, so I had to understand the tar and gzip file formats. I learnt about tape drives, patent laws, and end-of-file markers.
Alex Chan reposted
I wrote about finding an SQLite bug for the Tailscale blog! I learnt so much from working on this series of incidents, and I’m proud of the outcome and the story we can finally tell. 🥰
We spent months tracking down a rare SQLite corruption bug. Working with SQLite’s core developers, we found it—then uncovered a second bug along the way. The story of the rare race condition we eventually caught: tailscale.com/blog/sqlite-...
I wrote about finding an SQLite bug for the Tailscale blog! I learnt so much from working on this series of incidents, and I’m proud of the outcome and the story we can finally tell. 🥰
We spent months tracking down a rare SQLite corruption bug. Working with SQLite’s core developers, we found it—then uncovered a second bug along the way. The story of the rare race condition we eventually caught: tailscale.com/blog/sqlite-...
Alex Chan reposted
Describing all my photos: alexwlchan.net/2026/describ... I wrote about a change to my photo reviewing workflow: I now write a description for every photo I’m keeping. A sentence or two of context goes a long way to cementing the memory, so I remember more when I look back on the photo.
Describing all my photos: alexwlchan.net/2026/describ... I wrote about a change to my photo reviewing workflow: I now write a description for every photo I’m keeping. A sentence or two of context goes a long way to cementing the memory, so I remember more when I look back on the photo.
Alex Chan reposted
I don’t want to repeat repeat myself: alexwlchan.net/2026/repeati... I wrote about these two regular expressions: \b([A-Za-z]+) \1\b \b([A-Za-z]+ [A-Za-z]+) \1\b They helped me find a bunch of mistakes where I had repeated words or phrases. Try them in your writing and code today!
I don’t want to repeat repeat myself: alexwlchan.net/2026/repeati... I wrote about these two regular expressions: \b([A-Za-z]+) \1\b \b([A-Za-z]+ [A-Za-z]+) \1\b They helped me find a bunch of mistakes where I had repeated words or phrases. Try them in your writing and code today!
Alex Chan reposted
Rebuilding the computer room: alexwlchan.net/2026/compute... I wrote some thoughts on how computers have become a ubiquitous physical presence in our lives, and trying to reintroduce a dedicated space so my digital devices can’t always get to me.
Rebuilding the computer room: alexwlchan.net/2026/compute... I wrote some thoughts on how computers have become a ubiquitous physical presence in our lives, and trying to reintroduce a dedicated space so my digital devices can’t always get to me.
Alex Chan reposted
Using the Screen Capture API to record a browser window: alexwlchan.net/2026/record-... In which web tech continues to be amazing, and I use it to record a fun animation (with audio!) from the Lego website.
Using the Screen Capture API to record a browser window: alexwlchan.net/2026/record-... In which web tech continues to be amazing, and I use it to record a fun animation (with audio!) from the Lego website.
Using Pytester to test my Playwright fixtures: alexwlchan.net/2026/pytester/ I wrote about using the Pytester plugin to make sure my fixtures and test helpers are doing the right thing. Just because code is in your test suite, it’s not immune to bugs!
Rendering a chat thread in CSS and JavaScript: alexwlchan.net/2026/css-chat/ I want to add text conversation to my scrapbook of social media, so I needed to render text bubbles in a web browser. It was tricky but I got it working. Modern web tech is amazing! 💬 💬 💬
Watching for file changes on macOS: alexwlchan.net/2026/watch-f... I wrote about my new Swift/Python scripts to get notified of file changes… without using third-party dependencies.
Waiting for website changes in the browser: alexwlchan.net/2026/liverel... Once my server knows that files have changed, how do I reload open pages in my browser? With HTTP long polling and a dash of JavaScript.
Alex Chan reposted
Watching for file changes on macOS: alexwlchan.net/2026/watch-f... I wrote about my new Swift/Python scripts to get notified of file changes… without using third-party dependencies.
Using Playwright to test my static sites: alexwlchan.net/2026/playwri... I wrote about how I’m using Playwright to test my static websites from Python, the pytest fixtures I use, and a bunch of example assertions.
Building a basic cache with SQLite: alexwlchan.net/2026/sqlite-... I wrote about how I’m using a simple key-value lookup to cache expensive operations and dramatically speed up working on my website.
Alex Chan reposted
HTTP GET requests with the Python standard library: alexwlchan.net/2026/python-... For my local scripts I only need a handful of HTTP requests at a time, so I can do everything I want with a lightweight wrapper around urllib.request. Fewer dependencies FTW. 🥰
HTTP GET requests with the Python standard library: alexwlchan.net/2026/python-... For my local scripts I only need a handful of HTTP requests at a time, so I can do everything I want with a lightweight wrapper around urllib.request. Fewer dependencies FTW. 🥰
Alex Chan reposted
Auditing my local Python packages: alexwlchan.net/2026/python-... Recent supply chain attacks have me wondering “what Python packages do I have installed” – and virtual environments make that harder. I’ve started keeping a list of my environments so I can see exactly what’s installed, and where.
Auditing my local Python packages: alexwlchan.net/2026/python-... Recent supply chain attacks have me wondering “what Python packages do I have installed” – and virtual environments make that harder. I’ve started keeping a list of my environments so I can see exactly what’s installed, and where.
Alex Chan reposted
Creating a personalised bin calendar: alexwlchan.net/2026/bin-cal... I wrote a quick post about how I create my a fridge calendar that tells me about bin day. Python stdlib + CSS = 🚮 💚
Creating a personalised bin calendar: alexwlchan.net/2026/bin-cal... I wrote a quick post about how I create my a fridge calendar that tells me about bin day. Python stdlib + CSS = 🚮 💚
Alex Chan reposted
Some highlights and reflections from this year’s #monkigras “Prepping Craft” alexwlchan.net/2026/monki-g... Resisting ICE; stories of self-discovery; learning to be a parent of a trans child. So much fun; bring on 2027!
Some highlights and reflections from this year’s #monkigras “Prepping Craft” alexwlchan.net/2026/monki-g... Resisting ICE; stories of self-discovery; learning to be a parent of a trans child. So much fun; bring on 2027!
Alex Chan reposted
The selfish case for public libraries: alexwlchan.net/2026/selfish... I wrote about why I love and use public libraries, and how they help me be a better reader.
@grimalkina.bsky.social I don’t think you’re at Monki Gras today (if I’ve missed you around, sorry!), but your presence is being felt! Your work has received glowing mentions in two talks already, and it’s not even lunch ☺️
The selfish case for public libraries: alexwlchan.net/2026/selfish... I wrote about why I love and use public libraries, and how they help me be a better reader.
Dreaming of a ten-year computer: alexwlchan.net/2026/ten-yea... I wrote about my current Mac mini, and why I’m trying to make it last for at least decade – modern machines are so powerful, and this should be more than enough computer for me for a long time.
@jonnelledge.bsky.social Spotted in a bookshop next to London Bridge yesterday!
The bare minimum for syncing Git repos: alexwlchan.net/2026/bare-gi... I’m trying to reduce my dependency on GitHub and cloud services, and it turns out that in plenty of cases, syncing Git with a local folder is plenty good enough for my repos.
Alex Chan reposted
The Good, the Bad, and the Gutters: alexwlchan.net/2026/movie-p... In which I show you some cool CSS features like Grid layout and text-wrap: balance, explain it in a step-by-step guide to help myself learn, and have far too much fun with my placeholder data.
The Good, the Bad, and the Gutters: alexwlchan.net/2026/movie-p... In which I show you some cool CSS features like Grid layout and text-wrap: balance, explain it in a step-by-step guide to help myself learn, and have far too much fun with my placeholder data.
Using perceptual distance to create better headers: alexwlchan.net/2026/percept... I wrote about perceptually uniform colour spaces and how I’m using them to make nicer-looking header images for my blog.
Alex Chan reposted
I wrote about some of my personal security posture on my blog today: Where I store my multi-factor recovery codes: alexwlchan.net/2026/recover... The passwords I actually memorise: alexwlchan.net/2026/memoris...
I wrote about some of my personal security posture on my blog today: Where I store my multi-factor recovery codes: alexwlchan.net/2026/recover... The passwords I actually memorise: alexwlchan.net/2026/memoris...
My favourite books from 2025: alexwlchan.net/2025/2025-in... In what’s now become a fun end-of-year tradition, I wrote about some of the books I enjoyed reading this year. Maybe something for your TBR pile in 2026? ☺️
Ignore AI upscaled YouTube videos with yt-dlp: alexwlchan.net/til/2025/ign... YouTube have started upscaling videos using AI. If you don’t want to download those versions, you can skip them by passing a --format option to yt-dlp. (But I know Bluesky loves AI so I’m sure nobody wants this… 😘)
Alex Chan reposted
Drawing Truchet tiles in SVG: alexwlchan.net/2025/truchet... I had some fun writing parametric templates to create Truchet tiles and drawing pretty pictures, even if I’m not sure what to use them for. 🤔
Drawing Truchet tiles in SVG: alexwlchan.net/2025/truchet... I had some fun writing parametric templates to create Truchet tiles and drawing pretty pictures, even if I’m not sure what to use them for. 🤔
Alex Chan reposted
The palm tree that lead to Palmyra: alexwlchan.net/2025/palmyre... I wrote a bit about a historical alphabet I’d never heard of, which I found while looking for the 🌴 emoji.
The palm tree that lead to Palmyra: alexwlchan.net/2025/palmyre... I wrote a bit about a historical alphabet I’d never heard of, which I found while looking for the 🌴 emoji.
Alex Chan reposted
Replying to @alexwlchan.net
Meeting my younger self: alexwlchan.net/2025/meeting... Rounding out this week’s trilogy on social media archiving, I looked back on 150,000 posts I’d saved from a decade of social media. Some fond memories I want to keep; some regrets and mistakes I’d rather forget.
Alex Chan reposted
Replying to @alexwlchan.net
Hard problems in social media archiving: alexwlchan.net/2025/hard-pr... I wrote about what I see as the key challenges to social media archiving in institutions – choosing what to save, the ethics of saving it, and searching what you’ve saved.