Finished work. Figured I’d chill in the hammock for a bit as it’s so nice out.
The dog decided she wanted to lie in it too.
So now I am a pillow for a dog.
Some time in the last 25 years, ISPs stopped saying they made you “part of” the Internet, just that they’d help you “connect to” the Internet.
Most people don’t need a static IP, sure. But when ISPs stopped offering FTP and WWW hosting as a standard feature (shit though it often was), they became part of the tragic process by which the Internet became centralised, and commoditised, and corporate, and just generally watered-down.
The amount of effort to “put something online” didn’t increase by a lot, but it increased by enough that millions probably missed-out on the opportunity to create their first homepage.
In my first few weeks at my new employer, my code contributions have added 218 lines of code, deleted 2,663. Only one of my PRs has resulted in a net increase in the size of their codebases (by two lines).
I need to pick up the pace if I’m going to reach the ultimate goal of deleting ALL of the code within my lifetime. (That’s the ultimate aim, right?)
This is a repost promoting content originally published elsewhere. See more things Dan's reposted.
With thanks to Ruth for sharing this with me:
…
RFC 2119 establishes language around requirement levels. Terms like “MUST”, “MUST NOT”, “SHOULD”, and “SHOULD NOT” are helpful when coordinating with engineers. I reference it a lot for work, as I create a lot of accessible component specifications.
Because of this familiarity—and because I’m an ass—I fired back in Discord:
I want to hire a voice actor to read 2119 in the most over the top, passive-aggressive way possible
wait, this is an achievable goal oh noIt turns out you can just pay people to do things.
I found a voice actor and hired them with the task of “Reading this very dry technical document in the most over-the-top sarcastic, passive-aggressive, condescending way possible. Like, if you think it’s too much, take that feeling, ignore it, and crank things up one more notch.”
…
RFC 2119 is one of few RFCs I can identify by number alone, too. That and RFCs 1945 and 1866, for some reason, and RFC 2822 (and I guess, by proxy, 822) because I’ve had to implement its shitty date format more times than I’d like to count.
But anyway: if you’ve ever wanted to hear a (sarcastic, passive aggressive) dramatic reading of RFC 2119, Eric – and the actor he found – have got you covered!
This is a repost promoting content originally published elsewhere. See more things Dan's reposted.
A Castle Built From Random Rooms is a work in progress/early access/demo version of a full game that’ll probably never exist. But if it does exist, it will be basically the same as this, but on a grander scale, and include the following features:
– over a hundred random rooms instead of about ten
– character jobs and descriptions that actually add individualised effects/skills/starting equipment and so on
– special pre-chosen characters with particulalrly challenging stats levels for extra difficult challenges
– more stats! more items! more use of the stats and items within different rooms to create different outcomes!
– high scores and loot rankings and possibly even achievements of some kind
– less bugs (aspiration)
– decent endings (stretch goal)What the game almost certainly won’t ever have:
– any semblance of quality or coherence
– sound and/or music
– monetary success
I saw and first played this ages ago, after its initial release was mentioned on Metafilter Projects last year. In case you missed it first time around, you can give it a go now!
It’s a Twine-like choose-your-own-adventure, but with the rooms randomly shuffled each time, in sort-of a semi-rougelite way. Some imaginative work in this. And the art style is wonderful!
A quesapizza is a quesadilla, but made using pizza ingredients: not just cheese, but also a tomato sauce and maybe some toppings.
A quesapizza-pizza is a pizza… constructed using a quesapizza as its base. Quick to make and pretty delicious, it’s among my go-to working lunches.
The one you see above (and in the YouTube version of this video) is topped with a baked egg and chilli flakes. It might not be everybody’s idea of a great quesapizza-pizza, but I love mopping up the remainder of the egg yolk with the thick-stuffed cheese and tomato wraps. Mmm!
The elder of our two cars is starting to exhibit a few minor, but annoying, technical faults. Like: sometimes the Bluetooth connection to your phone will break and instead of music, you just get a non-stop high-pitched screaming sound which you can suppress by turning off the entertainment system… but can’t fix without completely rebooting the entire car.
The “wouldn’t you rather listen to screaming” problem occurred this morning. At the time, I was driving the kids to an activity camp, and because they’d been quite enjoying singing along to a bangin’ playlist I’d set up, they pivoted into their next-most-favourite car journey activity of trying to snipe at one another1. So I needed a distraction. I asked:
We’ve talked about homonyms and homophones before, haven’t we? I wonder: can anybody think of a pair of words that are homonyms that are not homophones? So: two words that are spelled the same, but mean different things and sound different when you say them?
This was sufficiently distracting that it not only kept the kids from fighting for the entire remainder of the journey, but it also distracted me enough that I missed the penultimate turning of our journey and had to double-back2
With a little prompting and hints, each of the kids came up with one pair each, both of which exploit the pronunciation ambiguity of English’s “ea” phoneme:
These are heterophonic homonyms: words that sound different and mean different things, but are spelled the same way. The kids and I only came up with the two on our car journey, but I found many more later in the day. Especially, as you might see from the phonetic patterns in this list, once I started thinking about which other sounds are ambiguous when written:
(If you’ve got more of these, I’d love to hear read them!)
I’m interested in whether heterophonic homonyms are common in any other languages than English? English has a profound advantage for this kind of wordplay3, because it has weakly phonetics (its orthography is irregular: things aren’t often spelled like they’re said) and because it has diverse linguistic roots (bits of Latin, bits of Greek, some Romance languages, some Germanic languages, and a smattering of Celtic and Nordic languages).
With a little exploration I was able to find only two examples in other languages, but I’d love to find more if you know of any. Here are the two I know of already:
If you speak more or different languages than me and can find others for me to add to my collection of words that are spelled the same but that are pronounced differently, I’d love to hear them.
Special Bonus Internet Points for anybody who can find such a word that can reasonably be translated into another language as a word which also exhibits the same phenomenon. A pun that can only be fully understood and enjoyed by bilingual speakers would be an especially exciting thing to behold!
1 I guess close siblings are just gonna go through phases where they fight a lot, right? But if you’d like to reassure me that for most it’s just a phase and it’ll pass, that’d be nice.
2 In my defence, I was navigating from memory because my satnav was on my phone and it was still trying to talk over Bluetooth to the car… which was turning all of its directions into a high-pitched scream.
3 If by “advantage” you mean “is incredibly difficult for non-native speakers to ever learn fluently”.
Thanks to the community’s invention of a “Region unlocked” achievement, I’ve been able to instantly (and retroactively!) tick another one off my geohashing list, for my expedition on Trinidad early this year!
(Possibly I’ve achieved it other times, too: I haven’t yet determined whether anybody successfully hashed in County Mayo or County Galway before I did last year, on account of both counties spanning multiple graticules and so requiring more research!)
This is a repost promoting content originally published elsewhere. See more things Dan's reposted.
The recent death of Tom Lehrer has resulted in all manner of interesting facts and anecdotes about the man being published around the Internet, but perhaps my favourite was the tale about how, while working for the NSA in 1957, he snuck an Easter Egg into a research paper… that went undetected for nearly 60 years:
…
I worked as a mathematician at the NSA during the second Obama administration and the first half of the first Trump administration. I had long enjoyed Tom Lehrer’s music, and I knew he had worked for the NSA during the Korean War era.
The NSA’s research directorate has an electronic library, so I eventually figured, what the heck, let’s see if we can find anything he published internally!And I found a few articles I can’t comment on. But there was one unclassified article– “Gambler’s Ruin With Soft-Hearted Adversary”.
The paper was co-written by Lehrer and R. E. Fagen, published in January, 1957. The mathematical content is pretty interesting, but that’s not what stuck out to me when I read it. See, the paper cites FIVE sources throughout its body. But the bibliography lists SIX sources. What’s the leftover?
![]()
…
So I sent an email to the NSA historians. And I asked them: hey, when was this first noticed, and how much of a gas did people think it was? Did he get in trouble for it? That sort of stuff.
The answer came back: “We’ve never heard of this before. It’s news to us.”
In November of 2016, nearly 60 years after the paper was published internally, I had discovered the joke.
…
Bozhe moi!
Very Tom Lehrer to hide a joke so well that nobody would even notice it for most of six decades, while undermining and subverting bureaucratic government processes.
And if you somehow don’t “get” the joke, Wikipedia can both explain and let you listen to the relevant song…
At the weekend, JTA and I – along with our eldest child – explored the Clapham South Deep Shelter as part of one of Hidden London‘s underground tours, and it was pretty great!
I’ve done a couple of bits of exploration of subterranean London before: in the service tunnels around Euston, and into the abandoned station on the Aldwych branch line. But I was especially impressed by the care and attention that had gone into making this particular tour fun and engaging.
The site itself is deep: trains on the Northern Line – already one of the deepest lines on the London Underground – can be heard passing above you, and any noise from street level is completely gone (even the sounds of bombing couldn’t be heard down here, WWII residents reported). It’s also huge: long interconnected tunnels provided space for 8,000 beds, plus canteens, offices, toilets, medical bays, and other supporting architecture.
To extend the immersion of the theme even further, there’s a “warden” on-site who – after your 179-step descent – welcomes you and checks your (replica) night admission ticket, identifying which bed’s bed assigned to you. The warden accompanies your group around, staying in-character as you step through different eras of the history of the place! By the time you get to the interpretative space about the final days of its use for human habitation – as a budget hotel for the “Festival of Britain” national exhibition in 1951 – he speaks fondly of his time as its warden here and wonders about what will become of the place.
All of which is to say that this was a highly-enjoyable opportunity to explore yet another hidden place sprawling beneath London. The Hidden London folks continue to impress.
If you want to see a little more, they’ve released a video just yesterday: or for the full experience, see if there are any slots you can make to visit the place for yourself.
This is a repost promoting content originally published elsewhere. See more things Dan's reposted.
Type-safe transformation powered by inference.
ArtificialCast is a lightweight, type-safe casting and transformation utility powered by large language models. It allows seamless conversion between strongly typed objects using only type metadata, JSON schema inference, and prompt-driven reasoning.
Imagine a world where
Convert.ChangeType()
could transform entire object graphs, infer missing values, and adapt between unrelated types – without manual mapping or boilerplate.ArtificialCast makes that possible.
Features
- Zero config – Just define your types.
- Bidirectional casting – Cast any type to any other.
- Schema-aware inference – Auto-generates JSON Schema for the target type.
- LLM-powered transformation – Uses AI to “fill in the blanks” between input and output.
- Testable & deterministic-ish – Works beautifully until it doesn’t.
…
As beautiful as it is disgusting, this C# is fully-functional and works exactly as described… and yet you really, really should never use it (which its author will tell you, too).
Casting is the process of transforming a variable of one type into one of another. So for example you might cast the number 3
into a string and get
"3"
(though of course this isn’t the only possible result: "00000011"
might also be a valid representation, depending on the circumstances1).
Casting between complex types defined by developers is harder and requires some work. Suppose you have a User model with attributes like “username”, “full name”, “hashed password”, “email address” etc., and you want to convert your users into instances of a new model called Customer. Some of the attributes will be the same, some will be absent, and some will be… different (e.g. perhaps a Customer has a “first name” and “last name” instead of a “full name”, and it’s probably implemented wrong to boot).
The correct approach is to implement a way to cast one as the other.
The very-definitely incorrect approach is to have an LLM convert the data for you. And that’s what this library provides.
…
ArtificialCast is a demonstration of what happens when overhyped AI ideas are implemented exactly as proposed – with no shortcuts, no mocking, and no jokes.
It is fully functional. It passes tests. It integrates into modern .NET workflows. And it is fundamentally unsafe.
This project exists because:
- AI-generated “logic” is rapidly being treated as production-ready.
- Investors are funding AI frameworks that operate entirely on structure and prompts.
- Developers deserve to see what happens when you follow that philosophy to its logical conclusion.
ArtificialCast is the result.
It works. Until it doesn’t. And when it doesn’t, it fails in ways that look like success. That’s the danger.
…
I’ve played with AI in code a few times. There are some tasks it’s very good at, like summarising and explaining (when the developer before you didn’t leave a sufficiency of quality comments). There are some tasks it can be okay at, with appropriate framing and support: like knowing its way around unfamiliar-to-you but well-documented APIs2.
But if you ask an AI to implement an entire product or even just a significant feature from scratch, unsupervised, you’re at risk of rapidly hitting the realm of Heisenbugs, security vulnerabilities, and enormous redundancies.
This facetious example – of using AI as a universal typecasting engine – helps hammer that point home, and I love it.
1 How to cast basic types isn’t entirely standardised: PHP infamously casts the string "0"
as false
when it’s coerced into a
boolean, which virtually no other programming language does, for example.
2 The other week, I had a GenAI help me write some code that writes to a Google Sheets document, because I was fuzzy on the API and knew the AI would pick it up faster than me while I wrote the code “around” it.
I got kicked off LinkedIn this week. Apparently there was “suspicious behaviour” on my account. To get back in, I needed to go through Persona’s digital ID check (this, despite the fact that I’ve got a Persona-powered verification on my LinkedIn, less than six months old).
After looping around many times identifying which way up a picture of a dog was and repeatedly photographing myself, my passport, and my driving license, I eventually got back in. Personally, I suspect they just rolled out some Online Safety Act functionality and it immediately tripped over my unusual name.
But let this be a reminder to anybody who (unlike me) depends upon their account in a social network: it can be taken away in a moment and be laborious (or impossible) to get back. If you care about your online presence, you should own your own domain name; simple as that!