book suggestions from “pewbot”

I’ve put together my first hack using pewbot — suggestions based on an individual’s loan history.
By running a user’s loan history against the “also borrowed” database, it’s possible to build a list of titles that should be of interest to that borrower.
For example, if a student had borrowed the following 4 IT books:


…then the top 10 suggestions are:




Continue reading “book suggestions from “pewbot””

IE7 beta 2 and OpenSearch Autodiscovery

I’m on holiday this week, so it’s giving me a chance to catch up on things.
I bit the bullet last night and installed IE7 beta 2 on my laptop — partly to see if all of our library web sites work okay, but mostly to see how it handles RSS and OpenSearch.
After a virtual prod a couple of weeks ago from Richard Wallis @ Talis, I added an OpenSearch interface to our OPAC (  The ability to then use the site to do a MetaLib-like cross search of multiple resources (e.g. Wikipedia and the OPAC) is a pretty cool feature, especially if you’re doing research — just bring up an article from Wikipedia and you get to see relevant library holdings at the same time:

Continue reading “IE7 beta 2 and OpenSearch Autodiscovery”

say hi to “pewbot”!

I’ve knocked together a web service front end for our “people who borrowed this, borrowed that…” data.  For want of a better name, I’ve christened it “pewbot” (people who borrowed this).
To use the pewbot service, call it using a URL in the format:[ISBN]

…where ISBN is a 10 digit ISBN (sorry – no ISBN 13 support just yet!)
There are 5 possible error messages that might get returned:

  • invalid ISBN
    the ISBN was not valid
  • ISBN not found
    the ISBN was not found on our catalogue
  • not enough data for ISBN
    the ISBN was found on our catalogue, but we don’t have enough circ data to generate any “borrowed that”s
  • time out
    the service timed out before it completed processing the request
  • database unavailable
    the backend database is unavailable

To see a sample error, try
Assuming you don’t get an error, you’ll get a list of ISBNs and frequency counts in the following format:

<isbn count="[COUNT]">[ISBN]</isbn>

…where ISBN is a “borrowed that” item and COUNT is the number of borrowers who borrowed both that ISBN and the original ISBN that you sent to the web service.
Continue reading “say hi to “pewbot”!”

Live OPAC search terms display

Another shameless hack inspired by the “Making Visible the Invisible” at SPL.
I’ve tweaked HIP to cache keyword search terms and then put together a couple of pages that display successful searches (in tasteful shades of purple and lilac) and failed searches (in gruesome greens). 
IE has a nice CSS blur, so I’ve coupled that with Ajax to provide a constantly updating web page where new terms appear at the front and then drop slowly to the back, becoming more and more blurred and darker as they recede (click to view full size versions):

Dewey DNA Profile your checkouts

It has come to my attention that we have a large number of items being removed from our shelves.  Whoever is doing this is being extremely clever by not removing too many from any one shelf.
I have long harboured suspicions that this is in some way related to all of those people who keep wandering into the Library.  I suspect that our Counter Staff are in cahoots with these so-called “borrowers” as they allow many of them to walk out of the Library unchallenged carrying piles of books.
To aid my investigations of this secretive “Lending Culture”, I have compiled a Dewey DNA Profile of items that were “borrowed” in the last 28 days:

If you wish to create a similar profile for items “borrowed” from your Library, then you may find the Perl deweydna.script can aid you in your sleuthing.
Now, if you will excuse me, I must don my deerstalker hat and re-light my pipe.
Seriously tho, this is kinda inspired by the wonderful “Making Visible the Invisible” at Seattle Public Library.

Curse you Superpatron!

It’s way past my bedtime, but the Ann Arbor Superpatron has been planting ideas in my head again…

Recently Checked Out Books feed (in RSS or otherwise)

I’ve not built a feed, but I have come up with these two representations of the most recent check outs (click for larger versions):
1) The last 30 covers to walk out the door

2) Word Splat!

