I’ve always been a big fan of keeping my work and play environments separate. That feeling of “clocking out of the office” and closing the doors behind you helps trigger the transition from “work-time” into “own-time”. As I usually work from home nowadays, I don’t have cards to punch or doors to close (not that I’m complaining, mind you), so I’ve always done this switch on the machines I work on.
For a long time now I’ve used a single laptop designated for work only. I power it on only when I’m going to be productive, and use other machines for leisure. This works great, but it still doesn’t separate work environments themselves. For example, I might have one for a specific client and I might have another for a personal project. It also doesn’t solve the SPOF (single point of failure) problem, as if this machine breaks down, all my environments are toast.
I solved the first problem by using some type of virtualization. At first it was simple things like Cygwin and coLinux (when I was using Windows as my host OS). Then I moved to a manually managed virtual machine, and once Vagrant became popular, I used that.
All of that was great and it kept my environments separated, but it still didn’t solve the SPOF problem. I also noticed that sometimes I would find myself without my main work machine, but wanted to get some work done, and I couldn’t.