Tuesday, September 30, 2014

My New Development Setup

I have had people ask me about my development setup and since I just upgraded to a new machine this past weekend, I figured I would blog (*cough* brag *cough*) about it.  First a little history:

I have been a Windows developer for most of my career so my work development machines have always been Windows based.  I switched my home computer to Mac in 2005 and can honestly say my life is better because of it.  I have 3 kids and a wife and have had to do very little system admin work at home during the past 9 years - Apple stuff just works.  When I joined OnPoint Medical Diagnostics in 2011, I decided to switch to Mac for work even though we were developing on Windows.  This may sound strange to some, but Apple hardware is generally cutting edge and the unibody MacBook Pros are incredibly sturdy.  I have heard some Microsoft people say that Windows runs best on Apple hardware - go figure.

I initially ran Windows via vmWare fusion on a  bootcamp partition and that worked great - I could run Windows in a virtual machine under Mac OS X or reboot into native windows if I really wanted the speed.  I quickly discovered that I didn't need the extra speed so I ended up running Windows under vmWare on Mac OS X for several years without any issues.  In fact, I found this setup had many advantages:

  1. I put non work stuff like iTunes, Spotify, gmail, web surfing and games on Mac OS X and kept the Windows VM purely work stuff (visual studio, source code, outlook)
  2. It is also nice to be able to surf the web in Mac OS X while Windows updates are being installed (which seem to take several minutes and happen every other week).
  3. You can test (and debug) web apps on iPhone and iPad simulators via XCode


Last April I started development of a 3D Visualization Server to integrate with cornerstone.  The server is written in C++ and uses the excellent VTK open source project.  VTK features the ability to do volume rendering using a software renderer as well as a GPU renderer.  The software renderer was working great, but I was curious how much faster it would be with a GPU.  Unfortunately my Mac Mini at home didn't have a GPU so I couldn't test it - I ended it up getting a good deal on a mint condition 2012 15" Retina Macbook Pro off of craigslist which had a GPU.

The new 2012 MBP was amazingly fast - unfortunately VTK appears to have a bug and the GPU renderer produces black images.  Interestingly enough, the GPU rendering works fine when run on a Windows virtual machine under Mac OS X (GPU rendering is blazing fast - 60 FPS at full image quality).  As time went on, I ended up building a number of virtual machines to support various consulting projects (each customer gets its own VM) and I ran out of space on the MBP's 256 GB SSD drive.  I bought a couple of MyDigitalSSD OTG drives to store the VMs (these are absolutely AWESOME - highly recommended) but I had all these cables laying around and it was disrupting my work area feng shui so I was getting the itch to upgrade again.

The key criteria for a new machine was the following:
16 GB RAM Minimum, ideally 32 GB RAM
i7 Quad Core
1TB PCIe flash storage
GPU

The only two options were a 15" Retina MBP or a MacPro.  I have actually been wanting a MacPro since they came out but they are pricey and I would still need a laptop for travel which adds even more cost.  Two separate machines also means I have to deal with data synchronization and aint nobody got time for that.  It turns out that the 15" MBP is actually faster than than the least expensive MacPro - check out the performance comparisons here.  The only issue I had with the MBP route is that the maximum RAM is 16GB which tends to disappear quickly when you have a few VMs running.  This past weekend I decided to bite the bullet and picked up a top of the line 15" MBP and absolutely love it.  It feels about 33% faster than my 2012 MBP - most of which I am guessing is from the PCIe flash drive.  Check out these numbers:

In addition to the MBP, I have an Apple Thunderbolt display, old Dell 24" monitor in portrait mode and iPad air all on top of a nice glass desk.  I use an Apple keyboard with number pad and a Logitech g500 mouse.  The MBP sits in a vertical stand which helps keep it cooler.  Here is a picture of my setup:




No comments:

Post a Comment