Friday, April 15. 2016
Our staff were recently asked to check thousands of ISBNs to find out if we already have the corresponding books in our catalogue. They in turn asked me if I could run a script that would check it for them. It makes me happy to work with people who believe in better living through automation (and saving their time to focus on tasks that only humans can really achieve).
Rather than taking the approach that I normally would, which would be to just load the ISBNs into a table in our Evergreen database and then run some queries to take care of the task as a one-off, I opted to try for an approach that would enable others to run these sort of adhoc reports themselves. As with most libraries, I suspect, we work with spreadsheets a lot--and as our university has adopted Google Apps for Education, we are slowly using Google Sheets more to enable collaboration. So I was interested in figuring out how to build a custom function that would look for the ISBN and then return a simple "Yes" or "No" value according to what it finds.
Evergreen has a robust SRU interface, which makes it easy to run complex queries and get predictable output back, and it normalizes ISBNs in the index so that a search for an 10-digit ISBN will return results for the corresponding 13-digit ISBN. That made figuring out the lookup part of the job easy; after that, I just needed to figure out how to create a custom function in Google Sheets.
Then I just add a column beside the column with ISBN values and invoke the function as (for example)
Given a bit more time, it would be easy to tweak the function to make it more robust, offer variant search types, and contribute it as a module to the Chrome Web Store "Sheet Add-ons" section, but for now I thought you might be interested in it.
Caveats: With thousands of ISBNs to check, occasionally you'll get an HTTP response error ("
Thursday, November 19. 2015
OCLC recently asked EZProxy clients to fill out a survey about their experiences with the product and to get feedback on possible future plans for the product.
About half-way through, I decided it might be a good idea to post my responses. Because hey, if I'm working to help them, I might as well share it with my friends out in the library systems world So here are a few choice quotes from the comments section of the survey...
In response to a question about the "ease of use" of EZProxy
Nothing that requires configuration via a text file can be classed as "easy to use" these days.
When asked why I scored satisfaction lower than the maximum
The sluggishness to adopt current encryption protocols, and the unwillingness to use dynamically linked libraries, is a major black mark against the product.
What one thing would I change about EZProxy
I would change the license to be an open source (GPL v3 or Apache 2.0) licence. OCLC could still derive revenue from providing hosted solutions and as the well-known trusted name being the product, but small segments of the community could vet the code and contribute enhancements that meet their needs (that they have been asking for without success for years now).
After being asked about the importance of five possible enhancements, three of which reflected a tighter integration with WorldShare services
(roughly) This is why I don't like the proprietary revenue model for the 6.x series--you're investing the revenue in shoring up your WorldShare offerings with features that are not useful to the customers that do not use the WorldShare platform.
Thursday, October 29. 2015
I had fun today. A colleague in Computer Science has been giving his C++ students an assignment to track down an article that is only available in print in the library. When we chatted about it earlier this year, I suggested that perhaps he could bring me in as a speaker to introduce the students to their liaison librarian. It was also my chance to get my foot further into the door with the faculty in the program, as well.
But when I started putting together the supporting materials, I realized that the class was more than half way through the year and that a standard instructional session might be a little low-energy for them. I wanted to do something that would be memorable. And I had just read The Martian by Andy Weir over the weekend, and our campus had just had a visit from Chris Hadfield a few weeks ago, so I thought that delivering a narrative in the style of The Martian might work.
Without further ado, I give you:
The Librarian: an intro for COSC 2947 (C++) Open the Speaker Notes to follow the narrative!
The students were chuckling throughout the presentation, so I think I achieved my goals of increasing the energy level, presenting the material as something memorable, and introducing myself as someone approachable. Or at least giving the impression that I try to have a sense of humour.
As an aside, I'm kicking myself for using Google Slides instead of reveal.js. It's so much easier working with HTML + images instead of a browser-driven proprietary Flash-using-when-it-can mess. It is what it is, however.
Sunday, October 4. 2015
A few weeks ago, I came to the startling and depressing realization that we had screwed up. It started when someone I know and greatly respect ran into me in the library and said "We have a problem".
I'm the recently appointed Chair of our library and archives department, so being approached about a problem isn't surprising. However, the severity of the problem was.
Here's what happened: the person in question had asked for a group study key at the circulation desk, and handed over the university photo ID card to check the item out. The library staff person noted that the name on the photo ID card didn't match the name in the library system. Even though the photo was an exact match, the staff person refused to check out the item to the patron.
The next day, after the person who suffered that indignity approached me, I was able to update the name for the account in the library system in about a minute. While apologizing profusely. And I had to explain why our system had failed this person. A few years back we were able to start automatically polling our university's LDAP server for new university accounts and immediately create the corresponding library system account, with a unique barcode, and update the LDAP account with that new barcode. That removed an entire set of (essentially duplicated) paperwork that new students and faculty used to have to fill out to get a university photo ID card, as well as reduced the amount of personally identifiable information held in our library system to the bare minimum of name, email address, and university ID number.
However, we have never been able to poll the university LDAP server for updates. Admittedly, my primary interest in updates was to synchronize accounts when students become alumni, or staff retire, etc., but in retrospect the ability to synchronize name changes (and email addresses, which are often derived from names) is blindingly obvious and absolutely necessary. When a person goes through the effort of changing their name, they are changing their identity in a very meaningful, significant fashion. To have the identity they have consciously abandoned resurface in various systems is (at best) frustrating, but can also be utterly demeaning. This is not the experience we want for our patrons.
In retrospect, at least two problems have surfaced with this incident:
I've held initial conversations with our university IT department to try and figure out strategies for closing that synchronization gap. In the short term, I'm willing to handle identity changes in a purely manual way (having the Registrar notify me when a change needs to be made). We have also reminded staff to defer to people rather than systems, as the people who make and maintain the systems are fallible (mea culpa).
In the slightly longer term, I'm building the synchronization piece so that we can trigger an update for an individual account at any given time. And I'm posting this in the hopes that it might prompt you to consider your various loosely-coupled systems and the identity management for the accounts within, just in case there are some synchronization gaps that you might be able to close. Because our patrons deserve respect, in person, and in the systems we design to serve them.
This work is licensed under a Creative Commons Attribution-Share Alike 2.5 Canada License.