I cleaned the files exposed by a process down to: `ctl`, `wctl` and `label`. The ctl files (ctl and wctl) take in commands and act as pipes: you write to it, the text is consumed. ctl are commands for the process. wctl takes commands to manage the window attached to the process. At first I had a `rect` file, changing the file would update the window's coordinates. But using a ctl file lets me do validation, check ranges etc. For example, to move a window to position 10x10, we can do `fs.write('/proc/pid/wctl', 'size 10 10')`. I've also added a `/opt/start` file where we can list what goes to the global right-click menu
I got a new coffee machine, and it's really good! On wom, I realized that I was conflating commands and state when it comes to IPC. For example, a process folder would expose an observable `dirty` file. Removing its content would trigger a save and update the UI of a window to remove the '*'' next to the name. But what if the save operation fails? What if the program was opened without a path? I could work around that by introducing a little state machine in the `dirty` file: '!' could mean "i request a save" and "*" could mean the file is dirty. But if each file in the process have to expose a mini state machine, the complexity skyrockets. Instead, I went down the Plan9 route: process that will take commands expose a `ctl` file. That file acts as a pipe: what you write in it gets consumed. That's how the outside world communicates with the process. Write `save` in it and the process will trigger a save. Since the content of the observable gets emptied after each message, we can send the same command twice. When we read that file, we see the content of the internal states of the process with key values. I could do that by 1/ creating a ctl file and saving its original data observable's set function and 2/ replacing the file's data set by a new one that just checks the command and take actions 3/ update the original data when any state change.
A few days ago I had a dream that I rode a white horse across the sea to Scotland and won a prize, when I came back it was the dead of night, and the city was full of dangerous things but I was safe on my horse. When I got home I thought someone I once knew would be there, but she wasn't, however, I forgot I'd invited friends over, and they were cooking me soup instead! Then Picasso was there, speaking in gibberish and making cool art in my shed!
I suppose you can't always find the things you expect, even after incredible journeys. Like stars and cars, we all end up in the future, missing bits, but maybe seeing what matters too!
2026-03-26 - See how deep the rabbit hole goes - drisc's Journal
Over the past 6 months I haven’t really used my iPad Pro for anything, trying to do any coding tasks on it was a chore and required external services or hardware. It is great for media consumption and playing iOS games but not great for sitting in a coffee shop to work on code (yes, I know this is a cliché).
So, when the MacBook Neo was announced I decided to price out what a trade-in would net me and it came out to over £550, leaving me with around £150 to pay for a 512GB model that has TouchID.
Going from a device with an M4 inside it to an A18 Pro feels like it would be massive step down but for what I wanted the Neo for (light coding, game emulation, travel) it has been amazing. The 8GB of RAM that the machine has is constantly at 80% due to my Safari tab habits but I haven’t noticed any huge performance hits in the stuff I’ve been doing.
Something I’ve noticed about myself as well is that when I have an Apple device I tend to baby it for trade-in or resale potential but since I don’t intend to do either of those things with the Neo I’m going to stickerbomb it which I haven’t done since my Thinkpad X201.
It's March all of a sudden, and spring is coming fast. I'm back on my bullshit again with another toy programming language. That, and relearning Vala. Maybe third time's the charm. But damn, I have to manage my effort. Being middle-aged sucks.
(Update: I have a working interpreter, and Vala worked out wonderfully for this!)
Otherwise, this month is shaping up busily, between errands, friends to get in touch with and a scheduled visit to the doctor. Surprisingly, this time they offered me an appointment much sooner than last autumn. Turns out they have a lot fewer patients now, just as I suspected. The significant price hike looks like a likely culprit.
By the way, my eyes are the same as last time, so that's one less reason to worry.
Somehow the spring equinox came and passed already. Weather was chilly again for a while, though nights were no longer freezing. Now it's warming up rapidly. The magnolias are almost in bloom. I made another release of Babble-M; thinking about scripting-adjacent ideas now.
Next major milestone: Easter, and hopefully getting in touch with a friend.
Mobile app of the month: NerdCalci, a kind of linear spreadsheet or digital workbook for those who don't need the full power of microMathematics Plus. Ended up not using it on any device, but it's an interesting concept.
I did some preliminary work on the directory structure of the filesystem for wom. The OS is single user, which simplifies things a lot. I'm using /tmp to store current Prompt windows return values. Since a file is an observable I can just listen to any changes to it and trigger a callback accordingly. I've added a Confirm program too, as well as a `dirty` file within a proc/{id} directory. When attempting to close a process that has a non-empty dirty file, a Confirm window appears to ask for confirmation. The fact that `dirty` is a file allows programs from the outside to trigger a save as well. For now, that's how I plan to manage IPC.
I'm setting up this new journal. My attention's been scattered a bit and I'm not sure where to write anymore, so here's the place! I've moved contents I had from other places to m15o.net. I've added a context menu to wom, and simplifying the folder structure. It's going to be a strictly single-user operating system. It's also now possible drag/drop files to Dir from your host computer.
I just turned one of those bold, round numbers that invites metaphysical thoughts about Time. Waking up at forty, I find myself in a body that feels healthy. From here, the past doesn’t look effortless: waking at six, workouts, repetitions, injuries, recoveries. But it does feel contingent. Perhaps a future version of me wished it so. Maybe a wish is not something that happens in the future, but something that selects a past.
Not an injection of energy, but a constraint on what histories are allowed, a pressure that filters the trajectories that can lead to this moment. There has to be a sequence of events that leads to the arrangement of me now. Perhaps this is the only history that survives the constraint of a wish I would one day impose: that I be well.
A lot has happened since my last update. I traveled to Spain for a few days with Devine for the Ink & Switch Summit(see travel). Neither of us had ever been there before. We spent a day in Madrid, and the rest of the time in Chinchón, staying in an old converted convent. Chinchón had buildings dating back to the 15th century. From our window, we could see the remains of Castillo de Casasola. The weather was unseasonably cold and rainy, forcing us indoors. We played two great card games while there, Sea Salt & Paper and The Crew. On march 6th HundredRabbits was invited to talk at the University of Victoria to give a talk about permacomputing, in which we made parallels between sailing and software. The room was at-capacity, we had a really nice time and got to meet a lot of awesome people. I don't do talks very often, but I think I did well in this one. I am very proud of myself. I hope to one day be as comfortable as Devine in front of crowds.
HEALTH. I went climbing with Tamara, Owen & Devine at a very nice climbing gym. I really enjoyed it, but found it very challenging, I could not get past most of the overhangs. I hope to go again soon. For now, we are renting gear from the gym itself, because getting 2 pairs shoes and 2 harnesses is a bit too pricey for us currently, and both of these things are not really advisable to purchase used. It is important to buy climbing shoes that fit, and a used harness is a potential safety hazard. I was very sore after the climb, the soreness lasted for 2-3 days. I am still playing squash, every 3-4 days, but as the weather warms I'll likely play less and spend more time outside, or doing boat projects(it's that time of the year!).
ART. I printed some punk rabbits stickers this month! Evidently, I could not print more than a selected few, I chose Bobcat, Howl, Sy, and Em (they were the most popular). They came out so nice! If you're interested, you can buy them here(100r store).
MUSIC. Pvh introduced me to Zammuto recently, I've been listening to it a lot since.
MOVIE. In the movie One Battle After Another, there is a scene in which Leo Dicaprio's character watches a movie called The Battle of Algiers. I hadn't heard of it, but decided to find it to watch it. It is an excellent film, following a group of rebels seeking to liberate their country from the French, based on actual events. The film style resembles a documentary, and much of the people featured in the film are non-actors. In this same line, I also watched Z, a fictionalized film about the rise to power of a right-wing military government in Greece following the assassination of left-wing leader. The film, like The Battle of Algiers, tells a very grim tale, about injustice, and political corruption. While on the plane ride back from Spain, I saw Banshees of Inisherin, a black tragicomedy I really enjoyed, set in 1920's Ireland. This movie goes to some really dark and unexpected places. Colin Farrel and Brendan Gleeson play off each other so well, it was the same in Martin McDonagh's other film In Bruges(which also stars both of them). I absolutely loved it.
READING. I started reading Red Plenty by Francis Spufford, a book about 1950s USSR, weaving fiction and history to talk about the "planned economy", a system which they hoped would bring forth an abundance of good things for everyone. Devine & I re-watched Chernobyl(HBO series) and so learning about some aspects of Russian history was insightful. I finally finished reading George Eliott's Middlemarch. What a fantastic book. I've never read an author that understands people(and how they think) as well as her. Her way of describing inner turmoil is just so vivid; their pain, their joy was mine, too. People as good as Dorothea are too few in this world. I also finished Neil Postman's Amusing Ourselves to Death: Public Discourse in the Age of Show Business. I enjoyed it, but this book could have been a lot shorter. I especially enjoyed hearing about people in the US and their thirst for literature, about them going Dickens crazy, snatching his books just as they came off the boat. This was during a time when people could sit and listen to live political debates for hours on end. These debates were done with respect, of both their opponent and their audience, and with good language. The books describes the coming of telegraphy, radio, and television, and how these things have cheapened discourse, and lowered the value of the written word in favor of cheaper, shallower media. All that was said in this book is still relevant today.
The contribution of the telegraph to public discourse was to dignify irrelevance and amplify impotence, while making public discourse incoherent, bringing a world broken in time and attention.
Neil Postman
GREAT FINDS OF THE MONTH
Hot Pizza, a really neat community art studio in Toronto.
Here we go again. My current mental state is not the best,
although not as bad as what you can read in the first entries of
this new instance of the journal. I register a sharp decline in all
interests, which means less music, fewer gaming sessions (if any),
no movies, no clubbing. For the last thing, the fact that my usual
partners in crime are out of sync with my life rhythm may be the
main cause: when they’re available, I’m not, and vice versa.
It happens, sure, but it is not pleasant on the short term.
Do I ever feel okay in all of this? Only sometimes.