Highly Predictable Interactions


3 playing cards on a table.

I remember the first time as an adult I ordered a takeaway. I picked up the phone, menu in hand, and prepared to do battle. The person on the other end of the phone didn't speak English, my menu was out of date, they couldn't understand my address, and I didn't have the right money […]

Continue reading →

Using a CSS cursor to show the external link's favicon


A link with the Google logo hovering over it.

How do you know where this link goes to? If you're on a desktop, you might notice that hovering your mouse over it displays the destination somewhere on your screen. If you're a geek, you could view the source-code of a page. Can we improve the experience for users? Here's an attempt. Try hovering your […]

Continue reading →

Review: The Cheapest USB-C Headphones I Could Find


A cheap and flimsy pair of slightly purple headphones.

Ever since phone manufacturers killed off the headphone jack, there has been an epidemic of people blasting sounds from their shitty speakers in public. Music, TikTok, phone calls - it seems some people want the whole world to share their sonic experience. Forget that noise! I have a passive-aggressive death-wish and want to hand out […]

Continue reading →

Adventures with ultra-cheap ZigBee lightbulbs


3 light bulbs. One is red, one green, one blue.

The people who built my kitchen were idiots. They designed it to be lit with a dozen recessed GU10 spotlights. That's not so terrible - GU10 LED bulbs are only about £1 each - but because I am a bigger idiot, I decided I wanted remote-controlled bulbs. And ZigBee bulbs are expensive! Five years ago, […]

Continue reading →

Opening Compact File Set (CFS) files in Linux


Unix is user-friendly — it's just choosy about who its friends are.

I was sent some medical images in a password-protected CFS file. Here's how to open them in Linux. You can't. OK, that's a bit of an exaggeration. It's complex, but here's how to do it. The Linux software for the Compact File Set hasn't been updated in years and only works with ancient versions of […]

Continue reading →

Theatre Review: Coriolanus at the National Theatre


David Oyelowo, shirtless and swinging a sword. Photo by Misan Harriman.

What is the city but the people? What indeed? David Oyelowo is a powerhouse. His Coriolanus is a shitheel teetering somewhere between Trump and Mugabe. He isn't a noble character with a fatal flaw; his flaws are his character. The citizens celebrate him, turn on him, fear him. It isn't about power corrupting, it's about […]

Continue reading →

Movie Review: Humanist Vampire Seeking Consenting Suicidal Person


Movie poster. A young girl drinks from a bag of blood.

There are some movies - like Snakes On A Plane - where the title simultaneously tells you the whole plot and compels you to watch it. Similarly, how can you resist something called "Vampire humaniste cherche suicidaire consentant"? Like the darkest of chocolates, the bitterness only accentuates the tender sweetness of the protagonist. A young […]

Continue reading →

WordPress - Sic Transit Gloria Mundi


The Logo for WordPress.

Why do so many vastly-wealthy tech personalities go mad? My ideal job involves being employed by a millionaire tech-bro. Just before they get on stage, or moments before they file a lawsuit, or an instant before they publish their thought leadership - I will appear to them. I will be dressed in rags, body smeared […]

Continue reading →

You can use text-wrap: balance; on icons


The HTML5 Logo.

A fun little CSS experiment! There's a new(ish) feature in CSS which allows you to set the way text is wrapped. Ordinarily, a long line of text might be split at an inopportune time. For example: This very long headline ends with a single word Having a dangling word doesn't always look great. Using text-wrap:balance […]

Continue reading →

Book Review: The Appeal - Janice Hallett


Book cover featuring a woodcut of a village.

I was 25% of the way through reading this when I purchased the sequel. It is an utterly compelling murder mystery - not least because the death doesn't occur until well after the halfway point. Who dies? Why? Who did it? Why?! With every paragraph I felt myself trying to decipher the characters' motives. A […]

Continue reading →