When I entered the University I discovered Linux (so many distribution kernels, oh, have been recompiled in my hands) and the free software movement. You know, like in 'technology should be used for making a better world'. We had accounts in huge Vax systems that let us connect to the Internet in text VT100 consoles as early as in 1994. I have installed AS/400 servers, administrated NT domains and my father would discuss with me more than a thousand times the mainframe solutions of big banks compared with the emerging three tier architecture back in the days.
At work I use mainly Windows for programming. Our network is also a Windows domain but the main servers are Linux so we need to do some administration (ACL setup, httpd, samba, etc.) once in a while.
Then, one year ago I decided to upgrade my PC and decided to buy an iMac. A G4, one of those where everything fits in a 4 inches thick screen. Neat.
Besides, as a game lover and computer geek in my young years, I kind of benchmarked the different systems and come up with my own conclusions. So far so good, if you are still reading that means either that you are my mother or that like me, you also have your own opinion about the operating system wars.
This is to summarize all the hindsights I have come up with. Just for the sake of saying my opinion.
First, some general ideas
- A computer is a tool, yes, but you need to feel comfortable with it. If you feel that emacs besides not being non-wysiwyg is the right tool to write your graduation thesis go for it! Feeling good, and not only getting your things done also matters
- There is not an absolute answer. For the majority of human beings out there windows is better than just fine. Live and let die.
- Believe in the trade-off. If you only use Internet to check your mail regularly, dial up connection is the only solution. If you cannot afford a faster machine, dont't install the latest version of Office. Newer doesn't mean absolute better.
- Computers always have unexpected crashes. I have seen all kind of systems hanging. The more you use it and install crap, the more unstable it gets. That simple. In windows is the registry, in Mac the file permissions of the libraries getting messed up, in Linux the incompatibility or lack of integration between packages and runtime errors due to a lack of matureness in the beta applications.
What would I like to use if I reencarnate? I don't doubt it, I would be a Mac user.
Why? It is true that Windows community is larger, and Linux is far more better documented. But Mac is my trade off. And it looks cool. Do you want reasons to switch? I will give you ten, just to make it round and elegant.
- Quicksilver. By far the best reason. Spotlight by itself is not enough, and for me quicksilver is indeed to the windowing system what the command line was to unix in the console days. A truly missing link.
Is extrange that there are not any real working implementation for other platforms so far. Although I'm sure that is just a matter of time, with indexing software being more and more used. But then again, they are not integrated, clean, working solutions like the one available for Mac.
- Apple puts the right stress in the user interface. It is the way a computer should be designed, I cannot help but agreeing with them.
- For the general stuff (internet browsing, mailing, report writing, music, pictures, video, printing, ...) is usable right away.
- The initial curve of configuration/installation is amazingly low. A Mac can really be used right out of the box. Things will work just by pluging them without having to install drivers. Easy.
On the other side I should add that if a device is not supported by default --and that is more likely to happen for non-US hardware-- the third-party alternatives might cost an additional fee. A factor to consider if your life depends on your palm and cellphone bluetooth synchronization with your address book.
- Images, Videos, Music. On the old days "mac was better for images and windows for games". That is no longer a golden rule, but is still true in the sense that Mac is more media oriented. Specially while they continue to gain mp3 player market with the iPod.
Draging and droping images for instance is active all over the system (taking a screenshot and append it to a mail is really painless: apple+shift+4, select what you want, drag the picture on the desktop to your message window). I am a console guy, and there are some things --specially text processing-- that cannot be done properly except in a console. But the image processing can be certainly better done in the windows system. And that what's this point all about.
- The console. Is scriptable, because you have bash (or any shell you feel most comfortable with) and a proper redirection and nice tools like grep, sed, awk, which etc. right out of the box. Like in Linux. And you have aliases, and can create makefiles, and basically do all the console magic you want. That will make you happy if you are a little bit like me.
- Installing/Uninstalling applications is easy. You just drag icons. Want a new application? After downloading it copy it on your Applications folder. Tired of it? Drag it to the trash. No "I have the version 5.6 of Nero and it conflicts with the 4.9". At least most of the times... (repeat after me: trade off). Why is the installing/uninstalling thing important? Well, at least in my case being able to uninstall applications easily makes me feel that I control what's in my box.
- Nice multilingual support. Not only the localization part, which is unique to Mac, but also the implementation of Unicode applications. Windows has also a nice support, but maybe is only because I'm not acquainted on how that is achieved in modern unices. I'm talking more about "existing applications". Like "so I bought my laptop and I want to send a mail with kanji and accents to tell my friends about it". The kana input in Linux was still a configure it yourself and try to figure out why it doesn't work last time I played with it (Fedora Core 3)
- Like in Windows, a centralized configuration panel, just somehow more consistent. For instance you define your proxy server just in one place, instead of once in the internet settings and again in the console.
Maybe the Mac developers comunity is more diligent on where they need to look at the settings. Maybe the only Mac merit is that they built both the gui and the console tools, so they can make them consistent. But for me it just works.
- It looks nice.
All this, of course, --and believe me that I'm saying this with great pain-- when it doesn't suddenly crash in your face. Which by the way it did twice while I was writing this post.
I'm not smarter nor dumber than you, and I don't install more crap than you might do. But just maybe, I don't have or I don't feel like spending more time to play around with my PC to understand why it fails when it fails.
Typical problems I find in Linux.
- Awkward downloading system: if is a managed system, configuring the repository servers is a pain. If you configure them correctly, library version conflict can appear. If you download the rpm (package) directly it has to be for your system. If you download the tarball, uninstallation is not automatic. Great knowledge of the packaging tools is needed, which in my opinion is just noise for whatever you bought your PC for. Please note that I am a blind believer of apt-get, it's just that is not still there.
- Awkward input method system, not unified
- Too heterogenous, and great knowledge is needed to administrate it correctly. Nice when you are young but eventually stops being funny. Eg. if your screensaver after a yum update stops working where would you look?
Typical problems I find in Windows.
- On longer uptimes the system grows unstable and freezes or explorer restarts are more probable as the HDD gets fragmented. On heavy IO usage a constant check on the resources access with perfmon and the like is mandatory, so we can guess the bottlenecks and try not to stress the system too much.
- Win32API is too bloated, and the documentation is sparse on samples. Fortunately the community is huge, but is sad that I still need to get by with google searches.
- The default console sucks which is translated as difficulty to distribute batch applications for other people. To give yet another example besides the obvious (lack of alias, bind encoding, the filesystem doesn't help too much without the support for links, etc) you cannot pipe the standard error or catch the output of a command in a variable. You need to redirect it to files (!?) and then get a life.
Typical problems I find in Mac.
- Applications crash suddenly and sometimes won't restart again. Reboot doesn't help, is kinda random.
- Keyboard mapping default philosophy is too particular to the Mac, is difficult to get used to it if you switch between different systems on a regular basis. Eg. the end key goes to the end of the document, not to the end of the line.
- File system philosophy is also too particular to the Mac. Creating new applications is not straightforward unless in Java/Swing. Learning Carbon or Cocoa is like starting all over again a new widget API... cannot be bothered. For bundling is the same, you need to read until understanding the bits and pieces.