Posted by: jsonmez | May 24, 2010

Developer Machine Considerations

I’m back from vacation.  And I’m actually starting a new job today.  I will be working remotely from home for a company called TrackAbout.

One of the first things I have been doing to get ready to start this new job is setting up my development workstation at home.  There are really quite a few considerations to think about when setting up your home office.


I was debating between going all out with the Intel 6 core chip or getting the nicely priced AMD 6 core.  I ended up choosing the AMD chip because the Intel chip was 3 times the cost, and the chipsets on the motherboards for the AMD chip are a little more stable since they have been around longer.

The processor doesn’t really matter that much anymore since processors are so fast nowadays.  What really matters though is the hard disk.  On this case I opted for a super fast SSD drive.  256GB should be plenty of space, with an additional hard drive just for back ups.  The speed improvement when using a really good SSD drive is amazing.  It is the single best upgrade you can do in a developer machine.

I also went with a large amount of RAM because I know that if you need to run a virtual machine, RAM is going to be a big deal there.  16GB should meet any need just fine.

Finally, I am trying out a quad-monitor setup for the first time.  I have been using dual 24” monitors for a long time now, but I have always thought two more would be even better.  It is really important to be able to quickly see multiple things going on at once without having to switch between applications.

I’m planning on setting up the monitors like so:

  1. IDE
  2. Reference: web pages, API, etc
  3. Communications: twitter, pidgin, email
  4. Secondary IDE for debug, or SQL server

Desktop or laptop

Most developers are getting laptops with docking stations these days and while I see the appeal, I like a good old tower and a cheap laptop instead.

  • With a desktop you can get beefier hardware for less $$$.
  • You can pick the hardware yourself (which is a big deal for me since I do a large amount of research on each component).
  • You can have more monitors natively (just buy a 4 port video card).
  • More upgrade options.

I still have a laptop, but it is a cheap light one.  The advantage here is that I can just remote desktop into my powerful machine and get all the benefits of both worlds.  If I am really ambitious I can even remote in with my iPad or phone.

So, while I can definitely understand the appeal to many for having a laptop that they can just disconnect and carry with them, I still prefer the desktop.


I almost did it this time.  I keep going back and forth on this one.  I really want to have my development machine be a VM so that I can just load it up and go, but after thinking about it more, I am not sure it is worth the cost.

I kept thinking about why I want to have a virtual machine for my development machine.  Really the answer comes down to me liking to have things in a nice separate little box.  Sure, I can drop my dev virtual machine on an external drive and take it with me, but I can achieve the same by remoting into it instead.

The thing that made me finally decide on no VM is the idea of optimizing for the rule rather than the exception.  The truth of the matter is when I am on my PC, I am going to be spending 90% of my time doing development work, and doing it on that one machine.

When I look at it that way, I can’t see a good reason to take the performance hit of virtualization for the 10% case.  I can achieve most of the “neatness” of virtualization by cloning my disk at a good configuration.

I’ll probably still have some sandbox VMs for testing out “crazy stuff”, but I think I am going to go native so I can really utilize the max out of my new hardware.

I’ll just have to treat my Windows install like I treat my source code.  “Leave it better than when I started.”

Anything I’m missing here or not seeing?



  1. i’ve got a MacbookPro with 8 gigs of RAM and I don’t really see the need for more, honestly. but then, i’ve never had more than 4 so 8 seemed like a luxury for me. 🙂

    i run 2 external 24″ monitors plus the laptop’s 17″ screen. the laptop is on the left and runs comms, code is in the middle and browser/reference on the right. it’s a pretty sweet setup. not sure what i would do with a 4th monitor.

  2. Four monitors, nice. Are you running a Eyefinity with display ports?

    I agree with you on the virtualization. with your SSD the speed benefit of a VM will be moot. I keep a couple VMs ready to go when there is a good chance something I am working on will break the OS. They are convenient for end user support especially when paired with profile and application virtualization. Why bother troubleshooting user problems? If something goes wrong you can trash the VM, send over a new one and it will pickup all the user customizations and apps at log on.

    I am interested to see how RemoteFX turns out. Full motion video and graphics over RDP will be good times.

  3. Something that troubled me about the SSD drives is that they have their lifetimes rated in writes. While this is fine for most everything, it made me nervous about frequently written files – especially the pagefile.

    What do you think? How long do you suppose your disk will last with the pagefile sitting on it? Was that even a concern for you?

    • MLC drives have shorter lifespans than SLC drives, but it is still pretty long. MLCs should get around 100,000 write cycles and SLC around 1,000,000. With TRIM support and wear leveling algorithims most SSDs should outlive their usefulness.

      Wear leveling allows the drive to store data in every physical cell before writing over a previous so it may be awile before the first write cycle occurs, especially in a 256GB drive.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: