Overview
Well, it looks like it is almost time for the long dreaded ritual of repaving my hard-drive. This is something I should have done a year ago when I first received the machine from Dell. I do not know why manufacturers insist on loading up a new machine with a bunch of useless garbage. I have long passed the point where my laptop needed repaving, but that will have to wait.
This time however I am going to try and be a little smarter and see if I can't avoid the pain in the future. I used to work with a guy who used to keep 2 hard-drives on every machine. One hard-drive was only used for the operating system and software. The other drive was only used for data. I have tried this approach in the past, but too many software applications have their own idea about where your data belongs. Microsoft believes data belongs in your My Documents folder, unless it belongs in your "Documents and Settings\%User%\Application Data" folder. Some vendors believe the data belongs to the application and will store it in the application directory (of course this will break in a strongly administered environment where non-admins are not allowed to write to these folders - but that is another discussion). Other vendors will politely ask you where to put the data, and then will proceed to ignore your request for about 10% of the data, forcing you to play hide-and-go-seek to figure out where that settings file was placed. Well clearly this is recipe for disaster. Combine this with my tendency to forget my own storage convention and I end up with data all over my data and application hard-drives.
Solution
Lately, I have been running several virtual machines for various purposes. Some are used for testing for the DotNetNuke Review Program. Some are used to isolate beta software. Ok. You caught me. I still allow some beta stuff to creep onto my main machine... but it is my machine and my blog so stop giving me a hard time here. Anyway. Where was I. Oh yeah - Virtual Machines. What if I went whole hog and just set up a couple of Virtual Machines to run the various sets of applications?
Now this seems like it might work. Virtual machines have really advanced over the last several years. VMWare and Virtual PC are both very nice applications. I have used both the server and workstation varieties for the last several years and they are both making significant strides in blurring the performance barrier between a physical machine and the virtual machine. I will definitely need to decide however which version of the virtualization software to run and I am not sure which way I will go. I will probably end up using Virtual PC because it is free and has most of the features I need for a virtual machine. I will still run my testing environment in VMWare server, because it is also free and in my experience it has much better snapshot/rollback support than Virtual Server or Virtual PC.
A couple of years ago - shortly after Microsoft purchased Virtual PC - I was attending a MSDN Training event and noticed the instructor was running his presentation and demos off of a virtual machine that he kept on an external hard-drive. When asked about this, he said it was a great setup. Now he was not tied to a particular laptop for his presentations. As long as he had his hard-drive, he had everything he needed to give a presentation. Just do a quick install of VPC on the host machine (the install was kept on the external hard-drive just for this situation) and he was up and running. This came about because he was once burned by a laptop failure just before a major conference. The last thing someone wants to do is reload an OS, MS Office, Visual Studio, SQL Server, and a few miscellaneous support apps the night before a demo. And once installed, get them all configured properly and get the demo working again. Major PITA! Even if you can get another pre-configured machine from the IT shop, it will usually not include your set of tools and your particular configuration. Virtual Machines can alleviate this issue. You can easily be up and running in under 10 minutes with the external HD approach.
I was speaking with Nik Kalyani about this issue and he also runs in this configuration. He likes it a lot because it allows him to isolate various parts of his environment. He keeps a business VM with typical office apps, a dev VM with Visual Studio and other dev tools, and a test VM for testing his applications. I am sure he also has a few other miscellaneous VMs as well. He says that he maps his "My Documents" folder to the Host OS so that he can share his documents between VMs.
My only concern is with memory and hard-drive space. Running multiple VMs can quickly chew up your memory. You essentially have the Host OS, plus an OS for each open VM all running in memory simultaneously. Unless I beef my machine up a little I am concerned that I will be forced to starve one or more VMs for memory. Also, as I add more VMs I will start consuming large chunks of hard-drive space. Currently I have more than 40gigs dedicated to various test/presentation VMs and this move will substantially increase the usage.
Even with these issues, I think this will be my final solution. I really want to get up and running on Vista RC and this seems like the perfect opportunity and it won't drastically affect my daily work (yeah, I do have to move all my stuff to some VMs, but I would have to move them off before repaving anyway, so no big loss).