Yes, I run Windows on my Mac
For the last year I’ve been using an Apple MacBook Pro as my main windows development machine at home. This post summarises the experience and covers some of the caveats of such an approach.
The machine is an early 2009 model 17” MacBook Pro running at a resolution of 1920x1200. It has a 2.66 GHz Intel Core 2 Duo (T9550) processor, 8gb RAM and a 160GB Intel x25-m solid state drive.
In addition, I replaced the optical drive with a MCE Optibay which allows me to have a second hard drive in the machine (a 320gb 7200RPM drive which originally came installed as the primary disk). The original optical drive now lives in an external, USB-powered enclosure.
Windows 7 Ultimate (x64) is installed on the SSD and is my primary OS, whilst Mac OS X 10.6 is installed on half of the second drive (the other half of the second drive is for storing large files such as VMs).
I mainly use the laptop at a desk connected to a 24” external monitor, which is configured as the primary display. The laptop sits off to the side raised on a Griffin iCurve stand.
(The books to the left are CLR via C#, Algorithms in Java, Design Patterns in Ruby and Metaprogramming Ruby)
The MacBook Pro has a large, glass, multi-touch trackpad. This is probably the best trackpad I’ve ever used – the large size makes it much more usable than most other laptop trackpads and the having the whole trackpad act as a physical button feels a lot more natural than trackpads that have buttons at the bottom. You can right-click by clicking with two fingers.
Drivers are supplied as part of the Boot Camp installer, but unfortunately these drivers do not expose the full functionality of the trackpad. OS X supports two, three, and four finger gestures which can be configured to perform various actions, but under Windows you’re limited to only the most basic features.
I really like the keyboards on Apple laptops – the chiclet-style keys feel very nice to type on. With this keyboard, I can typically get around 100-110 WPM on typeracer.
By default, the function keys perform special actions (such as controlling volume and screen brightness) whilst pressing them at the same time as the Fn key invokes the standard f-key behaviour. Personally, I don’t like this behaviour so thankfully there is an option in the Boot Camp control panel that reverses it..
The downside is that some of the keys are placed differently to normal PC keyboards.
As a touch-typist, I found this very frustrating. Rather than forcing myself to learn the keyboard layout I instead re-mapped several of the keys. For example, on a British-English PC keyboard, the double-quote (“) is activated with shift+2, but on the apple keyboard it is shift+’. Likewise, the backslash () is placed next to the return key instead of next to the left-shift. Also, the bottom row of most PC laptops begins with Ctrl, Fn, Win, Alt, on a the apple keyboard it is Fn, Ctrl, Alt, Cmd (win).
Rather than forcing myself to learn the Apple keyboard layout, I instead decided to re-map the keys to conform to my fingers’ muscle-memory. Most of the keys can be re-mapped simply by selecting the standard “English (UK)” Windows keyboard layout (rather than the Apple UK layout that Boot Camp installs by default) – this fixes double-quotes, the @ sign, the backslash.
Swapping the Windows and Alt keys can be swapped by using remapkey.exe which comes with the Windows Server 2003 Resource Kit.
Apple keyboards also don’t have a forward-delete or context-menu (AppsKey) keys. Although you can achieve a forward-delete by invoking fn+backspace, I much prefer to have a dedicated key. This can be achieved by using remapkey.exe again. I use right-cmd as the context menu key and right-alt as forward delete.
The only thing that doesn’t seem possible to re-map is the Fn key.
While many people probably won’t like this approach (and it completely confuses anyone who tries to use my laptop), I’ve found it works very well for me.
Although the processor is now somewhat out of date, the performance of the machine is excellent, helped along immensely by the read/write speeds of the Intel SSD. Although the 8gb ram really helps performance when working with multiple virtual machines, the SSD was definitely the best upgrade that I’ve made.
OS X & Virtualization
Some might wonder why I opted to run Windows natively rather than running Windows virtualised under OS X. Although I really like OS X and I do own a license for VMware Fusion, I prefer to run Windows natively as it does perform noticeably better running natively than in a VM (even with the SSD).