The price of abstraction

This article was featured on Slashdot today. It’s about the current state-of-the-art Linux-Desktop being quite demanding in Hardware – even more demanding than the arc-nemesis Windows XP.

And it’s true.

I see one of the problems in the basics of the Unix philosophy: Use small tools to do a specific task and another in the OpenSource-Philosophy: Write clean code.

These two approaches create wonderful architectures and abstractions of small tools doing their work.

What nobody seems to recognize: This so wonderful and well thought-out architecture is bloated per se. Let’s say you are playing a Video-File in a KDE-Video-Player running in KDE. This is what’s running on your system to acomplish this task (I hope I get all the (bigger) components really running – maybe there are more (or less) of them):

  • Linux Kernel
  • KDE-Sound-Server
  • X-Window-Server (complete with un-used network transparency which would not work with the video anyway
  • The whole QT-Library
  • Some basic KDE-Abstractions (kdelibs)
  • Your media player

Every one component ist cleanly seperated from each other – every one can be replaced without disturbing other components. Every one is designed cleanly using many abstractions to provide this replacability even for internal components.

But it get’s even more complicated: Many of the acting components are independant processes which creates the need for quite a bit of IPC wich is always slower than direct calls.

No wonder this is slow!

In Windows for example quite a lot of the stuff described above is actually running in the kernel or at least very close to it, maybe using undocumented interfaces to the kernel.

Playing a video mostly depends on DirectX which uses mostly in-process calls. It’s dirty, it’s unstable (maybe), but it’s fast, doesn’t flicker and happens to just work (the less independant components involved, the less can go wrong).

Of course that’s not how software should be written. It’s how it is written when fast and impressive resuslts are requested.

Another one…

Now that bluetooth-support gets integrated into the Windows OS, I thought, maybe Logitech created a new driver for it’s diNovo Package that does not insist in the Logitech Hub being installed.

This time the driver did not complain about the hub not being installed, so maybe this is a good sign (I have not rebooted yet), but the installer presented me with this screenshot which has such a bad wording that it’s worth blogging about:


(I cut out some empty space at the bottom and created red overlays to highlight my point)

This thing not only has one flaw, it has many:

  • The text speaks about check boxes, but there are radio buttons
  • The text suggest it’s possible to select more than one item in the list below. It isn’t
  • There is no way to install Keyboard, Tackball and mice support
  • I don’t have a trackball plugged for now – the option is still there
  • The list is extremely badly readable as it combines options to install in one point: “Keyboard and Mouse”. The approach with Checkboxes would be much easier to understand

A fix would be to actually do what the text says: Use Checkboxes. If it’s not possible to install both mice and trackball drivers (why is that so? Older drivers did not have that limitation), uncheck the other box, or even better, create one Checkbox and two radio buttons:

 Please chose what drivers to install:

 [ ] Keyboard
 ( ) Mouse
 ( ) Trackball

The problem is that the used installer (InstallShield) is extremely bloated and though it has the features necessary to create a dialog like the one I described above, it’s that complicated that a seperate developer is needed just for the installer and often there’s no time to do that.

Which leads to me finding this even more hypocritical than it already is – even more so that the Installer the end user sees is not by InstallShield, but by the respective developer – the final installer is as good as it’s created, not as the tool creating it

If you ask me what a good installer may be, I’ll answer InnoSetup. It’s small, simple, fast and extremely powerful.

New PowerMacs

designcluttervertical060904.jpg

(Taken from apple.com)

Today Apple announced new G5 Power Macs, where the most expensive one has two 2.5 GHz CPU’s and – that’s the reason for this entry – a liquid cooling system.

When I see the two words liquid and cooling together with Computer in one Phrase, I think of things like this, this and especially this. I find that really stupid

The german magazine c’t recently had an article about liquid cooling systems for PC’s and none of them was both more efficient than conventional air coling and secure enough to be used (you know: Water & Current isn’t a very good team. And then comes the whole chemistry with its cool things like corrision and other stuff). So for me, liquid cooling is just another gadget for overclocked gaming PC’s. Often a liquid cooling system is applied to keep the hoplessly overclocked CPU cool. And all is done because overclocking is supposed to be cheaper than buying the real thing, but in the end all this cooling stuff is much more expensive – even more so when something goes wrong.

I fail to see where apples solution is something different. The old G5 where quiet too, so I don’t see any reason for this besides it being a cool feature.

But whatever. The comparison between the internals of a G5 and a common PC I’ve taken from the Apple page is quite cool. What they don’t tell you: If you buy a complete PC from a manufacturer like IBM, you won’t get something extremely different from what you see on the left. But it’s cool none the less.

Relaunch

Richard did a wonderful job on the new PopScan website. Looks great and even uses CSS to some extent. It’s not perfect yet, but it’s getting there.

The page as such is much better than the previous one, though it’s not translated to english yet.

XP SP2, Delphi Debugger

This weekend, a pre-RC2-Release of Windows XP SP2 could be found on the net. Eager to learn whether the Delphi debugger now works again, I’ve downloaded and installed the thing.

I’m happy to report, that delphi indeed works again, so I’m keeping the build installed for now, as I really like the integrated bluetooth-support.