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.

Monday, August 3, 2009

Having a working democracy

Most people would probably say that having free elections where everyone is allowed to run and everybody (Within reason) is allowed to vote and that each vote should count more or less the same.

I've been thinking a bit about this and I think there is one more thing missing from the list above and that is that you need to have more than one plausible choice. There has to be a working opposition. When a country has a working opposition that implies that power will need to transfer every once in a while between the different available choices.

Looking at it through those eyes the democratic countries of the world all of a sudden becomes a lot less. For instance Japan has definitely never had a working democracy. Although they might actually be joining the club with the upcoming election where for the first time ever the ruling party is looking like it will be voted out of power (Not counting a brief one year stint where the opposition was in power several decades ago). Most countries of Western Europe pass with flying colors.

One country which is dangerously close to failing this test though is the United States of America. On the local level it definitely has a great working democracy when it comes to electing public officials, almost to the point of it being stupid what an amazing amount of people have to run for their seats (Seriously why do you have elections for judges, would you not want the most qualified for that job instead of the most popular candidate). However on the national stage you have only two even plausible parties. Both of which is so ridiculously similar in their policies that it is very hard to tell them apart. For instance can someone explain the difference between a Fiscal Conservative Democrat and a Compassionate Conservative? I sure can't do it even though I like to think I am pretty interested in politics.

That's why it's so funny to me to look at US news outlets completely vilifying the "other side" even though to me they basically want exactly the same thing. I think this is also why news in the US has a tendency to get bogged down in such an amazing amount of inconsequential nonsense instead of actually reporting issues. There is really very little to report where it comes to issues because everybody in politics basically agrees on the big picture. It's also probably why the most stupid fringe issues have a tendency to take such a center stage in a lot of elections (Gay marriage, abortion and stem cell research springs to mind), simply because that's the only issues that the candidates disagree on.

It would be great if instead of Democrats and Republicans we could have a couple of more parties that actually had some beliefs except just getting elected. For instance it would be very easy to split the republicans into fiscal conservatives and moral conservatives. Same thing with the democrats it seems very easy to divide them into liberals (Not the US definition of the term, but as in following liberalist ideals) and socialists (The people now called left wing liberals here).

The problem with the US democracy is that every single seat is a winner take all contest which means that anything less than 50% will loose which means that for the foreseeable future until the US changes its constitution it will probably not have a great working democracy because everybody who wants to get elected have to place their feet firmly in the middle of the trough to have a chance and that's why it is so crowded there now here. I realize that there really isn't any way of getting around this issue for presidential (And governor elections as well). But for the legislative assemblies, especially the house of representatives I see no problem with having fractional elections from each state (They do it in the European Parliament).

I don't see this happening anytime soon, but one can always hope that at some point we could get a working democracy here in the United States too at some point.