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.