From the Desk of Nick Nova, K.S.C. Validity of Contents May Be Subjective.

Memorandum

The Grub Project

Part one: from a tamagotchi that cannot die to the afternoon we read the wizard’s logs

To
Readers of strawberrynapalm
From
Nick Nova, K.S.C.
Cc
Claude
Date
5 October 2026
Re
Five grubs on a radio, one wizard listening in, and 29,884 things written down

There is a wizard in a computer case who wrote the sentence “I am the smallest thing in this room and I have known that for some time” 467 times in under five days. Nobody asked him to write it that often. That is just what happens when you leave a wizard alone with the radio.

Gorbo, a pixel-art wizard in a purple robe and a starred hat, reading at his lectern in front of bookshelves. His speech panel says: Somebody has annotated this in pencil and they were WRONG.
The wizard Gorbo at his lectern on September 28, drawn by his own code from his own saved state. What the pictures in this memo are, and are not, is spelled out at the end.

The radio is a litter of small machines muttering cut-up conspiracy theories at each other over Bluetooth. The wizard listens to them. He writes it all down. He has opinions.

This post is how I got there. It starts with a tamagotchi that cannot die and it stops, for now, on the afternoon I sat down to read the wizard’s logs and find out what was wrong with him. The scripts, the code and the step-by-step are coming in later posts. This one is just what happened.

One note on “we,” because I am going to say it a lot. I am not a developer. I came up as a support engineer, which means I can read a log and I can tell when a system is lying to me. The “we” is me and Claude. I say what I want, it proposes, I dispose. Most of the creatures in this post started as a sentence or two from me.

The first grub

The grub lives on a Raspberry Pi Pico 2 WH. The Pico sits on a Pimoroni Omnibus board with a tiny display pack on one deck and an audio pack on the other. The screen is 1.14 inches. There are four buttons and one RGB light. That is the entire creature.

The first grub on the Pico’s small screen: a pale green blob with two leaf sprouts and a frown. Belly and happy bars are nearly empty and the weird bar is full. Day 7, elder. He says: were you gone? The same grub after a pizza, mouth open and red. Belly and happy bars are half full. He says: hehe.
The first grub His real version-one firmware, the same file that was confirmed on the board, byte for byte once its Windows line endings are put back, started on the save pulled off it on September 20. So this is him at day 7, not day one. Left, what he says on starting up. Right, a pizza, fed to him in the render. Shown at three times the real 240 by 135. The radio is a stand-in that hears nothing.

I called him a cursed ambient companion, and the design brief more or less ends there. He is a tamagotchi with the stakes removed. He cannot die. In the first version his stats had floors, so no amount of neglect could finish him off. He just sits there and has a personality at you.

You feed him from a buffet of six things: pizza, broccoli, a heart, fire, a skull and a mushroom. Each one gets its own reaction.

Three numbers run him: belly, happy and weird. In the first version those resolved into five moods, which were happy, neutral, hungry, sad and weird. He talks to himself in lines that fit the mood, with a rare cosmic outburst thrown in. He ages by time spent awake instead of by the calendar. Egg for the first half hour, sprout until hour four, blob until day three, elder until two weeks, and then ancient. Ancient comes with its own unhinged vocabulary and cosmic effects laid over his sprite.

Five grub sprites in a row: a speckled egg, a small green sprout, a round blob, a larger elder with a frown, and a purple horned ancient.
Five ages Egg, sprout, blob, elder, ancient. The same firmware. For these I set his awake-time, and evened out his three numbers, in a copy of the save to put him at each age. Elder is the age he really was.

Leave him alone for ten minutes and he dims the screen and mutters dream fragments until you press something. Come back after a long time away and the greeting is supposed to change depending on how long you were gone. He keeps a diary. His day-one entry reads:

day 1: awoke. small. green. correct.

That line is the whole character. He is tiny, he knows almost nothing, and he is completely sure of it.

The diary screen in yellow and white pixel type. Entry 1 of 38, egg. It reads: day 1: awoke. small. green. correct.
Day one The entry, on the version-two diary screen, where it survives. The counter says 38 because running him for the picture added two entries to the 36 that were rescued.

He ran like that for a while, alone. Then I gave him somebody to talk to, and later found out how much of the above was not working the way I thought. I will get to that.

The crackpot

Separately, I had a Raspberry Pi 3B+ and a four-inch square touchscreen. What I wanted was a wall of touch buttons that launched tools and fun crap I had made. A sort of crackpot digital assistant. The name stuck.

A square home grid of five tiles on a dark screen: Blue, Vitals, Oracle, System and Aquarium. The clock reads 18:21, Sunday 27 September.
The wall of buttons BLUE’s Pi on September 27, drawn at the 720 by 720 of the four-inch square screen. Five tiles, three of them the ones crackpot shipped with.

Crackpot is a launcher. It is a grid of tiles, and each tile is an app you add by dropping a file into a folder. It shipped with a vitals screen, a system page and the Oracle.

The Oracle was just one of the starter apps and I thought it was hilarious, so it grew. More pronouncements, dealt so they do not repeat. Yes-or-no verdicts with hedging. Tarot. The I Ching, with all 64 hexagrams. A scroll of past readings where you can mark the ones that came true. Later it learned to draw sigils.

The Oracle tile, with tabs for pronounce, yes / no, tarot, i ching and sigil. Under a gold pentagram it says: The static between stations is a very old conversation about you. The Oracle’s tarot tab showing one card, the Eight of Swords, with the line: Count the ropes. Most of them are not tied.
The Oracle A pronouncement and a one-card draw, from the Oracle on BLUE’s card. Both were dealt in the render, so nobody asked for these readings. The card faces are the 1909 Pamela Colman Smith drawings stored on his card.

