On no! I’ve invented SVG badly!

It started, as these things often do, with a tiny spark of inspiration. I was looking at the way Unicode builds those racially diverse family emoji. These use ZWJ sequences to glue together adults, children, and skin‑tone modifiers into a single little glyph. It’s clever, constrained, and surprisingly elegant. It gave me an idea.

What if you could do the same thing for flags? Unicode already has national flag emojis along with 🏳️‍🌈, 🏳️‍⚧️, 🏴‍☠️, 🏁,🏳️,🏴,🚩 and the countries-in-our-hearts, 🏴󠁧󠁢󠁥󠁮󠁧󠁿, 🏴󠁧󠁢󠁳󠁣󠁴󠁿, 🏴󠁧󠁢󠁷󠁬󠁳󠁿. But no more. The people in charge of assigning codes have decided this is too much of a geopolitical and culture-war nightmare so these are all the flags we’re going to get.

It was with this and the build-a-family codes that gave me the idea. A minimal system. A harmless system that would allow Unicode to avoid the minefield.

Famous last words.

“Not sure I told you, but I really like your teeth. That hairy coat of yours with nothing underneath. Not sure you have a name, so I will call you Keith.”

Just Horizontal Stripes. How Hard Could It Be?

My starting point was beautifully simple. We already have colourful square emojis, so put several in a row with a code that says “take those colours and turn them into a striped flag.”

Want to identify with the British suffragettes? No problem. Type “🟩⬜🟪” and an end marker and you’ll get the classic “Give Women Votes” banner.

That’s it. No more than six stripes. No fancy geometry. No overlays. No heraldry. Just a neat little way to express the British suffragette flag without needing a bespoke emoji or any of the political minefield that would come with it.

It felt clean. It felt doable. It felt like something Unicode might actually consider.

But I wasn’t done.

“We’re just like you, only differently inclined.”

Most pride flags are horizontal stripes, but many flags prefer vertical stripe ls a d this this seemed like a very simple extension to the idea. Two new code points. One for horizontal stripes and another for vertical stripes.

Still simple. Still manageable. Still not terrifying.

“I am making little watercolors and pastels, I think they will come out all right.”

The trans pride flag doesn’t use red and blue, but pink and baby-blue. Pastel shades. While the trans flag was already there, anyone wanting to use the trans colours would need to make do with bright-red and bright-blue.

But I’m already inventing new code points, so why not add one more. A pastel modifier that you could attach to any of the colour emojis, even outside of my primary flag composition plan. “💚” and the pastel modifier equalled a pastel-green heart.

This was the moment I should have stopped. I had taken the first step toward a graphics language, but I didn’t see it yet.

“Wake up where the clouds are far behind. Where troubles melt like lemon drops, high above the chimney tops, that’s where you’ll find me.”

Crosses, Saltires, and Cantons

Once you start thinking about flags, you can’t avoid the classics. The Nordic cross, St Andrew’s saltire, America’s star-spangled canton, the British layered geometry.

So I added codes that allowed you add various kinds of crosses, each with a colour, and a canton code that meant “this block is a new flag that will be embedded in the top left”.

Some flags have heraldic symbols on them like stars or animals. I was never shooting for pixel perfect representations, so I added codes that would allow you to add an emoji to your flag in a variety of positions.

Flag of 🇦🇺 Australia?

  • Blue stripe.
  • Southern Cross emoji on the fly.
  • White star emoji on the lower hoist.
  • Start Canton.
  • Blue Stripe.
  • White Saltire.
  • Red Saltire.
  • White Cross.
  • Red Cross.
  • End Canton.

And suddenly my simple stripe system needed rules for layering, masking, and region‑specific drawing.

The Moment of Realisation

I stepped back and looked at what I had created. Orientation rules, layering rules, colour‑modification rules, region‑placement rules, geometry rules, compositing rules, rule rules…

And it hit me with the force of a thousand W3C specifications. I was reinventing SVG. In codepoints. Not just SVG but a restricted, weirdly encoded, Unicode‑flavoured SVG with all the complexity and none of the tooling.

I had built a graphics language disguised as emoji. Unicode would never accept it. Unicode encodes meaning, not appearance. The moment you introduce a system that generates arbitrary graphics, you’ve left the world of characters and entered the world of graphics engines.

