Offline Messaging Apps Using Bluetooth

The green hash symbol which is the Briar logo.

Problem: My wife and I are going on a long plane journey and don't have seats next to each other. How can we communicate? Constraints: The plane WiFi is ruinously expensive. The in-seat messaging service isn't private. We both have Android phones. Preferences: Open Source. Secure. Easy to use. Solution: Use Bluetooth messaging app Briar. […]

Continue reading →

The Life Script - a play for algorithms

A padlock engraved into a circuit board.

Another short story. This time in the form of a screenplay - formatted with screenplay.css. What do the algorithms get up to behind our backs? The Life Script A play for algorithms SCENE I INTERIOR A DULL LOOKING OFFICE. A BLUE LIGHT SUFFUSES THE STAGE. TWO ALGORITHMS SIT ACROSS FROM EACH OTHER, EACH ENGROSSED IN […]

Continue reading →

Book Review: Reality Is Broken - Why Games Make Us Better and How They Can Change the World by Jane McGonigal

Book cover featuring a game pad made of people.

I have never felt less like a human being than while reading this book. I don't mind video-games, I find them mildly diverting. I've never gotten in to massively multiplayer online games (unless you count Twitter). I just don't see what's appealing about them. Why would I want a bunch of teenagers screaming racial slurs […]

Continue reading →


Black and white text banner proclaiming that you don't need HTML.

Originally posted as part of HTML Hell's advent calendar. While browsing Mastodon late one night, I came across this excellent blog post called HTML is all you need to make a website. It describes a few websites which are pure HTML. No CSS and no JS. And I thought… do you even need HTML to […]

Continue reading →

Movie Review: Clerks Ⅲ

Poster for the movie.

How many times can you go back to the well before it is completely dry? With Kevin Smith, it's always once more. I remember watching the original Clerks about a hundred years ago at university. It was a cheap a daring movie then - and remains a mainstay of what you can do if you […]

Continue reading →

Gadget Review: A USB-C powered Cattle Prod

An eerie purple light flashes between the two prongs.

Winter has come! And with it the risk of power-cuts. Thankfully, we already have a Uninteruptable Power Supply for vital things like WiFi and security. But what about lights? Hurrah for candles! They're not just for birthday cakes, you know. But how do you light candles? I vaguely remember something about rubbing two stones together? […]

Continue reading →

Game Review: Red Matter 2 for VR

A cosmonaut stands in front of a glowing orb.

I thoroughly enjoyed the first Red Matter VR game, so I leapt at the sequel when it was on offer. What's it like? Exactly the same as the first. Lots of creepy corridors, a range of puzzles, and a sedate-ish journey. You're exploring an abandoned space-station, looking for clues and trying to figure out what […]

Continue reading →

I'm the new Chair of the BCS Open Source Specialist Group

A t-shirt with the slogan "Make things open it makes things better."

I'm chuffed to bits to announce that I was recently elected to chair the BCS's Open Source community group! The British Computer Society is an august body, and the OSSG have put on some brilliant talks in the last few years. But I'd like to shake things up a little. I want us to move […]

Continue reading →

You can have user accounts without needing to manage user accounts

A slide from a presentation which says "Avoice side projects with user accounts."

The inimitable Simon Willison has a brilliant presentation all about managing side projects: It is all good advice. But I gently disagree with the slide which says: Avoid side projects with user accounts If it has user accounts it’s not a side-project, it’s an unpaid job I get the sentiment. Storing passwords securely is hard. […]

Continue reading →

Snowflake IDs in Mastodon (and Unique IDs in the Fediverse more generally)

Hundreds of snowflakes - each one unique and beautiful.

Computer Science has two canonical "hard problems": cache invalidation naming things off-by-one errors Let's talk about how we name unique items in Federated services - for example, posts on a social media service. If you have only one service, it's pretty easy. Every time a new entry is created in a database, give it a […]

Continue reading →