🐰 chee cherries quiet party

thirty of two thousand and twenty five

Something I’ve learned since switching my site from Wordpress to Eleventy and then Astro: If the system feels light, posts feel heavy. If the system feels heavy, posts feel light. Wordpress is heavy, a big dynamic machine. But that meant that an individual post felt like small beans. Nothing would really change; there’d be a new post. There’d be a few cache misses. Any pages (like the home, or feed, or category lists) would be regenerated on the fly. But any page that wasn’t affected would stay as it was. I don’t want to write little microposts anymore, like I did every day on my Wordpress blog. Because doing that will kick off a whole build generating all the HTML for every page, whether they get hit or not. That’s faster for the end user who hits an uncached page for the first time. But it feels so heavy. The time, the build, they weigh on me. To preview a wordpress post, or share a draft in context, I pressed “preview” or shared a link. With Astro I have to run a local Vite dev server. And do a git branch preview build.

I think the insight is right: there are things about blogging platforms that are not as nice as having local files (version control, portability, use any writing tool you want). And so I chose to replace the system with static files, which have those properties. But what they don’t have, is all the properties of a dynamic system. In retrospect this has been a less rewarding path than pulling those file properties up dynamicspace.

I’d like a blogging platform where every post is like an individual web app, contained in a cute little box, each with its own state. Maybe they should be a little guy with a shadowdom and their own stylesheet. <blog-post automergeURL="automerge://galaxy.observer/a2bZz3c4D5e6f7g8h9JK10mN11P#head/html" slug="/hello"></blog-post>.


Hey let me ask you a question… when you said i made you feel like the only person on Earth… did you mean, like, terrified and alone?


this week i’ve been enjoying the two builders out my window talking in thick souf east landan accents about their favourite episodes of only fools and horses. absolute heaven.

HE FINKS YOU LOOKED LIKE LEE ARVEY OSWALD MATE (uproarious laughter) THAT’S MY TOPS, MATE. TOPS FOR ME MATE

going back and forth on what is TOPS for them mate, and what is TOPS for me mate changes each time. i hope they come back on monday and do the rest of the dagenham dialogues.

“THAT’LL DO, DONKEY. THAT’LL DO. What a film.”


I can’t remember a time when I had more fun, or felt more at home or happier, than standing on that door outside the Future of Coding event saying hello to people and pointing them upstairs.

I’ve felt on the verge of tears for a couple weeks now. I’m one “you good?” away from balling all ugly and wet in public.

but i went to the Future of Coding event, and i helped out, and i said WELCOME! and i said second floor and i said lu and max will scan your qr code when you get up there, so that people would take their phones out on the way upstairs, and every time they did i felt a tiny little alleviation in the overall global background noise. And everyone was so nice and so pretty and nice. And my friends came, and it was so nice to see them, and they were so nice and so pretty and nice.

And afterwards I stood outside in the open air of Old Street chatting with Dr Basman until midnight about alchemy and execution and reactivity and javascript (which is to say, about substrates). And now I have so much homework. And I cannot believe that i must wake up and think about things that aren’t this.


Do you ever experience the sensation that you’re in a sinking boat. there are hundreds of little holes in the hull. water is gushing in. you have sponge, board, bonding, epoxy, polymat. a veritable boat hull repair kit, tried and true, in a box labeled “boat hull repair kit”. yet you and the crew are just standing there, water up to your ankles, looking for the hole that’s shaped like chatgpt.


I don’t wanna boast, but my phone is in a mesh right now. My phone is a NODE.

EOT 14:14:14 UTC

Met up with grjte in a pub to be the missing node in a 3 node mesh. A large bear also participated. It was v good.


I can feel something, in the air, in London, in the computer. Like all these disparate webs weaving through the air are being blown and spun, spinning winding twirling together together. Like we’re on a precipice. Do you feel that too? Like it’s going to burst?


And it seems that it would be helpful to capture whatever it is that separates “local-first” from “sync”… and all the not local-first stuff that comes along with it when you do that. Whatever it is that makes “local first” an incantation that can be used to summon the world’s best grjtes and seph gentles and orion reeds and whatnot into a single room. It feels, to me at least, that it would be useful to have a term other than “ink & switch” to conjure those extras with. Berlin Local-First and California Local-First aren’t enough because those only distinguish who or what you’re centering in Local-First. There’s more to it than that.

Maybe this is only my skewed perspective due to my low reading comprehension skills, but it seems like “malleable software” and “local-first” (maybe also “substrate”? still struggling to understand that word) are different technological (and prescriptive) pathways to make “part of the computer you don’t own” vanishingly small. Make everything that the programmer was able to do something that the user can do.

Perhaps i need to get hold of a building, an office, a studio. 24/7 access in central London where people can turn up and do strange things with the computer. And on the door i will paint “USERLAND” in blue and yellow.


