The idea for yesterday's screencast was hatched when Simon Willison reminded me to take a closer look at Greasemonkey. The first thing I wanted to do was materialize a private? checkbox on the del.icio.us posting form, and siphon off ticked items to a separate repository.
After more DOM-wrangling than I'd planned on -- which, come to think of it, is how things always seem to turn out when I wrangle the DOM -- I had the checkbox where I wanted it. With a bit more DOM-wrangling I inserted a script into the del.icio.us form so I can route posted data elsewhere when the checkbox is ticked. But where?
I looked at two possibilities: Rubric and Scuttle. Both ran out of the box. But in both cases, there were subsequent problems I had to debug, and the difference between the two cases was instructive.
Rubric is written in Perl, and uses Class::DBI to abstract away the database CRUD (create, read, update, delete) logic. When I ran into trouble with Rubric, and couldn't find the SQL INSERT INTO statement anywhere in the code, I knew I'd have to learn about Class::DBI in order to proceed. Result: I punted.
Scuttle is written in PHP, and doesn't use any such abstraction layer. When I ran into trouble with Scuttle, it was easy to find the problem. Result: I'm using Scuttle.
I think there's a bit of a parable here. Arthur C. Clarke famously said: "Any sufficiently advanced technology is indistinguishable from magic." When magical technology works, things get easier. But when it doesn't, things can get harder than they otherwise would have been.
Arguably, all this means is that our magical technologies aren't yet sufficiently advanced. If they were, they'd be as magically useful in failure mode as they are when they just work.
Anyway, the LibraryLookup Greasemonkey script that's shown in the screencast isn't terribly magical, in and of itself, and neither is the environment in which it runs: Greasemonkey, Firefox, the Web. I find all this stuff pretty understandable. But the way these kinds of things keep producing spontaneous integration -- that's magical.
So are these technologies sufficiently advanced, or sufficiently simple? Both, I guess.
Former URL: http://weblog.infoworld.com/udell/2005/04/04.html#a1207