For solo projects, do you keep your build / management tools on your local machine, or on a separate server? If the server is not guaranteed to be safer or more reliable than my own machine I struggle to see the point, but maybe I'm missing some things.
Note that I'm not debating the value of continuous integration or having a staging environment etc.. just the question of whether it exists on separate hardware.
I'm primarily a C/C++ guy who does telecommute projects on Linux, Mac OS X, and Windows.
All my development machines at home are on a gigabit Ethernet LAN which also includes a Linux server that doubles for source control (Perforce and git) and issue tracking/wiki (Redmine).
Why have a separate server?
The more copies of the source there are, the less likely it is I'll be in pain if there's a hardware failure.
My Internet firewall forwards key ports to the server, so I can travel and get to all my important stuff without compromising my LAN. I've pulled a complete set of sources onto a laptop from a Starbucks.
I can keep all my development machines' sources synchronized.
It really doesn't take much horsepower to set up a Linux server to do this. I'm using a first-gen Intel iMac with a dinky hard drive and anemic CPU. It would be inadequate for most things and would probably gather dust in our crawl space, but it runs great with Ubuntu Maverick for this purpose.
For many projects, it makes sense to have VM dedicated solely to development or for use as a staging server, especially if a complicated software configuration is necessary on the machine. Using a VM gives you the ability to switch between putting the development / staging server on a common or server machine, or putting it on your workstation machine (which can be useful if, for instance, you need to develop from a portable machine or without a network connection.
My day job is as a solo C# developer working on a single in-house system for a small company. The system uses Mercurial for version control, with a central repository on the company file server. I have use a build server which is actually a Windows XP VM running on a Hyper-V server. I find that with this setup:
The build environment is separate from the development environment, so I can manage dependencies easier
Most of the client PCs are Win XP, so I can develop on any OS (usually Win 7) but I can run all my automated and manual tests on XP, with a similar configuration to the users
I develop on a 64 bit OS, but build for 32bit, and some unit tests for complicated calculations like Internal Rate of Return can fail due to architecture differences. Not necessarily an issue but it could have been.
I used to have a VM running on the development machine, but that meant I couldn't run builds when working from home - now I can just RDP into the build machine
Having a clean repository makes it easier to find issues like forgetting to add files to VCS. Of course just having a seperate build chain on your dev machine could achieve that as well, but it is nice to have it all in a physically seperate environment.
A full build with all the tests takes about 4 minutes, and then manual tests can take some time as well. With a seperate build server I can keep working while the build looks after itself.
That depends, all my computers are set up with different tools for different languages, projects, etc. For example, on one computer I have Django and Apache, on another I have Python, Pygame, and Tkinter, on another I have Eclipse and PHP, on yet another I have a different version of Eclipse along with the Android SDK and a few emulators. I'm considering setting one up for RoR. I use whichever I'm near, or sometimes I will remote-desktop into whatever computer has what I need.