The tooth, the whole tooth, and nothing but the tooth

You know that ice-breaker game "Two Truths And A Lie"? When I'm forced into some mandatory office fun, I always say... I've sat in the seat of a space shuttle. I still have two of my baby teeth. I used to be a voice-over artist. Well, one of those truths is about to come crashing … | Continue reading


@shkspr.mobi | 1 month ago

Theatre Review: Murder Trial Tonight II - Aldwych Theatre ★★☆☆☆

Overwrought melodrama in London's most uncomfortable theatre. This show has been done countless times before. You, the audience, watch extracts from a murder trial. At the end, you vote on whether she done it or not. It feels more suited to a Channel 5 show which asks punters to … | Continue reading


@shkspr.mobi | 1 month ago

.well-known/avatar

Hot on the heels of a post I wrote 4 years ago, wouldn't it be useful to have a well-known URl for user avatar images? When I sign up to a web service, I don't want to faff around uploading an image to use as my avatar. I want that service to look at my […] | Continue reading


@shkspr.mobi | 1 month ago

Review: Ross Noble's Jibber Jabber Jamboree ★★★★★

"This is a show which rewards punctuality!" Thus spake Ross - they only comedian I know of who can successfully heckle his own audience, chastise himself for doing so, go on a twenty-minute segue about cancer-sniffing dogs, and then return (more-or-less) to where he started. It i … | Continue reading


@shkspr.mobi | 1 month ago

How updates work in ActivityPub / Mastodon

I didn't realise this, so I'm documenting it to stop other people making the same silly mistake that I did. Messages in ActivityPub have two distinct ID strings. Here's a (truncated) view of what happens when I send a new message on Mastodon: "id": "https://mastodon.social/users/ … | Continue reading


@shkspr.mobi | 1 month ago

I made a mistake in verifying HTTP Message Signatures

It's never great to find out you're wrong, but that's how learning and personal growth happens. HTTP Message Signatures are hard1. There are lots of complex parts and getting any aspect wrong means certain death2. In a previous post, I wrote A simple(ish) guide to verifying HTTP … | Continue reading


@shkspr.mobi | 1 month ago

Notes on installing GrapheneOS on a Pixel 8 Pro - some bugs & oddities

These are notes to myself - and anyone else who finds them useful. Before starting, I booted the Google OS to install the latest firmware and an eSIM. After a few days of enduring Google's naggy software, I was ready to commit to installing something better. I tried using the Web … | Continue reading


@shkspr.mobi | 1 month ago

Movie Review: Poor Things ★★★★★

Yes. Every single frame of this movie is a delight - even the closing titles. It is an explosion of outrageous colour, extravagant lenses, and delirious shots. Like an Escher woodcut electrified into life. I adored director Yorgos Lanthimos' earlier film The Lobster - this feel a … | Continue reading


@shkspr.mobi | 1 month ago

Can you trust ProtonApps.com?

I've recently signed up to the privacy-preserving service Proton. All the email, calendar, drive, VPN, and other services seem to hang off the proton.me domain. I wanted to download the Android apps to my phone - without using the Google Play Store. The VPN app is on F-Droid but … | Continue reading


@shkspr.mobi | 1 month ago

OpenBenches on the Volunteer Technologist Podcast

I was delighted to be interviewed by the Volunteer Technologist podcast about our OpenBenches project. Huge thanks to Gene Liverman for having me on. It is available, as they say, wherever you get your podcasts. | Continue reading


@shkspr.mobi | 1 month ago

The Force is Irrelevant in Star Wars

I've been watching the new 4K77 fan-releases of Star Wars (AKA - A New Hope). It is amazing seeing the graininess of the original picture and hearing just how lush the original stereo soundtrack is. There's even some good bonus content in terms of a long-lost LaserDisc commentary … | Continue reading


@shkspr.mobi | 1 month ago

Virgin Media preparing to offer symmetrical upload speeds?

