2005-11-18

Google Print in Book Burro 0.17, and future library plans

I had some cheery mail conversation with people on the ClustrMaps team after my recent post on it (as seen in the comments, they were thrilled), and today, after some reflection of mine on interesting future development of an open visitor geocoordinates feed API, Marc (Eisenstadt?) suggested I ought to read up a bit on Jon Udell's writings, had I not already done so. Wow, was he right about that! Thanks a million for the suggestion, Marc; Jon seems about as sold in on the open web and its possibilities as I am, and he certainly also pulls his fair share of community contributions, as interesting hacks goes.

In catching up on some old publicity I seem to have roused, I happened upon another pointer to Jon at David Hall's weblog (Swedish) where David relates my improvements on Book Burro to a screencast by Jon about a Greasemonkey Amazon to library site integration mashup of his. It allows him to see, right on the Amazon page, whether his local library carries each book being browsed, and whether it is available at the moment, or when it will be returned next. He even shows how he adds books to his Amazon watchlist, to get an RSS feed he then somehow again relates to his library (I've got to revisit this when I'm thinking more straight; I'm a bit cross-eyed at the moment -- going to catch some sleep shortly).

The really interesting part, to me, is that Jon seems to have done a good amount of legwork on another longer term project I have had in the pipe since my last visit in the Book Burro code, which would be integrating Book Burro with, not only my local library's availability status of books you browse (in mostly any bookstore, not only at Amazon). My branch of the Book Burro code, since a silent skunkworks release I did two weeks ago now at version 0.17 supports 22 online stores, Google Print and my local library at Linköping University, Sweden.

Yeah, sorry I didn't post about it -- I was thinking about integrating a few other non-commercial projects otherwise similar to Google Print while at it, but my research sort of ended abruptly at having realized that age-old books don't have ISBN:s (the system was not invented 'til last century. No surprise that far. What did surprise me, was that libraries have not in a world-wide joint effort stipulated ISBNs for their stock of pre-ISBN times literature, to be referable everywhere in the same manner everywhere by these great world wide unique identifiers of books. I mean, they all run databases anyway by now, don't they? Were they afraid of running out of ISBN namespace, or something? Surely, they have use some form of unique identifiers in these databases, and wouldn't it have been beautiful if that could have been the ISBNs?

I was somewhat taken aback by this realization, and sort of lost track of scheduling another release, though I did read up on the next system to succeed 10 digit ISBNs -- indeed, the namespace is running short! :-) -- scheduled for January 1, 2007, when the migration period officially starts. It's called ISBN-13, and constitutes a move to EAN codes, which already solve this same problem of slapping a unique identifier for, among other things, price tags on most consumer goods. Which was good enough news to have me completely thrown off track, even though I wrote the code to checksum EANs. (And it's not the silly base eleven ISBN checksums, explaining those funny X characters in some ISBNs of today, either, thank deity.)

But let me get back to Book Burro again. It's really Jesse Andrew's project. We have been meaning to get closer in touch, but haven't quite gotten to doing it yet, to discuss our plans and ideas for the future of it. Coupling our code bases closer together, for one thing, and perhaps making a joint version from which we can build both an extension version (a move Jesse took around version 0.11) and the Greasemonkey code base trail I have furthered myself and integrated with my own addditions besides a contributed 0.11r Reify version for Internet Explorer, which would hopefully (alas, I have not tried this myself) make the script cross browser. With some luck including not only MSIE and Mozilla, but also Opera, which has native user script support. Doing something like that would hopefully mean the best possible outcome for lots of varied user categories, though I have still not heard much as of how the script performs on these different platforms. Maybe my code is no more portable than Jesse's extension, at the moment.

Anyway, my vision on configuring Book Burro for any library anywhere just got a lot closer to reality -- now it is more the question of coming up with decent ways of making a "user interface" for adding your local library to Book Burro's set of link generators, site lookups and parsers, and you should have links from any book in any store to the same book in your library and its status there a quick hack later. I'm even slightly hoping to be able to do it in great style, in a similar fashion to how my Blogger publish ping helper of the past few days does its configuration, by listening in on pages that configures the script just by having seen the URL of a page it has support for adding to its set of buttons.

Because online library catalog systems are fortunately made by a not overly large number of vendors, and probably don't change very much in page -- and most notably URL -- layout, this might be a more than viable solution, listening in to all pages you visit which have the same address structure as that of some known library catalog system. Assuming you visit mostly libraries convenient to your own book consumption, Book Burro could pick up the URL, presumably tie it to the name of the library, or at worst its hostname, and present links to its books, as do the bookmarklets in Jon's LibraryLookup project.

Which is a Very Good Start. I want to move on further still. Jon showed in the mentioned screencast that his Greasemonkey script, like my LiU library lookup script, also checks the availability of a book and presents it directly into the view, right at Amazon. And, for the cases when it isn't in, when it should be back again. (For some reason I didn't add this later feature myself; perhaps LiUB does not show it in their pages, or I had a really sloppy hacking day when implementing the feature. Such excellent features should hopefully not normally go by me unthought of when the opportunity is there.) I find it a very compelling thought indeed to solve this once for the handful of online library catalogs there are (about sixteen, if Jon's pages are any measure), and have the feature for mostly any library anywhere, at the cost of about no user configuration interaction at all, except one normal browser visit to her library after Book Burro installation, when the script silently sets itself up to give her more options the next time she is browsing books in online bookstores.

Not to mention it works the other way too: when browsing your local library, you also get links to book stores everywhere, complete with price tags, so that you might go to the least expensive vendor for your own copy, or perhaps even buy a used copy from one of the auction sites or previously used books stores also covered by Book Burro (in my version, anyway).

I envision a very bright future for browsing for books on the net indeed. I'm really looking forward to experimenting with these online catalogs; for each, I need to find out:
  1. How to search for a book by ISBN (this part is already covered by the LibraryLookup project).

  2. How to find which book (which ISBN) any particular page on the site is about (by URL and/or page content inspection).

  3. When the first copy of a book will be returned to be available again.

  4. How many copies of a book are presently available at the library branch.

The first two are fairly easy, the first in fact even trivial thanks to Jon et al. The third and fourth are in part not very hard either, except for a problem they both share: it can be further complicated by some libraries showing lots of branches in their views, where you would perhaps only be interested in one or a few of these branches, or at least, where you would want them grouped as different entities in the Book Burro book context popup window. "There's one copy at the branch down the street, but that's not in at the moment, but if you catch a ride to the other side of town, you won't have to wait until Friday to find that copy returned, since they have two that are still in." That shouldn't be far off, now.

There might be a need for some amount of manual configuration for that, nonetheless. I still have high hopes for a very untaxing interface that will not require much of the user. If my mother is able to get that script running, showing her books in her local library without asking me for help, I'll be satisfied with the usability of it.

At least until somebody points out how it could become even better.
blog comments powered by Disqus