Sat, 1 Apr 2023 06:42:52 -0500Personal Virtual Machines

mr's Preposter.us Blog

This post is more of a note to myself than a proper essay or something.  You’ve been warned.

I’m going to create a virtual machine to use as a target for the programs I write for myself.  The point (other than having fun) is that I can run my programs anywhere by porting the VM.

I think I got this idea from uxn, but it crosses a lot of disciplines I’m interested in so I can’t say for sure.

I write a lot of programs and I’ve been doing it for about 45 years.  In that time I’ve seen a lot of computers come and go, and as they go the software I write often goes with them.  This makes it hard to imagine writing anything that lasts, in the sense of a fine piece of furniture or other heirlooms.  Of course I don’t believe that the value of programs is the program code itself (seems like I wrote a lot about that once…) but complete programs can be useful longer than the computers they were written for are available, and I see these PVM’s as a fun and interesting solution to the problem.

Also I’m just fascinated by designing and building computers and this is a fun way to do that more compatible with working at the coffee shop than soldering irons and chips.

So what do I want out of this?  Well, I think the key is to strike a balance between providing essential logic and I/O facilities without limiting portability.  One idea I’m toying with is leaving out any sort of character or serial devices as these could be built-up from primitives like pixels and bitstreams.

I want to start with a very small set of universal primitives so I can get the pvm up-and-running quickly and expand it from the inside.  In a perfect world it would be self-hosting, so I could port it to new computers from inside the pvm itself.

I’m considering starting with subleq or maybe cryptoleq I’m not sure if I want to go that low-level or not, but it would be elegant, and could make porting it incredibly simple.

Part of what I think will be the most fun is not planning too much and instead just trying things and seeing what feels right.  In some ways this is a very “cultivated naïveté” project (I know I’ve written about that before) and I don’t want to loose that by writing more English than code.

image0.jpeg