This post is a response to a reader's comment that was posted on one of my earlier blog posts: My Developer Rig & why I use a MacBook Pro as a .Net developer. Today, I will try to review both machines and explain how and why I use each one.
Disclaimer: I am not a fan-boy of either camp. I use and respect both OSs equally, however, since most of my day-to-day work in done in Windows and more specifically inside Visual Studio, I tend to spend a lot more time in the Windows world.
We should start by geeking out a bit with some cool specs:
The MacBook Pro
|Specs||MacBook Pro||Surface 3|
|CPU||Intel Core i7||Intel Core i5|
|Hard Drive||256 SSD||256 SSD|
|USB||MacBook Pro||MacBook Pro|
|Battery Life (hrs)||4-5||4-5|
The above table provides a very basic comparison between the two machines, so if you want a more detailed review, head over to Gizmodo where there is a more thorough and up-to-date comparison.
Hardware-wise, these two machines are just stunning setting the benchmark for everyone else. Steady material, excellent build quality and great overall experience. I am really happy to own these gadgets.
However, I think the question that most readers would like to see answers here is how the two systems perform on a day-by-day basis when used for development.
Before I go into the details, note that both systems run Windows 8.1 with VS2014. When at home, they both connect to an external monitor through Mini DisplayPort. To make the transition between the two machines totally seamless, I use the following setup:
- machine settings: profile sync through Widnows 8.1
- files: through OneDrive
- code: through GitHub or VS Online
- web browsing: through Firefox sync
In effect, I can jump from one machine to the other at any time because I don't have any local dependencies. This scenario is more frequent than you may think as I tend to use the MacBook at home and the Surface when on "the go".
Both machines are incredibly light. The Surface is of course lighter than the MacBook so I tend to keep it in my bag most of the time. For over a year I used to carry the Mac everywhere I went but now it makes no sense to do so since the Surface is lighter and easier to carry. As it is smaller, it also leaves more space in my bug for other stuff. Also, the Surface charger is lighter so I carry less weight overall. However, both machines are equally easy to carry and there are cases when I carry both together in the same bag, like when I'm attending conferences.
Both machines perform equally well when used as my desktop replacement. I have a dock for the Mac and Surface comes with its own docking system (bonus). Windows 8.1 has significantly improved resolution management when using external monitors and I believe Windows 10 is even better at that. I have no real preference when it comes to working on my desk at home as both machines perform equally well.
I run Visual Studio 2014 with SQL Server and a number of emulators (Xamarin, Android, Windows Phone/Store, Azure) all the time, in addition, I do plenty of web browsing and I run a couple of Windows Store apps (mail & twitter). In certain occasions I even run multiple instances of VS. Both machines run flawlessly! Obviously if I run something that requires a lot of computational power then the Surface may struggle but so far I never hit a performance issue on either machine. They both run extremely quiet with the occasional fun blowing on both machines when I watch flash videos, run VS installs etc.
Obviously the MacBook is the winner here, only if run in stand-alone mode. The screen allows you to run two apps side by side docked (even two VS windows) without suffering from cropped text etc. Nonetheless, since I tend to use an external monitor when I work from home, I don't have an issue with the available monitor real-estate on the Surface. And when I'm on the move, the Surface is more than adequate, both on laptop or tablet mode.
As a developer and technology enthusiast, I like to try a LOT of software, in some case in Alpha or Beta state. It would be silly of me to install and run this on my regular/production environment. For this reason, I use virtualisation. Up until recently (see 4 months ago) I used VMWare and VirtualBox. However, since Windows 8.1 comes with an excellent built-in virtual machine manager (Hyper-V), I moved all my VMs to Hyper-V to simplify things. This means that I lost the ability to run the VMs from within Mac OSx, but this is a small price to pay. I use an external portable USB hard drive to store all my VMs and I attach it to the machine I want to use. Unfortunately a compromise between portability and performance had to be made, so the VMs are configured to run based on the lowest common denominator, which in this case is the Surface due to its memory limitations. My VMs are configured with 4GB of Ram and 2 CPU cores. That's enough for testing things. There is a bit of a lag, but because I only use the VMs to test things I'm not bothered about it. I also have a separate, always available VM on the Surface on an attached 64GB mini SD Card. This VM gives me much better performance that the spinning hard drive and I use it for user group and conference demos.
I have already mentioned in the stats table that I get about 4-5hrs of battery life on either machine. This is average and depends highly on what I'm doing. If I watch flash movies, then the battery goes down significantly. But if I browse the web or read books/magazines, then I could get 6-7 hrs on the Surface. The MacBook's battery life suffers a bit due to BootCamp and certain optimizations that you get on OSx you lose as you run Windows. One of that worst hit areas is battery life but 4 hrs are good nonetheless and this is 2012 technology with the old CPU architecture. I believe that the newer Core i7s have much better battery life to offer.
There is no reason to compare the two machines here as the Surface is the clear winner. Unfortunately Apple declared in many occasions that they won’t do touch screens and Steve Jobs, if I remember correctly, was against their use on the Macs. Nonetheless
;’#/.ml things change and I can't see Apple resisting much longer, especially if the goal is to provide a unified platform. I give them a couple of years. In the meantime, I love the touch on my Surface. VS2015 is much more responsive to touch but I can't see myself using touch too much during development. But I use touch for everything else and when I go back to my MacBook, i desperately stab the screen with my finger. It takes a few minutes to adjust to the change and I always miss it when I don't have it.
- Surface Type Cover
- MacBook Pro
- Apple Keyboard
- On-screen Keyboard
I use all 4 depending on where/how I'm working. At home and at the office, I have the Apple keyboard plugged in as everything is docked. This means that my keyboard mappings are really messed up but all it takes is a bit of mental training and I'm nt aware anymore. It really is an issue though when I pair-program :). When I'm working in stand-alone mode (on my lap), then I use the built in keyboard. Both the type cover and macbook keyboards arebacklight so they work nicely in low light conditions. They are also fairly flat but since I touch type, I don't have a problem with the key location, spacing etc. Typing speed is more or less the same in these circumstances. The only time I use the on-screen keyboard is when I'm on tablet mode and then only if I don't have to do much typing. If I have to type more than a URL or a sentence, then I attach the type cover straight away. I can't see how people can be productive with the touch keyboard, especially when it takes half the screen.
Mobile Platform development
I love my Surface because I can tap on things and makes testing so much easier. This is definitely a missing feature and as I said on the previous section, Apple can't afford to stay out of the game for much longer. The Surface is ahead of the game when it comes to developing and testing mobile apps (for Windows Phone, Store and Android) with touch available.
With such great hardware it's hard to choose a winner. In the end, it all comes down to what I'm going to do with the device. If I am getting ready to leave the house, I throw my Surface in my bag. If I'm sitting down to do work on my desk, I switch on my Mac, attach the external monitor (if not attached already) and off I go. However, both machines are interchangeable and I would not give it a second thought if I need to take the MacBook with me because the Surface's battery is low etc. For me, they both make for an excellent tool that allows me to do my job in the best and most fun way possible.
What about you, my dear reader? What's your favourite hardware and why?
P.S Make sure you follow me on Twitter @christosmatskas for more up-to-date news, articles and tips.