UXN and Varvara

Hi all. Been reading for a while, but this is my first post here.

I wonder if anyone has come across the Hundred Rabbits “UXN/Varvara” virtual machine, and what your thoughts might be on it as a platform for malleable software?

My feelings are:

  • It’s basically an idealised 6502 (UXN) plus an idealised Atari 800 / Commodore 64 (Varvara) to run on it.
  • It’s designed for super-small 8-bit binaries for the arts and demoscene
  • It’s really fun to play with but the 64K limit means it’s not actually that practical
  • Like all Forthlike systems, it doesn’t do any memory protection beyond the “entire machine” level.
  • One could potentially build a personal local cloud of a whole bunch of UXN machines, and build a malleable OS that way, but again, the 64K-per-machine wall seems like a bit of a nonstarter

I like what UXN is doing, I like the minimalist simplicity vibe, but sadly because of these limitations I don’t think it’s a potential candidate for a “100 year computer” for personal data and software preservation. But it might be worth examining for ideas.

2 Likes

Hi Nate! I’m very happy to see you here.

I totally agree with all your bullets – except the word “practical”. It seems plenty practical for the (surprisingly large number of!) people (that doesn’t include me, though I hang out on Merveilles.town) who use it for various purposes. You’re probably right that it can’t be someone’s sole daily driver and personal data.

On the software preservation front – it seems really easy to preserve? It probably doesn’t help preserve other platforms – but it also doesn’t dig us deeper into the problem. That feels like a useful contribution.

Malleability certainly doesn’t depend on daily driver use cases or even software preservation, so I tend to consider Uxn (and PICO-8 and other hobbyist projects like that) to be de facto malleable. They’re so small, and the development experience is so intertwined with the user experience, that they easily fulfill the definition of Malleable Systems.

If I might attempt a provocative punchline: one way to make software as easy to change as it is to use is to… make it harder to use :smile:

2 Likes

I think we need to ban from our minds the idea of “sole” whatever in the realm of software. A malleable software toolbox will always contain multiple tools. A more interesting question about UXN (which I admire but don’t use) is: how well does it play with “outside” technology? Can you make small tools in UXN that interface with non-UXN tools in a sufficiently convenient way?

That’s actually something I say a lot, though in less provocative flavors. “Developer” and “user” roles need to meet halfway. And malleable software needs to provide a good learning path, from occasional user to power user.

2 Likes

I think we need to ban from our minds the idea of “sole” whatever in the realm of software. A malleable software toolbox will always contain multiple tools.

I’m inclined to agree, but one note of caution: every new tool will tend to push someone away.

Can you make small tools in UXN that interface with non-UXN tools in a sufficiently convenient way?

Devices are how Uxn creates extensible interop. Someone has to build a new device in C++ or whatever the host language is, but there’s a reasonable variety to choose from at this point. Uxn can use up to 16 devices at a time. I believe programs need some out of band way to specify the devices they require, which has a cost in portability. (I can imagine that the GBA port of Uxn might not support every possible device.)

1 Like

First impression: a small-scale implementation of the Plan 9 idea of “everything is a file”. Interesting!

In software, yes. I think that’s something that should change. New tools are scary because of complexity, dependencies, and churn. People do adopt physical tools with much less hesitation.

First impression: a small-scale implementation of the Plan 9 idea of “everything is a file”. Interesting!

Kind of, yes. More precisely, like"everything is a combination of up to 14 6502 INP/OUT ports and one hardware interrupt vector".

Some UXN devices just transmit one byte of data at a time, others take a RAM address and memory-map up to almost the entire 64K space (ie, the memory extension device).

1 Like