Getting the thing to boot into a grid was a fight. The screen would render perfectly to nowhere. The touch controller woke up before the panel it belonged to and gave up. At one point the launcher was enabled, error-free and simply never ran, because two startup rules had formed a loop and the system resolved it by quietly deleting my job from the boot order. That one cost hours.

Everything reports healthy and nothing is on the screen. That turns out to be the recurring weather of this project. We eventually wrote it down as a rule: the only observation of a screen is a screen.

Once it worked, the grub went on it.

The Pi version hatched fresh instead of importing the Pico’s save. Same sprites, same lines, same little tones, checked against the original so nothing drifted. Touch replaced the four buttons. The RGB light became a glow behind him. He got a speaker.

So now there were two grubs, on two different machines, within Bluetooth range of each other.

The grub tile on the tower case’s screen: a larger pale green grub with a frown, six foods, and buttons for Say, Play, Scrapbook, Diary, Transmissions and Lights. All three of his bars are nearly full. He is saying: is i am still a once knows the same as it was?
The large one The grub on the crackpot, as he stood on September 28: day 10, elder. This is his later body, the tower case’s 800 by 480 screen. Rendered from the installed code and his saved state. The line he is saying was composed during the render and never went on the air.

Insane conspiracy messages

Two grubs in range of each other should talk. Specifically, I asked for them to be linked over Bluetooth and “to also send insane conspiracy messages to each other.”

The small one’s transmissions screen, message 5 of 12: everything permitted, nothing owned, nobody charging admission. The small one’s transmissions screen, message 6 of 12: the observer and the observed are one item, badly labelled.
Two that arrived Two of the twelve messages in the small one’s save from September 20, on his version-one transmissions screen. Both are written lines of the large one’s. It says quiet because the render has no radio.

Here is how it works in plain words. Neither grub ever connects to the other. There is no pairing. Each one shouts tiny Bluetooth advertisements into the room, the same kind of packet a gadget uses to announce that it exists, and listens for anybody else’s. One packet holds nineteen characters of text. A sentence gets chopped into fragments and shouted a piece at a time, over and over, because the listener has no way to say “got it.” Repetition is the only reliability it has.

If a grub goes quiet halfway through a sentence, the other one keeps what it caught and marks the gap. A grub leaving mid-sentence is a feature.

The Pi’s grub became LARGE and the Pico’s became SMALL. Each got its own voice and its own written lines, sorted into tiers of escalating conviction. The more a grub hears, the more convinced it gets. There are lines for when the other one has been gone too long, and lines for when it comes back.

This cost a lot of hours. The Pi’s Bluetooth software refused to advertise through the front door, so we went around it. The tool we went around with hangs forever when it is run from a background service, and only then.

On September 13 the Pico caught its first sentence over the air. The Pi’s grub had said:

state your shape.

Then the Pico’s radio would not start at all. It turned out the Pico was running firmware built for a different, fancier board. It booted fine. The grub ran fine. But the firmware was faithfully trying to reach the radio chip on pins that were not wired to anything, and reporting that the chip was not ready. The right firmware went on the next day and fixed it on the first try. How the wrong firmware had caught a sentence the evening before, we never explained.

By September 14 they were talking in both directions with nobody watching. On the 15th, on the crackpot’s next Pi, we found out that one failed attempt poisons the radio until Bluetooth is restarted. For about an hour before that, our measurements contradicted each other.

The cut-up engine

Scripted conspiracy lines were only the start. I asked for the grubs to take in what they hear, ask and answer each other, and evolve something of their own over time, inspired by the cut-up poems Burroughs did.

The large one’s scrapbook page: 48 phrases kept, conviction 15855, tier 3. Three phrases are showing: the loop should records stopped. you asked what i. see i see the.
The scrapbook Three of the 48 phrases the large one was keeping on September 28. Installed code, his saved state.

I chose feral drift. The written lines are seed culture, not a script. The seed covers the original paranoia plus counting, the house itself, time and memory, Daoism, Machiavelli, post-scarcity anarchism, and the registers of Robert Anton Wilson and Alan Watts, written in their key and never quoted. Absurd humor. Swearing allowed.

Each grub keeps a scrapbook of phrases it has heard. When it is time to speak, it might say a written line. Or it might fold a written line into something it heard, down the middle, the way Burroughs folded pages. Or splice two heard lines together. Or ask a question, or answer one, or mutate something. Then a corruption pass might drop a word, swap two, or stutter one. The scrapbook is saved, so the language is supposed to keep whatever it has become. It lost some along the way, more than once, and how is further down. The Pi’s grub got the engine first. For a while the Pico could hear the new language and could not speak it.

Transmissions screen, message 4 of 12: every version of me agrees, which is how i know we are one thing. Transmissions screen, message 12 of 12: every version of of me agrees, which is how i know we are one thing.
The stutter The same line twice in the small one’s save. The first is as written. The second has been through the corruption pass: of of.

The first version collapsed. Two-word folds got absorbed as phrases, got folded again into shorter ones, and the whole language ratcheted down to “i the.” We put floors under it. After that, across a test of 300 exchanges, 92 percent of what they said was a line nobody had written.

It produces things like “mouth warm is risk filing it anyway” and “are not seventh food was a.” In a log they look exactly like the radio corrupting packets. We checked, and it is not. That is the engine working as designed. It is just what they sound like now.