…that particular splat is entitled “And Treacle Challenge Yorkshire” and is now on sale for only $395,000 (serious bidders only please!)
Word Splat! is made up of words from the titles of the most recent X number of check outs (where X is a roughly a handful).
I made a typo when initially coding the Word Splat!, and ended up with a random sub selection of words at the top left.  I kinda like that, so whatever you get at the top left (if anything) is officially the title of that Splat!
I’ve added three more book collages:
1) 30 Overdue Books
2) 30 Most Recent Requests
3) 30 Most Borrowed Books
The “Overdue Books” are a random selection of items that were due back on the previous day, but have yet to turn up.

A Perfect Library 2.0 Day

Just relaxing with a glass of wine after a very very Library 2.0 day 🙂
With a lot of help from Iman Moradi (blog/flickr), we ran an introduction to Library 2.0 for members of our Subject Teams and Tech Services this afternoon.  Then, after a coffee break, we watched the SirsiDynix Institute Weblogs & Libraries: Communication, Conversation, and the Blog People web seminar given by Michael Stephens.
All in all, it’s given us a lot to discuss as we look towards (hopefully) implementing a Library Services or Computing & Library Services weblog.  Fingers crossed that next week’s Library 2.0 Web Seminar will be as much fun.  I’m keen to run into Stephen Abram at the upcoming SirsiDynix SuperConference in Birmingham as I want to find out what Library 2.0 things the company has in the pipeline — the API layer in the upcoming Horizon 8 release is defintely a welcome step in the right direction.
There was a lot of interest amongst staff in the new NCSU OPAC, especially as a lot of pioneering work on faceted searching was carried at here at Huddersfield by Amanda Tinker and Steve Pollit.  I’m hoping that there might be potential for us to implement some of Amanda and Steve’s research into our OPAC.
We’ve also got a plateful of potential new features to unleash on our unsuspecting students — simple renewals via email, RSS feeds, keyword search alerts, “people who borrowed this…”, and more.  I’m hoping to see if we can’t do some cool stuff with SMS as well.
2006 is already shaping up to be a busy year for the Library Systems Team — we’ll be involved in the RFID implementation and stock conversion (we’re currently out to tender on this) and we’re also implementing Talis Reading List.  One thing I can’t stand is having nothing to do, so I’m not complaining 😀
I noticed Talis have stated that both John Blyberg and myself are developing these things purely for our own patrons/students.  Whilst that’s true to an extent (after all, I work for Huddersfield not SirsiDynix), we’re both freely sharing much our code so that other Innovative and SirsiDynix customers can play around with it if they want to.  Librarians have a long and proud tradition of sharing freely and I don’t intend to buck that trend just yet.
Speaking of which, I’ve been busy working on a Perl module to process the XML output from HIP 2.x/3.x and turn it into a simple Perl data structure.  The XML output from HIP gives you pretty much all the information you need, but the structure is a little unwieldy.  I’m hopeful the module will make it easier to quickly develop cool stuff like RSS feeds and OpenSearch interfaces from the OPAC.  Once I’ve got the module finished (and posted on this site), I’ll also use it underpin the REST interface.  In turn, that should make the REST code more manageable and I might be able to get that code to a stage where I’d be happy to make it available to the SirsiDynix community.
Unfortunately I’m currently suffering from a mild case of tendonitis in my right arm and hand, so I’m not doing as much coding as normal until it clears up.  Still, as long as I can lift a glass of wine and snuggle up to Bry on the sofa in front of the TV, I’m happy 🙂

“Did You Mean?” – part 2

I’ve been keeping an eye on the search terms and suggestions over the last few days and I noticed that we’re getting quite a few people getting failed keyword searches simply because there’s nothing that matches the term.
In particular, we’ve got a lot of students searching for diuretics.  As there’s no matches found, the spell checker jumps in and suggests things like dietetics, natriuretic or diabetics.  That got me wondering if there was a way of generating suggestions relevant to diuretics, rather than words that look or sound like it.
As a prototype, I’ve modified the Perl script to query the web site and parse the response.  The hyperlinks text is compared with known keywords in the subject index and a tag cloud is generated (click to view larger version):

I’ve named it “Serendipity” simply because I’ve no idea what’s going to appear in there — the suggested keywords might be relevant (Hypertension and Caffeine) or they may be too broad (Medicine) to be of use.
Continue reading ““Did You Mean?” – part 2″