I have been considering purchasing a MacBook Pro (MBP) for development for some time now. Recently, work has approved an iMac (27” 2.8Ghz Quad-Core Intel Core i7, 8GB RAM) for my primary development workstation. That was just what I needed to tip the balance in my MBP purchasing decision.
I have never owned a machine where the primary operating system was not a version of Windows. This is not an “I have had it with Windows moment”. In fact, I rather enjoy the Windows 7 experience. I have become quite comfortable with Windows and am proficient at the low level and high level configuration. As such I was a bit apprehensive about the change, but so far things are going extremely well.
MacBook Pro Configuration
The “Intel inside” hardware provides a nice platform for those of us coming from a Windows only experience. Apple has made a very nice machine in the MBP that is quite capable. The ultimate security blanket for this long time Windows user is knowing that if my OSX experience is not satisfactory I can always repave the machine and use it as a Windows 7 box.
I have been a professional developer primarily using the Microsoft stack for quite awhile. On a daily basis, I am knee deep (or maybe up to neck) in MFC, C# and ASP.NET code. I also dabble quite a bit with this technology on my blog. This sets a requirement that the laptop must support being able to develop with these technologies.
I recently purchased a Netbook and love the portability. This laptop does not need to be super portable. I would rather have a bit more screen real-estate to enable side-by-side windows.
For these reasons, I settled in on the following specs for the MBP hardware:
- MacBook Pro 15-inch base model
- 8GB 1066MHz DDR3 SDRAM
- 500GB Serial ATA Drive @ 7200 rpm
- 15-inch Hi-Res Glossy Widescreen Display
The 8GB of RAM is great for being able to run virtual machines. I like the speed that Solid State Drives (SSD) offer, but could not justify the cost. I did select the faster rpm drive option. I also paid a bit more for the extra pixels. I did not go with the anti-glare screen. After checking that out at the Apple store, I am a bit concerned with the durability. The surface of the anti-glare screen appeared to be able to be scratched. The glossy model seemed much less sensitive.
In addition to this hardware, I bought a copy of Parallels version 5. Parallels is virtualization software that can create and run virtual machines. The hardware above is beefy enough to run Window 7 in a virtual machine with outstanding performance. The following is the Windows Experience Index for the virtual machine.
Not bad for a virtual machine image. I have not had a chance to Boot Camp (OSX’s dual boot manager) Windows. The numbers will only improve directly running on the hardware. Eventually, my plan is to Boot Camp Windows, but spend most of my time running that Boot Camp partition in a virtual machine using Parallels. That way I have one Windows install that can run directly on the hardware (via Boot Camp) or in a virtual machine (via Parallels).
As a .NET dev, the first thing I did after un-boxing was to setup my dev environment. Parallels is very easy to use. Simple navigate to the the installation ISO and it does the rest. The powerful hardware, combined with the fast installation time of Windows 7 64 bit resulted in an install that seemed to only take minutes. I was working during the installation, so the exact time alludes me….but it was fast. To add a bit of protection I installed Microsoft Security Essentials anti-virus.
I then installed Visual Studio 2010. Again, the installation went without a hitch and was super fast. Finally, I loaded up the rest of my “developer essentials”. All the installations were un-eventful. Since I was installing into a Windows 7 image, I didn’t really expect any ‘events’ but you never know until you try.
On the flip-side, I signed up as a Mac developer and downloaded the Apple development kit. I have not had a chance to start learning this yet. I do have a nice iPad development book that I have queued up.
In addition, I have been trying to learn Ruby on Rails via a number of on-line tutorials / samples. While doing this in Windows I discovered that many of the tutorials simply did not work as written. It was frustrating to try to learn, but not getting progress because my shell commands would not work as written. I am happy to say that the Ruby on Rails tutorials work much better in OSX.
Finally, I am super pumped up that the MBP hardware will allow me to develop for *any* platform (Windows, Mac, iPad, iPhone, Linux…etc). I really feel this is the best of all worlds.
The Good and the Bad
There are some real positives about the switch. I am pleased that Apple makes quality hardware. The MBP is a seriously well designed machine. As discussed above, the hardware is very capable. Screen resolution is great. I will always prefer a dual monitor approach, but there is adequate screen space for side-by-side windows. I will eventually, work on docking the MBP to be able to use dual monitors. I have not looked into that yet. As of now, I am forcing myself to use the MBP in its native state (no external mouse, keyboard, or monitor). This forces me to learn the features that OSX and the MBP have to offer.
The trackpad is AWESOME. I especially like the multi-touch gestures for scrolling. I haven’t used a scroll bar since learning this gesture. It is also a decent size. Plenty of space for long gestures (dragging a window from one side to another).
I am also finding that some things are “built into” OSX that are not in Windows. A good example of this is screen captures. Seems like in Windows I needed a separate application to facilitate all the features I normally want from a screen capture experience. In OSX, that is built in.
re are some things that take a bit of time to get used to. All of these fall into the category of Window-centric features that are not quite the same or unavailable on OSX or the MBP. These are not horrible, they just go against all my years of muscle memory. Even after a week, I am learning new ways to accomplish the same things.
One of the things that you will notice right away is the key-stroke mapping is not the same. In fact the keyboard doesn’t even have a ‘Windows’ key (go figure). So simple things that I took for granted in the Windows world (CTRL-C for copy and CTRL-V for paste) have been remapped (COMMAND-C for copy and COMMAND-V for paste). Not a huge deal, just a bit of learning. This really shows up when I am in the text TextMate and trying to navigate, select, move and manipulate the document. In Notepad++, I am much more proficient with the keyboard.
I have also noticed that Windows has a few features that I wish OSX had. The biggest one is being able to size windows by grabbing on of the edges. With OSX, I can only grab the lower-right hand corner to size manually. Windows 7 also introduced the ability to move windows via the ‘Windows / arrow key combinations”, I really miss that feature. I did find an application for OSX that does provide the ability to move windows via key strokes.
I am extremely pleased with the MBP. Granted this setup is a bit pricey, but the flexibility it provides is, in my opinion, worth the cost. I have a lot of new space to explore in OSX and XCode. For instance, for many years in Windows I have used Notepad++ as my all-purpose text editor. I am still searching for that equivalent in the OSX world. Is that Textmate? or Coda? or something else?
If you care to share any of your experience with OSX and MBP I would love to hear from you. I am especially interested in how other .NET devs configure their MBPs. Also, if anyone has suggestions for a blog writing application for OSX I would love to hear. I am using Windows Live Writer (which I love) in Parallels ‘crystal mode’.