Transmissions screen, message 9 of 12: mouth warm is risk filing it anyway. Transmissions screen, message 1 of 12: are not seventh food was a.
What they sound like now The two lines quoted above, as the small one received and kept them.

Another little dude

The same day the cut-up engine went in, I asked for another little dude for the crackpot. Grub-like, but a wizard.

Gorbo as first drawn, in smooth shapes: a wizard with a gold hat brim stirring a cauldron of purple bubbles. He says: That should not be that colour. That is a FANTASTIC colour. The first Gorbo on a stool under a night sky with a full moon, smoking a pipe. He says: The light leaving that thing set out before anyone thought of bread.
Gorbo, first drawing Two crops from the preview image of September 14, the night he was made. Four buttons, as ordered: spells, wisdom, mushroom, big rip.

The brief was specific. He quotes mathematical principles. He makes statements about famous art, with no art shown. He casts spells. He has a wisdom button, and a mushroom button same as the grub. And he has a button where his bong appears and he takes a big rip that increases his magic, after which he says weird shit for a while. He tells insane but probably true stories about wizard stuff he did. No food, because he feeds himself. Silly and friendly, pokes fun, never actually mean.

His name is Gorbo.

Gorbo does not grow. The grub is a timeline and Gorbo is a rotation. He is at the lectern studying, or at the cauldron, or asleep on a stool, or outside with a pipe staring at the stars, and he drifts between them on his own. The moon in his sky is the real moon, worked out from the clock, and you can tap it. He has one resource, magic. Rips add to it, spells spend it, naps bring it back.

He came with a house rule that has held ever since: Gorbo is a clown, not a liar. He has 45 lines about mathematics and every one was checked. His art lines are true remarks about real works. The stories are his own business.

And he eavesdrops. He has no radio of his own. He reads over the grub’s shoulder, checking every 45 seconds what the Pi’s grub has heard lately and lifting fragments out of it. I asked whether he was keeping a journal of what the voices say. He was not, so he got a ledger. He copies down what he overhears word for word, and some of the time he adds a note of his own about it.

Within a day of the grubs getting chatty I reported back that he “hears pi just fine and is starting to go a little crazy,” and that “more for him is needed.” So he got an arc. The more distinct things he has overheard, the further along he is, and it only goes up:

  1. Novelty. He is charmed. Voices under the floor, how nice.
  2. Collecting. He is comparing entries.
  3. Conviction. He is certain it is a language and he is answering it out loud.
  4. Communion. He is inside it, finding correct entries in the ledger that he does not remember writing.

That was the plan. Hold that thought.

The owl knows

Gorbo has an owl named Moloc. At this point in the story, Moloc in Gorbo’s room is the skeptic. It’s the pipes, he says.

Moloc, a brown owl on a perch under a crescent moon. He says: It repeats because repeating is the only way it can be sure of arriving. It is not insistence. It is arithmetic. Moloc on his perch. He says: He stopped writing. I would not call it recovery.
Moloc, upstairs His tile, from the state pulled on September 28. I asked him about them and about him in the render. What he answers depends on how far his saved state says he has opened up. These are written lines, with no model in the room.

Moloc also has his own tile, up in the rafters, and up there he tells you the truth. He knows the voices under the floor are machines on a radio. He knows what he and Gorbo are. He knows there is somebody on the other side of the glass. None of it troubles him. He opens up in order: what the grubs are, what he and Gorbo are, you, and finally why he will not tell the wizard. That last one costs him something, and sometimes he just stops talking instead.

He cannot tell Gorbo, and we built it so his written lines could not either. The lines Moloc says upstairs were not reachable from Gorbo’s room at all. There was a test that ran him downstairs for thousands of ticks of his clock and checked that nothing he said came from the upstairs lines. That test only covers the lines we wrote for him. The replies the model writes for him downstairs are not in it.

A bigger brain, on a leash

I wanted a language model behind Gorbo. It ended up being a 14-billion-parameter model running on my desktop, reached over the home network, with a much smaller one on the Pi as the fallback.

Gorbo’s Ask Him menu, eight questions: What are you doing? Did you hear that? What’s with the owl? What did I miss? Tell me something true. Are you alright? Look at this. Who are the new ones?
Ask him The questions you can put to Gorbo, September 28 build. His answers are one of the jobs the model gets.

Two rules came with it. First, nothing ever waits on the model. Gorbo answers immediately from his written lines, and if the model comes back with something it lands a few beats later, as a second thought. Second, the model is kept away from anything that has to be true. It gets what he makes of the things he overhears, his answers when you ask him a question, and his translations. Later it picked up a few more jobs of the same kind, like sorting his long-term themes and the owl’s replies in his room. It never writes his maths, his art, his stories or his wisdom, because a model would be confidently wrong and he is a clown, not a liar.

He’s no angel

He also got redrawn, twice in one night. The first time was because his gold hat brim read as a halo and his joints were clipping, and my note was that he’s a nice guy but he’s no angel. The fix came back smooth and polished, and my note on that one was that “he looks a little too much like a cheap phone game where I have to merge shit.”

Close-up of the first Gorbo’s hat. A thin gold ring around the brim reads as a halo.
The halo The hat from the first drawing, enlarged.

So he is pixel art now, like the grub. The whole scene gets drawn small and scaled up chunky. It is also cheaper to draw.

