SharePoint: When 24GB and the Fastest i7 Won’t Cut It
For some people, there’s no thing as having too much hardware. I know a few guitar players who’d salivate at the chance to get their mitts on this beast:
It may be the same case if you’re a SharePoint developer. Here’s an excerpt from an article written by Sahil Malik titled Upped My Main Dev Machine, where a developer talks about what he did to speed up some painfully long build times (with some formatting and emphasis added by me):
Last Friday, I was busy compiling a big project in my consulting life. I realized, it takes a good 5-10 minutes for the project to compile and deploy.
On my main desktop, I was pimping 24G of RAM and a Core i7 930 processor.
The problem wasn’t those 5-10 minutes, the problem was, I got distracted, started watching funny dog videos on youtube, and well – lost time, lost track of what I was doing. Quite unproductive.
So, I got in my car, drove to a local hardware store, and bought new computer parts. 3 hours later, I have my new rig running.
I now have a gigabyte x79 up4 motherboard, Corei7 3930K processor, and 64G of RAM.
I can understand needing that kind of setup for computationally intensive work — weather simulations, AI, protein folding, controlling the flight of SpaceX ships — but for compiling Sharepoint applications? We’re not talking about multidimensional matrix math, Fourier transforms, or Watson-style artificial reasoning, but building the sort of applications that SharePoint was meant to host: web applications and sites, document sharing, blogs and forums, and list management.
Requiring such big iron to build relatively mundane applications is like requiring all the architecture, engineering and construction teams behind the Burj Khalifa in Dubai to renovate your kitchen.
It shouldn’t be surprising that many people have started looking for alternatives:
Why I Don’t Develop for Windows Phone
One of the reasons is quite simple: I can’t. I’d need new hardware. Even more so than SharePoint developer Sahil Malik. At worst, he has to wait ten minutes for each build. I can’t even do that.
Here’s my best Windows machine at the moment: a late 2008-era Dell Latitude E6500 with 8 gigs of RAM, with a Core 2 Duo P8700 running at 2.5 GHz. It’s hardly top-of-the-line, but when it was used as a developer demo machine at Microsoft, it had no problem building Windows desktop apps, web applications with ASP.NET MVC or Windows Phone 7 apps. Later, after it was given to me as a fabulous parting gift, it proved to be a fine machine for building PHP, Rails and CoffeeScript apps under both Windows and Ubuntu. Even though it’s not my main development machine, it still performs yeoman service at my home office.
My other Windows machine is my living room entertainment/casual hacking box, a 2009-era HP IQ526 TouchSmart touchscreen all-in-one with 4 gigs of RAM, powered by a Core 2 Duo T6600 processor. I used a similar machine at Microsoft to demo Windows Phone 7 app and Android app development.
Both of these machines are powered by processors that don’t support SLAT — Second Level Address Translation. The current version of Windows’ Hyper-V virtual machine, on which the Windows Phone 8 emulator runs, requires SLAT. i3, i5 and i7 processors have SLAT, but not the older Core 2s. My Windows machines may not be new, but they do a fine job running 64-bit Windows 8, the current edition of Microsoft Office, Adobe CS6 applications and more. Oddly enough, I can develop Windows 8 desktop and tablet apps with them; I can even develop Android and BlackBerry apps. I just can’t use them to develop Windows Phone apps. And I’m not the only one in this boat.
Beside my HP Touchsmart is this 20″ iMac that’s even older — it’s from mid-2007 and sports a Core 2 Duo T7300 processor. I’ve maxed out its RAM beyond the advertised 4 gigs; it turns out that you can take it up to 6:
This machine came out almost six years ago. That’s around the same time as the original iPhone and three years before the iPad. In spite of its “age”, it runs the current version of MacOS (10.8, a.k.a. “Mountain Lion”) as well as Xcode and JetBrains’ AppCode — simultaneously (that’s AppCode 2 you’re seeing on the screen right now). Along with being a fine Rails, Django, and all-those-crazy-JS-frameworks dev machine, it does a fine job of building iOS apps for present-day devices, whether via Xcode, Xcode + AppCode, Appcelerator Titanium, RubyMotion or what-have-you. It’s also a nice Android development machine.
And Then There’s the Market
If my hardware problem wasn’t a big enough barrier, there’s also Windows Phone’s standing in the market. Here’s a chart that was published yesterday in a Splat F article, Microsoft’s Mobile Comeback Isn’t Happening:
I’ve decided that the best mobile development self-education approach for me is: teach myself iOS development first, Android development eventually, perhaps Appcelerator, and barring any dramatic changes in circumstance, don’t bother with anything else. I’d love to learn how to develop for all the mobile platforms, but I just haven’t got the time.
Update: I added the graph from Splat F, which David Janes pointed me to. Thanks, David!