“aesthetic sovereignty”


ufotofu <-> tokio compatibility
We have released version 0.12.7 of Ufotofu, which features compatibility wrappers for the tokio async runtime. Now you can use, say, a tokio-provided TCP stream with ufotofu. Yay!
Why is it called worm-blossom?!

why is this website called ‘worm-blossom’? In this series we will explain why in a concise manner.
Part 9: Inheritance
It is 2022, and Sammy doesn’t really feel like she knows what she’s doing.
A few weeks prior, Sammy had one last call with Cinnamon. From their hospital bed, Cinnamon told Sammy how she’s the right person to steward the Earthstar project. Sammy told Cinnamon through tears how much she’s going to miss them, how much they’ve taught her.
And now Sammy has inherited stewardship for the Earthstar project, which has just received its first ever bit of funding from NLnet. She’s not sure she is the right person for this. She doesn’t know anything about CRDTs or computer science. She’s faking this. Oh my god she is faking this and they are going to find out.
Fortuntately Cinnamon had the foresight to practice something they called ‘mortality driven development’. Knowing what was coming, they bequeathed a copious number of design documents, comments, and tests. Without these, Sammy would be truly lost. She has just enough guidance to cobble together the parts needed to fulfil her obligations, but there’s one thing really discombobulating her, and that’s sync.
Sammy knows Earthstar’s sync has theoretically the worst possible implementation imaginable: two peers exchange everything they have, and discard what they don’t need. Any claim to being conscious of network or bandwidth usage is simply a bald-faced lie. It’s inefficent, it’s untenable, it’s embarrassing.

Browsing Secure Scuttlebutt one day, Sammy comes across a discussion on syncing append-only logs, and user arj mentions “You could do something like a set sync instead, Aljoscha has worked on that”. Sammy thinks: Aljoscha? That kind of depressed guy who told me not to use the thing he made? Sammy scours the README. Could this be it? She emails Aljoscha:
Dear Aljoscha,
I was very happy to come across your outline for efficient set reconciliation. I’m trying to work on more efficient sync for my project (Earthstar) and was wondering if I could apply this method to my problem?
Aljoscha replies:
I think things should be amendable to the earthstar situation, in fact earthstar was one of the reasons why I wanted to flesh this out in a thesis.
What? Aljoscha has been thinking about Earthstar already? What? Why? In their second call, Aljoscha tells Sammy how he’d spoken with Cinnamon six months prior on the thorny topic of set reconciliation, and how that had motivated him. Sammy tells Aljoscha how Cinnamon has since passed. Oh.
But maybe we could work together, asks Sammy. On a set reconciliation implementation for Earthstar? Aljoscha agrees, and has no idea what he’s getting himself into.
And in next week's final instalment, we find out why it’s called worm-blossom.

Last week, I embarked upon an experiment: could sneakerweb be made to work with Rocket, the multi-threaded web framework? The good news is that Ufotofu now has a compatibility layer with tokio (see announcement)! The bad news is that the answer is no, sneakerweb cannot work with Rocket.
We can get ufotofu and Willow’25 working with tokio, but only with the current_thread (i.e. single-threaded) flavour of tokio. Rocket requires a multi-threaded environment.
Ufotofu and willow25's incompatibility with a multi-threaded environment is due to our adherence to Frugal Async Rust. I am going to admit to not having strong opinions on this. I do wonder if I should be concerned that Willow and Ufotofu can't work in multi-threaded runtimes, or whether I happened to stumble into the one situation (Rocket) where this was a showstopper.
Instead I will be using a web framework compatible with tokio's single-threaded mode, probably Axum. The motivation remains using someone else's HTTP request handling and support for templating, something which we're kind of winging ourselves right now.
Otherwise I am doing some up-front work for next week's update.
~sammy

Another scattered week for me, rang in by a lovely choir reunion and then dominated by the cold incurred therein.
I did make some more progress on the WTP spec, but it still isn’t in a shape where I can meaningfully share it. I’m getting there.
Also, we held a call today with Olivia of wobbleweb, brainstorming ways forward for integration between wobbleweb and sneakerweb. As we were pondering the aesthetics of the Fediverse compared to those of myspace pages, Olivia coined this week’s motto of aesthetic sovereignty that immediately resonated with all of us.
And finally, I spent the worst day of the cold working on Macromania, porting in a half-daze several macro packages from the old version of macromania to the current version. Specifically, the new macromania-web package combines and improves upon three separate old packages:
- There are macros for creating URL references, now supporting references to files living on different domains.
- There are macros for moving assets (stylesheets, scripts, etc) in a web project from an input to an output directory, and for applying transformations (compilation, minification, etc) to the assets, now also supporting dynamically creating assets without any corresponding input file.
- There are macros for automatically adding stylesheets and scripts dependencies to html files as they are registered by other macros.
Is this all overly complicated, niche, and of utter insignificance compared to progressing Willow? Probably, but on the other hand: We can finally render KaTeX on this site. In a principled way. We simply type <M>x^2</M>, and it automatically does the server-side rendering and embeds the necessary stylesheet on any page where we use this. And we did not even have to manually place the stylesheets (and fonts) anywhere. This may have required several days of coding (and years of idle designing), but if this isn’t the worm-blossom way, I don’t know what is. And Sammy agrees, I think.
(more seriously, this lays the foundations for several nontrivial website features that improve how we can communicate our ideas, and it is hard to overstate how important communication is to all we are trying to achieve)
~Aljoscha



