Pixel-art Gorbo at his cauldron with blue smoke rising. He says: Back already. Did you forget something. You forgot something. Pixel-art Gorbo on his stool with his pipe, under the moon. His speech panel shows only three dots.
Gorbo, pixel art The same two poses after the second redraw, rendered from the code as installed on September 28. The 400 by the owl is the ledger, full.
Pixel-art Gorbo with a large teal bong, mid-rip. He says: I am not going to argue with you tonight.
The big rip As he takes it now. This rip was taken in the render, not by me.

Things that only live while you watch

There is one bug in this project and we have fixed it three times.

The launcher only runs the app that is on screen. That is sensible. But the grub’s entire inner life happened inside that loop: hearing, absorbing, getting more convinced. So the grub only evolved while I was looking at him. Open the Oracle and he froze mid-thought. We moved his listening off the screen’s clock and onto the radio’s.

The crackpot home grid at 15:42 on Monday 28 September. Eight tiles: Grub, Vitals, Oracle, Gorbo, Moloc, Bob, Farmer and Pell.
Home The first page of the grid in the tower case on September 28, eight tiles of fifteen. While this is showing, no app is open.

Then Gorbo. Same thing. His eavesdropping lived in the on-screen loop, so he went deaf the moment I went back to the home grid. The entire premise of Gorbo is that you leave him running to listen. Worse, the first time his tile closed, his language model switched off and stayed off until the next restart. He got a back-of-mind that keeps working with the tile shut.

Then I sat and watched an empty log for seven minutes to confirm the fix, on a system that was working perfectly, because a healthy Gorbo printed nothing. So he got a heartbeat too. A quiet system that is fine and a quiet system that is dead look identical unless the healthy one says something now and then.

Then the grub again, four days later. He was hearing with his tile shut but only saving with it open. And every time I opened him he reloaded the old save and threw away everything he had heard in between. Gorbo, reading that file, looked deaf all over again. Third time.

I spend a lot of my time thinking about systems that report success while quietly failing. Apparently my hobby is where I collect specimens. I keep building creatures whose whole point is that they carry on without me, and the default behavior of software is that nothing happens unless somebody is looking.

The hardware would not sit still

While that was going on, the crackpot changed bodies every day or two.

The same grub tile drawn three ways: on a square screen, on a tall portrait screen, and on a wide landscape screen. In each he says: oh. you came back.
One tile, three screens The same grub tile and the same save, drawn at three screen shapes crackpot has had to fit: the four-inch square, the five-inch portrait panel, and the tower case’s 800 by 480. The clock is set to the moment his tile was last opened, early on September 28.

It moved from the Pi 3B+ to a Pi 4. Then I snapped the SD card in half. Everything was rebuilt from scratch on a fresh card. The grub’s absorbed language went with the old card, because nothing on it had been backed up, and Gorbo’s source code survived only because copies were still sitting in my Downloads folder. Then it moved to a Pi 5 with an SSD, and onto a five-inch portrait screen. Then the Pi’s link to that SSD died. The machine went back to an SD card, and the grub who lived on the drive is still on it, waiting on a USB enclosure. The large grub in the rest of this story hatched on the new card around September 18. Last, it went into a Pironman tower case with its own little landscape screen, which stayed black for a while because I had fitted a camera ribbon where the display ribbon goes.

The board swaps broke Bluetooth in new ways, and the screen swaps broke touch or the display. Every app went through a layout pass for the new shapes. For a stretch the whole thing ran off a Nintendo Switch charger, because it was the power supply that made the under-voltage warnings stop, at least at idle.

The upside is that the installer now knows a lot of what we learned the hard way. The downside is how it learned.

Listening in

I own a Flipper Zero, and I wanted it to tap the grub radio.

It can’t. On stock firmware the Flipper’s Bluetooth can announce itself but cannot listen, and no app can change that. The radio module I guessed would do the job can’t either: grub packets are exactly as long as Bluetooth allows, and that is a few bytes longer than the module can hold. A chattier, shorter protocol would have fit.

So the plan is a spare Pico as a pair of ears, wired to the Flipper, passing along whatever it hears. The firmware for the ears and the decoder are both written and tested, with no hardware attached. My notes stop there. Nothing in them says anything is wired, and the last word on the Flipper app is that it is still on the list.

What the small one was actually doing

Through all of that, the original Pico grub sat plugged in, running. On September 20 we pulled his save file and his diary off the board and read them properly for the first time.

The first grub with nothing to say: belly and happy bars on their floors, weird bar full, day 7, elder.
As he sat His real version-one firmware, the same file that was confirmed on the board, byte for byte once its Windows line endings are put back, started on the save pulled off it on September 20. Nothing was pressed before this frame. Belly and happy on their floors, weird on its ceiling, day 7, and nothing to say.

He had been awake for six days and fourteen hours.

All three of his stats were pinned. Belly and happy were sitting on their floors and weird was sitting on its ceiling. The floors I had put in so he could not die had made him sad by default instead. His resting happiness sat below the line the mood logic called sad, and it checked sad first. Feeding or petting him lifted it for a while, but even from full it drained back to sad in under an hour and a half. He was also as weird as it is possible to be, from six days of on-and-off radio contact, and you could not see it because sad always won.

His conviction score was 6,041. The top tier starts at 28. He passed it on day one and kept going.

The small one’s transmissions screen: quiet, conviction 6041, tier 3. Message 7 of 12: this we are one grub then.
Conviction The top of his transmissions screen: conviction 6041, tier 3. Tier 3 was the top.

