Heterogeneous Development Environment with Parallels Desktop® 7 for Mac
TL;DR – Purchase a 17" MacBook Pro, add two external monitors, install Parallels Desktop® 7 for Mac, and start developing software solutions for any environment (Mac OS X, iOS, Android, Microsoft .NET, Windows 8, and Ruby on Rails et al) without compromising a thing. You can take advantage of Parallels Coherence mode to do all this seamlessly allowing you to use the right tool for the right job.
Resolution: Dell 24" 1920 x 1080 + 17" MBP LCD 1920 x 1200 + Dell 24" 1920 x 1080 = 5760 x 1080/1200 x 3 Virtual Desktops
I spend nearly all my time developing Microsoft .NET solutions lately, and my MacBook Pro is the best Windows development platform I have used to date. Parallels ability to let me use the Mac apps I like alongside the .NET development tools I require makes it a win-win all around. The seamless integration of the Mac file system with the Windows VM is nice and requires only a couple Visual Studio 2010 Professional settings changes to get it operating smoothly with installed add-on, extensions, and debugging. VS2010 setup is a topic for another day and post.
Prototypical Heterogeneous Developer
I have primarily been developing Microsoft .NET solutions with an Oracle, Sybase, and SQL Server database backend since 2004, but I have an additional 14 years of experience developing anything but Microsoft prior to that. In fact, my first computer was an Apple IIe and I still have the Mac IIsi I used from 1990 to 1996. I switched over to Wintel in 1996 for two reasons: Linux and DOOM.
In the Spring of 2011, I started to get more interested in Ruby on Rails after having not looked at it since shortly after it was first released. Austin has a strong RoR community and that itch inside every developer flared up after I attended one of the Austin on Rails meetings. It was this desire to explore RoR further that led me to purchase my MacBook Pro in June of 2011. I also had some business development ideas I wanted to develop further and purchasing new hardware is one way to motivate yourself.
Vendor Lock-in and Parallels to the Rescue
As an Independent Consultant, the first vendor lock-in I entered into was Quickbooks. The opportunity cost savings alone with the Payroll and Business Tax software pays for itself. Unfortunately, the payroll subscription I use only runs on the Microsoft Windows version. Intuit does not offer the Payroll component with the Mac version of Quickbooks and it charges too much for the online version. I cannot wait until there is a viable alternative to the Intuit market stronghold. Microsoft even forced me down the Quicken path for personal use when it discontinued the Money product line.
VMware or Parallels
I researched the differences between VMware Fusion and Parallels and decided to go with Parallels 6 (upgraded to Parallels 7 later) because of Coherence mode. I did not want to use bootcamp partitions plus I had used VMware off and on since pre-version 1.0 came out on Linux. I figured I would test the hype and try something new for me with Parallels. I will honestly state that I have not been disappointed and Parallels has exceeded my expectations.
Seamless Integration with Coherence and Alfred
Coherence mode is everything it claims to be, but I did notice Parallels 6 had less redraw issues than Parallels 7 in some edge cases. There is also a strange condition when returning from sleep in between different monitor configurations. Parallels will claim it cannot switch to Coherence mode and it is not until you move the window onto the main MBP display that Coherence mode will start to function. I certainly hope there is a point release of fixes coming out soon.
Alfred is the Man
Alfred is a Mac application launcher that you can activate with a key sequence. It opens a dialog as you start typing the characters of the application you wish to start. Parallels integration exposes your Windows applications seamlessly for launching from Alfred (or any application). For example, start typing the word Chrome and Alfred will let you choose between the Mac or Windows version of the application.
Mac Virtual Desktops
Virtual desktops have been around for a long time with X11, CDE, Gnome, KDE, and Windows third party tools but for some reason the Magic Mouse and Mac Virtual Desktops feels natural to me. I run three virtual desktops with two external monitors at my home office and one external monitor at my client site. The 17" MacBook Pro LCD with 1920x1200 resolution is as good as a standalone monitor so operating with only one external monitor is still highly productive.
I typically partition my activities across the three virtual desktops with the following flow when using two external monitors:
- Desktop 1: Left – Evernote / Center – Email & iTerm / Right – Twitter & Safari
- Desktop 2: Left – Tortoise HG, Command2 (command line builds), Windows Web Browsers / Center – IM and Debug Browser Sessions / Right – Visual Studio 2010
- Desktop 3: Left – Database Model / Center – Miscellaneous / Right – SQL Server 2008 R2 Management Studio
My Environment Configuration
Since purchasing my MacBook Pro in June, my old Windows desktop machine has been in sleep mode 99% of the time. I only wake it to retrieve a document I forgot to migrate over to the MBP.
I only purchased a new AirPort Extreme WiFi because the Vonage router I had was even worse than the Linksys one, but I am glad I did. The Xtand Pro XL stand is a little pricey, but it lines up the external monitors with the top of the MBP very well. I acquired all these components over the past six months and each item was worth the investment.
Baseline Hardware Kit
- 17" MacBook Pro quad-core Intel Core i7 2.3GHz, 4GB RAM, 750GB Hard Drive, Intel HD Graphics 3000 and AMD Radeon HD 6750M, SuperDrive, Thunderbolt port, Aluminum unibody, Hi-Res Antiglare (Mftr Part No : Z0M3-2.3-4G750-HRA)
- Crucial.com 8GB Kit (4GBx2), 204-pin SODIMM Upgrade for a Apple MacBook Pro 2.3GHz Intel Core i7 (17-inch DDR3) Early-2011 System (Part Number: CT2KIT51264BC1339)
- Wired Keyboard with Numeric Keypad (Mftr Part No : MB110LL/A) [Note: Net gain of +1 USB ports]
- Magic Mouse (Mftr Part No : MB829LL/A)
Displays and Stand
- Apple Mini-DP to DVI Adapter Part Number: MB570Z/A
- 2 x Dell ST2420L 24-inch Full HD Widescreen Monitor with LED
- StarTech.com 1ft DVI-D Dual Link Digital Video Monitor Cable
- Rosewill 3 ft. DVI-D Male to DVI-D Male Digital Dual Link Cable, Model RCAB-11053
- HIS Multi-View II Video Adapter (Mac & Window 7 compatible version) HMV2-MAC-PC USB to DVI Interface (Download DisplayLink Drivers for Mac)
- Just Mobile Xtand Pro XL for Macbook
Networking
- AirPort Extreme Base Station - Simultaneous Dual-Band - 2011 model (Mftr Part No : MD031LL/A)
Backup and Recovery
- Time Machine software that comes with Mac OS X
- G-Technology G-DRIVE Q 2TB External Hard Drive w/ eSATA, USB 2.0, Firewire 400, Firewire 800 Interfaces (Model 0G00203)
- StarTech 3-Feet Shielded External eSATA Cable M/M (ESATA3)
- Tempo Edge Sata 6GBPS E34 Single Port Controller
Licensed Software
- OS X Lion
- Parallels Desktop® 7 for Mac
- Windows 7 Professional
- Visual Studio 2010 Professional + ReSharper 6.1
- Microsoft Office Windows Version
- Balsamiq Mockups
- RubyMine / TextMate
- Expresso Regex
Closing Thoughts
My only gripe with the 17" MacBook Pro is the weight. It is noticeable but then again I am only transporting it between my home office and the client site. The advantage of the 17" over the 15" MBP is an additional USB port. This seemingly minor detail has been a major headache for a number of my colleagues using the 15" MBP. Ironically, my full-size Apple keyboard nets me an additional USB port.
If you have read this far and develop Windows applications… What are you waiting for? Purchase a Mac and enjoy it developing for Windows more.