the edifice I call my ignorance
Sunday, July 24 2005
Computers have reached the point where they are too complex for any one person to understand. What we expect of a computer now requires the successful interaction of millions of lines of code: the result of many more man-years of effort than any one person would be able to generate. It's no mystery, then, why computers are so unstable. Despite the best efforts and policies of programmers, and despite attempts to limit interface complexity (such as Object Oriented Programming), the subtle interactions of all that code executing on a fast modern processor can't be perfectly predicted. Side effects, awkward hacks, memory leaks, code dependencies, poorly-understood (though still essential) blocks of ancient code, and appalling fundamental design mistakes (such as the one that leads to DLL Hell in Windows) make crashes inevitable. A computer is now like a biological system in that it can get sick and "be cured" and the best any doctor can do is make educated guesses about what is wrong.
Being schooled in both computers and biological systems, I sometimes find the similarities eerie. Take, for example, the boot process of a Windows computer. In every sense it's a perfect analog of the useful (though imperfect) biological observation of ontogeny "recapitulating" phylogeny, starting with the text-only consoles of the 70s and ending with the glitzy GUIs of today.
Of course, there's a big difference between the "intelligent design" that goes into computers and the cold unthinking decision tree of Natural Selection that resulted in you, me, and an apple tree. There haven't been the millions of years of system tuning and there hasn't been all that much diversity for any economic selection process to operate upon. So while evidence of biological-style forces can be seen in the aggregation of the modern computer, it still needs a lot more honing in the Darwinesque marketplace before it becomes all that it could theoretically be. This demonstrates the limits of what a designer (even an intelligent one or committee of them) can do; ultimately there has to be a process of repeated testing and revision for any complex system to interact effectively with the complex world around it.
With these things in mind, I suppose I shouldn't be too surprised at a some recent frustrations I've had at the hands of my two most recent Linux installations. I have Ubuntu running on a desktop, and it installed so effortlessly I was prepared to become one of its evangelists. But then when I tried to do anything Linuxy with it, I found its default installation was lacking certain important things, such as make. Make is the UNIX command allowing you to turn source code into operational programs. Without it, your computer doesn't give you any more rights and priviledges than a Windows box. So I had to install make. But once I'd done that I started seeing mysterious new errors that no amount of Google searching could help me correct. Now every time I boot my Ubuntu box it gives me the error "failed to initialize HAL" whatever the fuck that means. This might be a trivial issue, but there's no solution and it's the sort of thing that is enough to keep me from wanting to use the system. It's also enough to markedly increase the certainty that I'll be installing some other Linux distribution in its place. I'd like something lean and reliable, but I don't want to clearcut more than I can mow. Based on a reader's suggestion I tried compiling my own kernel the other day, but was so exhausted by the hundreds questions I had to answer in config (some of them very esoteric) that I gave up.
I would have used xconfig, the GUI version of config, but I couldn't get that to work under Ubuntu. To run xconfig, you need something called QT, but what is QT? It's such an in-the-know nerdly Linux thing that none of the websites about it bothered to tell me what it was. Every little thing I wanted to do opened up doors into whole new wings of the edifice I call my ignorance, with yet more doors to yet more ignorance. It made me want to go outside and make stuff out of rocks.
For linking purposes this article's URL is:feedback
previous | next