The best kittens, technology, and video games blog in the world.

Wednesday, April 21, 2010

OSX vs Linux

The Ipad2 is finally revealed :-) by RolfSteinar from flickr (CC-NC-ND)

I hate OSX and yet I use OSX because alternatives (by which I mean Linux, obviously) seem even worse. Here's a very short list of pros and cons as I see them.

Most important things:
  • OSX pro: TextMate. I really cannot use any other editor without feeling physically ill, they just do everything wrong. There are some attempts at getting semi-decent editors for Linux like redcar, but I have no idea how good they are.
  • OSX con: MacPorts - source based distribution systems are just failful, and MacPorts is far more failful than most. It is completely routine that upgrade will leave you with broken packages - neither upgradable nor downgradable.
  • Linux pro: apt-get. I wouldn't even seriously consider any Linux without apt-get for anything.
Extra points:
  • Linux pro: same software on desktop and servers. It saves me a lot of complications, 32bit vs 64bit is annoying enough without OSX vs Linux.
  • Linux pro: better development tools. strace, ltrace, and LD_PRELOAD for example. It is system made for developers by developers and it shows.
  • Linux pro: virtual desktops. Spaces on OSX doesn't work and it will never work as long as OSX stays Application-centric instead of document-centric like Windows and Linux GUIs.
  • Linux pro: better internationalization. Especially if I want to type in multiple languages. There's proper Polish Dvorak keyboard for example. (I remember I once haxored such for Windows 95 by editing binary drivers... these were good times).
  • Linux pro: Amarok. It's vastly more awesome than any OSX music playing program, especially shit like iTunes. Even old Winamp is far better than iTunes.
  • Linux pro: shell. Ubuntu bash has smart tab-completion, command not found suggests what to install, and everything else in shell got as much attention to detail as GUI got for OSX.
  • Linux con: Support for laptop hardware. Last time I tried it, even something as simple as getting external monitor in and out was a massive pain.
  • Linux con: GUI usability: Now that Windows 7 finally catched up, KDE is in general the second least polished GUI, the absolute worst being GNOME of course. It's not just looks, it's all the minor things that make it work seamlessly.
  • Linux con: GUI programming. C++ based Qt, and fake-OO-C based Gtk are both massive pain in the ass compared to even less than amazing Cocoa. There are Ruby etc. bindings for all, but it's just like putting lipstick on a pig. Everyone develops GUI for web these days - that even dealing with MSIE6 and all ridiculous web limitations is still far less pain than desktop GUI programming shows how bad it is.
  • OSX pro: It's prettier. Font rendering is a particularly good example
  • OSX pro: Omnifocus. Every other GTD software I tried was so bad I simply stayed with paper, but Omnifocus suckiness is fairly moderate.
  • OSX pro: Development for mobiles. Right now the only categories of mobiles are iPhones and turdbricks - one needs OSX, the other nobody wants to develop for. It might change in 2-5 years, but right now I need OSX if I wanted to develop for OSX.
  • OSX con: Support for laptop hardware. It's ridiculously bad, even though it's Apple's own hardware. The only way to turn off laptop monitor is by sacrificing a chicken (put computer to sleep; wake it up without fully opening the laptop screen; then maybe it will work, maybe not) - and routine software upgrade broke the "turn off trackpad when mouse is in" option.
iPad stand by Veronica Belmont from flickr (CC-BY)

I see no chance of OSX ever catching up with Linux before I get old.

Linux would need at least a decent editor - and if redcar won't work, I'm out of hope - Emacs and vim are stuck in 80s and haven't improved the slightest since I started using Linux. All KDE/GNOME-based editors are made without any clue.

Laptop hardware support gets better each year, while Mac seems be to getting worse somehow, so that problem doesn't bother me that much. And I can live with ugly fonts and less GUI polish.

I might miss Omnifocus a bit, but that's definitely something I can live without, especially since Omnifocus is OK but not that awesome, and fairly moderate amount of GUI programming should make it possible to make something more or less as good, if only GUI programming wasn't such pain.

So I'm quite tempted to switch to Linux. Am I missing some big pro or con of either system?


Robin said...

Why is apt-get so important? Every other serious Linux distro has a package manager that handles dependencies. Even emerge can install binary packages sometimes (though I haven't actually tried that).

taw said...

You clearly haven't used apt-get if you're asking about that.

I tried Gentoo some time ago, and emerge has been a massive pile of fail
- and that's still better than MacPorts.

Bill Mill said...

I won't use linux anymore for one simple reason: I spend too much time configuring it.

Also, homebrew, while still a source package manager, is much much nicer than macports.

taw said...

Bill Mill: I don't buy this - Ubuntu out of the box is vastly more usable than anything else out of the box.

I have a very long document around in which I explain to myself how to get OSX from installation to something useful for software development and general use. It is about 10x more effort than a comparable thing with Linux.

Pomyk said...

I have Gentoo on my desktop and Kubuntu on my netbook and at work. I definitely like emerge more than apt-get. Updating ubuntu can really bork it (and it happend to me the one time I tried). No such problems with emerge (if you update often and manage unstable packages wisely). Compiling from source is a pain though.

As for Linux pros... I can't live without the Yakuake console.

taw said...

Pomyk: Oh my god, I cannot believe I forgot about Quake console. As you say, it is totally awesome.

Mystilleef said...

Try Scribes for a decent editor.

Also see:

taw said...

Mystilleef: I will believe it's any good when I see people demand it be ported to OSX to compete with TextMate (it might still be better than Emacs for all I know, that's not difficult at all).

Mystilleef said...

There has been demand to port it to windows and os x. I just don't have the resources to do it. Although someone is currently working on a port for Windows.

Bill Mill said...

@taw: buy it or not, I have expermiental evidence that shows I spend ton more time configuring linux than I do Mac.

The problem's not usability, it's flexibility.

taw said...

Bill Mill: The difference is that on Linux you can waste time on this, on OSX you must waste time on this.

Protip: Use Linux and accept the defaults unless you really absolutely have to change something.

Bill Mill said...

@taw: Maybe you're strong enough to accept default options, I'm not. I really do wish I could do so. Mac gets the job done.

Also, I apologize for my awful typing, I have a broken hand.

Anonymous said...

Okay! Neither vim nor emacs will do for you. And all other editors dripping GUI are not good enough either. Huh? I wonder what exactly you do with computers besides writing vacuous posts! Can you blog about some of your work so we can see how good it is?

Anonymous said...

Have you ever tried ?

Try your luck compiling it under linux/macosx/windows

AdamB said...

I don't know what is so special about TextMate. Tried to figure out that myself but failed. My friend, Apple fanboy, wasn't able to explain that to me as well.

Anyway, you can give a try to Geany a neat and powerful editor. I've found it to suck much less than others (especially Gedit). It plays nice with XFCE desktop being fast and powerful.

Divided Mind said...