ps: sorry post is late again, very busy weekend with the whiteboard and stomping around in circles biting my nails and muttering crazy sounding things like “javascript is real, typescript is fake, surfaces are real, views are imaginary — can i make typescript real? — what if it returns an element. what if it IS an element?”.

pps: i will not let them take my sparkles, i will not let them take my vibes,

end of transmission

twtw5/twtw9

There was a telephone call this week, that started out planning a trip together and ended maybe we’ll never talk to each other again. Well, what’s going on with my gals and in some cases boys? Do you ever lie to yourself? The biggest lie I tell myself is “I’ll remember this”. Or maybe it’s “i don’t care”. Remember that time a dog got into the school? Damn. I’d love a day like that again. The word “astrobleme” still makes my heart skip a beat. Jennifer imagined me beside her on the porch while she back and forth in a rocking chair. I spent the weekend, and I spent some of the evenings too. There was one of the evenings I went out to the bar near the Financial Times office to say hello to some people I used to work with at the Financial Times. It was nice to see them. I think I was annoying but I’m really so very not used to socializing with people who aren’t the computer at the moment. There were a lot of times this week when I wanted to drink tequila but none of them were the time I was at the bar. During the evenings I have been working on Littlebook 3.0. Or, 1, as the case may be. I’ve tried a few different systems for Littlebook3 so far. The first one I tried, (the pic last week), was very much a proof of concept. It was nice, but very rough and I need it to work in a web browser too. The second thing I tried was esoteric and fun, everything in pure js with no build step. Runtime reflection by parsing function.toString() with acorn. Grabbing the place lb.defineCommand() was called from by inspecting (new Error).stack. Doc strings inside the function, like lisp and python, by including a template string as the first line in the function. That was converted on the fly to markdown, and displayed together helpfully (“xyz is an interactive command defined at xyz.js:10:2” then the doc string) just like emacs. Once i started writing with it, i learned that it would feel as though i were operating the computer through a big pool of honey. All heavy, all sticky, all weighed down and slow. The third attempt seems very promising. It’s kind of crazy, you should see my whiteboard. But I think it will be very cool. It took me all weekend to get it working, but I was able to edit the text editor using itself tonight before bed and that’s how you know you’re living. The part I was building this weekend is the bootstrapping system (which i call bookstrap, or littlebootstraps). You see it’s an important design goal that you should be able to completely change the editor if you want, you need access to the code that powers it and the power to change it. That’s in addition to making an explorable system that teaches you while you learn it and change it. Some more rewrites are needed there, and more prototyping (building more custom code in it so i can see how it feels, and improving how it feels over time). Here’s how the bootstrapping works:

  1. You load up Littlebook (in the browser, or the one on your computer)
  2. bookstrap kicks in and detects your “native file system” — that’s opfs:// on the web version and file:// when you’re using Littlebook Desktop
  3. bookstrap creates a library for each of the local filesystem protocols you have available
  4. The install phase grabs all the source code and puts it somewhere you can change it — on the web it puts it in opfs:///littlebook/system/, and on desktop it puts it in ~/.local/share/littlebook/
  5. The install phase makes you a user directory (opfs:///littlebook/user, ~/.config/littlebook/)
  6. The User/early-init.js script is executed (as a non-esm script)
  7. The install phase passes off to the bundleworker, which creates an esbuild worker
  8. The bundleworker is set up to be able to resolve imports in your opfs:/// or file:/// system, using the fs api that bookstraps prepared. As well as importmaps.
  9. The bundleworker loads System/entrypoint.ts, compiles it, bundles it, evals it.
  10. The runtime system initializes the core editor things: events, surfaces, surface layers, views, protocol handlers and their defaults
  11. The system then dynamically imports your User/init.ts file where you can add new events, surfaces, surface layers, protocol handlers and views

I believe that this is a powerful enough system to build an even more powerful system with. All the steps before bundleworker (including early-init.js) are executed as regular scripts, so they can even help build the importmap. Everything about the system (apart from bookstrap and bundleworker) is replaceable, it’s all in the hands of the user.

The “grabs all the source code” from step 4 is entertaining. On desktop mode it’s pretty normal, the source code is embedded in the .app and it’s extracted out to your local share dir. On the web, it’s slightly sillier. The opfs worker fetches a file called /system.json which contains a virtual file tree of the entire system, and it creates a file in opfs for each entry. Surprisingly that takes only about 100ms to do. My plan for the reflection is to analyze the sourcemaps generated by esbuild (they’re made available to the user too), and combine that with some of the error parsing code i threw away from attempt 2 (wednesday). The settings & commands system is important for being able to build UIs and electric help. I’ll be reading my emacs manual.

I have to go.

end of transmission

twntytwnty5/twnty28

It’s been a long week. A large portion spent in the throws of some misery or another. On Tuesday I met up with the these tonk folks and i enjoyed their company a lot but i spoke too much and afterwards i wanted to crawl into a small coffin meant for dogs and be placed into a furnace and then shipped to sea. I really have to stop talking. Perhaps forever.

On Wednesday there was a nice catchup call with Cole who is getting married soon, how lovely.

I worked a lot during the week and by Friday had started to disconnect from reality. And there was a pulsing sensation like my skull bones were throbbing and my blobby brain was grinding up against them getting burned.

The weekend held gentle adventures, riding around on trains. Jumping on here and off there. And writing a text editor, from which I am writing this post now. I had a really good idea while I was wandering around in circles outside Cannon Street station talking to myself on my telephone. Now it’s all i’m thinking about.

There was a long while there where I couldn’t figure out what I should call it, until a few of the pieces came together and suddenly I realized: it’s Littlebook.

Finder.app window showing Littlebook.app icon and the Applications folder, in the fashion of a Macintosh App Installer

More updates soon.

The week ahead looks long too, longer even. Perhaps I will spend the weekend in a faraway place.

I’m glad to exist as a sort of devlog for my friends.

a preview of littlebook desktop in action showing three panes: this article as markdown, this article in a web preview, and a terminal ready to publish the article

Good luck with everything forever this week i love you.

end of transmission

twntytwnty5/twnty27

between me the world there is a film of grey glue. and i can’t seem to engage my mind. i don’t appear to be there, wherever i am. i don’t seem to be in the room. i’d like to make a little list of collections of the best posts i ever wrote here. i’d like to release the aborted quiet party E.P. from last year. with the two worst songs removed, and the two i made for zaina appended. i’d like to make some new music. i’d like to go outside, and to see and to hear what is around me. i’d like to work on littlebook, or one of my other projects. i can hear a loud hiss and whistle all the time.

it’s quite possible that i am both stressed and depressed. don’t really know what to do about that now that tequila isn’t an option. berocca will have to do. i wish i looked just like cheryl tweedy.

in and out of locomotives all alone

how do the emojis available on your company slack affect the range of emotions you feel? sometimes feelings are in triage until they find an explanation. and you’ll only accept the ones that fit within the subset of possible ways-of-being that you consider you.

i’m going through my old todos to see if there is anything worth doing. one section of them suggests auto-posting new blogs to multiple sites that have gone offline since i wrote the todo item. haha.

there hasn’t been any time yet to process the events of the last couple of months. maybe when the summer’s over. i’m sitting in silence now and allowing an immense wave of sadness to wash over me.

if you ever get close to a human - be ready to get confused

zonkers and me met up a few times over the past few weeks. one night laying in a doorway talking until 2 or 3 am. that was nice. another evening we started out summer lazing on the grass at saint pauls, and then in the evening we got kebab at a new place in the city. another day we sat on a thames beach at southbank from the early afternoon until civil twilight, and then went north west and kept on talking until nautical dawn. the most recent time we had shisha in the place down the road on the corner, and in the morning we agreed not to speak for 10 days and then i went to work.

my grandfather was a big proponent of “before midnight sleep”. his son introduced me to programming with Turbo Pascal, Borland C++ and QBASIC.EXE. programming used to be a lot bluer and a lot yellower. i had to choose a yellow recently and it made me think of a nice designer i used to work with. choosing a yellow always does. there’s another former coworker (current friend) that always comes to mind when i’m brushing my teeth. we were in the upstairs area of the old fire meeting point, and she was telling me about how after you brush you don’t wash out. you spit, spit until you think “I can live like this”

you probably come to mind of people all the time, even strangers who you don’t remember. do you ever wonder about that? what things make people think of you. i hope some things make people think of me. i think it makes you live longer. i don’t know if i want to do that, but it’s good for the blood.

we just met - and i know i’m a bit too intimate - but something huge is coming

end of transmission

twenty twenty five week twenty six

haha, woops, i forgot to write*. hello.

nothing to report. wrote some code. went outside sometimes. it’s unbearably hot and humid in London again. okay.

why is everybody making me work when all i wanna do is VIBE

*oh and then the build failed and i didn’t notice for a day

end of transmission

2025/w25

it is extremely hot. unpleasant. trying to catch the breezes. i’m back on emacs. writing a javascript library. trying to think about the past.

it’s a little reactive library based on the Adapton papers. so far i’m implemented the miniAdapton-style core and microAdapton auto-tracking. and then on top of that i’ve implemented a plugin api. everything else i want should be doäble as plugins. i’ve written a few so far and it’s so much fun. i started last week building a full acar self-adjusting computations library with a stabilize phase etc. it was working, passing tests. but it was a lot of faff. but i started to like this Adapton system better as a base to build on. plus one of the papers (which is printed out and spread out on my couch) has a mini implementation in scheme. which is almost a progamming language! (the sac paper’s examples are in ML).

omg i just looked at the weather and it says it’s going to rain this week and a mere 22 degrees. thank the lord.

sorry for the short post. it’s been so yap yap tap tap and heat. and i’m in a state of permanent confusion. next time maybe there will be music and a little clicker.

hope you’re well. you’re looking well.