Virgin Media - a UK-based fibre-optic ISP - recently sent me a survey about their potential product offerings. It was desperate to know if I wanted bundled streaming video (no), or Sky Sports (LOL no), or any other digital subscriptions (no, go away), or a landline (what, is this … | Continue reading


@shkspr.mobi | 1 month ago

Cheapest Possible eSIM in the UK

After railing against eSIM-only phones for over a decade, I've finally succumbed. It appears impossible to buy a modern phone without them. Thankfully, most seem to be dual-SIM. So I can have a regular SIM card and an eSIM. I find dual-SIM phones handy. I have a disposable number … | Continue reading


@shkspr.mobi | 2 months ago

M🞵A🞵S🞵H - De-Specialised Edition

A few years ago, classic TV comedy MASH, was remastered and released on streaming platforms. The picture quality was massively increased with just one minor flaw. They cropped the image to 16:9 widescreen This upset some fans. The thing about widescreen is that it chops off the … | Continue reading


@shkspr.mobi | 2 months ago

Review: Bill Bailey - Thoughtifier at the O2 ★★★★⯪

Bill's back! Fresh from winning some dance show on linear-TV and ready to... well, do the same thing as he's been doing for years. Rambling tales, dozens of instruments, innovative tech, and a charming whimsy - undercut with, perhaps, a little more darkness than usual. It is a cl … | Continue reading


@shkspr.mobi | 2 months ago

O2 UK's Weird MSISDN Lookup API

It's always fun keeping your network inspector tab open. While looking around the O2 UK website, I found this page all about eSIMs. For some reason, it wants to know the user's phone number. I put in a random number, and it refused to let me in. Putting in a genuine O2 number let … | Continue reading


@shkspr.mobi | 2 months ago

Updates to ActivityPub in a single PHP file

A few weeks ago, I built an ActivityPub Server in a Single PHP File. It's a proof of concept showing how easy it is to turn a website into a full-featured Fediverse participant. After a bunch of feedback and testing, I've added a some features to make it slightly more useful. A s … | Continue reading


@shkspr.mobi | 2 months ago

You can't photocopy this blogpost (abusing EURion in CSS)

Do you know about the EURion constellation? It is a pattern which is embedded into some modern banknotes and has a curious property. Most modern photocopiers will, if they detect the pattern, refuse to make a copy. Try it for yourself - stick a €20 note into your nearest Xerox ma … | Continue reading


@shkspr.mobi | 2 months ago

Movie Review: M*A*S*H ★★☆☆☆

After watching the First few series of the TV show "M*A*S*H", I thought I'd give the original movie a go. It isn't very good. Even if you ignore the rampant racism - and there is a lot of racism - you still have to content with the brutal misogyny - and it is toe-curlingly grim. … | Continue reading


@shkspr.mobi | 2 months ago

Gig Review: The Leo Green Orchestra perform The Rolling Stones at the London Palladium ★★★★☆

For the first time in its illustrious 114 year history, the historic London Palladium will host a monthly orchestral residency beginning in February 2024, which will see iconic artists’ music celebrated. This was an entertaining, but curious, gig. It isn't a tribute act - no sequ … | Continue reading


@shkspr.mobi | 2 months ago

FILE/DINK/DWZ/3+1 - a personal financial quadrumvirate

Brits hate talking about money. But this benefits no-one. This is my situation - it's probably different to yours. I'm acutely aware I'm in a better financial position than most. This isn't financial advice - but I'd sure appreciate anyone's thoughts. I've recently moved down to … | Continue reading


@shkspr.mobi | 2 months ago

A simple(ish) guide to verifying HTTP Message Signatures in PHP

Mastodon makes heavy use of HTTP Message Signatures. They're a newish almost-standard which allows a server to verify that a request made to it came from the person who sent it. This is a quick example to show how to verify these signatures using PHP. I don't claim that it covers … | Continue reading


@shkspr.mobi | 2 months ago

HTTP Signature Infinite Loop?

I'm trying to get my head round HTTP Signatures as they're used extensively in the Fediverse. Conceptually, they're relatively straightforward. You send me a normal HTTP request. For example, you want to POST something to https://example.com/data You send me these headers: POST / … | Continue reading


@shkspr.mobi | 2 months ago

Review: Matter-enabled Energy Monitoring Smart Plugs - Meross 315 ★★★★★

Matter is coming to fix all your smarthome woes! A single IoT standard, working across multiple radio protocols, bringing together different products from many different manufacturers. And… it works! Mostly These are the Meross 315 Smart Plugs. They are small(ish), cheap(ish), an … | Continue reading


@shkspr.mobi | 2 months ago

Review: An NFC reader/writer with USB-C - ACR1252U-MF ★★★★⯪

I needed to read and write NFC cards on Linux. I only buy USB-C peripherals now, so I found the brilliantly named "ACR1252U-MF" which appears to be the only USB-C reader on the market. Total cost was about £35 on eBay. It's a cheap and light plastic box with a short USB cord. Whe … | Continue reading


@shkspr.mobi | 2 months ago

Giving the finger to MFA - a review of the Z1 Encrypter Ring from Cybernetic ★★★★☆

I have mixed feelings about Multi-Factor Authentication. I get why it is necessary to rely on something which isn't a password but - let's be honest here - it is a pain juggling between SMS, TOTP apps, proprietary apps, and magic links. I'm also not a fan of PassKeys1. It feels w … | Continue reading


@shkspr.mobi | 2 months ago

Book Review: We Are Bellingcat - Eliot Higgins ★★★⯪☆

The problem with autobiographies is that every anecdote ends with "needless to say, I had the last laugh!" This corporate-autobiography is no different - as it details the rise and impact of Bellingcat - a team of investigators and journalists. I am in awe of Bellingcat - and hav … | Continue reading


@shkspr.mobi | 2 months ago

It's a process; not a product

Sometimes a client asks me a question and I'm a little stunned by their mental model of the world. A few weeks ago, we were discussing the need for better cybersecurity in their architecture. We spoke about several aspects of security, then they asked an outstanding question. "Wh … | Continue reading


@shkspr.mobi | 2 months ago

Minority Governments and the Boundary Commission

The UK is almost certain to have a General Election this year1. The Boundary Commission for England2 has reworked the existing Parliamentary constituencies to make them more fair3. As such, constituencies are generally more equal in terms of electorate. But, of course, geography … | Continue reading


@shkspr.mobi | 2 months ago

Drinking Champagne with the Secretary of State

This is a retropost. Written contemporaneously in February 2019, but published much later. My life is weird. Again. Looking out over London from the top floor. The Eye is glittering and the Palace of Westminster is glowing. Someone pours me a glass of (very expensive1) champagne, … | Continue reading


@shkspr.mobi | 2 months ago

ActivityPub Server in a Single PHP File

Any computer program can be designed to run from a single file if you architect it wrong enough! I wanted to create the simplest possible Fediverse server which can be used as an educational tool to show how ActivityPub / Mastodon works. The design goals were: Upload a single PHP … | Continue reading


@shkspr.mobi | 2 months ago

Internationalise The Fediverse

We live in the future now. It is OK to use Unicode everywhere. It seems bizarre to me that modern Internet services sometimes "forget" that there's a world outside the Anglosphere. Some people have the temerity to speak foreign languages! And some of those languages have accents … | Continue reading


@shkspr.mobi | 2 months ago

Are we 'appy about change?

Shortly before I left the Civil Service in 2023, I made a complete fool of myself. Someone on Slack was discussing their department's app and I (rather snidely) asked why it was an app rather than a website. After all, one of the seminal blog posts of GDS was about not building a … | Continue reading


@shkspr.mobi | 2 months ago

HOWTO: Sort BitWarden Passwords by Date

I highly recommend BitWarden as a password manager. It is free, open source, and has a great range of apps and APIs. The one thing it doesn't have is a way to sort your accounts by creation date. I now have over a thousand accounts that I've added - so I wanted to prune away […] | Continue reading


@shkspr.mobi | 2 months ago

VR Game Review: Moss ★★★★☆

It is impossible to describe just how cute this game is. Most VR games take place at "human scale" - you play as a human inside a building, or other human-sized space. But Moss lets you play as a mouse named Quill with you (the player) towering over her. You are a human literally … | Continue reading


@shkspr.mobi | 2 months ago

Book Review: Julia - Sandra Newman ★★★★★

The central schtick of this book is a cliché brilliantly delivered. Take a side-character from a beloved book and retell the story through their eyes. I only have hazy memories of reading 1984 - where Julia is little more than a femme fatale. This book is an explicit and visceral … | Continue reading


@shkspr.mobi | 2 months ago

There should only ever be one way to express yourself

I've been thinking about programming languages and their design. In her book about the divergence of the English and American languages, Lynne Murphy asks this question: wouldn’t it be great if language were logical and maximally efficient? If sentences had only as many syllables … | Continue reading


@shkspr.mobi | 2 months ago

Forget Technocrats - Let's Get Some Realitycrats

I don't really care about ideology and doctrine any more. I just care about what works. I'm going to take a few (somewhat controversial) subjects and explain what I mean. Fundamentally, I believe that all energy companies should be nationalised and there should be a single energy … | Continue reading


@shkspr.mobi | 2 months ago

Actually, I *do* want IoT kitchen gadgets

There's a popular meme that Internet connected domestic appliances are a useless fad that no-one wants. I disagree. Obviously, a crappy oven with an app that upsells you cleaning products is a bit shit. As is a dishwasher that borks on firmware update and lets itself be hacked by … | Continue reading


@shkspr.mobi | 2 months ago

The Seven Levels of Open Source

This isn't an original idea, but I needed to get it out of my brain. There are many different definitions of what "Open Source". We can have a lovely argument over a pint as to whether GPLv3 is too open or if a licence which hasn't been validated by the OSI counts. But, more fund … | Continue reading


@shkspr.mobi | 2 months ago

VR Game Review: Labyrinth deLux – A Crusoe Quest

I love single player VR puzzle games. Especially ones with no timers, baddies, or jump-scares. I just want to play against myself. Labyrinth deLux is brilliant. The puzzle is simple enough - point lasers at mirrors, then align mirrors until they point at the target. You've almost … | Continue reading


@shkspr.mobi | 2 months ago

Movie Review: Oppenheimer ★★⯪☆☆

Oppenheimer is... fine? I guess? For ever gorgeously composed shot, there's a minute of plodding exposition. For every heart-breaking moment of self-doubt, there's a minute of plodding exposition. For every celebrity cameo, there's a minute of plodding exposition. That's why this … | Continue reading


@shkspr.mobi | 3 months ago

Safelinks are a fragile foundation for publishing

Microsoft loves you and wants to protect you. So every time you receive an email with a link in it, Microsoft Outlook helpfully rewrites it so that it goes through their "safelinks" system. Safelinks allow your administrator, or someone at Microsoft, to stop you visiting a link w … | Continue reading


@shkspr.mobi | 3 months ago

A (tiny, incomplete, single user, write-only) ActivityPub server in PHP

I've written an ActivityPub server which only allows you to post messages to your followers. That's all it does. It won't record favourites or reposts. There's no support for following other accounts or receiving replies. It cannot delete or update posts nor can it verify signatu … | Continue reading


@shkspr.mobi | 3 months ago

Book Review: The Constant Rabbit - Jasper Fforde ★★★★☆

I love Fforde's provincial epics. They are dystopias set in the endless wastelands of suburban England. Whole new worlds brought to life in sleepy villages. The Constant Rabbit isn't exactly subtle in its politics - fears that "the Rabbits" might out-breed us leads to a rise in a … | Continue reading


@shkspr.mobi | 3 months ago

Book Review: Terry Pratchett - A Life With Footnotes by Rob Wilkins ★★★★★

Like a million fans, I have a precious memory of (briefly) meeting Terry Pratchett and getting him to sign something amusing. I hold on to it dearly. This is half-way between a biography and autobiography. Parts were clearly dictated and recorded prehumously and are interspersed … | Continue reading


@shkspr.mobi | 3 months ago

Book Review: Tomorrow, and Tomorrow, and Tomorrow - Gabrielle Zevin

This deserves all the accolades going. A perfectly rendered tale of childhood best-friends-forever growing up and trying to make video-games. It is funny, well observed, and grim. It's sort of like Nick Hornby's "High Fidelity" for the 21st century. There's a desperately sad trop … | Continue reading


@shkspr.mobi | 3 months ago

Dark Season - Russell T Davies' new show starring Kate Winslet ★★★⯪☆

A dark and shadowy figure is using laptops to terrorise a school and convert its pupils into mindless automata. Only one person can stop this dastardly scheme - Kate Winslet! Who, for some reason, plays a 15 year old. Because she is 15. Because this is 1991 and Russell T Davies h … | Continue reading


@shkspr.mobi | 3 months ago