Joe Brinkman made an excellent post today (Repaving in a Virtual World) about the painful experience of dealing with the crapware most computer manufacturers force on us and the odyssey of re-installing software.
About six months ago, I got fed-up with the cycle and decided to end it once and for all by switching entirely to virtual machines (Virtual PC). Now, I am a convert. There is just no going back.
I upgrade my primary notebook approximately every 6-8 months. I will go from a HP Pavilion zd8000 to a Dell M90 later this month, and for once, I don't have the mixture of excitement about the new hardware, and dread about getting the environment just right. I'll copy the virtual machines over and be up and running in the time it takes the bits to cross the wire to their new home.
As Joe mentions in his post, I have multiple "theme-based" virtual machines:
- Biz - for Office apps, email, blogging etc. (10Gb disk, 400Mb memory)
- Dev (multiple) - one standad dev VM for my business, and a couple for some other businesses I collaborate with. (16Gb disk, 768Mb memory)
- Test (multiple) - these are throwaway VM's. I use them sometimes only for a couple of hours and then delete them. (4Gb disk, 256Mb memory)
- Media - for personal photos, music, videos etc. before I transfer them to my 2.5Tb media jukebox (10Gb disk, 384Mb memory)
At any given time I will have a combination of Biz-Dev-Test or Biz-Media or Biz-Test-Test running. Since the aggregate memory never exceeds 1500Mb, I never experience any problems. On the host, I do have Skype and my WinTV app running. These don't consume many resources and since I turned off just about every other non-essential service on the host, there is very little memory/CPU usage too. (Bonus: Incredibly fast boot time for host.)
It took a little getting used to this setup at first, but I think in the process VMs have helped me deal with another problem -- attention deficit. By setting up each VM to be specific to one general area, I have forced myself to be more disciplined in approaching tasks, especially development. Instead of bouncing between windows on multiple projects, I now focus on getting to a stopping point so I can switch to a different VM. I have all the VM's configured to have "My Documents" point to a shared folder on the host, so sharing docs is not a problem. I have not yet figured out the exact rules for when the clipboard works and when it doesn't between host-VM and VM-VM, but it is not a huge issue.
The key to excellent VM performance I found, was regular defragging. I run Raxco's Perfect Disk and the Invirtus VM Optimizer regularly on my VMs. It's like hitting a performance boost button -- things are just snappy after running these guys.
Another suggestion for saving time and effort is to get the base VMs right the first time. When I need to create a new VM, the only thing I need to do is copy the settings and disk files for the VM, edit the reference in the setting file to point to the new disk and once the VM is running, rename the computer. I figured that getting the VM right would save me countless headaches until the next major software upgrade cycle, so I invested a day in getting my base VMs just right. That investment has obviously paid off.
[Reproduced from devTao :: Nik Kalyani on the Developer Way]