Why I Am So Tired [Video]

This post is also available as an article. So if you'd rather read a conventional blog post of this content, you can!

This is the video version of a joke that’s also available as a blog post and as a podcast episode. Watch it here, or find it:

Why I Am So Tired

Duration

Podcast Version

This post is also available as a podcast. Listen here, download for later, or subscribe wherever you consume podcasts.

This post is also available as a video. If you'd prefer to watch/listen to me talk about this topic, give it a look.

I am tired. For a couple of years I’ve been blaming it on iron-poor blood, lack of vitamins, diet, and a dozen other maladies. But now I’ve found out the real reason: I’m tired because I’m overworked.

The population of the UK is 69 million1, of which the latest census has 37 million “of working age”2.

According to the latest statistics, 4,215,913 are unemployed3, leaving 32,784,087 people to do all the work.

19.2 million are in full time education4, 856,211 in the armed forces5, and collectively central, regional, and local government employs 4.987 million6. This leaves just 12,727,876 to do all of the real work.

Long term disabilities affect 6.9 million7. 393,000 are on visas that prohibit them from working8, and 108,0859 are working their way through the asylum process.

Of the remaining 339,791 people, a hundred thousand are in prison10 and 239,789 are in hospital11.

That leaves just two people to do all the work that keeps this country on its feet.

You and me.

And you’re sitting reading this.

This joke originally appeared aeons ago. I first saw it in a chain email in around 199612, when I adapted it from a US-centric version to a more British one and re-circulated it among some friends… taking the same kinds of liberties with the numbers that are required to make the gag work.

And now I’ve updated it with some updated population statistics13.

Footnotes

1 Source: Provisional population estimate for the UK: mid-2025, Office for National Statistics.

2 Source: Working age population, gov.uk.

3 Source: Unemployment, Office for National Statistics.

4 Source: Statistica for all the children, plus FE students from Education and training statistics for the UK, gov.uk, with some rounding.

5 Source: Hansard, here, plus other sources from the same time period.

6 Source: this informative article.

7 Source: UK disability statistics: Prevalence and life experiences, House of Commons Library.

8 Source: Reason for international migration, international students update: May 2025, Office for National Statistics.

9 Source: How many people claim asylum in the UK?, gov.uk.

10 Source: Prison population: weekly estate figures 2025, gov.uk.

11 Source: Bed Availability and Occupancy, Hansard Library.

12 In fact, I rediscovered it while looking through an old email backup from 1997, which inspired this blog post.

13 Using the same dodgy arithmetic, cherry-picking, double-counting, wild over-estimations, and hand-waving nonsense. Obviously this is a joke. Oh god, is somebody on the satire-blind Internet of 2026 going to assume any of these numbers are believable? (They’re not.) Or think I’m making some kind of political point? (I’m not.) What a minefield we live in, nowadays.

Invisible Dog

Our dog has decided that the perfect place to lie down at our holiday accommodation is… on a staircase whose carpet is the same colour as her!

I’m grateful for her very-visible blep… or I’d have tripped over this camouflaged pupper several times already!

A champagne-coloured French Bulldog lies on a step of a staircase carpeted in the same colour as herself, u her tongue in medium-blep.

×

Slamiltee at the Lycaeum

Went to a West End theatre wearing my “Slamilton” t-shirt.

In this corridor, during the act break, a stranger spotted it and did a double-take.

“Is that…? wait… that’s not Hamilton!”, they said.

I seized my chance.

“It’s Slamilton,” I replied. “You know: ‘Who slams, who jams, who tells their story.'”

And then, after a pause: “What’s ‘Hamilton’???”

Dan, a white man with a goatee beard and a blue ponytail, wears a 'Slamilton' t-shirt in a theatre stairwell.

×

The Reason I Have 12 Birthdays

This is a repost promoting content originally published elsewhere. See more things Dan's reposted.

or, how to fuck your shit up by ignoring obvious birthday inflammation symptoms. don’t be like me. seek help.

sorry for this barely scripted and low quality video, the next one will be worse.

special thanks to doctor jacobi for the excellent care, and to the manna charitable foundation for the flight logistics.

The ever-excellent Blackle Mori1 posted this about 18 months ago but I don’t think it got the level of attention it deserves. If if you’ve never experienced birthday inflammation or known anybody who has, it’s an eye-opening experience to hear a first-hand account of this unusual and definitely-real condition.

 

Footnotes

1 If the name’s familiar but you can’t quite place it, here’s the previous two times I’ve talked about Blackle’s work: my analysis of the construction of the Basilisk Collection, and the (now-famous) Cursed Computer Iceberg.

Distractingly Amazing

Found the younger child not-in-bed but dancing around his room, using his pyjamas as perhaps some kind of streamers or flags.

Me: “Why aren’t you in bed?”
Him: “I’m sorry; I got distracted by how amazing I am.”

Hard to argue with that.

Rabbithole

The dog came out for a walk with the eldest kid and I, but we couldn’t stop her sticking her head down rabbitholes!

In a grassy field, a girl in a red dress and comfortable boots kneels with her head completely vanished down a rabbit hole.

(Oh, and the dog kept doing it, too.)

×

ArtificialCast

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.

Footnotes

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.

Unrepentant Blep

The unrepentant bleppy face of a dog who, without fail, steals the warm spot I’ve left behind on the sofa within like three seconds of me standing up.

A champagne-coloured French bulldog sits askew on a blue blanket atop a grey sofa, her tongue sticking out and to the side, as she looks at the photographer.

×