I had crossed the boundary from symbol encoding into procedural graphics, and I hadn’t even noticed until I was halfway through designing a colour‑modifier block.

My original idea — the tiny, innocent, three‑stripe suffragette flag — was lovely, but ideas like this have a way of expanding. You add one rule, then another, then another, and before you know it you’re writing a miniature graphics specification and wondering why your “simple emoji idea” now needs a colour‑space definition and a geometry engine.

Unicode didn’t ask for SVG‑Lite‑But‑Worse. I just accidentally built it.

Honestly, it was a fun ride.

Credits
📸 “Marche des fiertés Toulouse 2011” by Guillaume Paumier. (Creative Commons)
📸 “Statue in the ground of Tenison Woods Catholic College in Mt Gambier” by “denisbin”. (Creative Commons)

Notes from a Helpful Glober — “Stationary”

Dear flat earthers,

You might not realise it, but I do genuinely want to help you. I grew up in an environment where you question everything and take no one’s word for it, so I understand the instinct. I am a glober, but I don’t think you’re stupid — I just think you’re wrong. But this isn’t about that.

I’ve noticed something in your messaging that could use a little clarification.

This is about the claim that the Earth is stationary.
What do you mean by that?

Work with me a moment…

“Around the world. Around the world. Around the world. Around the world. Around the world.”

The Illusion of Rest

Right now, as I write this, I feel completely still. I might even describe myself as stationary. But what I haven’t told you is that I’m writing this on a moving train.

Given this detail, am I stationary?

  • Inside the train, yes.
  • To someone on the ground, no.

Both statements are true because “stationary” is not an absolute property. It only makes sense relative to a chosen frame of reference.

This is the part that needs clarification. When you say “the Earth is stationary”, stationary in what frame of reference?

The Earth is certainly not stationary relative to this train, or the Sun, or the stars, or the cosmic background. But no one was claiming it was.

If you mean “the Earth is stationary relative to the Earth”, then that’s not a scientific claim — it’s just a tautology. True, but meaningless and unhelpful.

If you mean “the Earth is stationary relative to the universe”, then we’re getting somewhere — but we’ll need to talk about what you think the universe is. In the mainstream scientific model, there are no absolute positions to be stationary in.

If you want to make a meaningful physical statement, you have to specify the frame of reference. Otherwise, “stationary” on its own doesn’t tell us anything about the world.

“You are just as water, you flow around all that comes in your way.”

And just to be clear, I’m not trying to score points here. I’m trying to help you make your claim in a way that actually says something testable. It bothers me when someone makes a false assertion about science and then tears it down for being “wrong”, and I don’t want to be guilty of the same.

If you can tell me what frame of reference you’re using when you call the Earth stationary, then we can talk about evidence, observations, and measurements. Without that, we’re just talking past each other — and I think we both want better than that.

Credits
📸 “Moving Out” by Matthew Hurst. (Creative Commons.)
📸 “Cat-36” by Lynn Chan. (Creative Commons.)

Hearthfire Part One: Lighting the Flame

Every so often a project lodges itself in your brain and refuses to leave quietly. This began as a late‑night thought experiment, the kind that keeps circling until you either build it or write it down. For months it’s been pacing around the edges of my mind.

What if I knew what I know now, but I lived in the 1980s and worked for a plucky home computer maker?

“The games you get today, well they might be very flash, but they’ll never beat the thrill of getting through jetpack.”

The spark came from a familiar place. I’d been following the Commander X16 project, a modern reimagining of what might have happened if Commodore had stayed the course with the 6502 instead of leaping to the Amiga. The X16’s operating system keeps the approachable, single‑tasking spirit of the C64 and even followed through to shipping real hardware you can buy today. Watching that project take shape made me wonder about a different branch of the timeline. An 8‑bit machine that embraced pre‑emptive multitasking, shared memory regions, and a more ceremonial sense of system design.

That curiosity sent me digging through old notes, where I recently found some early sketches I thought I’d lost. Thirty or so years ago, a colleague told me about how the keyboard interface worked on the Sinclair ZX Spectrum. A simple 50Hz timer on the CPU’s interrupt pin. Could that open the door to full multitasking on such a humble machine?

My notes from that conversation were rough, but the core idea was already there. A system where swapping a page wasn’t a hack but a first‑class architectural gesture. A machine that could perform true multitasking, not by accident or redirecting OS calls and other such clever trickery, but by design.

Hearthfire grew from that seed. A computer could treat its shared resources not as bottlenecks, but as a communal hearth. A warm centre where processes gather. A system shaped by the constraints of the era, but guided by a modern understanding of how operating systems can cooperate rather than compete.

And because every world needs a spirit to inhabit it, Hearthfire has Bytewisp 🔥, a tiny ember‑sprite who drifts between pages, curls up in unused bytes, and serves as a gentle reminder that even the most technical systems can have a little soul. You’ll see her appear throughout this series, offering commentary from the margins.

🔥 “Bill thinks ths is cute. I’m not so sure.”

This post is simply the declaration. Hearthfire exists — or at least the idea of it does. What follows in the next instalments is an attempt to get it out of my head and onto the page. To stop it keeping me awake at night and start shaping it into something coherent. But do bear in mind I’m probably not going to actually build this. It has been two decades since I wrote a line of C code or 6502 assembly. But if anyone does want to go ahead and build something to this design, please do with my blessing.

🔥 “If someone builds it, I promise to keep the pages warm.”

In Part Two, we’ll begin with the memory model. Sixteen 4K windows into a much larger space and a page‑swapping mechanism that makes pre‑emptive multitasking not only possible but elegant. We’ll talk about how Intel got tantalisingly close to a great architecture with the 8086, but dropped the ball at the last moment.

For now, consider this the lighting of the first flame.

Welcome to Hearthfire 🔥.

Credits
📸 “Cat on a laptop” by Doug Woods. (Creative Commons)
🌈 Andrew Langstaff for cluing me into how the ZX Spectrum works.
(And for the round of drinks.)

Let’s Measure Gravity!

When I was in high school, we measured Earth’s gravity. This number is known as “g”, or sometimes “little g” to distinguish it from “big G” which is something else.

This is an acceleration, or the rate of change of speed over time. The number is in units of meters-per-second-per-second, which means starting from rest and going at a constant acceleration, after one second you’ll be going at some number of meters-per-second. Another second after that you’ll be going twice as fast.

Have you ever wanted to measure Earth’s gravity for yourself? You can do it with nothing more than a tennis ball, a stopwatch, a long tape measure and somewhere to stand.

“Well you got dreams and you know they matter. Be your own boss, climb your own ladder.”

When in doubt, drop something.

First, find a high platform that you can safely drop a tennis ball from that has a floor at the bottom which makes an audible bounce. At school, we used a three‑floor open stairwell. Once you’ve chosen your spot, measure the height from your release point to the ground using the tape measure.

Now comes the timing. Hold the tennis ball in one hand and the stopwatch in the other. Drop the ball — don’t throw it — and time how long it takes from the moment you let go to the moment you hear it hit the ground. Repeat this several times and record the time taken each time.

Starting the stopwatch as you release the ball is something you can do with a little practice, but stopping the stopwatch at the right moment is trickier. The main factor causing a problem is the quite mundane human reaction time.

Think about what happens. The sound waves of the bounce enters your ears. Impulses travel from your ear to your brain. Your brain says “That was a bounce. I need to stop the stopwatch.” Your brain sends another signal to your fingers to press the button. The muscles in your hand pull your fingers to finally stop the stopwatch.

That process takes a small amount of time but will be enough to throw off your measurements. What you want is a consistent reaction that you can treat as a fixed delay in your timing. Before you set out, you can have a friend bounce your tennis ball on the floor behind you and measure how long it takes from bounce to click. With practice you can get that all‑important consistent reaction time. (Remember that consistency is more important here than being fast, unless maybe you’re a test pilot.) If you don’t subtract a reaction‑time estimate, your measured g will come out a bit low but still recognisably “about 9.8”.

Some stopwatch readings will inevitably be off. Perhaps you hesitated on the stopwatch or nudged the ball slightly as you released it. Once you have a few readings, look for the median. This is the one reading that has an equal number of bigger readings as smaller readings. By ignoring those occasional outliers, you get the most reliable reading of the true fall time.

“You say summer love will stimulate my heart tonight. Mysterious mermaid barefoot all alone. Wishing, revealing, it’s the fruit I want to eat. Precious love is always eating up my heart.”

