Why I’m finally ditching Apple

Ever since Apple switched from the PowerPC chip to the x86 platform in 2005, I’ve been an Apple guy.  I never actually owned a real Mac, but the closed Apple ecosystem was finally “open” enough for me to hack my way into it.  I began a decade-long adventure of running OS X on PC hardware.  To anyone who called me a fanboy, my response was simple: show me something better.

When I built my first machine from scratch in 2006, I built it to OSx86 specifications just so that I could run OS X Leopard as my primary operating system (it helped that the best thing Microsoft had going for it back then was Windows Vista…).  Since then, it’s run Snow Leopard, Lion, Mountain Lion, Mavericks, Yosemite and El Capitan alongside Windows Vista (for about 10 minutes), Windows 7, Windows 8 and Windows 10.  I’ve upgraded all of its guts– doubling the RAM, adding SSDs, a quad-core processor (still on the Core platform since my motherboard supports only LGA775), 2 new graphics cards, 2 different wireless antennae, a new power supply and blue LEDs I am convinced make it faster.  I’ve overclocked, burned a processor, blown a power supply and generated enough wind to blow a hole in my drywall.

The whole time, there’s been one constant: I was running OS X as my primary OS, and I was having a blast.  Every new release from Apple brought more consistency and drew me deeper into the ecosystem.  Integration across iOS and OS X got better and better.  Moving between my iPhone to my “Hackintosh” was seamless– notes, photos, maps, reminders all came with me.  Even when an update would break something on my hack, figuring out how to fix it was half the fun of running OSx86.

At the end of the day, I ran OS X because it was the best.  The Apple ecosystem had me hooked because it was revolutionary and groundbreaking.  Even when Apple wasn’t the first, it was the best.  Apple knew how to do UX better than anyone.  And even though I never bought a real Mac, diving into the OSx86 world enveloped me in the Apple ecosystem and led me to purchase other Apple hardware: 3 iPhones, an iPad, 3 Apple TVs, 2 Apple keyboards, a Magic Mouse and a Magic Trackpad.

OS X was the best, and the Apple ecosystem was the best.  But here’s the thing: it’s just not the best anymore.

I’ll admit that my shiny new Surface Book was the catalyst for my newfound Windows love.  What I found with Windows 10 and the Surface Book was finally an operating system that’s ready to live in both worlds, as a tablet and a laptop.  I don’t have much need for another tablet at home; I love my iPad for watching videos and surfing the web.  Work is a different story– I need something that’s lightweight, can be used as a tablet for demonstrations and meetings, but can run a VM and Visual Studio when I need to develop.

Windows 10 is ready for primetime (the lone exception: a slew of sleep problems).  Cortana is useful, extensible and accurate, and boasts two killer features over Siri: she’s part of Windows 10 on laptops and desktops (we’re still waiting for Siri in OS X), and she’s accessible without a voice prompt. Oh, and she brings me back to my high school summers spent playing Halo in my basement…

When I open my laptop at work, changes made on my home desktop are already there. Preferences (I like “dark mode” in my apps), login background, and Cortana configuration persist across devices with the help of my Microsoft account.  OneDrive is deeply integrated into Explorer.  The native app experience has improved, with OneNote, News, Calendar and Mail; searching for settings is finally streamlined into the Start menu; even Microsoft Edge is a usable browser with some nice features such as reading view (stolen from OS X but a welcome addition) and on-screen markup for tablets. And the new app switcher (also basically stolen from OS X) is perfectly fast and user-friendly.

The new Start menu is a perfect blend of customizability (pinning, grouping and resizing app tiles, and even resizing the menu itself), extensibility (developers can extend live tiles to show at-a-glance updates without opening the app) and functionality. It’s there when you need it, gone when you don’t. And unlike the OS X dock, it doesn’t steal real estate at the bottom of the screen. I always thought the dock was beautiful, but Windows 10 finally has me realizing that for as much space as it commands, the dock just serves as little more than an app launcher.

Apple fanboys will be quick to point out that Windows still doesn’t have an answer for several components of OS X that I’ve come to love:

  • The Photos app is clunky and half-baked, and lacks cloud integration entirely.  I’m guessing that will improve soon, with OneDrive cloud photo management improving tremendously with machine learning-driven auto-tagging, but right now it’s a dud.  I’m not a huge fan of Photos for OS X/iOS, but it does a better job of providing a consistent UI and cloud integration than any other platform available right now.
  • The native mail client is better than its Windows 8 counterpart, but still a little more “tablet-friendly” than it is “good”.
  • The Windows store hasn’t taken off yet, which is a bummer because the UI in Windows 10 is well-thought-out and easily-navigable.  The one thing it lacks is– you guessed it– good apps.  We’re all holding out hope that Project Islandwood actually sees the light of day…

