Archive for April, 2005

Ultimate Blogger

I hate reality television. I continue to be amazed that the fad hasn’t followed disco and parachute pants into our collective Gallery of Things That Seemed Like a Good Idea at the Time. But this post isn’t about reality TV.

This post is about a blogging contest, set up in a Challenge/Win Immunity/Vote Someone Off format popularized by the aforementioned “genre” [As you read, make air quotes. -Ed.] Ten bloggers will be chosen from among the applicants to compete for six weeks in The Ultimate Blogger. Having participated in a number of blogging challenges in the past, I’ve seen firsthand how they can energize a flagging blogger (that would be me… 3 posts so far this month). This one certainly looks like fun, but I don’t think I’ve got the time to play. Besides, I doubt I’d make it past the application… only 10 contestants will be chosen.

But don’t let that stop you from applying. There are several of my favorite bloggers I’d like to see participate in something like this. If you don’t know who you are, check the blogroll. There are even prizes (circa $500 worth). And who knows, maybe I’ll give it a shot anyway. Deadline for applications is Friday, April 29, 2005 at 8:00 pm PT*.

* Footnote: The application states 8:00pm PST. PST is, of course, Pacific Standard Time. To the best of my knowledge, there are no areas in the U.S. Pacific Time Zone that do not use Daylight Saving Time*, so I think they meant 8:00 pm PDT. If so, your deadline is an hour ealier than you think. Yes, I know I’m being pedantic, but I’m a programmer- what do you expect? Also, I spent the first fer years of my professional life designing call-center scheduling software, so I tend to get picky about date and time math.

* Footnote to the Footnote: Yes, it’s Daylight Saving Time, not Daylight Savings Time. Yes, really. Want to learn lots, lots more about Daylight Saving Time? Check out the Daylight Saving Time Exhibit, one of my favorite sights on the web.

On Support

Simon Willison points to a Forrester Reasearch publication (being offered for $49) that cites Greasemonkey as a reason for corporate IT departments to delay or avoid Firefox deployments. For those unfamiliar with Greasemonkey, it’s a plugin for Firefox that allows users to create custom JavaScript to be attached to invidual web pages, changing their functionality in much the same way that user style sheets can change the appearance of a web page.

Simon calls the report FUD, which it may be, and defends the right of corporate web users to employ such means:

…tools like Greasemonkey are a fantastic way of fixing issues with the atrocious interfaces found in many “enterprise” web applications.Workers who use Greasemonkey to improve their productivity by fixing problems with internal applications should be applauded.

While I have nothing against Greasemonkey, this statement gave me pause. It reminded me of a parallel situation I have seen often as a corporate developer- Excel VBA Macros. Working for a financial institution, many of my non-IT co-workers are advanced power users of applications such as Excel- but they are not programmers. Many is the time that I (or my department) have been called because some business process is broken- only to learn that the process is one we’ve never hear of. Most often it is an Excel solution that uses VBA macros, which usually begin as a recorded macro and grow over time, and that was developed by an end user. When we are called in, often the original author is no longer with the company (interns are notorious for building these things). The end user only knows how to push a button, and has no idea what to do when they see a VBA error dialog.

Why do these grassroots solutions break? Ignoring for a moment the questionable nature of Excel in general and VBA macros in particular, there are still many factors. Foremost is the fact that these users aren’t developers. These solutions generally have no error checking (or worse, on error resume next, VBA’s way of saying, “Don’t stop just because it’s broken”). These solutions are often built from a recorded macro, and so they have all of the implicit assumptions the user made when recording the macro. Just because your query returned data in column K doesn’t mean it always will. Another major factor is lack of awareness- the users don’t know when things external to the app will change- DB schema, filesystem paths, etc- and the IT department doesn’t know that some guy in accounting has a macro that will break when the upgrade the file server next weekend and change the server name. In addition to these problems, there’s no Q/A, no source code control, and no documentation.

So when the inevitable day comes, when Joey Intern is long gone back to college, when the third or fourth person to inherit this spreadsheet gets and unexpected error or incorrect results, what do they do? They call the helpdesk, of course. The helpdesk has no record of such an app and no documentation on how to support it. Yes, they can support Excel, but they have no clue what the macro send_daily_faxes does or how it works. So they send the problem to the developers- whoever has VB and/or Excel experience. Now we (development) have to support something we’ve never seen, not written to corporate standards, with no documentation.

The developers will calmly tell the user that this is not supported, that we have no idea where it came from or what it does. Sometimes they have to accept that, and if the need is sufficient, make a request for the development staff to build a tool which does the same thing (as they should have dome from the beginning). Sometimes, the developer has to bite the bullet and kill the better part of a day figuring what to fix so he can fix it. After all, if this thing has been used for the past three years to send faxes to clients each day with important financial info, we can’t just call the client and say, “Sorry, your daily fax was sent with an unsupported tool. We’ll build a new tool in month or two.” Even then, we try to schedule work to replace that macro with a supported solution.

I hope the parallels are obvious. While writing custom JavaScript for use with Greasemonkey is more complex than recording (and extending) an Excel macro, there are those who will try it. Every such modification that becomes critical to daily operations will eventually be shared and/or handed down, and one day they will break. Who will fix them?

OS X and Multi-button Mice – A Question

As stated recently, I’ve been looking for a 5 button bluetooth mouse to use with my iMac. One of the contenders has been the Microsoft Intellimouse Explorer for Bluetooth, but I’ve resisted buying it because I’m not sure how I like the positioning of buttons 4 and 5, and due to the asymetrical shape. Also, I didn’t really want to pay for the bluetooth adapter included with every MS Bluetooth mouse, since my iMac has Bluetooth built in.

A neighbor offered me his MS bluetooth keyboard and mouse kit, which he wasn’t using, to try out. I left the keyboard and bluetooth adapter in the bag, but hooked up the mouse. After installing the latest bluetooth firmware update and bluetooth software update from Apple, the mouse seems to be working reasonably well. However, OS X is not a support OS for Microsoft’s Bluetooth offereings, and the Intellipoint 5.1 for OS X software I’ve been using won’t recognize the mouse. This leaves me with no way to map buttons 3, 4, and 5 to any type of functionality.

The OS can recognize these buttons, however. I can map them to Expose functions in the Expose preference panel. However, I can’t map them to keystrokes (as the Intellimouse software did), and other applications (most notably Firefox) do not recognize the native button clicks or allow a way to map them. I’d like to map button four to Firefox’s Back button (aka Cmd+Left Arrow) and Button 3 (wheel-click) to the Firefox cmd Open Link in New Tab (Cmd+Mouse Click).

My primary need is for Firefox; I’ve looked for Extentions that would enable this functionality, but all I’ve found are extentions to enable mouse gestures, a feature I’m not fond of. I also stumbled across something call USB Overdrive, and OS X app to enable extra buttons on a USB mouse. Unfortunately, it’s designed of OS X 10.1, hasn’t been updated in over three years, and states that Bluetooth support would appear “in the next version”.

So, does anyone know how to generically map buttons 3,4, 5 in OS X, or a way to make Firefox recognize these buttons? Until I can configure this mouse the way I want it, It’s not going to be of much use.