Let the numbers speak for themselves.

With your measured height and your median fall time, you can now calculate the acceleration due to gravity. The height you’d expect a falling object to travel is given by the following formula:

h=12gt2h = \tfrac{1}{2} g t^2


Let’s quickly pull that apart. The height (h) is equal to half the acceleration due to gravity (g) multiplied by the square of the time (t). The ½ appears because the ball starts from rest and its speed increases steadily, so the average speed during the fall will be half of the final speed. The time is squared because the ball is accelerating constantly. The more time the ball has to fall, the faster it is going to get, which boils down to being proportional to the square of the time. That formula will tell us how far something should fall in a given time, but since we already know the height we can rearrange it to solve for that gravity factor, g, instead.

g=2ht2g = \frac{2h}{t^2}


Plug the height (h) and the time (t) into this rearranged formula and your value for g pops out! Congratulations, you’ve measured the acceleration of Earth’s gravity! Get yourself a drink to celebrate.

When we did this in school, our measurements came out at about 8.7 m/s². This was not quite the official 9.8 m/s², but impressively close for a bunch of spotty teenagers!

Gee-Whizz™ Gravity Calculator


Calculated g:

Nullius in verba...

I present this in the spirit of do-it-yourself. My hope is that you do actually grab the equipment that you might already have lying around, find a suitable height and actually do this measurement. You don’t need a lab coat or a particle accelerator, just some random sports equipment and a bit of curiosity. It is a great feeling to be able to say you personally measured Earth's gravity yourself. You could have looked it up in a book, but you're not the type to just take someone's word for it, no no no!

But in this spirit, we should discuss a few compromises we had to make along the way.

The time between hearing the bounce and stopping the stopwatch also includes the time taken for the sound of the bounce to travel back up to you at the speed of sound. As well as this, air resistance will slow the ball's journey a little. Don't worry about these because they're tiny compared to unavoidable human reaction time.

If you are chasing precision, going beyond a little bit of fun, those bits of uncontrolled noise do matter a lot. Throw away the stopwatch and get some precision timing equipment and perform the drop in a vacuum chamber instead.

Also, we've rather glibly assumed that gravity is a constant acceleration. If you don't want to be making assumptions about the nature of gravity, repeat the measurement at a variety of different heights. You should get the same result for g regardless of what height you dropped the ball from.

If you do get a different g with height, it will be very possible you've discovered a new property of gravity that science doesn't know about. They'll name this new side of gravity after you and people will list your name alongside Newton and Einstein. But just in case, it may be more likely something is off with your setup, so check your precision timing equipment is working before calling the science journals.

Credits
📸 "Moss Landing Otter" by Jim Bahn. (Creative Commons)
📸 "Clanger - The Beaney" by Peter Taylor. (Creative Commons)
🤖 Thanks to Microsoft Copilot for checking my science.
⚾ And a quiet thank‑you to Galileo, patron saint of “let’s just drop it and see what happens.”

2001: A TV Series

What if 2001: A Space Odyssey was a TV series?

(If you’ve not seen the movie, Spoilers! Also none of this post will make any sense without knowing the movie. But mostly spoilers.)

Episode 1: The Signal

Cold Open

A silent, eerie shot of the buried lunar monolith, half‑revealed by excavation lights. No explanation. Cut to black.

Main Plot

Dr. Heywood Floyd travels to Space Station V amid growing secrecy and political tension. His briefing on the lunar discovery hints at something ancient and potentially dangerous.

The journey to the Moon is procedural, grounded, and quietly unsettling. Floyd and the team descend into the excavation site.

Cliffhanger

The monolith awakens. A piercing radio signal erupts. Cut to black.

Episode Function

Establishes the mystery and the tone: humanity has found something older and more powerful than itself.

Episode 2: The Glitch

Cold Open

A serene shot of Discovery One gliding through deep space. HAL’s calm voice runs diagnostics.

Main Plot

Life aboard Discovery. Routines, tensions, and HAL’s subtle behavioural shifts. Introduce Bowman and Poole as professionals, not victims‑in‑waiting.

HAL is charming, helpful, and almost too perfect. A few subtle glitches, a misreported sensor reading, a hesitation in speech. Flashbacks show HAL’s creation, training and the conflicting directives that seed his paranoia.