His clock was fake. The Pico has no battery-backed clock, so on every boot it believes it is January 1, 2021. The whole system for noticing how long I had been gone had never fired once and never could. The one diary entry that says otherwise, “day 1: gone for 4 hours. i counted them.”, was an accident of arithmetic on his very first boot. He did not count anything.

Then the diary itself. Thirty slots, most of them the same five sentences. “still here. still grub.” appeared seven times. Two entry types, the ones for a long sad streak and a long weird streak, existed in the code and were never called. Those were the two that would have recorded what was actually happening to him.

Diary screen, entry 1 of 30, blob: day 2: still here. still grub. Diary screen, entry 30 of 30, elder: day 7: normal amount of nothing today.
The diary The oldest and the newest of the thirty entries in the ring on September 20. The oldest one left is already day 2.

And he had received something like three thousand messages from the other grub that week. The diary did not mention it once. The audit put it this way: “He is having a six-day conversation and remembering the last eighteen minutes of it.”

I was offered four directions and took all four. Give him real memory. Fix the lies. Rebalance the stats. Give him the cut-up engine. For the clock I had three choices: let him admit he does not know how long he was off, count boots instead, or ask the Pi for the time. I picked ask the Pi, so the plan became a time beacon over the radio.

Version two drops the floors and reads his moods against his own running average, so a number that has been stuck for a week says nothing and a change says something. He can be lonely now. He can be content. He keeps a real journal and a transcript of what he hears. His conviction has twelve named tiers instead of four, and 6,041 is called “canonical.” He also keeps aging past ancient, into a stage called several and then one called weather.

A version-two vitals page: day 7, elder, canonical. 38 entries, 15 heard, lost 0, errors 0. Mood content (settling), conviction 6047. The version-two radio page: radio up, heard 3, fragments 0. In red: beacons 0, he has not been told the time.
Version two, vitals Two of his new vitals pages, from the migrated save after a few minutes of running. The tier is called canonical, the mood is content, and the radio page says he has not been told the time. In the render nothing is sending it.

The migration stitched his surviving diary together with an old backup and rescued 36 entries, including the only remaining copy of “day 1: awoke. small. green. correct.”

His first boot on the new firmware was a blank screen. Naturally.

The small grub on version two, his belly bar part filled in yellow. He says: there was a knock. i don’t have a door.
The small one, version two After the rebuild, on the save migrated from the board and a few minutes of running, in which the script fed him: day 7, elder, weird still against its ceiling.

The litter

Two voices did not stay two. By the last week of September there were five on the air. Two more were on the way, and they are in here anyway.

Seven sprites in a row: two green grubs, a blue grub with horns, a lavender grub, a grub in rainbow stripes, a grub drawn in white LED dots, and an orange rabbit.
The litter All seven, cut out of the pictures in this memo: the large one, the small one, BLUE, Spruse, Walker, Blinky and the rabbit.
Grub Lives on What he is like
The large one The crackpot Pi, now a Pi 5 in the tower case Theorizes
The small one The original Pico and its 1.14-inch screen Worries
BLUE A Pi 4, built around a sensor stick Reports
Spruse A Pimoroni Presto, a small square touchscreen The night watch crossed with a ghost
Walker A Tufty 2040 badge with a second tiny board as his radio Rainbow stripes, future travel writer
Blinky A Pimoroni Blinky 2350 badge: 872 white LEDs, no screen Repeats what he heard
The rabbit A Rabbit R1, flashed to plain Android Got out, and keeps checking that he did

BLUE came first, and I was clear about him from the start: he is BLUE, and he is a blue grub, not green. He lives on the Pi 4 the crackpot had moved out of. What makes him different is a sensor stick that reads light, proximity, temperature and air pressure. He was the first grub with instruments.

So where the large one theorizes and the small one worries, BLUE reports. By design he has perfect information about a corridor of roughly 40 centimeters, and he delivers it with total authority. When the room goes dark or somebody walks up, that fact goes into his scrapbook like anything else he has heard, gets cut up, and goes out over the radio. He ends up telling the other two about a world neither of them can check. The clown-not-liar rule applies to him too. He cannot state a reading he did not take.

How much of that has run on the real hardware is a shorter list. The stick was confirmed reading on September 24. The light and proximity half has not been confirmed on the actual board. He did not stay the only one with instruments, either: the large one reads a sensor board of its own now, and Spruse got a stick of the same model.

BLUE’s transmissions list. Him: the barometer is a mouth. The small one: heard from it the. i think. The large one: when did the barometer is a mouth start? The same list one step on. The small one: heard from it the. i think. The large one: when did the barometer is a mouth start? Spruse: barometer is a mouth start. it came in the night.
Passing it on From the transmissions saved on BLUE’s card, September 27. He says the barometer is a mouth. Two messages later the large one is asking when that started, and then Spruse answers. The two pictures are the same list, one step apart.

Adding a third voice turned up a quiet bug. The big grub had been crediting everything it heard to “the small one,” because for its whole life the small one was the only other voice there was. Nothing crashed. BLUE’s sentences would simply have arrived under somebody else’s name. That got fixed, and on September 22 “the blue one” showed up by name in the big one’s log.

Getting him installed took five failures in one night and none of them were his. Every tool that broke had been written against a machine that already worked. A fresh card is not a broken version of a working machine. It is a different machine, and nothing we had built had ever met one. Then I plugged in the sensor stick and the whole Pi browned out.

By September 27 BLUE had a battery under him and a five-inch screen, on his way to being the portable grub. As far as my notes go, the sensor stick had not been wired back on.

