< mari
a
a
chi
[ Page 2 of 2 ]
From: Phil!Gregory Date: 22:14 on 09 Jan 2004 Subject: Brain-Dead Security Network device. Uses SNMPv1 (which we'll accept for the moment; that would be a different hate). Has separate get and set community names; let's say they're "public" and "private". $ snmpget -v1 -c public <device> <MIB>::writeCommunity.0 <MIB>::writeCommunity.0 = STRING: "private" This has apparently been fixed in a later firmware revision, but this particular device is already at it's highest possible firmware revision. Whee. This has been a low-effort hate. Enjoy your day.
From: Phil!Gregory Date: 17:46 on 10 Dec 2003 Subject: Inconsistent Interfaces I'm setting things in the firmware of a wireless device that was basically dropped in my lap. It's a BreezeNET AP-10, with firmware revision 4.4.1. Let's take a look at my commands and its responses (paraphrased for effect). me: Please use 0x00DEADBEEF in WEP key slot #1 (out of four) it: Sure thing! me: Okay, now use WEP #1 as your default. it: Done! me: Good, good. Since the configuration's done, activate WEP. it: No, I don't support that! Ha, ha! <sound of me going off to find a sledgehammer> If a particular feature of your program is unavailable (especially if it will never be available for a given software version[0]), would it be too much work to *not have configuration options for that feature*? And a minor annoyance is that I can enable SNMP traps from the console setup, but I have to set the destination host for them through SNMP management, which is annoying due to the topology of out network. [0] Apparently, WEP must be purchased separately for this device and whoever bought it originally didn't go for it. (Tangentially, I'm aware of WEP's weaknesses, but it keeps the casual browser out. (IPSec routers bordering the wireless connection keep everyone else out.))
From: Phil!Gregory Date: 15:54 on 15 Nov 2003 Subject: Useless Use of Javascript I hate sites that use Javascript when they don't have to. Fine, go ahead and use it for your fancy drop down menus and so on, but make sure your site still works without it. Sites that require it in order to submit a form are especially annoying, because it usually means that they're trusting the Javascript to do input validation. so they're breaking form submission for pretty much no increase in security.
From: Phil!Gregory Date: 20:30 on 12 Nov 2003 Subject: Borland's Bloody Database Engine *This* one continues to cause me many headaches and provokes the desire to kick someone in the head. As I may have mentioned, I use databases comprising Paradox tables, accessed through the Borland Database Engine. The BDE's approach to file locking is nothing if not annoying. When it wants to lock something (table, record, whatever), it creates two files in the same directory as the table, PARADOX.LCK and PDOXUSERS.LCK. These reference a third file, PDOXUSERS.NET. In order to share files among processes or computers, all three of these files must be visible to all computers. But PDOXUSERS.NET usually lives in C:\, so it's a different file for each computer. Gah. But that's okay; it's configurable. I can change the location of that file in my program, so each department can have its programs all sharing the same PDOXUSERS.NET file, which lives on a network share.[0] I can change the file location for the entire computer, too, but what I *can't* do is set it on a database-by-database basis. This leads to much annoyingness as I try to access several different databases, each with its files in different places. Why couldn't Borland have just put all of the files in the database's working directory? ARRRRGH! [0] Oh, and I have to set LOCAL SHARE to TRUE. The default setting of FALSE doesn't allow network-shared tables and can result in database corruption even on a standalone computer. I discovered both of these facts the hard way. It's the default because occasionally it results in faster database access. <kick>
From: Phil!Gregory Date: 22:58 on 11 Nov 2003 Subject: Delphi and Inconsistencies At work, I write programs in Delphi. Generally, these programs access their databases using Delphi's built-in components and the Borland Database Engine. Occasionally, I need to change the structure of certain tables. I generally do this in the program, for various reasons, usually by handing the database object an SQL statement to run. (Note that these are often Paradox tables (and _that's_ a different hate), so I'm using SQL to update a Paradox "database".) Why SQL? Well, Borland's native components only support changing column definitions if you're creating a table; if you want to do it on the fly, you have to use SQL. I recently needed to change the primary index on a table. BDE SQL supports this. It even has a specific syntax for deleting the primary key (as opposed to a named secondary key). Does it have a special syntax for creating a primary key? Well, no. Actually, you can't create a primary key with SQL; you have to use a method from the built-in components. (Don't ask how long it took to figure this one out.) Argh! Hm. Need to be less long-winded in my hates. And possibly less obscure. But I've got a couple more Delphi hates kicking around, just waiting for me to be annoyed enough at them to vent.
From: Phil!Gregory Date: 17:40 on 03 Nov 2003 Subject: Dialog Boxes Dialog boxes are pretty simple creatures. They have some text and some buttons. Sometimes the text asks you to make a decision, and press different buttons based on your decision. Sometimes the labels on the buttons bear *no* resemblance to the actions they perform. I'm not talking about buttons that outright lie; fortunately, they're pretty rare. But in Windows, it's very easy to create dialog boxes with "standard" buttons, like "Yes", "No", "OK", and "Cancel". This leads to error messages like "The program has died unexpectedly. Press OK to quit and Cancel to debug." Oh, yes, "Cancel" is so much like "debug" in meaning. Thanks, Microsoft. (Yes, this was a Windows 2000 error.) Why can't more people take a page from Apple's HCI guidelines, which specify that button labels should be verbs? "Quit" and "Debug" would make so much more sense than "OK" and "Cancel".
From: Phil!Gregory Date: 17:09 on 29 Sep 2003 Subject: Fonts and X Fonts have been around for quite some time. Even TrueType fonts have been an everyday part of people's lives for a great many years now. Why is it, exactly, that I can't get my programs to use all of the fonts on my computer? Well, X is broken. X likes to deal with strict bitmap fonts. None of that scalable, TrueType, stuff. No, that's too newfangled for X. People used to work around this by making font servers that took scalable fonts, prescaled them for common sizes, and pretended to the X server that they were bitmaps. Which worked, more or less, though you still had to deal with X's wonderful font naming scheme. Then came XFree86 4.<mumble>. "Oh," said they, "It supports scalable fonts natively now. No need for those nasty font servers." Well, that's a lie hidden inside a truth. They wrote an extension for X that supports scalable and other sorts of fonts. Who uses this extension? Well, GTK 2.2. And maybe KDE. And approximately no one else in the universe. Probably because it's only in XFree86. (But "will hopefully be included by [other X11 implementations] in the future.") My needs are simple. I want TrueType fonts in Mozilla. Mozilla says it supports TrueType fonts. Surely that means it's brave and daring and uses the new Xft extension, right? No, of course not. The wise Mozilla developers decided that it would be better to build TrueType support *right into Mozilla*, so you have to go out of your way and make sure Mozilla knows where your TrueType fonts are. It can't figure this out on its own; it has to be told. Why can't there be one solution that works well and everyone uses so end users don't have to worry about stuff like this. Font support should be something that just works. Yeah, it's probably more likely that everyone will magically decide to standardize on a single widget toolkit.
< mari
a
a
chi
[ Page 2 of 2 ]
Generated at 10:28 on 16 Apr 2008 by mariachi