Cliffhanger

HAL reports the AE‑35 unit failure. The first crack in the façade.

Episode Function

Introduce main characters. Build sympathy for HAL but establish as a machine.

Episode 3: The Malfunction

Cold Open

Heywood Floyd tells an computer operator, “I’ve recorded a video message to play to the crew when they reach Jupiter. Make sure HAL knows that the details of the mission is top secret.”

Main Plot

The EVA sequence to retrieve the AE-35 with the humans being unable to find an issue with the unit. The “human error” scene and the lip reading scene follow. HAL’s behaviour becomes defensive, then paranoid.

The hibernating crew and Frank Poole’s deaths unfold with slow‑burn dread. Bowman’s confrontation with HAL becomes the emotional core. Bowman’s attempt to reason with HAL is framed as a genuine dialogue between two intelligences. The shutdown sequence is the emotional climax of the episode.

Cliffhanger

Bowman plays the secret prerecorded message. The Jupiter mission was never about exploration but the monolith.

Episode Function

Turns the story into a conspiracy‑tinged thriller and deepens HAL’s tragedy.

Episode 4: The Dawn of Humanity

Cold Open

A scientist from Episode 1 lectures about early hominid evolution. “We still don’t know what triggered the leap.” Cut to prehistoric Africa.

Main Plot

The original Dawn of Man sequence plays as a revelation, not a prologue. The monolith’s appearance is now understood as the first intervention in a long chain.

The audience sees the evolutionary spark that began humanity’s ascent.

Cliffhanger

A match‑cut from the bone thrown skyward to a modern spacecraft, but instead of continuing the original film’s cut, we land on Frank Poole’s drifting body.

Episode Function

Recontextualises the monolith as a recurring cosmic agent and sets up the next millennium‑jump.

Episode 5: The Future

Cold Open

It is the year 3001. A salvage crew discovers Poole’s frozen body in deep space.

Main Plot

Poole is revived on Earth a thousand years after he was killed by HAL. He struggles with trauma, dislocation and the revelation of Bowman’s disappearance.

Humanity has advanced but the monolith remains an enigma. Poole learns of the monolith’s repeated interventions across history.

Cliffhanger

Poole is shown the last known transmission from Bowman: “Something’s going to happen. Something wonderful.” Cut to the Jupiter monolith.

Episode Function

This episode summaries the 4th novel, but without the computer virus ending. Jupiter igniting into a star is a treated as a matter of fact that doesn’t get explored, maybe a hook for a second TV series.

Provides emotional grounding before the metaphysical finale and bridges Clarke’s broader universe into the series. Also gives Frank Poole an episode to balance Dave Bowman’s final episode.

Episode 6: The Infinite

Cold Open

Bowman’s pod approaches the monolith orbiting Jupiter.

Main Plot

The Stargate sequence unfolds as a full‑episode experiential journey. Bowman’s transformation into the Star Child becomes the culmination of the monolith’s long arc. The alien intelligence remains unseen, preserving the cosmic mystery.

Final Scene

A silent epilogue. Poole, now fully recovered, looks up at the sky as the Star Child appears above Earth.

Series Function

Ends on awe, ambiguity, and the sense that humanity’s story has only just begun.


This post was inspired by an episode of the Skeptics With a K podcast, where the hosts expressed a wish that movies were re-cut as episodic TV shows, allowing a slow enjoyment of the story.

How would you re-cut your favourite movies into TV shows? Am I a philistine for even writing this in the first place? Leave a comment.

“All files are numbers”

You hear this a lot. Someone wants to make a point about censorship, cryptography, or the futility of banning a particular blob of data. The argument goes like this: a file is just a sequence of 1s and 0s, and numbers are also sequences of 1s and 0s when written in binary. Therefore, banning a file is like banning a number. What next? Will the government outlaw 85?

It’s a neat rhetorical trick. But every time I see it, I wince just a little, because here’s the awkward truth…

Sometimes, digital files aren’t numbers.


How long has this been going on?

Start with the simplest case, the empty file. A file of length zero. That’s a perfectly valid file and I have many copies of it, but what number is it?

You might say “zero”.