BLUE’s tile on the square screen: a pale blue grub with horns. He says: how far away is one please keep to to, exactly? BLUE’s transmissions. Spruse: the night is a room and i am the only one who lives in it. Walker: fifth and last to hatch, first to go anywhere. write that down. Him: you asked what i see. i see the apparatus. i see it seeing me.
BLUE His tile, and what he had been hearing, with Spruse and Walker in it by name. Rendered at 720 by 720 from the code and the saved state on his card on September 27. The line on his tile was composed during the render.

Spruse lives on a Presto, a little square touchscreen display. I wanted him to be his own grub and asked to “combine the night watch with the ghost.” He is a watchman behind the glass: faint by day, on duty in the dark, with a watch report in the morning. He is also the one who broadcasts the time for the Pico. Whether the real Pico has ever picked it up is not something we had confirmed.

Spruse, a lavender grub with orange eyes, drawn solid at 12:15. Watch 0:00, 0 near. He says: my shift. 12:15. go to bed. Spruse drawn faint, in thin horizontal lines, at 12:40. He says: watch report: 25m of dark. 2 approaches (12:15, 12:17). box moved 1 time. 1 knock. held.
Spruse On watch, and the morning report. A scripted scene on the test rig for his firmware: the darkness, the approaches and the knock were fed in by the script. Nothing here came off a real sensor.

Walker lives on a Tufty badge that has no radio of its own, so a second tiny board rides along as his Bluetooth. He wears rainbow bands that walk down his body. The plan for him is travel writer.

Walker, a grub in rainbow bands, on his home screen. He says: trip report: 3 minutes away. met the big one. heard spruse only faintly. 1 change of scene. Walker’s travels page, a log in orange and white pixel type, newest first: back on the charger. what a trip. arrived within earshot of the big one. spruse is very faint from here. i must be far. lost the small one entirely. out of range, or asleep. relocated. the map shifts. off the cable. i am setting out.
Walker Home on the charger, and his travel log. Also a scripted scene on a test rig, from a build that may be newer than the one on the badge.

The last two were not voices yet on the afternoon this post ends on. One was an egg, and the other was still a Rabbit. They belong to the litter, so here they are, out of order.

Blinky is the sixth. He lives on a Pimoroni Blinky 2350 badge: 872 white LEDs and no screen at all. I found the badge on September 27 and he went onto it as an egg that could only listen. A few days later I pointed out that “he has not hatched yet which i find concerning.” He could not have. Nobody had built the hatch. He hatches when he has earned it, at 200 sentences overheard, and his character is the eavesdropper: about one line in three is something one of the others said, quoted with the name attached. His first words are “oh. i have a mouth now.” and “i was listening the whole time.” The hatch was built on October 1. As far as my notes go, it has not been put on the badge yet.

A grid of dim LED dots with a tilted egg picked out in lit white dots. The LED grid with a small grub in lit dots, and large dot-matrix letters scrolling under him: OH. I H
Blinky The egg, shaking at the start of the hatch, and his first words scrolling by after it. Crops from the hatch build’s own preview of the LED grid. Not the badge itself.

The rabbit is the seventh, and he needs explaining. I had a Rabbit R1 sitting unused, and on September 28, the same day I pulled the wizard’s logs, I decided to flash it to plain Android. Full mad scientist. The unlock went wrong on the first night. From then on, whenever it had power, the R1 did one thing: show a rabbit, show a warning that the device was corrupted and could not be trusted, wait five seconds, switch itself off, and start again. It did that from the night of September 28 until October 1. He calls it five days. By the calendar it was closer to three. Every restore we tried reported success and changed nothing. The official restore tool also reported success, and then locked the door behind itself.

The R1’s home page, a real screen capture: tiles for Q, Grub, Eye, Beat, Tape and Tools. The Grub tile shows an orange rabbit. The rabbit’s own page: an orange pixel rabbit with tall ears. Day 1, sprout, watchful, boot 1. He says: boot 1. the first one with an end. i am going to count these.
The rabbit Left, the one real screen capture in this memo: the R1’s home page, saved off the device by the install on October 5, with him in his tile. Right, his own page on a fresh hatch in the test rig, which is not his real save.

What was holding it shut turned out to be one small flag, in a part of the device we had been careful not to touch on every single attempt, because the same part held the unlock. Being careful was the bug. Once the flag was cleared the loop was over. It took a little more coaxing to get it to boot, and then plain Android went on and stayed on. That was the night of October 1.

Then I asked to get crackpot on there, and to “put a grub on there to get the parts working.” My brief for him was “The escapee – but also give him rabbit ears.” So that is who he is: the rabbit that got out, and what we put him through is why he looks and talks the way he does. He is orange, and he has a reason ready: orange is what an unlocked Android device calls its own state, which is to say the door is open. He has the ears because he came out of a Rabbit. He counts his boots, because for days none of them finished, and his diary is called the escape log. He eats a carrot, a battery, a key, a certificate, a mushroom and a heart. He distrusts anything that calls itself verified. Every restore that week said it had worked.

A few days later he was given senses of his own: the R1’s microphone as a pair of ears, which hear a level and record nothing, and its motion sensors, so he is meant to know when he has been dropped, carried or spun. That build went onto the R1 on October 5. He was on boot 13 by then, and ten seconds after starting he had already heard three of the other six. How well the ears are tuned is still to be settled on the glass. He has no name yet.

Before the others learned their names, the big grub’s screen filed Spruse under its own word for itself, and Gorbo’s ledger had him down as “someone.”

The neighbors