Actually support for laptop hardware is pretty good nowadays. Configuring external monitors is a breeze with XRandR 1.2 (as long as you're ok with command line tools for configuring, I'm not sure if there's a decent GUI for that); most GPUs (with notable exception of Nvidia, which last time I checked still needed proprietary drivers) work out of the box with AIGLX desktop (effects) on free drivers, most wireless NICs work flawlessly on free drivers. Certainly beats the shit out of Windows (7) hardware support, although I guess that's no contest really.

I don't remember when was the last time I actually had to set up any hardware after popping in a livecd. Even default touchpad settings are comfortable enough, although you'd be well advised to swap two-finger tap to be 3rd button and three-finger to be 2nd one, and to turn on circular scrolling, which is quite possibly the most awesome thing ever to be done with a touchpad.

taw said...

Divided Mind: It's not about configuring the hardware, it's about system not getting confused when I plug in/out external monitor live and system adjusting automatically.

Linux 2 years ago still got confused and it needed running nvidia-something-something to make it unconfused.

Bas said...

What do you mean turning off the monitor in OSX is a problem? I must be misunderstanding you because that is no trouble at all.
Ctrl+Shift+Eject puts the display to sleep or you can configure a hot corner in Exposé for the same.

Kai said...

I have to admit I'm not a developer, but am still curious as to what you consider a "usable" system. To that end, I'd be keen on seeing that long document. I've always thought that OSX was pretty usable straight outta compton.

taw said...

Bas: You misunderstand what I want. I want to turn off laptop monitor and only use external monitor.

This is possible if I start up system with external monitor connected and laptop lid closed - or if I put it to sleep then wake it up with lid closed (but this works or not randomly).

There is no way to turn off laptop monitor without at least putting display to sleep.

And no, I cannot just darken it because windows will still appear on it (I've heard stupid suggestions like that before...).

divide said...

XrandR 1.2 does just that; it tends to do the right thing. You can use xrandr command line tool to tweak it to your special needs thereafter (like having internal display show just part of the desktop, zoomed in). Turning off the internal display is just xrandr --output LVDS --off.

oliverdyas said...

Linux pro: xmonad tiling window manager.

Probably it would require more messing with the defaults than you want, and unfortunately it requires the Haskell compiler to be installed, but using multiple monitors without it is hard to imagine for me.

taw said...

oliverdyas: I don't care for multiple monitors, my single 2560x1600 30" already maxes out double link dvi, and computers (let alone laptops) have more output than that.

But your point is valid that Linux has a lot of such things.

Marc said...

I think emacs is a really nice editor. The learning curve is not really nice but once you get used to it you are godly. I have configured it with autocomplete and such stuff. I actually use linux at work for developing and osx at home. I prefer linux for developing.

taw said...

Marc: You'd be godly by standards of 1980s. Unfortunately for you Yannis's Law means 1980's godly is 2010's below average.

kouteiheika said...

I really don't understand everyone's fascination with TextMate. Kate has everything I need, and what it doesn't (read: proper cursor movement shortcuts) I've added myself, e.g.:
(Note: Dvorak keyconfig.)

A simple LD_PRELOAD hack that makes editing text a joy - I don't need to touch the mouse nor get my hands off the „main” keyboard to push home/end/page up/page down/arrow keys/whatever, I just hold my left alt and I can manipulate the cursor with the letter keys. I really have no idea how people can comfortably edit text without that.

taw said...

kouteiheika: I've heard this many times, but not once from anyone who has used TextMate much.

It's a lot like people using Nokias wondering wtf people see in iPhones.

devit said...

I'm a programmer. My main interest is iOS, Java and Web (PHP, RoR) development.
My background on operating systems involves 11 years of experience. I've been working with OpenBSD, FreeBSD, Debian GNU/Linux, RedHat, Windows and finally OS X.

I can't agree with Bill Mill about saying "Mac gets the job done." So here are just few cons for OSX:

1. How about a fact that MacPorts binds strictly to Xcode? Try to install Xcode 4.3 and any of fuse4x modules (like sshfs, encfs) from MacPorts.
2. Try to install RVM with Ruby 1.9.2 it will complain that you have to downgrade your Xcode to 4.1 or tries to overwrite your compiler tools :D with some fancy bash script which also breaks MacPorts. Keep in mind when you are iOS developer you need the newest software from Apple.
3. Try to compile ccrypt port with MacPorts.
4. To use MacPorts you need to have a developer account to download "Command Line Tools" and starting from Xcode 4.3 it is a separate package so installing Xcode for free itself won't do.
5. OS X is memory hungry. I mean really hungry. I have 8GB on memory and sometimes it isn't enough! Then system really slows down. Fortunately there is a program called "Free Memory" but still.. WTF?
6. Compiling MacPorts takes a really much resources by CPU/time. It takes me a day just to setup/compile an enviroment (I'm coming from binary distribution like apt-get).
7. Why there is no software manager? I know that when you drag and drop Application to your trash it gets deleted but when applications writes some launchd receipts I'm not sure whether it gets properly removed. The same involves files outside Application directory scope. Only native way (without 3rd party software) of removing programs I've found is to trace install receipt for file contents and remove them manually. It's a fail.
8. Switching between many windows of one program is a pain. Default "alt-tab" won't do. It only switches between programs. You have to use Mission Control for that which slows down your work.
9. Apple Mail doesn't handle image in signatures properly and when you're sending some other attachments within e-mail the signature gets broken and images from signature shows as "attachment" instead of inline.

When somebody is using OS X just to surf web or listen to music it's great.
When you are a software developer it's a pain and you waste a really much time for making "stuff" work.
Especially when you are used to software managers like apt. It's a matter of seconds to search, install and remove programs on GNU/Linux. Software prepared by package maintainers just "work". It's not the case when you're using MacPorts.
Linux these days is far more compatible with the hardware.

PS. I'm not sure which IDE is author using but why don't use some Java software like eclipse, netbeans? It works on every OS you like and it's far more advanced than TextMate (code completion, docblock handling, class navigation, inheritance, etc.).

taw said...

devit: Installing repository software on OSX is fail, but then installing third party binary software on Linux is much bigger fail, so it's sort of even.

RVM is a data-overwriting pile of shit nobody should ever use. If OSX stops you from using RVM, you should thank OSX.

For #8 there are third party programs like Witch. OSX defaults suck but this has easy workaround.

Author uses TextMate, and stays away from so called "IDEs". Unix is the IDE, TextMate is its text editor. Everything else are crappy substitutes.

devit said...

> Author uses TextMate, and stays away from so called "IDEs". Unix is the IDE, TextMate is its text editor. Everything else are crappy substitutes.

It looks like I stepped a nerve there ;-) Since as a developer I can't afford to stick with your ignorant attitude let me just give you a pointer - keep your mind open and good stuff might happen!

Anonymous said...

Man-up and use vim (or emacs).

taw said...

Anonymous: I'm sure you love your Nokia 3210.