Why I left Linux and went to Apple
I originally bought a MacBook to use as a nice Linux laptop and for some iPhone and Qt OS X development. Shortly afterwards I got engaged which made me think about the future and how I spent my time a bit more. Linux is great for many use-cases but I just kept finding myself getting increasingly fed up with trying to use it on the desktop. My problems included having DVD playback not work quite correctly, having to manually edit configuration files in a text editor just to get some piece of hardware that worked instantly in OS X and Windows working and various other issues that wasted my time. Due to a kernel bug in Linux affecting my MacBook, I found myself using OS X more and more for work and finally moved across completely to my MacBook and also removing Linux from my desktop to relegate it to a Windows-only games machine. I’m now only running Linux on my NAS, this server, TV and phone.
I’m a software engineer and I like writing code. I don’t mind doing sysadmin, I did it at my previous employer and do it on this server but my main love with computers will always be programming. Moving to OS X gave me a system that “Just Works” and resulted in me having more time to work on interesting coding projects and wasting less time trying to make my computer do what it is meant to.
I think the reason people become so passionate about Apple’s products is that they really focus on not bothering the user unless they have to through making sensible design decisions rather than worrying about edge cases (an unfortunate affliction for software engineers). A great example of this is the suspend behaviour. Firstly, suspend and resume on Mac is 100% reliable, I’ve never had my machine not come up after suspending. It’s quick, it occurs on you putting the lid down and it quickly becomes second nature to do so. Another great example of Apple’s design focus is what happens when your battery runs out after you’ve already put your lid down and suspended (UPDATE: This feature is known as Safe Sleep and combines hibernate and sleep. This is possible on Linux but isn’t default on any distribution I’ve ever used). On Windows (on older versions at least, haven’t tested this on 7) and on Linux: sucks, you shouldn’t have let your battery run out, you’ve lost all your work. On OS X: it hibernates automatically some time before the battery runs out so your work is saved.
I explained this to my wife and she asked “Why doesn’t everyone do it that way?”. I didn’t know. I suspect because it’s a hard problem and it doesn’t affect many people. The problem is that, although an edge case, when it does affect you it’s incredibly frustrating. When I use an Apple product it feels like they care about you enjoying your experience. They care if you lose work so they try and stop you doing so. On Linux, it just felt that whatever went wrong it was my fault for not RTFM. This came across from the OS itself and the developers and users I would ask for help.
Even if you use Linux or Windows, I encourage you to be influenced by Apple when you design your software: do the most sensible thing for the user at all times and don’t bother them. Don’t worry so much about edge cases and just try and transparently help the user without bothering them. This is why people pay a premium for Apple products. Better to make something that’s great at doing a few things in a way the user will love than possible to do everything if the user tries hard enough.
UPDATE: I didn’t mention the distribution I’ve used because the above applied to every one I had used at the stage I left. Even on well supported Dell hardware (Latitude D620) I never had 100% reliable suspend on Fedora, Debian, Kubuntu, OpenSUSE, Arch Linux or Gentoo. I bought the laptop for Linux as a friend had a MacBook; it was really well supported and worked great and he’s a kernel hacker so I thought it was a good bet. Turns out the newer version I bought had the above mentioned kernel bugs causing only one core to be usable (ACPI bug).