From: Michael Leuchtenburg Date: 16:40 on 04 Apr 2007 Subject: Ubuntu's update-grub So, here I am, trying out Ubuntu since I've heard it's all "easy to administer". I love the control Gentoo gives me, but I don't need it everywhere, right? More work for not much benefit, I think. After a few days of wrestling with Ubuntu's installer (which is so simple that if even the slightest thing goes wrong, it chokes and doesn't bother to inform the user of this, even in "expert" mode), I'm able to get it installed and booting. "Now comes the easy administration!", I think. Then I meet Ubuntu's update-grub. update-grub is a handy-dandy script which edits your grub/menu.lst when you, say, install a new kernel. Useful, huh? Except it seems to be putting in some options I don't like: quiet and splash. So I edit it out. Huh, it's put them back? Okay, let's check the manpage. Okay, it mentions a bunch of weird commented out options which it's then going to parse. It doesn't mention the one I need to change, but there's defoptions in the file, and it's all changed and happylike. Except that it's back when I run it again. Not only is it back, but it has handily edited defoptions for me to have splash and quiet in them. YOU WILL HAVE THESE OPTIONS. COMPLY. COMPLY. The script is a hackish shell monstrosity which repeatedly parses the doubly-commented options, adds their values to some defaults which you can't configure, and then resets every option back to whatever idiotic defaults someone out there thinks that everyone who runs Ubuntu should use, whether they want to or not. Who writes this shit? Whatever happened to the idea of configuration files being things that users edited, and programs followed?
From: Michael Leuchtenburg Date: 08:18 on 14 Mar 2007 Subject: Firefox 2.0's printing So here I am, trying to print out a couple of chapters from a book on a website. The website uses a default font of around, oh, 10pt. Firefox is happy to override this for display on the screen, which requires all fonts to be at least 12pt, but when it comes to printing, it's rather unwilling to listen to me. I change my default font size to 18pt and, lo and behold - nothing changes. Not in the print preview, anyway, and I'd rather not waste paper exploring Firefox's brokenness. So, I size up the font a bit more with Ctrl++. And, lo and behold - nothing changes. Next, I go into the print setup, and uncheck "Shrink To Fit Page Width". This time, I'm ready, and as expected - nothing changes. Back into print setup. I increase the scale to 125%. And hey! Suddenly the print preview is showing roughly 125% the size of my default font. Of course, that's now 18pt, so 125% the size is a bit too big, even for printed reference material. I try lowering it a bit, to 101%. Back to the previous tiny 10pt font. 110%? No good. 120%? Nothing. 125%? Back to huge-land. 121%? Nothing. 122? 123? Aha! 123%! The magic number! The number which makes everything change! I've tipped over into the other path in some mysterious decision tree deep within Firefox's no-doubt unruly bowels and, lo-and-behold, the text is enormous. There was a time, back with Firefox 1.0, when the print previewer would allow you to set the scale and print with the desired scale, upon finding the right size. Now, of course, not only do I get to play the "which percentages actually make things happen" game, but I have to dodge in and out of preview and setup in order to try things out. Oh, and to make things better, the print preview isn't an accurate picture of the way things actually print. That would be way too fucking easy, wouldn't it? And we can't have users actually getting what they want. That wouldn't be nearly hateful enough.
From: Michael Leuchtenburg Date: 22:01 on 20 Nov 2006 Subject: Excel's chart title sizing A very specific hate, I know. But there it is. I hate Excel's chart axis title sizing. Excel, very helpfully, automatically sizes the axis titles. However, it sizes the vertical ones WRONG. And then it doesn't let you resize them. Because, after all, it couldn't possibly have done it entirely incorrectly, cutting off most of the title. Nope. Totally impossible. It then proceeds to display resize handles on them. They're useless, of course. You can move the title around, but you can't resize it. And so the handles just sit there. Mocking me. At this rate, it would have been 10x faster to save the chart as an image and edit it in an image editor than it's been to make it work properly. HATE.
From: Michael Leuchtenburg Date: 00:05 on 14 Jul 2006 Subject: wget's double-slash URL munging I have this little Python script that proxies last.fm. It likes to take, as input, a lastfm URL in its own URL. This leads to URLs like: http://localhost:1881/lastfm://artist/Mogwai/similarartists This is all well and good - in a sane program. Try passing that to wget, though, and it will instead request: http://localhost:1881/lastfm:/artist/Mogwai/similarartists Note the lack of slash. It also totally neglects to mention this, claiming to be requesting exactly what I told it to. It lies. lastfmproxy, being a complete hack, chokes on this. Now, I could make it stop being a hack, but I didn't write it and damnit, I shouldn't have to. wget should just send the damn URL as I told it to. And, failing that, it should *tell me that it's changing the URL*. CLEARLY I must want it to "correct" thing behind my back without so much as a "by your leave"! After all, wget is much smarter than any user could possibly be. Perhaps this meets with some standard for URLs. That's all well and good, but it should *tell me* and *give me an option to tell it to fuck off and let me bugger the standards in peace*.
From: Michael Leuchtenburg Date: 21:16 on 20 May 2006 Subject: Basic18, and interrupt service routines I would be more specific in my subject header, but I really hate everything about Basic18. Basic18 is a compiler for Basic for the PIC18. You can find it here: http://www.midwest-software.com/Basic18/basic18.htm If you want to. There's a lot of hate here, but I'll try to focus on just one part. Basic18 has explicit support for interrupt handlers. This is good, because doing it by just putting fuction calls in the right locations in the mapped program would be oh-so-low-level - and Basic is trying to be a high level language, here. Unfortunately, it also thinks it knows better than you what can be called from where. Got a function you want to call from both inside and outside an interrupt? Too bad, you can't! Basic18 won't let you. Period. You think you can keep it from being called while it's running? I'm sure you can, but Basic18 doesn't believe you. It, after all, knows better than any human possibly could. But this, ah, this can be worked around. You can just duplicate your code. Hateful, yes, but at least it can be forced into some semblance of working. Of course, if you have a couple hundred lines of code then that's a lot of wasted space on the flash of the microcontroller, but hey, you do what you can. Of course, Basic18 has more in store. It also supports multiplication. It doesn't just use the PIC's hardware multiplier, though, oh no. It has a library for it. That means functions. So now you can't do multiplication both inside and outside of interrupt handlers. What's that you say? You can live without multiplication? You'll just do it by hand using bitshifts and adds? Wonderful! You can go on using Basic18. Unless, of course, you want to index into arrays. For an array of bytes, it's fine - no problem. But if you want to index into an array of two-byte data, ah, now there is a problem. Because, you see, in order to find the pointer to the correct cell, Basic18 will need to multiply the index. So now you can't index into arrays both inside and outside of interrupt service routines. Got a buffer that you want to store into as data comes in and then handle outside the interrupt service routine? Too bad! You can't! None of this, of course, is documented. What the hell is the point to a high level language if it's just going to make my life more difficult than writing in assembly? If, in fact, it's going to force me to use assembly to work around its lack of such operators as, oh, bitshifts? And don't get me started on the documentation. Or the header files. Or the debugging support. Or the type checking. SO. MUCH. HATE.
From: Michael Leuchtenburg Date: 22:40 on 25 Apr 2006 Subject: Gtk+ keyboard layout handling X has a system to handle keyboard layouts. While it's far from perfect, it functions. If I want to change between two layouts (QWERTY and Dvorak, say, leaving an easy escape to QWERTY for other users of my systems), then I can just bind that to hitting both shift keys at once. Skip forward up the chain to Gtk+. Gtk+ likes to second guess X. If I have both QWERTY and Dvorak available as layouts, it will use the QWERTY keys for all the application shortcuts. Because, after all, Gtk+ knows better than X what the user wants. It's too much to ask it to fucking pay attention to the keyboard change. Dvorak is the default layout? No, no, that doesn't matter. Clearly the user wants to use QWERTY keybindings anyways. After all, everyone uses QWERTY! And Gtk+ shouldn't offer any way to configure it some other way, since it knows what they *really* want. It's not like different users might want different things, after all. Configurability is for wusses, and so is paying attention to what the user configured. SO. MUCH. HATE. Of course, much of this should really be developer-hate, since this is apparently considered to be a feature: http://bugzilla.gnome.org/show_bug.cgi?id=162726 But isn't all software hate really developer hate, in the end?
From: Michael Leuchtenburg Date: 03:01 on 04 May 2005 Subject: Gentoo's ufed ufed is a use flag editor for Gentoo. Unfortunately, it's shit. I have a number of things disabled that are, by default, enabled, like samba and arts. When I run ufed to edit my use flag settings, it re-enables them. This means that the next time I build most anything that uses sound, I get ARTS. Which means I get bits of KDE. FUCKING KDE. I DO NOT NEED A DESKTOP ENVIRONMENT TO GO WITH MY MEDIA PLAYER, THANKS VERY MUCH. Maybe I should go back to Debian. At least the hate there is long dried up.
From: Michael Leuchtenburg Date: 02:46 on 22 Apr 2005 Subject: firefox's file selector Sadly, Firefox does not break with the long tradition of poorly design file selection dialogs. No, instead it has a *new* way to be broken. When I click on the file that's at the bottom of the list of files in the current directory, it scrolls that list up a notch, thus moving the file I was aiming for out from under my cursor. Of course, if I was double-clicking - since you need to double-click to select a file or enter a directory, of course - the second click is aimed at the wrong file. Of course, it still recognizes it as a double click. It would make too much sense to reset such things when changing the widgets being displayed. No, it recognizes it as a double click and selects that file instead of the one I was intending to select.
From: Michael Leuchtenburg Date: 22:52 on 18 Aug 2004 Subject: gdb quit command So here I am, happily debugging along, when I decide that I want to stop running gdb for now. Knowing that gdb doesn't respond to Control-C, I type "quit" to quit: (gdb) quit A debugging session is active. Do you still want to close the debugger?(y or n) y Cannot find thread 1024: generic error (gdb) I guess gdb doesn't *want* me to leave. So, since I can't exit with the debugger session still running, I try to kill the program: (gdb) kill Kill the program being debugged? (y or n) y Cannot find thread 1024: generic error (gdb) Figuring that I've accidentally selected a non-existent thread, I try to list the available threads to switch to one that does exist so that I can finally kill it: (gdb) info threads Cannot find new threads: generic error (gdb) I hate you too, gdb. -- lucky
Generated at 10:26 on 16 Apr 2008 by mariachi