Can time-travellers use TOTP codes?


A chunky wristwatch showing the time and a selection of 6 digit codes and their corresponding entities.

Imagine, just for a moment, you and your friends decide to travel in time. In order to make sure you can authenticate your communications with each other, you set up a shared Time-based One Time Password (TOTP). The TOTP algorithm uses a Hash-based Message Authentication Code (HMAC). The hash is calculated from a shared key […]

Continue reading →

There should only ever be one way to express yourself


Logo of the Python programming language.

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 as strictly needed? If each word had a single, unique meaning? […]

Continue reading →

The Seven Levels of Open Source


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

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 fundamentally, […]

Continue reading →

Compressing Text into Images


Random grey noise.

(This is, I think, a silly idea. But sometimes the silliest things lead to unexpected results.) The text of Shakespeare's Romeo and Juliet is about 146,000 characters long. Thanks to the English language, each character can be represented by a single byte. So a plain Unicode text file of the play is about 142KB. In […]

Continue reading →

Selectively Compressed Images - A Hybrid Format


Screenshot of a camera app on a phone. The middle is a photo, the sides show the user interface.

I have a screenshot of my phone's screen. It shows an app's user interface and a photo in the middle. Something like this: If I set the compression to be lossy - the photo looks good but the UI looks bad. If I set the compression to be lossless - the UI looks good but […]

Continue reading →

Some thoughts on "Hacking the Cis-tem"


Black and white photo of the Queen Mother pressing a button on a 1960's era computer.

I recently read a wonderful paper by Mar Hicks called "Hacking the Cis-tem" which is about database design in the 1960s and the nascent digital state's approach to transgender individuals. It's a short and readable paper with some jaw-dropping anecdotes. Like the man who immediately got a pay rise after his transition, despite working in […]

Continue reading →

Book Review: "You Are Not Expected to Understand This" How 26 Lines of Code Changed the World - Torie Bosch


Book cover. Lines of code hover on a blue background.

A superb book! It traces the origins of 26 facets of modern life so that you can understand the code which underpins them. There's only a smattering of actual code you need to read - most of it is constrained to gorgeous hand-drawn illustrations. Although I got a bit of a shock in the 2nd […]

Continue reading →

Touring TNMOC with a living legend


Photo of Bruce Perens and me waving at the camera. In the background is a banner for OpenUK and lots of old computer science books.

This is a retropost. It was written in 2022, but published later. Well, that was the most bizarre day. A few days ago, Amanda Brock - the CEO of OpenUK - asked if I'd be on a podcast. I agreed, and offered up my office's media studio for the recording. Then she asked if it […]

Continue reading →

Get Chartered!


Photo of Michael Caine holding a shotgun from the movie Get Carter. The text says "Get Chartered".

Computing is a comparatively young industry. We don't have hundreds of years of history, or secret societies jealously guarding our knowledge, or much love for hierarchy. This makes it difficult to progress in a world which values strict demarcations between people. There's an obvious and well documented path from Army Private to Sergeant. If you're […]

Continue reading →

Regular Expressions make me feel like a powerful wizard - and that's not a good thing


A confused little cardboard robot is lost amongst the daisies

(This is a rant because I'm exhausted after debugging something. If you've made RegEx your whole personality, I'm sorry.) The other day I had to fix a multi-line Regular Expression (RegEx). After a few hours of peering at it with a variety of tools, I finally understood the problem. Getting that deep into the esoteric […]

Continue reading →