home
  • About
  • Program
  • guest book
    transforming academic communities
    with new tools of the social web

    Patrons in the driver’s seat: Giving advanced tool-sets to library patrons

    Friday, April 14th, 2006

    John Blyberg
    Ann Arbor District Library
    http://blyberg.net/

    As I’m writing this, Newsweek is running an issue about Web 2.0 entitled, “Putting the ‘We’ in WEB”. Beside the fact that the mainstream media now thinks it’s safe to start spinning the web as they did during the dotcom era, there really is something to this new phase of evolution in information access. Tim O’Reilly calls is “harnessing the collective intelligence” which sounds ambitious, as Newsweek’s authors cede, but there it is: ripe for the plucking.

    As libraries, we can look at sites like Flickr, deli.cio.us, and MySpace and see that they are wildly succesful. We can even take advantage of their services and APIs to enhance and grow our own portfolio of offerings, but the question remains, can we do this for ourselves? I believe that we can because we have several factors going for us that our commercial counterparts do not. First, we have local communities, second, we’re not after advertising dollars, and third, we’ve got physical spaces. The trick is assembling the right components to create unique, immersive experiences for our patrons both online and off. By adopting a long-term strategy of creting an infrastructure that promotes open access to information, AADL has had a fair measure of success in creating personalized “spaces” for patrons. These space are not portals, because, unlike portals, AADL’s offerings act more like a control panel for the library experience.

    Warning: I am going to use some technical jargon in this presentation, but I’m using it while being mindful that you, reader, may very well not be a techie. As such, I’ve linked them to their respective explanations. My hope is not that you’ll understand the concepts, but that you’ll be able to file the terms somewhere in the back of your heads with a little bit of context so that when you encounter them again, you’ll enjoy some measure of understanding their context.

    Getting your house in order

    I mentioned that AADL’s was a long term strategy–one that began several years ago with an initiative to completely overhaul both the network and server infrastructure and a commitment to adopt open-source tools wherever feasible. By ensuring that our environment was condusive to modular growth, we put ourselves in a position that allows us to bring enhancements and features “to market” very rapidly. It was clear to me, when I joined AADL, that the attitudes and environment of library culture were very condusive to extreme programming and I am lucky enough to have a supervisor who is on the same page. Cohesion is only part of the solution however. Putting together a development environment takes some forsight and bringing any of the features I talk about today to fruition requires a fluid, viable development environment.
    In AADL’s case, we opted for an entirely open-source set of tools: Linux, Apache, MySQL, and PHP (an assemblage sometimes referred to LAMP). Being familiar with these technologies is vital because simply getting them installed can be a challenge for the uninitiated. In addition, a development program needs to encompass version control and delineation between live and testing as well as the roll-out process. Taking the time to do this properly ensures that the best possible product is presented to the public.

    Where to begin

    Long before launching our website, I spent a good six months testing and playing with various open source content managment systems (CMS) and finally settled on Drupal because of it’s intrinsic API, taxonomy system, unique and lightweight approach to content delivery and large support base. Of course, ADD MORE HERE

    Because we want to create an environment that is unique as well as functional to the library patron, single sign-on is essential. Without it, the patrons’ online experience immediately becomes a fragmented mess. The problem we ran into is probably the same problem other libraries will as well–it was the fact that we chose Drupal as our CMS, but our automation system, III’s Millenium, provides only the most basic authentication APIs and does not provide an API at all for conducting business within the OPAC (online public access catalog) such as fetching checkouts and holds or requesting material. This will pose a challenge. In our case, a piece of middleware (an invisible piece of software) actually performs a “reverse proxy” against the III server, meaning that we are able to hijack all traffic going to and from it. The middleware utilizes PHP’sCURL implementation and does the trick nicely. Once we were able to solve the single sign-on problem, all the tools were in place to begin creating any service we could concieve of.

    Designating a control center

    To begin, a major section of the website was dedicated to managing user affairs. If you look along the top navbar of the AADL website, you’ll notice the rightmost option is the “My Account” area. Clicking on this will take a logged-in user to the accounts section which is, in essence, a dashboard view of that user’s account. Much like other library systems, patrons can view their holdings and requests here. They can also customize the view so that they see only a few items, sorted by due date. From this page, patron’s have the option of renewing items, removing material from their holds list, changing their default pickup locations, visiting their checkout history, viewing their “virtual card catalog” collection, or managing their wireless devices. Most of these advanced features go unnoticed by many users, but a growing group of die-hard library patrons are begining to rely heavily on this library control panel. It allows them easy access to virtually every aspect of their online library experience both on and off the premisis.

    The basics

    The default pickup location was something we added in order to enhance III’s hold process. Out-of-the-box, Millenium’s hold process requires that a requestor specify a pickup location for every item. This can become a tedious task if a large number of items are being requested. By using the solution developed for single sign-on, we can provide patrons with the an option to select which pickup location should be pre-selected for each request. As with many of our services, this is an opt-in selection, meaning that there is no default and selection is not mandatory. This particular option does not neccesarily carry with it any privacy concerns.

    You’ll notice in the screenshot, that the library card number is configurable field. This is because new Drupal accounts do not require a card number by default. We want to give anyone the opportunity to create an account on our website, no matter where they are from. Because we’ve created our services to be fairly ubiquitous, they can be enjoyed by pretty much anyone. I think that’s an important consideration when developing your new website policies. Bear in mind that the more participants you attract to a service, the better it becomes.

    Keeping track

    Checkout history, on the other hand, does. III’s built-in checkout history is an opt-in system and we were able to piggyback some advanced features onto their system while integrating the option toggle into Drupal’s framework. The checkout history (or “record check-outs” option) allows users to maintain an inventory of items they have previously checked out. Unfortunately, III’s implementation only allows users to view a tabulated list of their histories. In anticipation of some very large histories, we wanted users to have the option of searching and filtering. After all, what good is the data if you can’t find what you’re looking for. The result is a system that gives the patron complete control over their entire history. Patrons can search, sort, and filter results. If they wish to delete one or all records, they can, with the assurance that the data is dispatched from our system permanently.

    Opening the front door

    I can’t begin to approach the topic of library blogs as well as Michael Stephens can. I’d suggest that readers become familiar with his work to evangelize library blogs as his coverage is complete. Early in the website design process, we made the decision that blogs would constitute the nucleus of our dynamic website content. In addition, we wanted to enable commenting on those blogs. We really had no idea what kind of response we would get–of what form that response would take. Just a brief look at our Director’s Blog will illuminate the fact that the blogs promote a constant two-way dialogue between our director, Josie Parker, and the public. Of course, making this succesful requires a director who is courageous enough to regularly face the public head-on. But if you’re not ready to go there, be sure to take a look at some of AADL’s other blogs that are staffed by some very clued-in, bright minds. Virtually every material type garners it’s own blog. New blog entries are added several times a day. Often, blog entries serve to promote what, otherwise, may be obscured by the bigger names. In essense, blogging your material taps into the long tail by putting oft-overlooked titles in front of eyeballs.

    Feeding frenzy!

    Bloggers know that RSS feeds go hand-in-hand with blog content as a means of syndication. Over the past months, we’ve worked to provide a number of useful feeds, not just for our blog content, but for patron and catalog data as well.

    One of the major benefits of modular programming with APIs is the ability to reuse code frequently and easily. We were able to do just this when we write the code that creates a feed for patron checkouts and holds. These particular feeds were interesting and required a little bit of tought as to how we would handle authentication. We, rather quickly, determined that a token-based feed would be preferable because it would allow users to share the feed if the so wished. The feeds can be very helpful in tracking material due dates and hold queue positions.

    The catalog search feeds proved to be a little more of a challenge to produce, but have yeilded some very intersting results. Each feed is essentialy it’s own, self-contained, custom syndication. Creating a feed from the catalog is as easy as doing a search, then subscribing to it via the RSS button that appears on the top of each hit-list. Because results are sorted by catalog date, any new material matching that search will appear at the top of the feed, allowing subscribers to be alerted to new items in the catalog. We’ve discussed using this feed itself to offer a service that will automatically place holds on items for patrons. Many times, a feature like this will open the door to new posibilities you may not have previously considered.

    If our patrons aggregators aren’t full enough by now, they may find some satisfaction in our top and new item feeds. These are updated nightly and are vital tools for disseminating that information. These feeds tend to be our most popular and show up on Ann Arbor residents’ websites. If your library makes this information available, creating an RSS feed can prove to be a relatively simple excercise. Many PHP tools, like MagpieRSS, exist to do just that.

    Embracing nostalgia

    What started as a side project to kill a little time, quickly grew in scope and resulted in a popular virtual card catalog service. There are essentially two components to the card catalog system. First, are the cards themselves. I’ve written a full description of the cards on my blog. Essentially, I wanted to gauge community response to social interaction within the OPAC and social software in a library setting. Each catalog record can dynamically create a vintage-looking catalog card on-the-fly. By themselves, they do look quite authentic, but accompanying them is a tool that allows users to write marginalia comments on the cards. It’s a fun little service. The second component gives the user a measure of control over what happens to those cards. Users can add cards to a personal card catalog for later retrieval. Once card are added to a personal catalog, they may be viewed any time and even sent via email to anyone vith an attached note. As the project grew in scope, patrons were given the option to share their card catalogs publically via a unique URL. In some ways, the service hails to LibraryThing’s published catalog service. In the future, RSS feeds and the ability to search, sort or filter the cards will be added.

    The Card catalog service has been extremely popular, garnering thousands of marginalia entries and just under a thousand card collections. Given the fact that it is an unadvertised service, those numbers are quite remarkable. Those numbers also support my theory that library websites can become a destination as well as a resource and the OPAC can play a key role in making that happen.

    Cutting the cord

    Shortly after I began at AADL, we were given the green light to go ahead and implement system-wide WIFI coverage. Knowing this, and simulatneously charged with the job of redesigning the network from the ground up, I was put in the serendipitous position of being able implement an infrastructure that was condusive to guest access, development, future expansion, and software development for the enterprise. At the heart of our network is a linux firewall utilizing a very powerful piece of open source software called IPTables. Because IPTables is open-source and insanely configurable, it slid right in to our development agenda and allowed us to write our own guest access system with PHP and MySQL.

    When a device that is unknown to the system tries to access a web page for the first time, it is redirected to an authentication screen–much like you would find at a hotel hot spot. Users are prompted to enter their library card number (guest numbers are available from our information desk clerks), at which point they are free to use the service. Devices registered by card holders are registered for a full year. During that time, they will never need to enter their card number again. Guests are registered for one month. The process is painless and, given the thousands of registered users, we have very few support requests for it.

    There are limitations to this model, however–limitations any library that offers wifi should consider. If you follow Engadget, you’ll know that, with increasing frequency, new devices are being produced that take advantage of wifi, but do not neccesarily have a web browser. These devices range from gaming platforms like the Nintendo DS to Skype VoIP phones. While some libraries may ban such devices outright, we believe that we should accomidate them, but their lack-of-browser limitation leaves them out cold with our default registration system. Enter the Advanced Wireless Device Management console.

    The WIFI device management console is a tool that is presented to our cardholders on our web page. The tool allows users to view a list of all their registered devices, add a description for each, delete them, and even renew their registrations. Perhaps its most useful functionality, however, is it’s ability to add new registrations manually

    Game on!

    Our IT manager, Eli Neiburger, has been the brains behind what is possibly the most succesful library gaming programs in the country. The spectacular aduio/visual experience we provide to the teens, however, couldn’t happen without the software to back it up. Of course, that software has a web component.

    If you’ve ever tried to put on a gaming tournament, you’ll doubtlessly be aware that registration and scoring can be a very complex process. When you draw over one hundred participants, you need a way to manage the chaos. Our AADL-GT software is now is its third iteration and can be seen on the AADL-GT website. A quick glance at the GT page will show how blogs, scoreboards, and registration all come together to build an experience that lasts well beyond the day of the event. One blog entry triggered over 460 comments! The question you need to ask is, how often do teens spend this much time on a library website?

    Picture Ann Arbor

    The Picture Ann Arbor (Picture A2) service is a little like Flickr in that it allows users to upload their own photos. The online service is occasionally coupled with scanning sessions on the library premise. The purpose of this service is to begin building an archive of Ann Arbor photos from both past and present. Picture A2 is run on the open source project, Gallery 2, utilizing a Drupal plugin as the glue that binds the two projects together.

    Putting data in physical spaces

    AADL-GT is a prime example of how ubiquitous data can add value and immersion to the web site experience. How about putting it to work in physical spaces? Electronic signage is something we’ve been serious about for several years now. The project has been dubbed “Greetsaver” and began as a flash application using an open source middleware library called AMFPHP. It looked very much like a dashboard, pulling together news, local weather, and library events. With our recent Pittsfield Branch opening, came a second iteration “written” or created, rather in Apple’s Quartz Composer by Eric Klooster. The new version slides eloquently through event listing and takes advantage of the aformentioned top and new items feed to display new and hot material. As visitors enter the branch, they are greeted by this software running on a large LCD panel where they can glean some cursory information from it before they head off into the stacks. What’s important here is that there is zero barrier to entry for this service as far as the patron is concerned and it is both useful and, once again, let’s our data play out in the library experience.

    Movie #1 - Welcome Screen (mp4) :: Movie #2 - Book Display (mp4) :: Source download

    For the geeks

    Ann Arbor has its fair share of techies who tend to respond to techie interfaces like that of our REST interface. REST (Representational State Transfer) is a way of allowing software to talk to other software via friendly XML. Essentially, it’s a computer programming tool that talks to our systems. Our REST interface sits atop our catalog and within the Drupal framwork and allows developers to create applications, plug-ins and mashups with our data. You’ll see an example of this with Ed Vielmetti’s wall of books [link to his presentation], and some of his other Superpatron projects. An XSLT-formatted example would look like this.

    Providing developer tools to the general public represents a completely new attitude toward library boundaries. For instance, if a library has a number of developers hacking on a REST interface, producing software that can sit in a task bar or bezel, and that application is passed around, suddenly, the library becomes immersed in a user’s computing environment. This effectively blurs the edge of our reach. I believe this murky area holds a tremendous amount of promise as a venue for library interaction.

    What’s next?

    It’s been an exciting time at AADL as several years of work has finally culminated in a product that resonates with an atetntive public. We can’t, however, lull ourselves into a sense of complacency and believe that our offerings will suffice indefinately, or even over the next few years. Becuse the nature of our online world changes constantly, so must our approach to delivering service. How we go about assembling the product should also be an important consideration. At AADL, we’ve chosen to abide by the tenets of the open source philosophy because it’s very compatible with the philosophy and mission of libraries themselves, not to mention the flexibility it affords.

    We are also keenly aware that AADL is blessed with the financial and human resources required to pull off the results that we do. By sharing our experiences, our knowledge, and our code wherever possible, we hope to lower the barrier for entry into this arena.

    Just as each library community is different, so should our deliverales be, but at the heart of it all should be the idea that we’re building and fostering a community. In return, our users wil be stewards of an online palace of information that fronts for tangible material–books that illuminate, movies that stir, and music that moves us.

    Building a Wall of Books

    Friday, April 14th, 2006

    Edward Vielmetti
    University of Michigan School of Information
    http://vielmetti.typepad.com/superpatron/

    Wall of Books

    One of the popular destinations in any library that is regularly acquiring new books is the shelving where they are placed before they make their way into the stacks. These new books collections are usually placed in high traffic areas, and I’ve seen them highlight featured books or otherwise do much more in the way of attractively displaying what’s available than standard dense spine-out stacks shelving.

    Library online catalogs, sadly, don’t often do this display justice. A long list of new titles is hard to make your way through if you don’t know really what you’re looking for, and it’s tough to display enough text on a small screen to come anywhere close to the visual impact of well displayed covers. This is an account of how I recreated the “wall of books” that I don’t see quite often enough at the Ann Arbor District Library.

    RSS feeds from the catalog

    I was fortunate in starting out with this project because a lot of the data was available to me as a patron without requiring any new coding by tech librarians or any new development on the catalog. The Ann Arbor catalog has a list of new books and popular books available on its web page, and you can readily page through it 10 or 20 at a time. More interesting and ultimately more useful was the availability of this same information as an RSS feed, with full information about author and titles and even links to book cover images.

    I won’t go into RSS as a format, but for the purposes of this discussion it’s useful to know two things about what made it so helpful. First, it’s relatively easy to parse, and doesn’t require lots of code to untangle session IDs or tables or other display formatting codes that are necessary for an online catalog display. Grabbing an RSS feed from the catalog is one line of code from the Unix shell (use “curl” or “wget”) once you have located the source of it.

    The second and ultimately even more important part of the equation is that every book search in the Ann Arbor catalog has an RSS feed associated with it. This allows for novel combinations not anticipated by the site designers. I can construct a URL that points to new books on knitting and have that collection returned. It depends on good cataloging, and some tasks (like returning only non-fiction) are harder than you’d like, but generally as long as you’re trying to get a slice of the bookshelves that are already well described it’s easy.

    The direction that’s visible in the search area which will hopefully show up in more library catalogs is support for OpenSearch, a format built up around RSS that standardizes how search terms get put into URLs so that RSS formatted results come back. If the Ann Arbor catalog had supported OpenSearch from the start, the tools I built could have been the start of a solution for any similar catalog independent of vendor.

    Assembling a page of books

    Identifying the appropriate search string and getting RSS formatted results back is only the first step in this process. The task remained to format the results neatly on the page to get the appropriate visual impact of having a screen full of book covers.

    I cheated here, and rather than building proper tools that unpacked the HTML inside of the RSS in some clean and elegant way, I resorted to writing a few lines of obscure but powerful Unix regular expressions. The actual code is very simple - it looks for image links in the RSS stream, and deletes everything else in each entry until just the image and a link to the catalog entry remain. The alternative approach, which is on the docket for this code’s rewrite, is to use an HTML library that goes through the “document object model” or DOM in each entry and picks up the right page elements. That would have been 40 or 50 lines of code instead of 4, so it’s best left for the start of something more ambitious.

    In some sense the current approach is much too simple, and comments from low vision readers of my Superpatron blog (who view pages with a screen reader and who are interested in what’s new) suggest that keeping a lot more text information hidden away for access will be useful. Given a book image there’s all kinds of catalog information that you could have pop up when you mouse over the cover, and with Yahoo’s new user interface library it isn’t even as hard as you’d think to imagine a nifty catalog interface where you drag books that you want over to the checkout area. But that’s also not 4 lines of code, so it didn’t get done in one evening.

    From prototype to service

    The final piece of this effort is getting it into the hands of people who might actually want to check out books. The initial tools and prototypes I built on my Mac iBook laptop, and while I was content to get that done for the sake of doing it, it seemed reasonable to want to make it more visible.

    The first thing I did once I had something that was worth showing off was to post an image to Flickr and link to it from my blog Superpatron. That had the immediate impact of being something that people could see even without me writing any more lines of code. Getting images of work in progress into the hands of a wider audience is very helpful in gaining feedback, and that particular screen capture has been seen 500+ times to date.

    A second part of the process is to secure server space on my personal web site and to automate the build process for updated collection snapshots so that it would be a single command to push out the current set of new issues and not a long series of half-remembered cryptic commands. I’m most of the way there in turning that into a one line process, which could then be added to a Unix “cron” script and done completely automatically.

    It would be possible to update the new books list in real time every time someone visited the page, but that seems to be a bad direction to follow and I’m not planning that tack. For one thing, it really doesn’t change more than a few times a week as catalog changes are loaded, and it would be a waste of time and effort and bandwidth to refresh the page from scratch just in case it changed. Serving up the page from a cache is more reliable and takes a lot less overhead.

    Book image sources

    The images in the Ann Arbor wall of books are linked from Syndetics, the vendor who provides them to the Ann Arbor District Library. In general they are of good quality, and I use them only because the AADL has licensed them already.

    A second source for cover art that may be more accessable to someone building this outside of a library context is Amazon. Amazon’s artwork is neatly retrievable by ISBN and is available on reasonable terms as long as you make a link to their store for purchasing the items.

    A noticable omission in my efforts is a total inability to get a good new DVD wall in place because of missing cover art. The best source for movie artwork is the Internet Movie Database (IMDB), which is owned by Amazon; so far, however, I have not been able to come up with a shared key between the two systems to help me go directly to the artwork from any catalog data.

    Related work

    Several organizations have pursued related work, and I’ll share those here.

    Dave Pattern from the University of Huddersfield in the UK has pulled out information from recently circulated books from their catalog and used a display that focussed largely on cover art instead of a list of titles. He’s working in an experimental part of their catalog, and there’s a degree of fun in his approach that’s not generally what you’d expect in OPAC design.

    Eli Neiburger and John Blyberg have been tremendously helpful at the Ann Arbor District Library as I nudged them into adding the data into their existing RSS feed that made this work so easy. For every line of code I write, John writes at least a hundred, but then again he’s library staff and I’m just a patron.

    Eric Klooster at the AADL has written a Quartz Composer application for the Macintosh that takes these same new book feeds and animates a series of book cover images for patrons waiting at the circulation desk at the brand new Pittsfield branch of the library.

    Some closing thoughts

    Book covers these days are quite attractive, especially popular works - they have to be, to attract the eyes of buyers as they are piled high in bookshops for their brief shelf lives before being relegated to the stacks and then mercilessly remaindered.

    By taking advantage of cover art already in library catalogs, and by using RSS and search techniques to zoom in on items of interest, I was able to put together an attractive and useful “wall of books” for the Ann Arbor District Library. The display is purely visual and does not have a word of text, and early user comments suggest that it’s useful but that more work is needed to add back in detail and accessability.

    Getting reusable data from the library’s catalog was key to this effort, and it points to a proper direction for development efforts where library software starts to track popular standards efforts whenever possible.