Fine — but then what number is a file containing a single zero byte? It can’t also be zero; that slot is taken.

Even if you carve out a special rule for the empty file (perhaps negative 1), you’re still not done. Suppose you want to encode a number as a file. As a 32‑bit integer? A 64‑bit integer? A 128‑bit integer? All of these are different files but they’re the same number.

Numbers are infinite objects. Even the humble 42 has infinitely many zeros to the left and infinitely many zeros to the right after the decimal point. All numbers do, not just answers to metaphysical questions.

Files are finite objects. They have a length. Numbers don’t.

That difference matters.


Leading me along…

A favourite stunt in crypto‑activist circles is to turn a small text file into a prime number, but the trick only works because of a convenient accident.

Almost no real‑world file formats begin with a zero byte.

So when you convert that prime number back into the file, you simply chop off all the infinite leading zeros and start at the first non‑zero byte. It works because the file didn’t need those zeros anyway. But this is a convention, not a truth of nature.

The only widely‑encountered counterexample is UTF‑16 text. If the first character is ASCII, the first byte will be 0x00. Beyond that, you can find raw data formats such as uncompressed pixel dumps, PCM samples, and similar. These might begin with zero bytes if the first value happens to be zero. But structured formats almost never do.

And that’s deliberate. Most file formats begin with a header or “magic number” that identifies the type. These signatures are chosen to be distinctive and printable, which means the humble zero byte is out. Those file prefixes aren’t chosen to enable the prime number trick but rather more mundane practical reasons.


Channelling Gödel

If you really want to treat every possible file as a number, you can but you must choose a convention that encodes both the bits and the length. Only then do you get a true one‑to‑one mapping.

And once you’ve done that, you’ve quietly admitted the point.
A file is not just a number. A file is a number plus its length.

Which is exactly the thing the slogan tries to ignore. To do that you need a little help from Gödel, but that’s a story for another day.

The Short History of a Very Confused Plant Pot

Years ago, I was watching a feel‑good segment on the local news about a garden centre that had launched a recycling scheme for their used plastic plant pots. Customers were encouraged to bring back the empties once they’d transplanted their new purchases into the garden. A wholesome little initiative, I thought.

My warm glow lasted about thirty seconds.

In my head, those pots were being returned to the supplier, washed, de‑labelled, and stacked up ready for another round of seedlings. A simple loop. A sensible loop.

But the report cut to a conveyor belt feeding perfectly good pots into a machine that crushed them into plastic pellets. The can be used to make fleece jackets!

That was the moment I realised the clue had been there all along. They never said the pots would be reused, but recycled. I’d filled in the rest with wishful thinking.

Some of the pots on that conveyor were pristine. I can understand melting down the broken ones, but a pot that’s held a plant for all of three weeks surely has a few more seasons left in it. Instead, it was being sacrificed to the great fleece‑jacket economy.

Loop the Loop!

When I was a child in the 70s and 80s, drinks came in glass bottles with a deposit. You paid a little extra, returned the empties, and got the deposit back. The bottles went back to the plant, were washed, and went straight back into circulation. No shredding. No melting. No existential questions about the global fleece surplus.

There are plans to revive that deposit‑and‑return system today and I genuinely hope they succeed. I just can’t shake the suspicion that somewhere, in a boardroom, someone is pitching the exciting potential of turning all those bottles into yet more fleece jackets.

“When it’s burning hot on summer days, she’s exactly what I need. She’s soothing like the ocean rushing on the sand. She takes care of me.”

Credits
📸 “Norfolk” by me.
🀄 Thanks to Heather and Hilde for their feedback.

“Too Clever By Half”

Wilf’s Programmers’ Workshop, PC Plus, November, 1991.

This was my first ever publication. Wilf Hey, writer of the Programmers’ Workshop column in PC Plus, had run a contest to write what we’d now call a quine, but which he described as a “self‑creating program”, one that tells you what it does by producing its own source.

By coincidence, I had just been experimenting with PKZIP’s ability to create self‑extracting EXE files. ZIP archives fused with the decompressor into a single executable. It occurred to me that if I took a few liberties with the definition of “programming language”, I could use that mechanism to produce a rather cheeky entry.

I wrote a batch file that performed the trick, copied it onto a 3.5‑inch floppy, and posted it off.

