Theatre Review: The River - Jez Butterworth


Poster for The River. A murky green colour.

Oooh! This is an interesting play. It is dense, wordy, and tense. It isn't a play with a frenetic pace or a huge emotional roller-coaster. It is a series of subtle arguments and twisted relationships which slowly (very slowly) reveal themselves to the audience. It is actorly - with winding speeches and hefty subtext. The leisurely pace belies the deep and dark subject matter. Although only 80 minutes (without interval) it feels… whatever the positive version of "interminable" is. I was i…

Continue reading →

Theatre Review: The Lightest Element


Poster for The Lightest Element. A woman stands between two men.

The problem with plays about science is that they necessarily have to give the audience a mini-lecture in the subject. The problem with biographical plays is they need to give the audience a summary of a life in a few short speeches. The problem with historical plays is they have to give a précis of the context needed to understand the times. The Lightest Element is a historical science biography, with the net result that it feels like a play based on a dozen smushed together Wikipedia …

Continue reading →

Should you enable TOTP *only* authentication?


A QR code.

Here's a "fun" thought experiment. Imagine a website which let you sign in using only your username and TOTP code. No passwords. No magic links emailed to you. No FIDO tokens. No codes via SMS. Just a TOTP generated and displayed on your device. Is that useful? Sensible? Practical? It's certainly technically possible. Store the username, store the TOTP seed, done. Your users can now log in. Is it useful? Well, it would force users to not reuse passwords they've used elsewhere. That prevents …

Continue reading →

Styling links based on their destination


The HTML5 Logo.

Suppose you have lots of links on a page. You want to highlight the ones which point to example.com - is that possible in CSS without using JavaScript? Yes! This scrap of code will turn all those links red: a[href^="https://example.com"] { color: red; } Now, there are a few gotchas with this code. It matches the string exactly. So https://example.com will not match https://www.example.com The match will occur at the start of the string. To match more lazily, you can use a substring…

Continue reading →

GitHub's Copilot lies about its own documentation. So why would I trust it with my code?


Me asking Copilot how I switch it off. Copilot responds with a link.

In the early part of the 20th Century, there was a fad for "Radium". The magical, radioactive substance that glowed in the dark. The market had decided that Radium was The Next Big Thing and tried to shove it into every product. There were radioactive toys, radioactive medicines, radioactive chocolate bars, and a hundred other products. The results weren't pretty. In the early part of the 21st Century, there was a fad for "AI". The magical, Artificial Intelligence which provided all the…

Continue reading →