One thing I have never heard of before when someone is trying to justify a new PC purchase is the words 'I need it for website development'.
I could understand, website development is not really an intensive task on your computer, is it?
I mean, what do you have to be able to run, really, a web browser, a text editor and a personal server (which doesn't even need to be on your own computer).
Of course, if you are a little more multi-talented, you may have some image editing software running too.
Naturally, you may have a preference for things like Dreamweaver, more processor and memory intensive, but it does include extra features that may be of use to some (not to me though, to be honest).
So what are we looking at, I mean, seriously, what are the lowest specs you can get away with if you are a simple coder.
Very minimal? I mean, after all, you're ultimately just running a text editor, a web browser, and maybe a personal install of Apache (XAMPP, WAMP, LAMP, or any other *AMP), in addition to your operating system, other tabs in your browser, and maybe an audio player if you're so inclined to listen to music while coding (I am that's for sure).
It would be reasonable to assume that any PC made in the last five years could handle that with some room to breathe.
I bought the PC I have listed in my about page, mainly because I am a digital photographer and occasional gamer, and the oomph that it provides would be good for both tasks.
So, obviously, far and away what a web developer would need, right?
You probably saw this coming from a mile away, but no, it isn't.
The key thing to realise is that a website developer, a good one anyway, aims to try to get his websites work cross platform and cross browser.
What does this mean?
Lots and lots of testing of course.
On Windows Vista, I test in Firefox 2.0, Internet Explorer 7, Safari 3 beta and Opera 9.24. Most of the time I have these open all the time when I am in the testing phase (when I am actually building a site I just use Firefox, then when I have finished it, I test in other browsers and make tweaks to get the site to work right in those browser).
Awesome! Everything is covered, right?
Well, it depends on how thorough you want to be thorough you want to be.
With that selection I have about 95% of the web browser market covered, but there are omissions.
For example, what about Linux based web browsers (that don't use the Gecko engine), such as Konqueror (this is actually answered sufficiently with Safari 3, since it uses the KHTML rendering engine of Konqueror).
What about testing known browsers under different platforms (I can't emphasise how much of a difference there is between Linux Firefox and Windows Firefox simply because of font differences).
Here's another one.
What about Internet Explorer 6.
It's still a big player. Simply because people don't like updating their computer (for whatever reason that is).
So, how is this dilemma solved.
Well, I could get some more computers and install copies of the operating systems I need to test those browsers, but that is very time consuming, expensive, and would require me to upload my website to the Internet, or to make an Apache server for all my computers to connect to (I only just have the ability to install Ubuntu and add packages via Synaptic, which is far from being able to set up an Apache server).
I could dual/triple/quad boot my main PC. This is cheaper, but it still comes with the time consumption issue, what with having to switch to each OS every time I make a change to test it, and I'd still need to upload what I have made to the web to really get it to work.
There is another option though, and with the power of new PC's, becoming more and more commonplace.
Virtualisation.
What's that?
Virtualisation is the act of running multiple operating systems at the same time.
One operating system acts as the Host and you have a collection of Guest operating systems that you can 'boot up' inside their own virtual systems.
This certainly isn't a new technique, but it has only recently the tools have been available to everyone, and computers be 'sufficiently fast enough' for the task.
The main cost involved with virtualisation is that the virtual machine is running inside your operating system. This comes with a lot of over head. The CPU is being shared in real time by more than one operating system (this is lessened by multi-core processors), and the amount of RAM you have available to you is significantly reduced (of course, significantly really depends on how much RAM you start off with, and how much you assign to your OS).
This means that you are practically limited by how fast your processor is, and how much RAM you have.
For example, if you're running Vista with 2Gb and a recent processor (if you couldn't tell, RAM is more important than processor generally), you can probably get away with running Windows XP Pro and a copy of Ubuntu, each with their own RAM set at 512Mb each (leaving 1Gb available for Vista).
As you can see a web developers hardware requirements can be deceptively high. As I am writing this, I am currently running Vista with 4Gb of RAM, with a Windows XP Pro virtual machine and a Ubuntu 7.10 virtual machine (both with 512Mb allocated to each), and overall, my system is using 2.5Gb of RAM.
Granted, I haven't done a lot of optimisation of my Vista install, but, I never thought I'd ever actually be able to justify my new PC by saying 'I need it for website development'.