I'm curious how you enjoy working with virtual machines instead of all native?
This is admittedly my first day of not being just a lurker here, so forgive me if I shouldn't ask this here, but what is your setup and environment like?
I've considered running VMs for each client I work on, but am unsure if it'd just be a hassle or not.
As long as your hardware can handle it, it's more than worth it. A few points:
1. I have a rule - never install server software on my base machine. Servers and server frameworks (like Rails, Jetty, PostgreSQL, etc.) are only allowed on server OS's (Ubuntu Server) running in a virtual machine. That keeps a lot of cruft and extraneous processes out of my base install, while also quarantining them into easily clonable virtual machines, should I want to recreate the vm for something. I only break that rule with one thing - I run Nginx on my host OS, and just point it at different vm appservers.
2. It helps separate your work for multiple clients. So you could setup three vm's for client 1 and three for client 2 like so - client1-webserver.vdi, client1-appserver.vdi, client1-dbserver.vdi; client2-webserver.vdi, client2-appserver.vdi, client2-dbserver.vdi.
3. It lets you more accurately simulate the production environment of an n-tier application locally, so your dev environment will be closer to prod than if you ran all these server apps directly on your base machine.
Only caveat is you need the hardware to support this. Enough disk space for multiple ~10GB vm's, enough RAM to hold them in memory, and a CPU with VT-x (and VT-d if possible) and lots of cores. I particularly like Intel's Sandy Bridge chips for this, since every core is hyperthreaded, making it appear to the OS to have twice as many cores as it actually does. Each vm can be assigned one more more core.
That's about it. Try it with Virtual Box and see what you think.
I run Ubuntu as my main OS. Then I have VirtualBox running with couple Windows virtual installs and a couple Linux virtual installs. I give about 5G-10G disk space to each, and about 500M to 800M RAM to each (my work laptop only has 2GB, so I have to be careful). The windows virtual installs are for running different versions of IE and programs like Photoshop. The Linux versions are for running things I don't want to conflict with my main Ubuntu system. For example, I use rvm for Ruby programming, and wanted to try rbenv. However, I heard they don't play well together, so I installed rbenv on one of my virtual Linux installs and was able to experiment right away without worrying about messing up my rvm configuration. Another time, I was learning about certificates and keys, and did not want to screw up my current configuration on Ubuntu, so I was able to experiment on on of my Linux virtual installs instead, with no harm done to my main Ubuntu system. It's very liberating to be able to experiment with these without worrying about affecting your primary system.
Wow. That's fantastic. I'll do that tonight actually. Because ArchLinux is constantly moving so quickly, I'd like to know what I might have to deal with when I run a pacman -Syu.
I think I'm a convert. Now, if I could get OSX to boot in a VM, and dedicate the entire HDD to Arch, that would be perfect. For some reason my Macbook won't boot the 64bit Archboot iso. But I'll wrestle that demon another day, heh.