I still receive Urbit's newsletter, even tho I have long lost interest(tiel/crypto/javascript 3 strikes πŸ™… ), I clicked through their latest email to see what they were up to, where they were going.

Their current focus is building an electron wrapper for their system. And even tho I have no sympathy for the project - it makes me feel a bit of despair as there are so few people trying to build new stacks, and I wonder why/how you can even go from "let's make a clean slate OS", to "on Electron"..

Β· Β· Web Β· 7 Β· 4 Β· 27

@neauoire part of their setup process now suggests you create an s3 bucket (AWS) to store blobs like images because their data model can't yet handle large files...
honestly, there are plenty of people with interesting stacks but very few of those people have any substantive community around their work to support it and get it to a place that's as impressive as urbit (I don't care for urbit for a lot of reasons but a lot of work has gone into it thus far)

@syntacticsugarglider @neauoire ive been putting a lot of thought into ui frameworks and such lately and it feels like every cross platform ui framework sucks ass and it's giving me the big despair

the fact that flutter is my biggest hope at this point is saying something
@syntacticsugarglider @neauoire might just completely say fuck it and give up on writing cross platform ui code for this project and only work natively (then write shared logic code)

@nik @neauoire yeah unfortunately the current paradigm of building a user interface ex nihilo for every project that has to express a "brand identity" and shit is just categorically doomed nonsense
thankfully that's not the paradigm anyone should want in the first place. a shared set of abstract UI primitives, not controls but interfaces at a less granular scale, that can be user-composed to introspect and operate on data is much more viable. and sensible. and expressive.

@nik @neauoire though in addition to that both devine and I are pretty focused on things that are somewhat analogous to an overlay OS, at which "cross platform" is 20 minutes of work to port a super tiny runtime (uxn for devine or SIC inets in my case).
uxn is much further along on the usability front than my work fwiw, though I have very different goals and haven't been healthy enough to work

@syntacticsugarglider @nik Just draw immediate UI for cross-platform, it's what I do with Uxn, easy as shit.

@neauoire @nik when it actually comes time to draw things to a framebuffer, which is pretty heavily abstracted away from in my set of opinions, I'm becoming increasingly convinced that persistent UIs aren't worth the trouble.

@syntacticsugarglider @neauoire @nik What if you can't just draw new frames on every tick because you are using an e-ink screen, or a remote display? And how do you navigate the UI nodes with a screen reader?

@csepp @syntacticsugarglider @nik immediate mode doesn't necessarily draw new frames every tick. And it doesn't impact screen reader either.

@neauoire @syntacticsugarglider @nik That's a relief. Although I haven't seen an immediate mode GUI that had screen reader support, but I guess they aren't fundamentally incompatible then? Or maybe accessible ones are out there and I just don't know about them.

@csepp @syntacticsugarglider @nik I think it's a pretty "old fashion" way of doing it, and back then might have been quite a hassle to setup.

I feel bad to always bring uxn into the conversation, but.. it's the only thing I know..

uxnemu ./bin/application.rom | spd-say -t female2

Send selected words(interface, or text body) of an immediate-ui drawn application, directly to a t2s engine and speak the words out.

@csepp @syntacticsugarglider @nik It's so terribly simple that I've been doubting the entire notion that persistent UI is the way to go, if anything it makes that sort of thing a lot more difficult.

@neauoire @syntacticsugarglider @nik Screen readers do more than that though, they also navigate UI nodes, list headings, etc. If there is no programmatic way to access that info, I don't see how it will work with a screen reader.

@csepp @syntacticsugarglider @nik Do you mean like pressing tab to go to the next option? Or speaking a command and selecting that option?

@neauoire @syntacticsugarglider @nik That too, but they do so much more. I have a "getting started" sort of reference for basic NVDA usage somewhere in my room and it's a huge list of hotkeys covering two A4 pages.

@neauoire @syntacticsugarglider @nik
The simplest example is the headings one:
list the headings in the document.

Other stuff: list number of items in a list.
Identify where you are in a table.

@neauoire @syntacticsugarglider @nik Nah, it's for navigating literally everything.
By lists I meant <ul> and <ol>.

@neauoire @syntacticsugarglider @nik Like, imagine that you cannot see anything, all you have is a keyboard and a speaker, and you want to navigate a GUI about as fast as a sighted person.

You can't scan a document for visual cues with your eyes, you have to rely on the software to do that.

@neauoire @syntacticsugarglider @nik
For that you need to access the visible document/GUI as a list of nodes. There is no way around that.

@csepp @syntacticsugarglider @nik well, even applications with immediate UI have to keep the potential UI in memory, I mean..