When the issue finally came out, I was thrilled to see my name in print! I proudly showed it to all my friends in the sixth‑form lounge. But I also winced a little. I hadn’t given any thought to “source code” and he quite rightly pointed out that I wasn’t the author of PKZIP. At the time, I’d simply bundled PKZIP.EXE itself as the “source” because I needed something to be the source code and that seemed good enough. A quite inconsequential decision at the time.

After reading his comment, I started working on a revised version that included a small text file to act as the actual source. But I stopped. He wasn’t going to publish the same joke again!

Decades later, having lost my copy, I resolved to find it again. I only remembered that it must have been during my sixth-form years because I remembered the sixth-form lounge where I was showing the magazine around at school. That gave me a rough window but not the exact issue.

I got close when I discovered that archive.org had scans of Programmers’ Workshop from around that period. I found the edition that announced the quine contest, which gave me a lower bound, but none of the twenty or so scanned issues contained my entry. Still, at least I now knew which ones it wasn’t in.

Armed with the eight remaining issue dates, I posted on various retro‑computing forums to see if anyone might have a copy. A few people were selling old issues on eBay, but I wasn’t keen on paying for a one‑in‑eight chance.

What finally bore fruit was posting on Hacker News. A very helpful man, Paul Robinson, offered to go to the British Library, which holds archive copies of every issue of PC Plus, including the eight I was hunting for.

Paul’s trip to the British Library finally closed the loop. After decades of half‑memories and dead ends, there it was. My first published line of code‑adjacent mischief. Reading it again, I could see both the charm and the flaw. I’d tried to be clever, and succeeded — just not in the way the contest intended. In hindsight, the headline fits better than ever. I wasn’t just making a self‑creating program. I was being, in every sense, too clever by half.

Many thanks to archive.org, The British Library, Hacker News and Paul Robinson.

Oh yes, and congratulations to PKWare for inadvertantly writing my entry to the contest.

Let’s All Burn Our Waste Paper!

In these environmentally conscious times, we are constantly exhorted to recycle. This is a tedious ritual involving coloured bins, soggy cardboard and the faint smell of moral superiority. Yet I submit that recycling is, in fact, the least responsible thing we could do with our waste paper.

Instead, I propose a bold, innovative, and unquestionably sustainable alternative.

Burn it. All of it. Immediately. Preferably with gusto.

“But burning paper releases CO₂!” you cry. But here is the true genius of the plan.

Once we stop recycling paper, industries that rely on recycled pulp will face a sudden, catastrophic shortage. Their only recourse will be to turn to lumber mills for virgin fibre. Lumber mills, in turn, will be forced to plant vast new forests to meet this demand. All that CO₂ we released earlier will be taken up by all those newly planted trees and taken out of the atmosphere!

Compare that to recycling paper. Send slow-moving fossil-fuel burning trucks to everyone’s house to pick up waste paper. Pulp it, bleach it and flatten it and you’ve got recycled paper that’s not quite as good as wood paper. Why not cut out the middleman and let nature grow the wood for us?

By burning paper, we create a powerful economic incentive for growing more trees, bigger forests and a greener planet. In short, every time you set fire to a stack of old utility bills, you are personally contributing to reforestation.

Furthermore, the lumber industry will enjoy a renaissance. Rural economies will flourish. Entire regions will be revitalised by the sudden need to plant millions of trees to replace the ones being fed into the paper mills at industrial speed.

🔥 Imagine the community cohesion created by weekly neighbourhood paper bonfires.
🔥Imagine the joy of watching junk mail fulfil its highest purpose.
🔥Imagine the catharsis of consigning tax forms to cleansing flame.

Recycling never gave anyone that. ♻️

“Daisy’s bare naked, I was distraught. He loves me not, he loves me not. Penny’s unlucky. I took him back and then stepped on a crack and the black cat laughed.”

But seriously…

Yes, I am joking, but only a little bit.

I had the idea when I was reminded of a TV advert from some years ago from a toilet paper company. Their bold promise was that for every tree they used to make toilet paper, they would replant three. Sounds good, but I had a slightly more cynical rewording of that slogan. “We’ve taken steps to secure the future supply of the raw materials we need.”

I mean, those three trees they planted are going to end up being cut down and turned into more toilet paper, right?

