Alex Chan
@alexwlchan.net
📤 380
📥 47
📝 315
reposted by
Alex Chan
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 = 🚮 💚
loading . . .
Creating a personalised bin calendar
Every year I use Python and a bit of CSS to create a fridge calendar that tells me about bin day.
https://alexwlchan.net/2026/bin-calendar/
2 days ago
0
5
2
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 = 🚮 💚
loading . . .
Creating a personalised bin calendar
Every year I use Python and a bit of CSS to create a fridge calendar that tells me about bin day.
https://alexwlchan.net/2026/bin-calendar/
2 days ago
0
5
2
reposted by
Alex Chan
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!
loading . . .
Monki Gras 2026 “Prepping Craft”
When safety and normality are slipping away, how do we make our code, our communities, and our lives truly resilient?
https://alexwlchan.net/2026/monki-gras-2026/
6 days ago
0
1
1
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!
loading . . .
Monki Gras 2026 “Prepping Craft”
When safety and normality are slipping away, how do we make our code, our communities, and our lives truly resilient?
https://alexwlchan.net/2026/monki-gras-2026/
6 days ago
0
1
1
reposted by
Alex Chan
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.
10 days ago
0
0
1
@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 ☺️
10 days ago
1
5
1
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.
10 days ago
0
0
1
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.
loading . . .
Dreaming of a ten-year computer
Modern computers are more powerful than I know what to do with, but the norm is still to upgrade every few years. I want my current computer to last a decade, and I don't think that's unreasonable.
https://alexwlchan.net/2026/ten-year-computer/
17 days ago
1
1
0
@jonnelledge.bsky.social
Spotted in a bookshop next to London Bridge yesterday!
about 1 month ago
0
9
1
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.
about 1 month ago
0
0
0
reposted by
Alex Chan
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.
loading . . .
The Good, the Bad, and the Gutters
A step-by-step guide to a movie poster grid that uses CSS Grid, text-wrap balanced titles, and dynamic hover states.
https://alexwlchan.net/2026/movie-poster-grid/
2 months ago
0
1
1
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.
loading . . .
The Good, the Bad, and the Gutters
A step-by-step guide to a movie poster grid that uses CSS Grid, text-wrap balanced titles, and dynamic hover states.
https://alexwlchan.net/2026/movie-poster-grid/
2 months ago
0
1
1
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.
loading . . .
Using perceptual distance to create better headers
I started picking colours for my site headers with a more perceptually uniform approach, so their colours look more correct to the human eye.
https://alexwlchan.net/2026/perceptual-colour-headers?ref=bluesky&t=1
3 months ago
0
1
0
reposted by
Alex Chan
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...
3 months ago
0
5
1
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...
3 months ago
0
5
1
I’d love to read a story about the security implications of bringing boatloads of explosives into central London, then setting them off on purpose. 🎆🎇
3 months ago
1
1
0
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? ☺️
loading . . .
My favourite books from 2025
Sapphics and spies, butlers and basketball, prophecy and purpose – what I enjoyed reading this year.
https://alexwlchan.net/2025/2025-in-reading/?ref=bluesky&t=1
3 months ago
0
5
0
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… 😘)
loading . . .
Ignore AI upscaled YouTube videos with yt-dlp
Filter for formats that don't include `-sr` ("super resolution") in their format ID.
https://alexwlchan.net/til/2025/ignore-ai-scaled-videos/?ref=bluesky
3 months ago
0
20
5
reposted by
Alex Chan
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. 🤔
loading . . .
Drawing Truchet tiles in SVG
Using parametric templates to draw Truchet tiles, then placing them randomly to create generative patterns.
https://alexwlchan.net/2025/truchet-tiles/
3 months ago
1
2
2
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. 🤔
loading . . .
Drawing Truchet tiles in SVG
Using parametric templates to draw Truchet tiles, then placing them randomly to create generative patterns.
https://alexwlchan.net/2025/truchet-tiles/
3 months ago
1
2
2
reposted by
Alex Chan
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.
loading . . .
The palm tree that lead to Palmyra
Palmyrene is an alphabet that was used to write Aramaic in 300–100 BCE, and I learnt about it while looking for a palm tree emoji.
https://alexwlchan.net/2025/palmyrene-alphabet/
3 months ago
0
1
1
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.
loading . . .
The palm tree that lead to Palmyra
Palmyrene is an alphabet that was used to write Aramaic in 300–100 BCE, and I learnt about it while looking for a palm tree emoji.
https://alexwlchan.net/2025/palmyrene-alphabet/
3 months ago
0
1
1
reposted by
Alex Chan
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.
loading . . .
Meeting my younger self
I reviewed 150,000 fragments of my online life, and I was reminded of the friends I found, the mistakes I made, and the growth I gained.
https://alexwlchan.net/2025/meeting-my-younger-self/
4 months ago
0
3
2
reposted by
Alex Chan
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.
loading . . .
Hard problems in social media archiving
Preserving social media is easier said than done. What makes it so difficult for institutions to back up the Internet?
https://alexwlchan.net/2025/hard-problems-in-social-media-archiving/
4 months ago
1
8
4
reposted by
Alex Chan
The Internet forgets, but I don’t want to:
alexwlchan.net/2025/social-...
I don’t trust platforms to preserve my memories, so I built my own scrapbook of social media. I wrote about what the scrapbook is, how it works, and some of the inspirations and influences.
loading . . .
The Internet forgets, but I don’t want to
I don't trust platforms to preserve my memories, so I built my own scrapbook of social media.
https://alexwlchan.net/2025/social-media-scrapbook/
4 months ago
1
5
4
The Internet forgets, but I don’t want to:
alexwlchan.net/2025/social-...
I don’t trust platforms to preserve my memories, so I built my own scrapbook of social media. I wrote about what the scrapbook is, how it works, and some of the inspirations and influences.
loading . . .
The Internet forgets, but I don’t want to
I don't trust platforms to preserve my memories, so I built my own scrapbook of social media.
https://alexwlchan.net/2025/social-media-scrapbook/
4 months ago
1
5
4
When square pixels aren’t square:
alexwlchan.net/2025/square-...
I wrote about a recent bug where my videos weren’t displaying properly, because I was looking at the storage aspect ratio – not the display aspect ratio.
loading . . .
When square pixels aren’t square
When you want to get the dimensions of a video file, you probably want the display aspect ratio. Using the dimensions of a stored frame may result in a stretched or squashed video.
https://alexwlchan.net/2025/square-pixels/?ref=bluesky
4 months ago
0
3
0
reposted by
Alex Chan
Can you take an ox to Oxford?
alexwlchan.net/2025/ox-in-o...
I decided to work out exactly when you need to pay Oxford’s new congestion charge.
loading . . .
Can you take an ox to Oxford?
Let's work out exactly when you need to pay Oxford's new congestion charge.
https://alexwlchan.net/2025/ox-in-oxford/?ref=bluesky&t=1
4 months ago
2
3
4
@oldenoughtosay.com
i found more things to procrastinate on
add a skeleton here at some point
4 months ago
0
0
0
Can you take an ox to Oxford?
alexwlchan.net/2025/ox-in-o...
I decided to work out exactly when you need to pay Oxford’s new congestion charge.
loading . . .
Can you take an ox to Oxford?
Let's work out exactly when you need to pay Oxford's new congestion charge.
https://alexwlchan.net/2025/ox-in-oxford/?ref=bluesky&t=1
4 months ago
2
3
4
reposted by
Alex Chan
Cleaning up messy dates in JSON:
alexwlchan.net/2025/messy-d...
I’ve been cleaning up some messy data, and it includes timestamps written by a variety of humans and machines, which don’t use a consistent format. I wrote a Python script to help me clean things up.
4 months ago
1
1
1
Cleaning up messy dates in JSON:
alexwlchan.net/2025/messy-d...
I’ve been cleaning up some messy data, and it includes timestamps written by a variety of humans and machines, which don’t use a consistent format. I wrote a Python script to help me clean things up.
4 months ago
1
1
1
Detecting AV1-encoded videos with Python:
alexwlchan.net/2025/detecti...
I wrote a Python test to find videos that are encoded with AV1, so I can convert them to a codec my iPhone can play.
5 months ago
1
3
0
Why can’t my iPhone play that video?
alexwlchan.net/2025/av1-on-...
I wrote about a recent issue playing a video on my iPhone, the AV1 codec that caused the problem, and some web APIs I learnt while debugging.
loading . . .
Why can’t my iPhone play that video?
The answer involves the AV1 video codec, Apple's chips, and several new web APIs I learnt along the way.
https://alexwlchan.net/2025/av1-on-my-iphone/
5 months ago
0
4
0
Doing my own syntax highlighting (finally):
alexwlchan.net/2025/syntax-...
I’ve redesigned the syntax highlighting on my blog to use a smaller colour palette, so I wrote a bit about what I’ve changed, how it works, and why I think it’s better.
loading . . .
Doing my own syntax highlighting (finally)
I've redesigned my syntax highlighting scheme to use a smaller colour palette. Here's what I've changed, how it works, and why I think it's better.
https://alexwlchan.net/2025/syntax-highlighting/?ref=bluesky
5 months ago
0
11
6
Creating a personal wrapper around yt-dlp:
alexwlchan.net/2025/yt-dlp-...
I’ve written a new script which calls yt-dlp with my preferred options, so I don’t have to copy my configuration across different projects.
6 months ago
1
3
0
@jonnelledge.bsky.social
Spotted in St Pancras Waterstones 👀
6 months ago
1
2
0
@anildash.com
I thought of you as I read this article; it’s a UK version of an idea I know you’ve had:
takes.jamesomalley.co.uk/p/starmer-co...
(Unless I’m misremembering, in which case sorry!)
loading . . .
Starmer shouldn't give a conference speech – he should give an Apple-style keynote
The format is tired and it is time to think different.
https://takes.jamesomalley.co.uk/p/starmer-conference-keynote
6 months ago
1
4
0
Linking to text fragments with a bookmarklet:
alexwlchan.net/2025/text-fr...
I’ve written a bookmarklet that lets me link to specific text on a web page.
7 months ago
0
1
0
@garius.bsky.social
I vaguely remember reading one of your threads where you said somebody like “so-and-so had no experience, and by the end of the night, nobody who witnessed their actions would believe it” – but I’m struggling to find it. Any chance you remember what I’m talking about?
7 months ago
1
1
0
reposted by
Alex Chan
Resizing images in Rust – now with EXIF orientation support:
alexwlchan.net/2025/create-...
I wrote about a new version of Rust’s image crate, which adds support for EXIF orientation. Now I can resize images without mangling their rotation. 🥳
loading . . .
Resizing images in Rust – now with EXIF orientation support
A new version of Rust's image crate has support for EXIF orientation, which allows me to resize images without mangling their rotation.
https://alexwlchan.net/2025/create-thumbnail-is-exif-aware/?ref=mastodon
7 months ago
0
2
1
Resizing images in Rust – now with EXIF orientation support:
alexwlchan.net/2025/create-...
I wrote about a new version of Rust’s image crate, which adds support for EXIF orientation. Now I can resize images without mangling their rotation. 🥳
loading . . .
Resizing images in Rust – now with EXIF orientation support
A new version of Rust's image crate has support for EXIF orientation, which allows me to resize images without mangling their rotation.
https://alexwlchan.net/2025/create-thumbnail-is-exif-aware/?ref=mastodon
7 months ago
0
2
1
On a lighter note, I did some digging around the history of Morse code:
alexwlchan.net/til/2025/aro...
* The @ symbol was added in 2004 * It’s probably the first symbol since WWII * It has a delightful name in French * Punctuation in Morse code has some surprising other omissions
7 months ago
1
4
0
Using vcrpy to test HTTP interactions in Python:
alexwlchan.net/2025/testing...
How I record HTTP requests to get fast, reliable, and consistent tests, and the patterns I use in a production codebase. 📼
loading . . .
Using vcrpy to test HTTP interactions in Python
How I record HTTP requests to get fast, reliable, and consistent tests, and the patterns I use in a production codebase.
https://alexwlchan.net/2025/testing-with-vcrpy/
7 months ago
0
2
0
reposted by
Alex Chan
Create space-saving clones on macOS with Python:
alexwlchan.net/2025/cloning...
I talk a bit about what space-saving clones are, and why they’re important, then describe two ways to create them in Python: 1. Shelling out to `cp` with subprocess, or 2. Making a syscall using `ctypes`
loading . . .
Create space-saving clones on macOS with Python
You can shell out to `cp -c` using `subprocess`, or you can make a `clonefile()` syscall using the `ctypes` library.
https://alexwlchan.net/2025/cloning-with-python/
8 months ago
0
2
1
Create space-saving clones on macOS with Python:
alexwlchan.net/2025/cloning...
I talk a bit about what space-saving clones are, and why they’re important, then describe two ways to create them in Python: 1. Shelling out to `cp` with subprocess, or 2. Making a syscall using `ctypes`
loading . . .
Create space-saving clones on macOS with Python
You can shell out to `cp -c` using `subprocess`, or you can make a `clonefile()` syscall using the `ctypes` library.
https://alexwlchan.net/2025/cloning-with-python/
8 months ago
0
2
1
Slipstitch, Queer Craft, and community spaces:
alexwlchan.net/2025/slipsti...
I wrote about the closing of my favourite yarn shop, what the fortnightly crafting meet-up meant to me, and why I’m a bit sad at how many spaces like this are disappearing.
loading . . .
Slipstitch, Queer Craft, and community spaces
Remembering Slipstitch, a queer-friendly yarn shop and the fortnightly crafting meet-ups that were a highlight of my week.
https://alexwlchan.net/2025/slipstitch/
8 months ago
0
0
0
A bit of personal news: today was my last day at the Flickr Foundation. I’m very proud of what I did there, but now it’s time for something new – with a break first! More here:
alexwlchan.net/2025/leaving...
8 months ago
0
10
0
I was unpacking new laundry pods this evening, and I saw a scary warning: “If swallowed immediately contact a POISON CENTER/doctor.” which led me down a rather interesting (if morbid!) rabbit hole about poison centres, something I’ve not come across in the UK:
alexwlchan.net/til/2025/poi...
9 months ago
1
0
0
reposted by
Alex Chan
Recreating a bird animation:
alexwlchan.net/2025/swift-b...
I learnt a bunch about animation on the web by reading the
Swift.org
source code, like: ✨ Using a dash pattern to draw partial paths ✨ HTML5 Canvas and globalCompositeOperation ✨ Anime.js ✨ MutationObserver ✨ prefers-reduce-motion: reduce
loading . . .
10 months ago
0
1
1
Load more
feeds!
log in