« Home | T-mobile BlackBerry Curve SIM unlock, part II » | How to Launch a Business without Spending a Dime » | git: Tralining whitespace error during commit » | Export your Outlook Calendar to Google Calendar » | T-mobile BlackBerry Curve SIM unlock, part 1 » | MicroISV on a Shoestring » | Looking Back and Looking Forward » | GrandCentral Web Call Button » | Marketing with Trinkets » | BlackBerry Curve 83xx versus T-Mobile DASH »

Spec'ing out the Ultimate Developer Rig

One of the most awesome things about striking out on your own and working for yourself is that you get make all of the purchasing decisions.  Of course, one of the worst things is that you have to pay the bills.  

Until now, my philosophy could have been summed up as: the cheapest-PC-I-can-find-is-best-one (coincidentally, this is usually the position taken by corporate business managers). I'm not so sure anymore now that I am a one man shop (so far) and I am considering plunking down a lot of money of a pricey workstation.

My goal would be to setup a system with which I could develop applications for Windows, Linux, PalmOS, PocketPC, and maybe even OS X.  Additionally, I want to be able to install Virtual Machines to build and test for various environments.  I also want a VM especially for downloading and evaluating shareware -- so I don't have to worry about crapware becoming installed on my system.

Sure, I could build up a gaming rig, or simply purchase one.  However, my focus is a system dedicated to making me work faster and smarter.  Dropping $5k on a machine that screams like a hair dryer is not my idea of productivity.

General Requirements

  • Fast-- the fastest multi-core developer PC that I can afford without reverting to the culinary delights of romen noodles on a long term basis.
  • Reliable. I don't want to have to drop everything at a critical time to replace a drive or go looking for backups.
  • Quiet.  While this is relative, I don't want a system that sounds like a jet engine.
  • I want to be able to support a full development environment on at least two environments: Windows XP (maybe vista) / Visual Studio and Linux/gcc.  Additionally, I want to be able to pull up and use various VMs for testing (Ubunto, Fedora, RH, etc).
  • Not a Dell.  I'm sorry, but I've dealt with too many broken Dell products and horrible outsourced support.  

So basically-- I want a super fast machine running a native 64 bit OS, with everything else nicely packed away in a Virtual Machines managed by VMWare (or similar). 

Going Virtual

Most of my current workload revolves around embedded Linux development, and as a result, I'm constantly installing/building cross compilers for various architectures.  Since customers often dictate the flavor of Linux/kernel version/tool chain they want me to work on, I need to be able to install a distribution and start compiling as fast as possible. 

Cygwin/X, a KVM, and Synergy makes dealing with the multiple machines easier, but still it isn't totally pain free.  I now want to consolidate them into virtual machines on my heavy iron development system.   I would also like to have a Linux and windows nightly build system running, triggered from source changes checked into my source code repository. 

RAID Required

Smart people learn from their mistakes; really smart people learn from other people's mistakes.

Raid isn't a backup solution.  Lots of people think it is, but it isn't.  RAID will not stop fire, theft, user mistake, or file system corruption.

So what good is it?   It will save you time when your drive does go belly up.  Without it, you will have to stop what you are doing (no matter how trivial or important), replace the drive, rebuild machine, restore from backup.  If you have good backups, you still will loose 4 to 6 hours of time lost.  If you are up against a delivery deadline or tax deadline (with possible penalties) it can cost you money.

Conversely, with RAID 1 or RAID 5, your monitoring software will pop up a message box, "drive 0 has failed."  You can keep working and replace the drive on your time frame, not the failed drive's.  You simply pop in the spare and rebuild the RAID at a more convenient time.

Joel Spolksy highlights what might happen, even if you are prepared:

"Lesson Learned: This is not the first time that a hard drive failure has led to a series of other problems that wound up wasting days and days of work. Notice that I had a very respectable backup strategy, everything was backed up daily, offsite. In fact I believe this is the third time that a hard drive failure has led to a series of mishaps that wasted days. Conclusion: backups aren't good enough. I want RAID mirroring from now on. When a drive dies I want to spend 15 minutes putting in a new drive and resume working exactly where I left off. New policy: all non-laptops at Fog Creek will have RAID mirroring."

Advice worth following.  So my new rig will have RAID 1 as a minimum.

Buy versus Build

I am going to purchase the specified system outright (or lease it).

I have built up servers and PCs before, but I'm not going to do it this time.  I don't want to spend the time tinkering with components.

While looking for opinions online, I found the most cross linked articles involved Scott Hanselman spec'ed out a developer rig (more like a gaming rig) which was assembled by Jeff Atwood of Coding Horror fame.  Not counting the time in selecting, purchasing, and shipping, it took Jeff Atwood three (days) alone to assemble, benchmark, and test the new computer. 

That is three days of billable time, or time I could apply towards launching a saleable software product.

If I purchase, it shows up ready to go.

I will update my blog when I get closer to making a purchase.  So far I've narrowed my scope down to quad-core or octo-core systems, but they are incredibly expensive.