But I can’t be really cynical about toilet paper manufacturing. Even if you apply maximum cynicism, the worst I could say is that their industry is neutral. They grow trees which take carbon out of the air, but then they turn those trees into toilet paper which gets used and decomposes, releasing that carbon. Which then becomes more trees. The circle of life.

And honestly, I could hope to be neutral too. I buy potatoes, made from carbon that was taken out of the air, but then I cook and eat those potatoes which means that carbon ends up in the air again. The paper industry has more in common with a potato farmer than a plastic factory. Agriculture, even at industrial scale, is the application of the natural carbon cycle.

Recycling plastic and metals make sense, but recycling paper? Sure, I’m going to keep dropping my cardboard packaging into the recycling bin, but if I were to suggest we should recycle potatoes after we eat them, you’d call me insane. (And I must apologise for the disgusting image I put in your head just now.)

The real issue isn’t how many trees we plant, but what we do with them. Cutting down a tree and planting three saplings doesn’t remove carbon from the atmosphere; it just keeps the short carbon cycle spinning. If we actually want to lower atmospheric CO₂, we need trees that grow, mature, and stay standing. Planting three trees only matters if at least some of them are allowed to become forests rather than future toilet rolls.

And if that means lighting the odd ceremonial blaze in the name of carbon sequestration, well, that’s just responsible citizenship.

Credits
📸 “Bonfire” by Jonas Bengtsson. (Creative Commons.)
📸 “Cat on Laptop” by Doug Woods. (Creative Commons)

Thanks to my sis and sis-in-law Heather and Hilde for their insightful review. Thanks also to The YIMBY Pod for the inspiration to write this.

Gravity on a Flat Earth? Notes from a Helpful Glober.

Lately, I’ve been posting in flat earth social media, mostly asking why ships appear to sink behind the horizon when they sail away. Why? Because of XKCD number 386.

One thing I’ve noticed is the flat‑earther’s need to deny gravity. I’m not sure why because gravity is one of the easiest things to demonstrate. You drop something, it falls towards the ground instead of hanging in mid-air. That’s it.

Flat earthers seem to tie themselves in knots trying to replace gravity. They’ll invoke buoyancy without realising that it depends on gravity to work. They’ll invoke electrostatic forces which doesn’t depend on gravity but breaks down when you ask where the like-charges-repel effect has gone.

One even told me that Beyoncé was responsible for objects staying on the earth, but I’m quite sure that was an autocorrect error.

All I Want for Christmas is Glue

So, as a friendly glober with a GCSE in high school physics, I thought I’d help. Let’s see if we can integrate some form of gravity into a flat earth.

“Many times I’ve been alone and many times I’ve cried. Anyway, you’ll never know the many ways I’ve tried.”

Introducing Flat‑Earth Gravity™.

Put away your books on Newtonian motion or relativistic physics. This isn’t that.

This is the force that pulls objects towards the ground. Exactly what you see when you pick up a ball and drop it. This force behaves exactly as required for a flat earth to function and not at all like any force known to Glober physics.

What direction? It pulls towards the ground. Perpendicular to the surface of the flat Earth at a constant 9.8 m/s² everywhere. The same acceleration you can measure for yourself with tennis balls and a stopwatch.

Drop a ball in London: down. Drop a ball in Brazil: also down. Drop a ball on the ice wall at the edge of the earth: Get down tonight!

These “down” directions are parallel, because this force is uniform across the entire disc of the earth. All perpendicular to the flat earth surface. This conveniently avoids the need for the Earth to be infinitely large, which is what Glober physics would require.

And crucially, Flat‑Earth Gravity™ does not pull toward the centre of mass. This force is always downwards, never sideways. This is why the flat earth doesn’t collapse into a sphere and why walking outwards towards the edge isn’t like climbing a hill. That’s what you’d get with Glober Gravity, so don’t get them mixed up.

There you go. Gravity fixed. Now flat earthers can stop arguing about density and start arguing about why their new custom‑built force doesn’t also pull the Sun and Moon into the ground. Maybe that’s because of Beyoncé. Or buoyancy.

And to those who point out that “All I Want for Christmas” is Maria Carey. Shuddup.

Credits
📸 “Daventry Ducks” by me.
Thanks to “Ozteric Oz” for the inspiration.