Sunday, July 10, 2005

Unstable dilemma

Today I went to boot up my computer and discovered that udev is broken...again. Now, I agree that something in the spirit of udev is probably a good idea, especially in the world of hotpluggable devices. However, the actual implementation has been flaky from day one, and this isn't the first time I've booted my computer and had my mouse or some other important device non-available. I decided that this is the last straw, and once I'd fixed the problem (running "/etc/init.d/udev restart" gives it enough of a prod that it finds the mouse devices), I went to remove udev for good.

The following packages have unmet dependencies:
hal: Depends: udev (>= 0.056-2) but it is not installable
The following actions will resolve these dependencies:

Remove the following packages:

Score is -923

Accept this solution? [Y/n/q/?] n
The following actions will resolve these dependencies:

Keep the following packages at their current version:
udev [0.062-1 (unstable,now)]

Score is -1049

Accept this solution? [Y/n/q/?] n
No more solutions.

Argh. Apparently gnome-desktop-environment depends on gnome-volume-manager, which depends directly on hal (there used to be an alternative, but it seems to have been removed). So I now have to decide whether to just grit my teeth and suffer along with hal, remove Gnome, or remove the Gnome metapackage and reinstall the non-hal stuff by hand.

As it happens, I don't use Gnome myself; it's just there for when other people are working on my laptop, so I'll probably just remove the metapackage and let the other stuff get deleted along with it. It's a bit annoying, though, that Gnome insists on installing a historically broken package rather than, say, Recommending it. (as far as I know the system will work fine without udev, you just won't get automounting of hotplugged devices)

Thursday, July 07, 2005

Taming the Inner Pack Rat

Hi, my name is Daniel Burrows, and I'm a pack rat.

It all started so innocently. As a kid, I'd hang on to little trinkets and gadgets from my Christmas stockings, but it didn't take long for the habit to become more serious. This has all come to a head now, as I'm boxing up all of my worldly possessions in order to ship them across the country (into a hypothetical apartment to be purchased with money from a hypothetical job, but neveryoumind). In the process, I have come across:

  • A bunch of kitchen equipment given to me by well-meaning relatives, and never used. I couldn't even identify what some of the implements were meant to be used for until I called in a technical consultant on the matter (aka Mom). This included a used Mixmaster; when I experimentally used it to make a sponge cake, I discovered that it contains a large reservoir of rust and old dough that falls into whatever you're beating with it. Gross.
  • Several large containers of "junk" that I packed when I graduated from college and never opened since.
  • About a half dozen boxes of camping equipment, used only once.
  • An unopened model of the human body that was given to me in high school. Actually, I think it might have been given to my sister, but it eventually gravitated into the Elephants Graveyard of useless items in my closet.
  • Magazine issues dating back years (most likely to at least 1997), many of which I probably didn't read even when they were current.
  • A pile of shirts that are no longer fit to wear in public due to rips and tears.
  • Several caches of markers and highlighters, all unused.
  • The first computer I owned, a Dell Pentium/166. I don't even know if it boots; it's been in a box since 2001 (when it was briefly de-boxed while I searched for a new power supply for my desktop).

Why do I hold onto this stuff? A lot of it is demonstrably useless, and even the stuff that is hypothetically useful I've never actually used. Well, there are a number of reasons. It's partly that some of this stuff was given to me by relatives, and I'm a bit hesitant to discard it lest they notice and/or buy me another one on the grounds that I ran out. There's also the fact that a lot of it is stuff that I might theoretically want. Some day. And some of it has sentimental value or attached memories.

However, I think that these are all just rationalizations; the pack-rat behavior is much more fundamental. I simply have a deep and overriding conviction that if I throw anything away -- anything! -- that something bad will happen someday. This is, of course, absurd. But nonetheless I put up with tripping over a broken CRT screen (although I finally removed that from my apartment) and the leftover building tiles from when the floor was put in (which I could easily have dumped on the landlady) because "you never know, it might come in handy, and if you throw it out, you'll be sorry!" I've let the stuff I actually use get crowded into cramped and inconvenient spaces in order to make room for stuff I've never touched.

So, I decided, enough is enough. I'm dumping as much stuff as I can in this move, whether by giving it to Goodwill, foisting it off on some relative or other, or tossing it in the trash. I set a bar when I started packing: aside from some small items that I'll probably want someday as relics of the vanished past, stuff is only going into boxes if I might actually use it in my next apartment. Everything else gets The Boot. So long to the rickety Wal-Mart CD holder (which was "modular", meaning the individual pieces tended to separate and fall over, dumping all your CDs on the floor), the unopened Walkman, and the tiny desk lamp I could never get bulbs for.

How bad is the situation?

Well, the crown jewel -- the defining element, if you will -- of my museum of useless trash is the computer game box collection. No, not a computer game collection -- those are in my stack of CDs (along with dozens of CDs from book covers, Windows driver CDs for random hardware, bad image manipulation programs that came with my camera, and old PC game magazine demo disks) and floppies (yes, I have a couple dozen floppies too; I doubt any of them are even readable any more, or that I could use the information on them if they are). I'm talking a computer game box collection. You see, back when I bought large numbers of computer games (i.e., high school), I got into the habit of lining up the boxes on my bookshelf, "for easy access"...and, of course ENTIRELY coincidentally, to show off all the cool games I had.

And hey, some of those boxes are pretty spiffy. But I just dug a good-sized cardboard box out of my closet that is entirely filled with computer game boxes. I haven't even compressed them by folding them down; most of them are still full of empty air or -- worse -- hold the cardboard packing material (to keep their shape) and some warranty/registration information. One box has an Electronic Arts catalogue from 1999. This is simple insanity.

...except, will these things sell for good money on eBay some day?

Oh shoot.

I'm doomed.

Saturday, July 02, 2005

UTF-8 success. Sort of.

I've just finished the bulk of the work that was needed to get aptitude working in UTF-8 locales. Unfortunately, I've run into a bit of a problem:

Notice what's happening with the drop-down menu: geometrically, it should obscure the right half of a Chinese character...but instead, that line of text is getting shifted to the right so that the Chinese character on the left is fully visible. Worse, the behavior here is unpredictable -- depending on the exact state of the display, it appears that curses will sometimes do the right thing and sometimes do a reasonable compromise (erasing the character that would be overlapped).

It seems that something lower down in the display hierarchy -- either curses or xterm -- doesn't like it when wide utf8 characters are partially overlapped by other characters. I suspect curses, because when I triggered drawing events in a different order (by selecting another menu and going back), I got correct output:

My best guess is that maybe curses' optimization algorithm doesn't understand what to do when a wide character is overlapped. Hopefully this will be acknowledged as a bug and fixed, because I really don't see how else to solve this without rewriting a lot of code.