So my wife needs to run a bunch of different Virtual Machines for her work. Doing that means she can easily clone an existing VM, mess about with stuff and throw it away afterwards if needs be. Then she doesn't need to worry about having left her computer with lots of weird settings at the end of the day.
So she really needed a fast machine with loads of storage for all those VM virtual disk images, and a decent amount of RAM as well.
We looked around, and she went for the Lenovo IdeaCentre K430. It has a 4TB hard disk, a intel Core i7 processor and 12Gb RAM. So there's lots of space for VM disk images there and a nice amount of RAM to run them. We've created a separate partition just for the VMs to be stored on. All that RAM means you can easily dedicate 4Gb of memory to a VM without any worries.
When I got my hands on the machine, there was loads of rubbish pre-installed by Lenovo, so I erased the entire disk, set up my own set of partitions and reinstalled from scratch. But it was a pretty smooth process. I didn't even need the Lenovo driver disk, everything seems to have been detected by Windows 8 automatically.
I was tempted to suggest she tried Linux as the host Operating System, but in the end I decided she'd be happier with Windows.
Using VirtualBox, when you set your VM to run full screen it seems just as fast as the old PC running natively, you don't really notice. So that's pretty good. But I will upgrade to Windows 8.1 as the host OS when it's released, I've been using the Windows 8.1 preview on my tablet and I like the tweaks that have been made.
... and I've virtualised the old PC so I can keep it as a VM, just in case there's something left on it that we need. Yet again Disk2VHD comes to the rescue.
The main idea was for it to be minimalistic - so it's a character based system only. I always remember thinking that the work Microsoft did with MinWin was cool, so that's one of my influences. I always remember that Windows flag logo animated from ASCII characters...
Since I wanted to be able to run several things at the same time, I built a primitive window based environment - but one that works with keyboard control only, and in a browser.
Already I've got something which can move, resize, open and close windows. Everything is simply rendered into a <pre> tag with a monospace font, so theres no mucking about with <div> blocks or anything, just an array of strings that represent the screen - one string for each line on the screen.
Each 'window' draws its own content (which scrolls when it runs out of space) and this means that I can do different things in different windows. So each window becomes a kind of widget, in a text-only kind of way.
I have also allowed character input into each window which can post back a command to a webservice, and this means you can have a command processor running as a web service somewhere else. Of course, different windows could point to different command processors, so a variety of tasks can be done from the one environment.
Here's a screenshot of how it looks so far:
So before I get H2D2 running in mode_w I'm building a few experimental widgets, like the google search widget, just to see how well it works and to iron out any issues. The google search widget allows you to type in a search term and see the top matching URLs.
And maybe I'll build an expression parsing widget which could also be used as a calculator. But after that I will try and get it to host some H2D2 programs, since that is why I made it in the first place...