I've gotten sufficiently annoyed with a trivial problem that I'm preparing to write an IETF RFC. Yeah. That's how ticked off I am! Every site that I sign up for asks me to upload an avatar to represent myself. Whenever I change my photo, I have to log in to a hundred sites and change it there. Perhaps they could all use Gravatar - but that's a centralised service and doesn't work with wildcard…| Terence Eden’s Blog
There's (yet another) new piece of CSS to learn! Hurrah! Way back in 2011, jQuery mobile introduced the web to page-change animations. Clicking on a link would make your high-tech Nokia display a cool page-flip as you navigated from one page of a website to another. Just like an app!!!! A decade-and-a-half later, and CSS has caught up (mostly). No more JavaScript, just spec-compliant CSS. Well, …| Terence Eden’s Blog
This is a quick GitHub action to get alerted every time your website is mentioned in a GitHub issue. Doing it manually You can search GitHub for a URl, and sort the results with the newest first, like this: https://github.com/search?q=%22shkspr.mobi%22&type=issues&s=created&o=desc Using the API GitHub has a fairly straightforward API - although it uses slightly different parameters. …| Terence Eden’s Blog
This is a marvellous and depressing book. Marvellous because it finely details the history, atrocities, and geopolitical strife of unfettered capitalism. Depressing for much the same reason. Dalrymple takes the thousand different strands of the story and weaves them into a (mostly) comprehensible narrative. With this many moving parts, it is easy to get confused between the various people,…| Terence Eden’s Blog
This post will show you how to programmatically get the cheapest possible price on eBooks from Kobo. Background Amazon have decided to stop letting customers download their purchased eBooks onto their computers. That means I can't strip the DRM and read on my non-Amazon eReader. So I guess I'm not spending money with Amazon any more. I'm moving to Kobo for three main reasons: They provide…| Terence Eden’s Blog
A few days ago, someone called PixelMelt published a way for Amazon's customers to download their purchased books without DRM. Well… sort of. In their post "How I Reversed Amazon's Kindle Web Obfuscation Because Their App Sucked" they describe the process of spoofing a web browser, downloading a bunch of JSON files, reconstructing the obfuscated SVGs used to draw individual letters, and running O…| Terence Eden’s Blog
My OnePlus 5T is beginning to show its age. After replacing the battery a few years ago, I felt it was time to upgrade its software to Lineage 20. Everything went smoothly - but there are a few niggles you should be aware of. Some of these are Google's fault - they truly have contempt for their users - and some could be fixed by Lineage if there were sufficient demand. I've mostly posted this…| Terence Eden’s Blog
Back in November 2017, I treated myself to my first new phone in ages - the OnePlus 5T. I was pretty excited! This week, 928 days after I bought it, OnePlus pushed an upgrade to Android 10! Back in 2011, I was moaning that Sony Ericsson didn't even support their phones for a year. How times have changed! Android devices aren't yet at the longevity of the iPhone, and they're still a long…| Terence Eden’s Blog
I go to see a lot of theatrical productions. While most shows are good, the audience experience is usually dreadful. I'm not just talking about cramped seats and disgusting toilets (although they play a part) but that theatres haven't cottoned on to the idea that theatre is an immersive experience which can't be replicated by watching Netflix. There's an excellent article in The Stage about the…| Terence Eden’s Blog
"If it's stupid but it works, it's not stupid." I want to draw some vertical bar charts. I don't want to use a 3rd party library, or bundle someone else's CSS, or learn how to build SVGs. HTML contains a <meter> element. It is used like this: <meter min="0" max="4000" value="1234">1234</meter> Which looks like this: 1234 There isn't much you can do to style it. Browser manufacturers seem to …| Terence Eden’s Blog
This is a curious and mostly satisfying novel. It bills itself as a satire, but it is rather more cynical than that. A kid has been stabbed and the worst instincts of humanity descend. Race-baiting police, vote-grubbing politicians, and exploitative journalists. I can't comment on the accuracy of the satire of the press - but it feels real. It's full of the hungriest, nastiest people who will…| Terence Eden’s Blog
If you've spent any time using Linux, you'll be used to installing software like this: The README says to download from this link. Huh, I'm not sure how to unarchive .tar.xz files - guess I'll search for that. Right, it says run setup.sh hmm, that doesn't work. Oh, I need to set the permissions. What was the chmod command again? OK, that's working. Wait, it needs sudo. Let me run that again.…| Terence Eden’s Blog
I'm neither a journalist nor a professional fact checker but, the thing is, it's has never been easier to check basic facts. Yeah, sure, there's a world of misinformation out there, but it doesn't take much effort to determine if something is likely to be true. There are brilliant tools like reverse Image Search which give you a good indicator of when an image first appeared on the web, and…| Terence Eden’s Blog
Quoting posts on Mastodon is slightly complex. Because of the privacy conscious nature of the platform and its users, reposting isn't merely a case of sharing a URl. A user writes a status. The user can choose to make their statuses quotable or not. What happens when a quoter quotes that post? I've read through the specification and tried to simplify it. Quoting is a multi-step process: The…| Terence Eden’s Blog
Obviously, I've never downloaded "warez" in my life. And, for the avoidance of doubt, I was never a member of the so-called "Scene". But such shenanigans were almost unavoidable on the early web and - wow! - is it weird seeing snippets of your history presented in an academic study! Why do people "pirate" software and other intellectual property? The answer isn't as simple as you may think. This …| Terence Eden’s Blog
This should be a fascinating look at how streaming services evolved and the outsized impact they've had on our culture. Instead it is mostly a series of re-written press-releases and recycled analysis from other people. Sadly, the book never dives in to the pre-history of streaming. There's a brief mention of RealPlayer - but nothing about the early experiments of livestreaming gigs and TV…| Terence Eden’s Blog
A decade ago, I was writing about how you should test your user interface on drunk people. It was a semi-serious idea. Some of your users will be drunk when using your app or website. If it is easy for them to use, then it should be easy for sober people to use. Of course, necking a few shots every time you update your website isn't great for your health - so is there another way? Click the "🥴 …| Terence Eden’s Blog
My pal Hayley has written a book - a graphic memoir about dealing with breast cancer. Graphic as in graphic-novel - although there are a large variety of sketched boobs dotted throughout the pages and some frank discussions of sex. I'm not very good with "medical stuff" - so I was quite proud of myself for only twice needing to take a break from reading it because I felt faint. It is the most…| Terence Eden’s Blog
You can't. There is no way to use CSS to apply a style to every letter "E". It simply can't be done. At least, that's what they want you to think… What if I told you there was a secret and forbidden way to target specific characters in text and apply some styles to them? As part of my experiments in creating a "drunk" CSS theme, I thought it would be useful to change the presentation of s…| Terence Eden’s Blog
I asked three different commercially available LLMs the same question: Which TLDs have the same name as valid HTML5 elements? This is a pretty simple question to answer. Take two lists and compare them. I know this question is possible to answer because I went through the lists two years ago. Answering the question was a little tedious and subject to my tired human eyes making no mistakes. So…| Terence Eden’s Blog
I recently read a brilliantly provocative blog post called "This website has no class". In it, Adam Stoddard makes the case that you might not need CSS classes on a modern website: I think constraints lead to interesting, creative solutions […]. Instead of relying on built in elements a bit more, I decided to banish classes from my website completely. Long time readers will know that I'm a big f…| Terence Eden’s Blog
One of the best things about London theatre is that once in a while a show will give its understudies a chance to break out of the dressing room and soar on the stage. It's a chance to see talented performers at a discount price. What's not to like? Lucy Donnelly and Mark Sean-Byrne are both flawless. His slouched frustration plays against her manic dream pixie self-loathing. The stage is…| Terence Eden’s Blog
I have a modest set of solar panels on an entirely ordinary house in suburban London. On average they generate about 3,800kWh per year. We also use about 3,800kWh of electricity each year. Obviously, we can't use all the power produced over summer and we need to buy power in winter. So here's my question: How big a battery would we need in order to be completely self-sufficient? Background …| Terence Eden’s Blog
This book is ridiculously zeitgeisty. It's all brain-rotting AI, social-media meltdowns, mixed with some cracking technobabble. She thinks about erasing more: all the practice session recordings; her own encrypted cephaloscripts; the dream-guide neuromesh of her personal AI; the interviews, fan messages, reviews—food for her vanity, training data for her egolets. Fab! But, for all that, it's p…| Terence Eden’s Blog
I'm reasonably sure I've read all the "Old Man's War" books. As the last one was published a decade ago, you'll forgive me if I don't remember all the intricacies of galactic politics and interpersonal intrigue. Thankfully, Scalzi has carved off a side character from a previous book and given them a brand-new adventure. There's enough exposition to tickle the parts of your brain that go "Ah,…| Terence Eden’s Blog
Analogies are like soufflés - they all collapse eventually. Food can be delicious, but certain foods can cause people physical pain or, in some cases, death. In most parts of the civilised world, governments have food safety laws. They mandate how to properly prepare, store, label, and serve food. In the UK, the laws are onerous for a large food manufacturers because we recognise that …| Terence Eden’s Blog
In the battle between the Online Safety Act and GDPR, who will win? FIGHT! I'll start by saying that I'm moderately positive on Online Safety. If services don't want to provide moderation then they shouldn't let their younger users be exposed to harm. The social network BlueSky has taken a pragmatic approach to this. If you don't want to verify your age, you can still use its services - but it…| Terence Eden’s Blog
In which I attempt to be pragmatic. Are you allowed to run whatever computer program you want on the hardware you own? This is a question where freedom, practicality, and reality all collide into a mess. Google has recently announced that Android users will only be able to install apps which have been digitally signed by developers who have registered their name and other legal details with…| Terence Eden’s Blog
Let's say that you've visited a website and want to share it with your friends. At the bottom of the article is a list of popular sharing destinations - Facebook, BlueSky, LinkedIn, Telegram, Reddit, HackerNews etc. You click the relevant icon and get taken to the site with the sharing details pre-filled. The problem is, every different site has a different intent for sharing links and…| Terence Eden’s Blog
You're the sort of cool nerd who knows all the weird esoterica which makes up DNS, right? In amongst your A, AAAA, SOA, and MX records, there's a little used NAPTR. Yes, you can use DNS to store Name Authority Pointers! What?! It is yet another of those baroque standards which spits out things like: cid.uri.arpa. ;; order pref flags service regexp replacement IN NAPTR…| Terence Eden’s Blog
Look, I'm an idiot. I know that, you know that, and the man on the moon knows that. Let's not get into why I'm an idiot; let's just accept that I have my peculiarities and you have yours. My idiocy is a quest to make sure all my portable electronics can recharge using USB-C. Modern smartwatches are tiny and they do a lot. As a consequence, their battery life is generally poor. The industry's…| Terence Eden’s Blog
It looks like the new Google's Pixel 4 watch comes with yet another incompatible change in charging technology. This is a ridiculous situation. The original Pixel Watch used one type of wireless charging. Then the Pixel Watch 2 & 3 removed wireless charging and swapped to a different charging mechanism. And now the 4 has changed again. So three different charging cables in under three years.…| Terence Eden’s Blog
The older I get, the more comfortable I become with complaining. Not merely moaning on social media, but writing a direct email to the perpetrator of some annoyance. I'd purchased an eBook and was appalled by how crappy the accessibility was. If you don't know, modern ePub books are just HTML wrapped in a zip file. They have all of the accessibility advantages of the web and should be easy to…| Terence Eden’s Blog
Janice Hallett is back with another epistolary mystery. Told through a series of transcribed conversations, WhatsApp messages, and torn-out pages from diaries - we the reader have to piece together the facts and crack the case! Much like her previous novels - The Appeal and The Twyford Code - you have to be willing to suspend your disbelief a fair bit. Do people really talk like that when they…| Terence Eden’s Blog
I should love Matrix. It is a decentralised, privacy preserving, multi-platform chat tool. Goodbye Slack and your ridiculous free limits. Adiós Discord and your weird gamification. Suck it IRC with your obscure syntax and faint stench of BO. WhatsApp and Telegram can stick their heads in a bucket of lukewarm sick and sing sea shanties! Let's join the future! The problem is - Matrix is shit. Not …| Terence Eden’s Blog
Code Golf is the art/science of creating wonderful little demos in an artificially constrained environment. This year the js1024 competition was looking for entries with the theme of "Creepy". I am not a serious bit-twiddler. I can't create JS shaders which produce intricate 3D worlds in a scrap of code. But I can use slightly obscure JavaScript APIs! There's something deliciously creepy about…| Terence Eden’s Blog
Another day, another data breach. the spreadsheet, initially shared in 2022, and thought to contain data related to a small number of applicants, had contained hidden data related to more than 18,000 people. ICO statement in response to 2022 MoD data breach Why are people still sending files to each other? I remember having a stand-up argument a decade ago with a project manager who wanted us …| Terence Eden’s Blog
Should my bank be able to block me from using their Android app, just because my phone is rooted? I'm reluctantly coming to the conclusion that... yeah, it's fair that they get to decide their own risk tolerance. Sage of the Internet, and general Sooth Sayer, Cory Doctorow once gave an impassioned speech on "The Coming War on General Computation". I'll let you read the whole thing but, I…| Terence Eden’s Blog
Back in 2020, Andy Bell introduced me to the idea of grouping attribute values. You've probably seen something like this before: HTML A single class over-encumbered by all sorts of things. The more modular way to write this would be: HTML That's pretty…| Terence Eden’s Blog
Yes yes, Cunningham's law etc etc! I want to play around with 2FA codes. So, I started looking for the specification. Turns out, there isn't one. Not really. IANA has a provisional registration - but no spec. It links to an archived Google Wiki which, as we'll come on to, isn't sufficient. There's some documentation from Yubico which is mostly a copy of the Google wiki with some incompatible…| Terence Eden’s Blog
If you use Multi-Factor Authentication, you'll be well used to scanning in QR codes which allow you to share a secret code with a website. These are known as Time-based One Time Passwords (TOTP). As I've moaned about before, TOTP has never been properly standardised. It's a mish-mash of half-finished proposals with no active development, no test suite, and no-one looking after it. Which is…| Terence Eden’s Blog
I logged into Twitter using a fresh account last week. No followers, no preferences set. The default experience was an unending slurry of racism and porn. I don't care to use Twitter any more. Whatever good that was there is now drowned in a cess-pit of violent filth. I still have a lot of Tweets […]| Terence Eden’s Blog
This blog uses WebMention technology. If you write an article on your website and mention one of my blog posts, I get a notification. That notification can then be published as a comment. It usually looks something like this: This means readers of my post can see where it has been mentioned around the web. They can read your article after reading mine. Nice! I've also set up a "bridge"…| Terence Eden’s Blog
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 file to the server. No databases or separate config files. Single Actor (i.e. not multi-user). Allow the Actor to be followed. Post plain-text messages to followers. Be roughly standards compliant. And those…| Terence Eden’s Blog