Using phpList for a blog's newsletter


RSS Settings Screen.

Some people like to receive this blog via email. I previously used JetPack to send out subscriber messages - but it became increasingly clear that Automattic isn't a good steward of such things. I couldn't find any services which would let me send a few thousand subscribers a few emails per week, at zero cost. So, redecentralise! I installed phpList which is an open source email campaign tool. My webhost - Krystal - had a one-click install option. But, phpList isn't quite one-click for…

Continue reading →

Is this a bug in every Markdown (Extra) parser?


The Markdown logo.

Markdown is, I think it is fair to say, a frustrating "specification". It's origins are a back-of-a-fag-packet document and a buggy Perl script - and we've been dealing with the consequences ever since. There are now multiple Markdown parsers, each with their own idiosyncrasies. To make matters worse, there's a set of extensions popularly known as "Markdown Extra". Extra has support for things like tables, footnotes, and - in some dialects - autolinks. Most of the time, when an author writes …

Continue reading →

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 when they finally delivered. Stressful, annoying, and - until relatively recently - commonplace. When services like Just-Eat and Deliveroo came in, I suddenly was a lot happier ordering from local restaurants.…

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 cursor over this link to a popular website. This is what it should look like: Here's how it works. Cursor Styles CSS allows us to change the icon displayed by a cursor. There are dozens …

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 free headphones to people annoying me on public transport. Time for our-lord-and-saviour USB-C! With Apple finally succumbing to the inevitable it should be…

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, feeling flush with cash, I replaced all the bulbs with a mixture of Hue and Innr Smart bulbs. Last week, two of the bulbs died. No explosions or release of magic smoke - they just became …

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 Linux. Here's how to temporarily install an old version, install the software, and then liberate your files. Install VirtualBox or your favourite Virtual Machine. Install Ubuntu 18.04.6 LTS…

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 venal people abusing power structures. There are persistent theories about the authorship of Shakespeare's plays. My personal favourite is that, in the absence of extant…

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 female vampire who suffers from what can only be described as Dental Impotence. Her family take drastic steps to help her "come of age", but to no avail. …

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 with excrement, weeping sores blotching my face. I will sidle up to them, lean down, and whisper into their ear "Sic Transit Gloria Mundi!" This used to be the way, of course. When a …

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 would give us something like: This very long headline ends with balanced lines Hurrah! But the name is, I think, slightly misleading. It doesn't only work on text. It will…

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 murder mystery set in an amateur dramatics society is a bit Simon Brett but this has much more bite. The premise is that we are reading through the evidence in a legal case. All we see…

Continue reading →