And of course, the Windows ecosystem still lacks a polished mobile phone counterpart to the tremendously successful Surface line (and I’m done holding my breath for a Microsoft-built Surface Phone).  But for all the places where the Microsoft ecosystem still falls short, it’s undoubtedly breaking new ground cloud connectivity and user interface, two places where Apple used to rule the tech world.

Its real killer app, however, lies in what we’ve yet to see.  Since Satya Nadella took the helm of a struggling company that had over-invested in Windows Mobile, refused to build iOS apps for its flagship Office software and followed the ridiculously-successful Windows 7 with the complete monstrosity that was Windows 8, Microsoft has done a complete about-face.

It’s innovating rapidly and isn’t looking back.  Windows 10 and Office drop new features– not just bug fixes– as part of routine weekly updates.  That “dark mode” UI that I love so much?  It just appeared on my machines after an update, without a press release or an invite-only news conference.  Microsoft is building on a formula it perfected in the enterprise space with Office 365 and bringing it to the average consumer: build a feature, release it as quickly as possible, ask for feedback and continuously improve it.

Windows isn’t a product.  It’s a service.  By installing Windows 10 on my machine that I love so much, I’ve breathed new life into my hardware. No more waiting for major releases to get new features or enhancements.  Windows is a living, breathing experience powered by continuous delivery and driven by customer feedback.  Is it perfect?  No.  But I will gladly hitch my wagon to innovative and imperfect over fully-baked and slow-moving.

For now, I’ll struggle to live in two worlds, with Windows 10 on my desktop and laptop and an iPhone in my pocket.  I spent a whole weekend removing Apple DRM from my iTunes-purchased movies just so I can watch them without installing iTunes.  Microsoft iOS apps are great, but using OneDrive for photo management on my phone is a nightmare.  Cortana will never replace Siri until I can ask her a question without needing to first open the app.  And I won’t feel comfortable buying a Windows phone until leading app developers prove they can build for the new Windows 10 universal app platform.

But after a decade of holding my breath every time an OS X update dropped and reinstalling OS X from scratch with every major release– because I had to, but also because I enjoyed it— I’m finally taking the Windows plunge again.  In a world where SaaS, PaaS and IaaS have become commonplace in the enterprise (much due to Microsoft’s groundbreaking innovation in Azure and Office 365), I firmly believe that OSaaS– Operating System as a Service– is the next big thing.  It’s a different way of thinking for a different kind of world, and it’s Microsoft, not Apple, that’s leading the charge.

Advertisements

Fix: Home Sharing on Apple TV stops working with OS X Yosemite 10.10.3 and iTunes 12

Problem: Accessing your Hackintosh’s iTunes library From Apple TV (any generation) displays an error “Cannot connect to media library [library name]” when you select the Computers icon on the Apple TV home screen. 

Solution: I can’t believe it was this simple, and I only found an old Apple forums post with this idea after spending hours turning Home Sharing on and off, signing in and out, and trying to re-install old IONetworkingFamily.kext files from previous builds– change your computer and iTunes library name, then restart Apple TV. Changing my Library name in iTunes alone did not solve the problem, so it’s possible that just changing the computer name did the trick. 

Graphics Performance in OS X Lion: The Effect of Model Selection in SMBIOS.plist

A while back, I lamented some graphics issues I experienced in OS X Lion.  I didn’t have any hard evidence to support my claim, but my EVGA NVIDIA GTS 250 (512mb) card choked in OS X Lion after purring along seamlessly in Snow Leopard.  I don’t require ungodly amounts of graphics processing horsepower, as reflected by my mid-range graphics card, but I play a few games.  Not only were my KOTOR frame rates unacceptably low, but simple transition animations within OS X lagged badly.

Following the introduction of the OpenCL framework to OS X, and even more pointedly, the retirement of the PowerPC architecture, gone are the days of XBench providing reliable graphics-inclusive benchmarking for your hackintosh.  Geekbench is a great tool for measuring CPU and RAM performance, but it falls short of providing discrete graphics benchmarking scores.  Enter Cinebench, a cross-platform benchmarking utility that also happens to be free.

A reliable benchmark should compare graphics performance in OS X Lion to that of the same card in Windows, a far-away, glass-windowed land in which NVIDIA provides updated graphics drivers on a continuous basis.  Before running the tests, let’s take a look at what Windows 7 says about my graphics card:

NVIDIA GTS 250 Specs
Page 1 of the specs for my graphics card, per the NVIDIA control panel in Windows 7.
GTS 250 Specs (Continued)
Page 2 of the specs for my graphics card, per the NVIDIA control panel in Windows 7.

My machine is admittedly old, but she still gets a 5.9 (out of a total 7.9) Windows Experience Index:

