Susan is a bookworm and regular library user. She filters the RSS feed of new acquisitions at her local library for the names of authors which she likes and reads it on her phone. One morning a new book by one of her favourite authors appears on the list. She reserves it with a single tap. At lunchtime she walks to the library and picks the book off the shelf. Susan scans the book’s RFID tag with her phone and with another tap she checks it out. (Anyone can check out or renew any item with an RFID-enabled phone but they must use the library’s own scanners to check things back in.) Her phone also shows two local events: the first for the library’s book club and the second for a reading by that author at a nearby bookshop in two months’ time. She adds the book reading to her calendar with a single tap. Two months later, Susan’s openly-licenced, tagged and geotagged photos of the author that she takes at the book signing appear automatically within minutes on the book club’s website, with a credit to her, a link back to her own profile page on the photo sharing website and a link to the author’s page on the local library’s website. Nearly all his books are out.
This all sounds great, the main question to my mind is: how?
It would be interesting to sketch out the stakeholders who would need to work together to make this kind of thing possible.
Also ,what could the library service do to facilitate this or some similar process without the phone app, RFID-enabled phones and bookshop stuff in place? What could they do with RSS/Atom feeds, for instance, and how could this happen?
Most of this is based around the library itself having an open API that permits the following:
- get a list of new acquisitions
- reserve an item for a member
- lend an item to a member
RFID is a bit of a red herring here, perhaps. All that’s required is to be able to easily identify items (eg. books) and members. To use the API, members (via their client applications) will need to be authenticated.
Let’s say the underlying database is something like this with these three tables:
Members
=======
id
name
password
Items
=====
id
date_acquired
author
title
Loans
=====
id
member_id
item_id
date_borrowed
date_due
There would also be a Reservations table which would be similar to Loans but I’ll ignore that.
Checking out a book means creating a new record in the Loans table. If we were happy just to type in a URL into a browser we might be able to type:
http://api.sutton-libraries.gov.uk/loans-create?member_id=12323&password=mysecret&item_id=989834
and the response from the /loans-create script might be:
OK: loan_id=4389834, date_due=2009-03-25
or:
ERROR: You have unpaid fines of £7.34.
or:
ERROR: You have borrowed 10 items and that’s your lot.
While this is probably not how you’d implement this in practice, an API that worked exactly like this would be entirely viable. If such a thing existed, it would be easy for the council or third parties to build applications on top of it, whether for the web, specific mobile phone platforms, desktop OSes or whatever.
Getting a list of new acquisitions as Atom would be very straightforward. It’s just a script that queries the Items table and creates a feed with the most recent x items sorted by date_acquired.
The client application on the mobile phone could just be a (mobile) web app. Cameraphones could scan the optical barcodes that are still on items to identify them and the member’s library card to identify the member. There isn’t really much in the way of new technology needed here, just the willingness of the library’s software vendor to provide an API to their database and for the council to switch it on.