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 OSX 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 OSX 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 OSX 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 OSX 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 know 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 OSX: 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 mindblowingly 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).

Windows Autologin Lock Screen

Something I miss when I used Windows is the nice autologin feature from KDE’s login manager (KDM). Autologin always struck me as a bit insecure; why have a password if you are going to bypass it completely? KDM’s solution was pretty nice, it allowed you to be logged in automatically (so that everything that runs on startup started loading) and lock the desktop before it appeared so that when you turned on your computer you would still get a password prompt but would unlock it to find that all your applications had already loaded.

I’ve managed to emulate this functionality in Windows by using the login scripts. This script should work in Windows 2000 or any later version but the setup instructions may vary.

  • Create a file named LockWorkStation.vbs with the contents: WScript.CreateObject("WScript.Shell").Run("rundll32 user32.dll,LockWorkStation")
  • Access the hidden Advanced Users Control Panel by running “control.exe userpasswords2” from a Run dialog or command prompt.
  • In the “Users” tab, uncheck “Users must enter a user name and password to use this computer”.
  • UPDATE: Windows 7 Home Premium, Windows Vista Home Premium and Windows XP Home Edition don’t come with the necessary group policy editor so you can either Google for ways of using gpedit.msc (either downloading the needed files or editing the registry manually) or just put the above script in your Startup folder. The latter option will be less secure as someone could get access to your machine after the desktop loads but before the script does but it will still work.
  • In the “Advanced” tab under “Advanced user management” click “Advanced”.
  • Click “Users” in the left-hand pane of the “Local Users and Groups” window, right-click on the user you want to autologin from the right-hand pane and select “Properties”.
  • In the “Profile” tab, enter “LockWorkstation.vbs” in the “Logon script:” box..
  • Create a folder somewhere on disk (I recommend My Documents/Scripts) that you want to store the script in.
  • Right-click on the folder and select “Properties”. From the “Sharing” tab, click “Advanced Sharing…”.
  • Check “Share this folder” and enter “NetLogon” in the “Share name” box. Set the number of simultaneous users to 1.
  • Click “Permissions” and ensure you are the only user listed and you have only “Read” access enabled.

You’re now done. When you next log in, you shouldn’t see the desktop at all (or incredibly briefly) and the screen should lock immediately and require your password to unlock while all your stuff happily loads in the background.

UPDATE: This was posted on Lifehacker and they made a video walkthrough for this post: