Friday, August 28, 2009

Why I hate Mac & OSX

I already wrote one article on why I don't like Mac computers or the OSX operating system. However, the last one was written before I had really used it that much. I have now been forced to use a Mac computer quite a lot because the iPhone SDK is only available for Mac computers and I have been playing around with that a lot lately.

The computer I have been using is a Macbook Air, which is supposedly pretty much a top of the line model when it comes to laptops. When I got it I got a lot of excited Mac users telling me to just give it a few weeks and I would come to love it. It's now been about 5 months and I can with certainty say that it is definitely the worst computer I've owned in the last couple of years. So here goes explaining why.


First of all the most obvious flaw which is the track pad with just one button. It baffles me how anybody could be so stupid that when they had designed an operating system such as OSX which is so obviously made for two mouse buttons and then build the computers with just one button. With that I mean that there are tons of functionality in every application you can think of that is only accessible through the CTRL+Click context menu. On desktops you at least have an option to enable two mouse buttons, but it seems on laptops you have no such luck.

Next thing that annoys me immensely is that Apple have removed a bunch of very useful keys from the keyboard. The ones most obvious to me is PageUp, PageDown, Home and End. All keys which you as a coder use a lot. Granted I have the really small laptop, but even the 17" Macbook Pro still doesn't have those keys.

That brings me to the other problem with the keyboard. Mac computers have no less than 5 modifier keys. Granted Windows machine have basically the same set of modifier keys. The difference is that on Windows two of them are use very sparingly. On Mac you use all 5 modifier keys and a dizzying array of combinations. They have also tied up all the function keys with rarely used OS functionality so that when you are in X-Code for instance instead of using something easy like F8 for step you are forced to resort to Command+Shift+O.

Lets move on to the screen which compared to what I am used to really sucks. The resolution is simply atrocious. True I opted for the smallest version of laptop and I expect a smaller resolution, but the problem applies to all the models of their laptop line. If you go with something else than Mac you can get 1920x1280 resolution on a 15.4" screen but with Mac you need to go all the way to the ridiculously sized 17" model to get the screen size.

Finally lets go on to build quality. You would think that since Apple computers are so much more expensive than their PC counterparts you would get good build quality. Unfortunately that doesn't seem to be the case. My Air broke within about one month which is a record even for me. Granted fixing it was easy and fast, but that is usually the case with any named brand as long as you go for the on-site warranty.


I usually don't have a big problem moving between different computer platforms. I've been on Gnome, KDE most kinds of Windows and even though I might have grumbled in a few weeks I'm usually OK with it. Not so with OSX, it is simply too badly designed for me to get used to.

First of all the whole application/window separation where each application can have zero or more windows. You use one keyboard combination to switch between windows and one keyboard combination to switch between windows within the application. You also have a menu bar that isn't attached to the windows they are attached to. This setup might be acceptable for a non power user which only uses a web browser or one application doing a specific task. For a software developer it sucks. When you develop something in X-Code you will always have one editor window, one debugger console, one document window within that application. Then you have one application for the interface designer and finally one window for the iPhone simulator. So whenever you are going to another window you have to figure out which application you need first and then switch to the correct window. In Windows or Linux you have one list with all your windows and navigation is just much faster and more convenient.

Secondly also in regards to window handling is the fact that you can't maximize windows. All window systems I've seen (Including the ones that predate the original Mac OS) all have a maximize button and I can't imagine who decided that you didn't need that. There is an "optimize size" button, but for some reason the optimal size for a web browser for instance is not the whole screen.

You'd think with it's much touted BSD roots that OSX would play nice with X-Windows applications from Linux and the like. For some reason this is not the case. GIMP and Blender for instance works much worse on OSX than they do on Windows. In Blender you have weird painting artifacts and in GIMP there is a problem that whenever you click in another window you have to click twice for the click to be recognized.

Sort of incidental, but I just installed Snow Leopard yesterday and their progress meter is if possible even more inaccurate than the Microsoft one when installing Windows. During the period of 1 hour it went from 42 minutes remaining to 39 minutes remaining. After that I went out to a pub and didn't get back until 4 hours later and then it was actually finished.

Since what I do on the Mac is software development it is inevitable to compare X-Code with Visual Studio (And also Eclipse, but they are pretty similar so I will stick with Visual Studio).

  • In Visual Studio you have everything you need in one easy to access window and it changes the layout automatically to include stuff you might need through different stages of the development cycle. In X-Code everything is spread out in a gazillion different windows and if you want to look at different things when coding and debugging it's up to you to move stuff around.
  • X-Code doesn't remember watches between different debug sessions. Debugging anything complex is ridiculously complicated. The only way that works kind of OK is the text based GDB prompt.
  • As far as I have managed to figure out you can't inspect the contents of an array at all without looking at the individual items.
  • Very mouse centric in it's user interface which is something you strive to avoid when working with code. I still haven't figured out which keyboard combination switches the file you look at in the editor without using the mouse.
  • X-Code is incredibly buggy (Even compared to Visual Studio). I have to restart it and even the entire computer all the time when it stops working (Especially the debugger).


Just have to write a little bit about Apple's support. I've actually really tried to figure out how to use the Mac in a reasonable way so I have been visiting the incredibly ineptly named "Genius Bar" in the Apple Store a bunch of times and have also had some contact with support in regards to their developer program. Granted, when my computer was actually broken they did fix it pretty fast and hassle free but apart from that their support sucks!

  • I asked them about how you maximize a window and a guy seriously told me that yes, you can do that. No problem and then showed me how to use the mouse to resize the window to cover the entire screen.
  • When I was asking them about if there was a laptop with a PageUp/PageDown key they asked me why in gods name I needed to do that (Which is funny because their desktop keyboard still have the keys)?
  • It took the apple developer program almost 3 months to approve my membership. The problem was that instead of using the phone number I provided in my application to call me back they looked it up at PRV (The official records agency in Sweden) and found another phone number and used that to try to contact me. The problem is that that phone number has not been connected for over 5 years now. And with that they stopped and didn't even try the number I actually provided in the application. Even better is that though I contacted them several times through email all I got back was "in progress of reviewing your application" and not a peep about they not being able to get hold of me. Not until a friend of mine provided me with a customer support phone number (Which isn't listed on their web site) and a 30 minute yelling match with the customer service representative did they agree to try a working number.
  • It's not been over 3 weeks for Apple to approve my first application submission. Which incidentally is a lot longer than it took to write the app.
  • Apple is the only company I know of in the US who require a signature to their packages when you order something from their website. You can get around it by signing a waiver, but that requires me to have a printer. You'd think Apply would assume people having a job and not being able to sign for packages in the middle of the day. I don't why they insist on this, I've had much more expensive stuff delivered without signatures from other companies.