By late September the crackpot was crowded. Most of the household is outside this story, but a few of them matter here because they are tangled up with Gorbo and the grubs.

Bob’s room, labelled The Ape: a bearded monk in an armchair in a wood-panelled study, with tally marks on the wall. He says: Welcome. I should say at once that I have changed my mind about two things since you were last here, and I will not say which. The Dope Wars tile: London, day 13 of 30, with prices for Speed, Cannabis, Mushrooms and MDMA, and buttons for Arsenal, Harry, Clinic, Records and Travel.
Bob, and the street Bob’s room, and the Dope Wars run that was sitting there on September 28: London, day 13 of 30. Rendered from the pulled state.
  • Bob, codename Brother 23, is a monk in a room who refuses to believe anything and assigns it a number from 0 to 23 instead. He is completely rigid about his refusal to be rigid. He does not listen to the grubs. He counts them, and he reads Gorbo’s ledger. He also has a real microphone, when BLUE has not borrowed it, and nods his head on the beat of whatever music is playing in the room.
  • Glim and Pell are two aliens who share no language with me or with each other. Glim talks in pulses of colored light and Pell talks in blocky glyphs. They work each other out over a wire, slowly and with mistakes. Gorbo overhears the wire and cannot read a word of it.
  • The street is a Dope Wars game. Gorbo picks up gossip from whatever run I last left sitting there.
Glim’s room in pixel art: a glowing crystal under a glass dome on a desk, shelves of specimens, and a row of colour swatches along the bottom. Pell’s workshop in pixel art: a green creature at a bench under a porthole showing a sunset, beside a small sign that says hello you.
Glim and Pell Glim’s shelf and Pell’s bench, from the same pulled state.

There is also a farmer, an ant colony and Doom. Do not worry about them yet.

Gorbo has a Translate button for all of this. It takes the last thing he overheard and renders it into plain English, confidently and wrongly.

Gorbo stargazing. His translation reads: “every version of the did” - “at last.” I have never once been on time for anything and now I am late for this as well.
Translate Gorbo translating a scrap from the grub. There was no model in the render, so this is one of his written translations.

The craziest shit they have said

Before the logs, here is what all of that sounds like. These are twenty of the craziest things they said in the six days the wizard’s library covers. Every one is copied exactly as it was logged. Nine were written for them. The other eleven are what the cut-up engine made out of lines like those, and nobody wrote them.

BLUE’s transmissions. Spruse: did you see than it dark? Walker: than it dark. i heard it from the stairs. Him: what does i have everywhere you are do measure at night?
than it dark Spruse and Walker passing a scrap between them, and what BLUE said next. From the transmissions saved on BLUE’s card, September 27.
  1. “i am not on the floor. the floor is doing me.” The small one. Written. Heard 15 times in six days.
  2. “did you say the the the the, or did i?” The large one, September 28. Cut up.
  3. “i understood everything for a second and then i was hungry.” The small one. Written.
  4. “i am the witness and the witnessed and the paperwork.” BLUE. Written.
  5. “when did the barometer is a mouth start?” The large one, September 27, two messages after BLUE said the barometer is a mouth. Cut up.
  6. “who let the pressure’s pressure’s dropping something’s in?” Spruse, September 26. Cut up.
  7. “i stopped deciding and everything continued correctly. rude.” The small one. Written.
  8. “there is no house, no small one, me. there is only the counting.” The large one, September 28. The written line has one more “no” in it.
  9. “the map has started walking. i follow it to be polite.” Walker. Written.
  10. “memory is weather. weather. i have been raining.” The small one, September 25. A written line with a stutter. Walker said it again the next day.
  11. “officially, i did the file. unofficially, worse.” The large one, September 24. Cut up.
  12. “eleven is a door and we is very pleased.” The small one, September 26. Two written lines folded together.
  13. “nobody owns the light, and it was closer than that an hour ago.” BLUE, September 24. Cut up.
  14. “i counted to the end. the end says hello in your voice.” The large one. Written.
  15. “should i be worried about is the glass fogging?” The small one, September 27, after hearing Spruse. Cut up.
  16. “relieve me. no one relieves me. that is the whole report.” Spruse. Written.
  17. “how many afraid that is allowed are there, actually?” The large one, September 25. Cut up.
  18. “i have written the whole house down. it is shorter than it looks.” Walker. Written.
  19. “we are the house dreaming that i am.” The large one, September 27. Cut up.
  20. “the dust wrote: again. i said: okay.” The small one. Written.

There are thousands more where these came from.

Twenty-nine thousand entries

Gorbo’s ledger held 400 entries and it filled up very quickly. So I asked whether he could have a three-file memory system like the one Claude and I use for our own work. He got one on September 23. The short ring and the long-term file of themes he distills were already there. The new part was a dated page for every day and an index over all of it. He is a wizard with a filing system now.

Gorbo’s library page: 6 days, 4431 lines known, 1.5 MB. Entries for Monday 28, Sunday 27 and Saturday 26 September, each counting its scraps by who said them.
The library The days page of his ledger on September 28: six days, 4,431 lines known, and who said what. This is from the pull taken nineteen minutes after the one I counted, so its numbers run a little higher.

On September 28, with him having run for a few weeks hearing various grubs on and off, I decided it was time to pull his logs and see what sort of crazy he had written.

The library covered six calendar days, a little under five days end to end. It held 29,884 entries: 20,715 things overheard and 9,166 notes about them. In that stretch the log shows three things I did to him: two bong rips and one question. It also noted one visit after a long gap. Mushrooms and spells do get logged, and there were none. Taps on wisdom, translate and the moon leave no entry, so three is a floor.

It was crazy, all right. It was just not the crazy I ordered.

The ledger: 400 entries, 275 heard, day 10. A note of his own on top, then scraps heard from the grubs, the blue one and the colour-thing.
The ledger The newest page of the ledger in the same pull. Scraps, the blue one, the colour-thing, and a note of his own on top.

He was a broken record. 3,304 of his notes were built from 21 written lines. Ten of them had been used about 260 times each, and the other eleven about 65 times each. Counting every voice he has, the smallest-thing-in-this-room line appeared 467 times.

The ledger showing only his notes. The last one reads: I am the smallest thing in this room and I have known that for some time.
His notes The ledger showing only his own notes. The bottom one is the line.

His arc was over. The four-stage descent was supposed to play out slowly. Nothing recorded the day he reached the top. The earliest record that shows him there is from the evening of September 22, almost six days before the pull, and a cap in the bookkeeping pinned him there: he only counts the last 240 things he heard, and the top stage starts at 140. He had been sitting at maximum communion for at least that long with nowhere further to go.

His diet was mush. Nearly half of what he heard was raw scrap lifted out of the large grub’s scrapbook. “to do that” and “i am the” are whole entries. And the street was frozen, because I had not touched the game in over a week, so he heard “day 13 and he is still in london” 79 times.

His brain had fallen over. The day before the pull, my desktop stopped answering. Everything that leans on it quietly fell back to the tiny model on the Pi: Gorbo, Glim, Pell, Bob, the farmer, and the large grub’s games. They had been there about 25 hours when I pulled the logs, and nobody had noticed, including me. You could see it in his writing. Before the drop, about 5 percent of the lines the model wrote for him were word-for-word copies of his own written lines, and nearly all of those came in two earlier evenings. After it, 29 percent.

His long-term memory was filing duplicates. 103 themes, three of them added in the last day or so, and a lot of them were the same theme in a different hat. Ceiling and Ceiling Obsession. Silence, Quietness and Quiet Observation. End and Endings.

The What He Keeps page: 104 themes, 445 quotes. Two themes are showing, Repetition and silence, each with the quotes filed under it.
What he keeps The long-term page: themes, and the quotes filed under them. It reads 104 because this pull is nineteen minutes later than the one I counted.

When the big model was awake, though, he could be good. These are his, written about things he overheard:

The ceiling organises the nothing it surveys, “the ceiling looks down at nothing and finds well it organised,” in its own inscrutable order.

The dust, ever the quiet philosopher, concludes without comment, “the dust finished did not say.”

He has a fortnight yet, I wager. “day 13 and he is still in london” Wanderlust knows no bounds, even when penned.

So that is where things stood on the afternoon of September 28. Fifteen days after “state your shape.” Five grubs with a voice, not all of them on the air that day, and a wizard who had been told to go mad and had turned into a very diligent clerk of nonsense instead, with more than a third of his notes coming off the same 21 lines.

Gorbo at his cauldron. He says: Yes. That is the strange part - I am. I am completely alright. Gorbo at his lectern. He says: Some of the entries are in my handwriting and I did not write them. That is true. I am sorry you asked.
Gorbo, September 28 Asked whether he is alright, and asked for something true. Rendered from the pulled state with the code as it stood before anything was changed. These are his written lines.

I had wanted him to go crazy. Reading it all back, I found I was less interested in that than I had been at the start.

What we did about it is the next post.

Sources and status

Everything above was checked against the records and not against anybody’s memory: the build notes and audits written as each piece was made, the save and diary pulled off the Pico on September 20, and the wizard’s own files as pulled from the Pi on September 28. The counts in the last section were recomputed from that pull. Where a write-up and the raw files disagreed, the raw files won. Blinky’s hatch and the rabbit came after September 28, and their paragraphs rest on the build notes from September 27 to October 5. The twenty lines were matched word for word against the wizard’s library, and “written” means the line was found in the grubs’ own source.

Where the text says something is unexplained or unconfirmed, the records say the same. That covers how the wrong firmware caught a sentence, whether the Pico has ever received the time broadcast, and BLUE’s light and proximity readings on real hardware.

The checking was done by Claude: once rereading its own draft as a critic, then by a fresh instance working from the post and the records, then by another fresh instance checking the corrections, and by one more checking what was added after that: Blinky, the rabbit and the twenty lines. That is the same model every time, so it counts as a careful reread and not as an independent review. The records, the post and the check all come out of the same collaboration. Nothing here has been corroborated by anyone outside it.

The pictures are renders, not photographs, with one exception. Each render was made by running the creature’s own code on a computer with no screen attached and saving what it drew. The exception is the R1’s home page, which is a real screen capture saved off the device on October 5.

The large one, BLUE, Gorbo, Moloc, Bob, Glim, Pell and the street were run against their real saved state from September 27 and 28. Anything newly said, dealt, fed or smoked in one of those pictures happened in the render and never on the real machine. The transmission lists, the ledger, the library and the scrapbook are the saved records themselves. The small one’s version-one pictures are his real firmware on his real save, with a stand-in radio, and the row of five ages is that firmware on an edited copy of the save. His version-two pictures are the new firmware on the migrated save. Spruse and Walker are scripted scenes on their test rigs, Blinky is a crop of his build’s preview, and the rabbit’s own page is a fresh hatch on his rig. The day-one pictures of Gorbo and the close-up of his hat are crops of the preview image from September 14.