Windows Experience Index
The Windows Experience Index for my hackintosh, whilst I briefly cheat on OS X Lion with Windows 7...

Let’s get to the meat:  here are the results of running a GPU-only Cinebench test on my EVGA NVIDIA GTS 250 (512mb) card in Windows 7 Professional SP1 (64-bit): 33.78 fps

Results of Cinebench OpenGL test in Windows 7 Professional SP1 (64-bit)
Results of Cinebench OpenGL test in Windows 7 Professional SP1 (64-bit)-- my machine is in orange, sandwiched between some other benchmarks for comparison purposes.

What did the same test, run on the same hardware, produce in OS X?

Cinebench Results - OS X Lion 10.7.3
Results of Cinebench OpenGL test in OS X Lion 10.7.3-- my machine is in orange.

The Cinebench test run in OS X Lion 10.7.3 produced a whopping 8.02 fps, compared to 33.78 fps in Windows 7 Professional SP1.  This means that the card was performing 421% better in Windows than in OS X– all the hard evidence I needed to back up my theory that my card was sputtering in Mac OS.  Note:  You’ll notice that I removed the #6-ranked benchmark from this screenshot; it contains the result of my final test (you can find it below).

When I first noticed the performance decrease, I had read that some users who had selected a MacPro4,1 or MacPro5,1 model number in SMBIOS.plist were experiencing similar graphics issues.  Some hackintoshers even created custom entries in the AppleGraphicsPowerManagement.kext internal plist file because the power management stepping doesn’t work OOB for NVIDIA cards.

Below is the SMBIOS.plist file I was stashing in /Extra; you will notice that because my machine most resembled an iMac, I was using the iMac11,3 identifier:

<!--?xml version="1.0" encoding="UTF-8"?-->

 Copyright
 SMBios by 7ender @ InMac.org Created with Champlist.app
 SMbiosvendor
 Apple Inc.
 SMbiosversion
 IM112.88Z.0057.B00.1005031455
 SMboardproduct
 Mac-F2238BAE
 SMfamily
 iMac
 SMproductname
 iMac11,3
 SMserial
 XA94601LDWZ

By my understanding, OS X dynamically chooses which set of graphics d rivers to load at boot time based on the model of Mac specified in SMBIOS.plist, rather than analyzing the graphics processing hardware itself.  This is a bit of a programmatic shortcut, but it’s one that Apple can afford to take; Mac models and their corresponding GPUs are hard-coded and, theoretically, shouldn’t change following production of the computer.

The exception, of course, is the Mac Pro– users have long been able to upgrade the graphics card in the built-to-order Mac Pro, which means that OS X must boot more dynamically with regards to loading graphics drivers as long as SMBIOS.plist indicates that the machine is a Mac Pro.  As such, rather than deleting or modifying AppleGraphicsPowerManagement.kext to reflect my graphics card’s unique stepping, I wondered if simply modifying SMBIOS.plist to reflect a Mac Pro model rather than an iMac would force OS X to load a more dynamic set of graphics drivers at boot time.

My modified SMBIOS.plist follows below; note that the SMSerial value must also change to accommodate the modified SMProductName value:

<!--?xml version="1.0" encoding="UTF-8"?-->

 Copyright
 SMBios by 7ender @ InMac.org Created with Champlist.app
 SMbiosvendor
 Apple Inc.
 SMbiosversion
 MP31.88Z.006C.B05.0802291410
 SMboardproduct
 Mac-F42C88C8
 SMfamily
 Mac Pro
 SMproductname
 MacPro3,1
 SMserial
 G8819IY0XYK

I restarted, then ran Cinebench once more:

Cinebench - OS X Lion - Mac Pro SMBIOS.plist
The two scores in orange represent the tests run with the Mac Pro and iMac SMBIOS.plist configurations, respectively.

It’s not quite the 33.78 fps result that I was able to get in Windows, but the improvement from 8.02fps to 26.29fps indicates that I’m headed in the right direction here.

TL;DR: Modifying my SMBIOS.plist to reflect a Mac Pro (3,1) model rather than an iMac (11,3) improved the performance of my EVGA NVIDIA GTS 250 (512mb) graphics card by nearly 328%.

Note: I tried using the MacPro4,1 and MacPro5,1 models as well in order to test if I experienced the same performance drop-offs indicated in the aforementioned TonyMac86 post, but Lion refused to boot with either and I didn’t have the time or energy to figure out why.

The card still performs 22% worse in OS X than it does in Windows; I will need to investigate whether or not I can squeeze some more performance out of her by manually modifying the thresholds in AppleGraphicsPowerManagement.kext.  Until then, though, I’m just happy that Lion’s GUI is running smoothly, and I can once more focus on becoming a Jedi.  Now, if you encounter a similar systems malfunction in OS X Lion, don’t worry– you know a few maneuvers.