Show newer
Show newer
@neauoire @csepp @syntacticsugarglider most screen readers let you navigate a UI via audio, tap/click/tab through elements and you get instant feedback on what's being selected, letting you hear changes to the ui, hearing feedback on input you provide to the ui, etc. just reading the ui from start to finish is helpful in very few scenarios.

@csepp @neauoire @nik
I mentioned this in a reply. There are definitely cases where persisting a tree (or something) of UI nodes makes sense, but it requires a lot of architectural discipline.

@syntacticsugarglider @neauoire flutter actually does that in a way which i like a lot (my gripes with flutter are in its implementation, not design). lots of interface primitives for everything you want, a set of prebuilt ui components out of those (for ppl who want to slap shit together), and also the ability to use canvas apis to create fully custom components as well.

@nik @syntacticsugarglider wanting to "just slap shit together" is already 10 steps backward in my opinion.

@nik @neauoire I'm talking about something different, like a fundamentally different computing paradigm, where authorship of sources of truth and authorship of ways to perform certain abstract operations, as a user, on sources of truth that fit certain constraints are two different tasks. So you have like, a toolkit of composable interfaces for operating on structured data. Like a conventional OS used to be but for a more semantically contentful environment.

@nik @neauoire I'm going to go shower for now though. Hopefully my current period of inactivity will be over soon and I'll have some things to showcase to help explain this stuff.

@syntacticsugarglider @neauoire oh, i remember this conversation from a while ago

i feel like 9p acme was starting to touch on this

@nik @neauoire oh yeah i remember you brought up exocortex-ish stuff at one point and as I'm wont to do I barged in and started talking about my work .-.
and yeah, plan 9 is really good about the composability part as long as the semantic can all be held in wetware at once. beyond that it doesn't work because the system has no semantic knowledge or way of verifying constraints on how composition can occur. so, not super interesting to me long-term but still muuch better than anything in use rn.

@syntacticsugarglider I know! It has been going for such a long time now, and they could have chosen to become anything! It could have dared to be alien and weird, they chose this.

@neauoire there's plenty of alien and weird beneath the surface, it's just being severely underutilized. (A lot of that alien stuff is a bit awful though, especially their underlying abstract machine which is inherently super inefficient. I think we've discussed this a bit before)

@syntacticsugarglider yeah we did, it took me a while to understand why it was a bad design tho. I only understood it recently.

@neauoire it's not necessarily a bad design, it's just a huge amount of incidental complexity in most cases and needs a *lot* of cooperation at all levels of development to be at all elegant (otherwise you have messes of diffing and reflowing and two-way data binding that are just... atrocious)
this does make it a bad design in like 99% of cases, but in the long-term a particularly principled persistent UI engine is by far the best way to drive EPDs

@neauoire the horrors come about when you have something best-effort and large-scale that's used in every environment, needs to grow to support like every conceivable feature, etc. and when you have to do things with heuristics and trial-and-error and passing metrics around instead of with explicit cooperation from the things being painted
doing it properly is really only feasible if you can do it *once* and reuse but still have freedom to incrementally improve. this is true for most things.

@neauoire that last bit is like, a very motivating locus for a lot of potential design decisions

@neauoire largely I think it's because they're more interested in their implicit social model (feudalism) than their stated technical goals.

@tindall they could have a just said "Javascript, Slavery and God" from the get go, instead of making the esolang community look bad.

@neauoire @tindall Justin Murphy thinks the reason Urbit users are mostly christians is because "christianity is, I think, fundamentally a love of truth" and I really like him and I understand why he feels that way but hahah no it's tribalism

@neauoire I have a steady trickle of people asking if they can run Mu on an x86 emulator on the browser. A bit more understandable, but still. I feel like they're missing the point.

I think the underlying desire of here might be to sandbox untrusted code just to try it out. I wonder if people would be more willing to try it out if I provided pre-built disk images. Or would installing Qemu still be a barrier..

@neauoire (I did spend some time investigating if Mu works with There are some strange issues, which are quite possibly Mu's fault. It's also extremely slow unless you run on Chrome. I might return to this.)

@akkartik they should have gone straight to UI instead of dying as a little terminal cli thing.

@neauoire And in that time you've written a minimalist VM runtime and ported half your own work to it.

Really makes you think about the cost of complexity.

@neauoire It's hard to build stuff on a clean slate when you decided that everything on that slate must use bytecode that's worse than brainfuck.

Sign in to participate in the conversation

Revel in the marvels of the universe. We are a collective of forward-thinking individuals who strive to better ourselves and our surroundings through constant creation. We express ourselves through music, art, games, and writing. We also put great value in play. A warm welcome to any like-minded people who feel these ideals resonate with them.