Archive for October 2009
Free Association Around Ranganathan’s Five Laws of Library Science
Picking up briefly on Peter Murray Rust’s exhortation to the keynote attendees at ILI2009 that libraries must rediscover Ranganathan’s Five Laws of Library Science to their heart if they are to survive:
I thought I post some free association thoughts on what the five laws say to me. Note that I’m not a librarian, have never studied library science and don’t normally work for the library, though I currently am on an Arcadia Fellowship with the Cambridge University Library. Which is to say, my interpretation may not be the conventional, or accepted one…
So here we go:
Books are for use.
Hmmm… Books are for use… they are they to be used… they exist to be read… they exist to impart knowledge, information, emotion. They exist to communicate. As such, maybe they are social objects? But maybe also, they contain information or knowledge that enables things to be done, ideas to be understood? Maybe they are the next step in helping us do something, achieve something?
In a 2003 blog post outlining ideas for what was to become The Search: How Google and Its Rivals Rewrote the Rules of Business and Transformed Our Culture, John Battelle describes Google’ssearch operation as a database of intentions:
The Database of Intentions is simply this: The aggregate results of every search ever entered, every result list ever tendered, and every path taken as a result. It lives in many places, but three or four places in particular hold a massive amount of this data (ie MSN, Google, and Yahoo). This information represents, in aggregate form, a place holder for the intentions of humankind – a massive database of desires, needs, wants, and likes that can be discovered, supoenaed, archived, tracked, and exploited to all sorts of ends. Such a beast has never before existed in the history of culture, but is almost guaranteed to grow exponentially from this day forward. This artifact can tell us extraordinary things about who we are and what we want as a culture.
That is, every search we make is an expression of some sort of intention. There is a point to every search.
So maybe in the same way, a book might be able to satisfy some intention? Or maybe I’m getting ahead of myself, because second up we have:
Every reader his [or her] book.
So at any point in time, there is a book that I need, that will somehow “help”? This ties back to a book that can satisfy an intention I have, perhaps? My current problem, or situation, is unlikely to be one that has never been met before, never been addressed by someone, somewhere, in some particular book?
Every book its reader.
And conversely, at any point in time, for every book there is someone who would benefit from reading that book? The book is a satisfaction of some intention? There is someone who would benefit from being recommended that book, maybe? (The ideal search engine would be an answer engine, would return only the single answer you need for a particular query, maybe?)
Save the time of the User.
Which means what? Give them the book that they need, in a timely fashion? Make it easy for them to discover the right book, or the right part of the book, that they need, with the minimum of fuss, or noise in the recommendations? Give them full text search, extended indexes in the form of semantic tags and on-demand access, maybe?!;-)
The library is a growing organism.
The library is a living thing. As a living thing, it must adapt to survive. As a living thing, it inhabits an ecosystem, a network, a network characterised by the making and breaking of new and old connections, by the flow of resources across those connections.
Hmmm… so how are these laws actually interpreted by the Library Science community, I wonder? And to what extent do they apply in the context of search engine queries, results and the resources pointed to by those results? Would it be fair to say that it is Google, rather than Library, that has taken these laws to its heart? Would it be fair to say that several of the laws at least hint at making effective recommendations to users, as Lorcan Dempsey suggests in Recommendation and Ranganathan?
Treemapping Council Committees Using OpenlyLocal Data
Some time ago, I started exploring how treemap representations might be used to provide a quick overview of the make-up of the membership of local council committees (Glanceable Committee Memberships with Treemaps).
Following a lazyweb request to @countculture about expressing complete council committee membership data from Openly Local (Topical Versions of Local Council Websites… Give Us the Data and We’ll Work It For You), and the rapid fulfilment of that request ;-), here’s a proof of concept about how to use that data to power a treemap from the Javascript InfoViz Toolkit (JIT) to provide a glanceable display of the make-up of Isle of WIght Council committees, colour coded by party:
Each committee is represented as follows:
{children: [
{children: [],
data: {
$area: "3", $pcolor: "purple",members:"Jonathan Francis Bacon, Paul Fuller, Heather Humby, "}, id :"ccl12_0", name: "Independent"
},
{
children: [],
data: {
$area: "5", $pcolor: "blue",members:"Ivan Bulwer, Susan Jane Scoccia, Albert Taylor, Jerry White, David G Williams, "},
id :"ccl12_1",
name: "Conservative"},
{
children: [],
data: {
$area: "1", $pcolor: "darkorange",members:"Colin Richards, "},
id :"ccl12_2",
name: "Liberal-Democrat Group"}
], data: {$area: 9}, id: "ccl12", name: "Licensing and General Purposes Committee"}
With another quick bash at the code, I should be able generate these views on the fly from the JSON data feeds provided on the OpenlyLocal site. (At the moment, the route I take to generate the Javscript object that powers the treemap is a really clunky one:-(
What never ceases to amaze me, though, is how a tweak from one representation of a dataset (that is, the JSON data published by OpenlyLocal), to another (the JIT treemap representation) allows the creation of interactive visuliastions as if by magic :-)
If you want to play with your own treemaps in the meantime, this bit of Javascript will produce a simple representation of committee. member and party data that can be visualised within Many Eyes WIkified:
for (var i=0;i< c.committees.length;i++){
for (var j=0;j< c.committees[i].members.length; j++){
document.write("\""+c.committees[i].title.replace("&", "and")+"\""+","+"\""+c.committees[i].members[j]["first_name"]+" "+c.committees[i].members[j]["last_name"]+"\""+","+"\""+c.committees[i].members[j]["party"]+"\""+"<br/>");
}
}
(where c is the javascript object that is published as the JSON feed from a committee page on OpenlyLocal, such as this one for the Isle of Wight).
Here’s an example:
Whilst this treemap doesn’t allow you to fix the colours in the way that the JIT component does:
TM.Squarified.implement({
'setColor': function(json) {
return json.data.$pcolor;
}
});
($pcolor is a variable I set for each committee member saying what colour should be displayed for them…), the Many Eyes Wikified does allow you to manipulate the tree representation that powers the treemap, e.g. by reordering the way in which the different elements are displayed:
What I really need now is a way of creating the hierarchical JIT objects on the fly from a table based representation… Hmmm….
Mapping Recent School Openings and Closures
Just after I put together the pipework for Getting Started with data.gov.uk, Triplr SPARYQL and Yahoo Pipes, I also cut and pasted some of the code from a previous map based mashup to demo how to make a SPARQL call via a pipe that calls on the UK Gov education Linked Data datastore from within a web page, and then display the geocoded results on a map.
Here’s the demo – School openings and closures in the UK, 1/1/08-1/10/09
If you View Source, you’ll see the code boils down to:
//schools closed between 1/1/08 and 1/10/09
q="SELECT ?school ?name ?opendate ?closedate ?easting ?northing WHERE {?school a sch-ont:School; sch-ont:establishmentName ?name;sch-ont:easting ?easting; sch-ont:northing ?northing; sch-ont:establishmentStatus sch-ont:EstablishmentStatus_Closed ; sch-ont:closeDate ?closedate ; sch-ont:openDate ?opendate . FILTER (?closedate > '2008-01-01'^^xsd:date && ?closedate < '2009-10-01'^^xsd:date)}"
u=ur+encodeURIComponent(q);
getPipeGeoData(u, 'parseJSON_purple');
In all I make three calls to a pipe that calls on the data.gov.uk education datastore, one for schools opened between 1/1/08 and 1/10/09:
SELECT ?school ?name ?opendate ?easting ?northing WHERE {?school a sch-ont:School; sch-ont:establishmentName ?name;sch-ont:easting ?easting; sch-ont:northing ?northing; sch-ont:openDate ?opendate . FILTER (?opendate > '2008-01-01'^^xsd:date && ?opendate < '2009-10-01'^^xsd:date)}
one for schools closed between 1/1/08 and 1/10/09:
SELECT ?school ?name ?opendate ?closedate ?easting ?northing WHERE {?school a sch-ont:School; sch-ont:establishmentName ?name;sch-ont:easting ?easting; sch-ont:northing ?northing; sch-ont:establishmentStatus sch-ont:EstablishmentStatus_Closed ; sch-ont:closeDate ?closedate ; sch-ont:openDate ?opendate . FILTER (?closedate > '2008-01-01'^^xsd:date && ?closedate < '2009-10-01'^^xsd:date)}
and one for schools proposed to close:
SELECT ?school ?name ?easting ?northing ?opendate WHERE {?school a sch-ont:School; sch-ont:establishmentName ?name;sch-ont:easting ?easting; sch-ont:northing ?northing ; sch-ont:establishmentStatus sch-ont:EstablishmentStatus_Open__but_proposed_to_close; sch-ont:openDate ?opendate . }
(I cribbed how to write these queries from a Talis blog: SPARQLing data.gov.uk: Edubase Data;-)
The results of each call are displayed using the different coloured markers.
(The rest of the code is really horrible. Note to self: get round to learning JQuery.)
GONE

Site Limited Search in Delicious…
Whilst mulling over the extent to which I could use the delicious social bookmarking service to provide an ad hoc tagging tool for web pages*, I wondered whether or not it was possible to do a site limited search in delicious.
And apparently, it is possible, using an obvious (and guessed at) notation: “open access” site:ac.uk
The search appears to return results of bookmarked pages limited according to the site: search limit.
So has the OUseful.info blog been bookmarked at all over the last month?
Hmmmm…. :-)
* so for example, I can look up the delicious bookmark details for a page given its URI in the following way: http://feeds.delicious.com/v2/{format}/url/{url md5}
Here are details of a pipe that handles the MD5 encoding for you and gives you a feed relating to who has recently bookmarked a given URL: DeliURL pipe
PS the url: search limit also works, so it’s easy enough to see who’s bookmarked a particular page with a limited search on a specific URI, rather than having to go the MD5 lookup route:
Unfortunately, the delicious search results pages don’t natively provide an RSS or JSON feed output… but I wonder: can we get those via YQL? Arghh, of course they don’t – the search results pages disallow robots, even Yahoo’s own robots:-(
Camsis Codes…
So as one of the things on my Arcadia project to do list, I’ve started looking for consistent identifiers that might act as useful pivot points between various bits of the Cambridge’s online offerings (the public stuff on www.cam.ac.uk, as well as the Raven authenticated, password protected stuff on the de facto VLE, Camtools.
Ideally, I’d like to find to some Crown Jewels, something like OU course codes, for example, but I fear that is not going to be possible…
Anyway, it’s still early days yet, so as w have a meting with the Management Services Information Division, MISD tomorrow, to see whether or not they have data that we might use to generate affiinity strings for users of the Newton Library Catalogue, et al., I thought I’d have a look at whether different bits of their Student Administration and Records: CamSIS Coding Manual link together at all:
The diagram was created by cut’n'pasting data from the coding scheme web pages, then using Graphviz to chart the links.
For what it’s worth, here’s the dot file:
graph G {
"A01" [fontcolor = red];
"B01" [fontcolor = red];
"B03" [fontcolor = red];
"D01" [fontcolor = red];
"D03" [fontcolor = red];
"D05" [fontcolor = red];
"D06" [fontcolor = red];
"D07" [fontcolor = red];
"D08" [fontcolor = red];
"F01" [fontcolor = red];
"F02" [fontcolor = red];
"H01" [fontcolor = red];
"H03" [fontcolor = red];
"J01" [fontcolor = red];
"J02" [fontcolor = red];
"K01" [fontcolor = red];
"M01" [fontcolor = red];
"S01" [fontcolor = red];
"Z02" [fontcolor = red];
"Z04" [fontcolor = red];
"Z05" [fontcolor = red];
"Z06" [fontcolor = red];
"Z07" [fontcolor = red];
"A01" -- "Cambridge Colleges";
"B01" -- "County Codes";
"B03" -- "Country Codes";
"D01" -- "Current UCAS Courses";
"D03" -- "Current/Archived UCAS Courses";
"D05" -- "Academic Careers";
"D06" -- "Academic Programs";
"D07" -- "Academic Plan Types";
"D08" -- "Academic Plans";
"F01" -- "Awarding Bodies";
"F02" -- "GCSE Subject Codes";
"H01" -- "Subject (Tripos) Codes";
"H03" -- "Examination Paper Codes";
"J01" -- "Grading Codes";
"J02" -- "Further to Class Codes";
"K01" -- "Degrees";
"M01" -- "Faculties and Departments";
"S01" -- "Source of Fees";
"Z02" -- "Ethnicity Indicators";
"Z04" -- "Disability Indicators";
"Z05" -- "Program Status Codes";
"Z06" -- "Program Action Codes";
"Z07" -- "Program Reason Codes";
"A01" -- "College Code";
"A01" -- "College Description";
"B01" -- "County Code";
"B01" -- "County Description";
"B03" -- "Country Code";
"B03" -- "Country Description";
"D01" -- "Course Code";
"D01" -- "Course Description";
"D03" -- "Course Code";
"D03" -- "Course Description";
"D05" -- "Academic Careers Code";
"D05" -- "Academic Careers Description";
"D06" -- "Academic Program";
"D06" -- "Academic Program Description";
"D06" -- "Academic Careers Code";
"D07" -- "Academic Plan Type";
"D07" -- "Academic Plan Type Description";
"D08" -- "Academic Plan";
"D08" -- "Academic Plan Description";
"D08" -- "Academic Plan Type";
"F01" -- "Awarding Body Year";
"F01" -- "Awarding Body Sitting";
"F01" -- "Awarding Body";
"F01" -- "Awarding Body Description";
"F02" -- "GCSE Subject Code";
"F02" -- "GCSE Subject Code Description";
"F02" -- "EBL Subject Code";
"H01" -- "Subject Code";
"H01" -- "Department Name";
"H01" -- "Department Code";
"H03" -- "Subject Code";
"H03" -- "Exam Catalogue Number";
"H03" -- "Exam Title";
"J01" -- "Grading Scheme";
"J01" -- "Grading Basis";
"J01" -- "Grading Code";
"J01" -- "Grading Description";
"J02" -- "Subject Code";
"J02" -- "Further to Class Code";
"J02" -- "Further Class Description";
"K01" -- "Degree Code";
"K01" -- "Degree Code Description";
"K01" -- "Degree Short Description";
"M01" -- "Department Code";
"M01" -- "Department name";
"S01" -- "Fees Source Code";
"S01" -- "Fees Source Description";
"Z02" -- "Ethnicity Code";
"Z02" -- "Ethnicity Description";
"Z04" -- "Disability Code";
"Z04" -- "Disability Description";
"Z05" -- "Status Code";
"Z05" -- "Status Description";
"Z06" -- "Programme Action Code";
"Z06" -- "Programme Action Description";
"Z07" -- "Programme Action Code";
"Z07" -- "Programme Action Reason";
"Z07" -- "Programme Action Reason Description";
}
The next step is to see what else we can link into this, and maybe also draw boundaries around various clumps according to which unit owns those particular sets of data (MISD, the Computing Service, the Library, Caret/Camtools, the Departments, Cambridge University Press etc etc.). After all, even if we can find one data set that does manage to key into another, political or data protection boundaries may make it…. difficult to link those data sets and get the data flowing…
Retail Learning
So it seems that Lord Mandelson “says he expects students to adopt a more consumer-led approach to their university education” (Mandelson backs consumer students).
So as well as students championing their (consumer) rights, I guess that means the marketing folk will also get the opportunity to hatch all sorts of new marketing plans…
…like Tesco ClubCard Deals:
and Gift Vouchers:
As well as the sweatshirt and scarf merchandise, there’ll also be the course materials shop?
And I guess a second hand market in course materials will also emerge?
So what’s new? ;-)
Getting Started with data.gov.uk, Triplr SPARYQL and Yahoo Pipes
RDF, SPARQL and the semantic web are too scarey for mortals, right? So here’s a hopefully easier way in for those of us who are put off by the syntactic nightmare that defines the world of formal Linked Data: Yahoo Pipes :-)
A few weeks ago, I was fortunate enough to get one of the developer preview keys for data.gov.uk, the UK answer to Tim Berners Lee’s call to open up public data.
The UK data.gov.uk solution is currently a hybrid – a growing set of separate Linked Data stores (hosted on the Talis Platform, I think?) covering areas such as education, finance and transport; and a set of links to CSV and Excel spreadsheets available for download on a wide variety of Government department websites. (Some of them have nice URLs, some don’t; if you think they should, how does this sound? Designing URI Sets for the UK Public Sector: Machine- and human-readable formats. Most of the data is public too – it’s just the meta-sit – data.gov.uk – that I think is under wraps at the moment?)
I’ve played with online CSV and Excel spreadsheets before (e.g. in the context of the Guardian Datastore), but I’ve always found SPARQL endpoints and RDF a little bit, err, terrifying, so last week I felt it was time to bite the bullet and spend an hour or two trying to do something – anything – with some hardcore Linked Data. Or at least, try to just do something – anything – with some data out of a single data store.
So where to start? Regular readers will know that I try to use free online apps and client side Javascript code wherever possible (I don’t want to have to assume the availability of access to my own web server), so it made sense to look to at Yahoo Pipes :-)
I’ve done the odd demo of how to use SPARQL in a Yahoo Pipe before (Last Week’s Football Reports from the Guardian Content Store API (with a little dash of SPARQL), which is not about the football, right?) but a tweet last week tipped me off to a potentially more abstracted way of writing SPARQL queries in a Pipes environment: Triplr’s SPARQL + YQL = SPARYQL.
Ooh…. the idea is that you can wrap a SPARQL query in a YQL query, which in turn suggests two other things…
Firstly, I now have a way I’m already familiar with of generating and debugging bookmarkable RESTful queries to SPARQL endpoints:
Secondly, the Yahoo Pipes YQL block provides a handy container for making the SPARYQL queries and pulling the results back into a pipes environment.
Here’s the pipework… (based on an original pipe by @hapdaniel)
So what can we do with it? Not being particularly fluent in SPARQL, I had a poke around for some examples I could cut, paste, hack and tinker with and found a few nice examples on the [n]^2 blog: SPARQLing data.gov.uk: Edubase Data
So here’s a quick demo – a pipe runs a query that looks for the 10 schools with the latest opening dates on data.gov.uk’s education datastore:
SELECT ?school ?name ?date ?easting ?northing WHERE {?school a sch-ont:School; sch-ont:establishmentName ?name; sch-ont:openDate ?date ; sch-ont:easting ?easting; sch-ont:northing ?northing . } ORDER BY DESC(?date) LIMIT 10
In order to plot the schools on a map, it’s necessary to convert northings and easting to latitude and longitude. A cry for help on twitter was quickly responded to by @kitwallace who gave me a link to a service that did just the job… almost – for some reason, Pipes didn’t like the output, so I had to run the query through a YQL proxy:
(Note that Kit soon came up with a fix, so I could actually just call the service directly via a Data Source block using a call of the form http://www.cems.uwe.ac.uk/xmlwiki/geo/OS2latlong2.xq?easting=527085&northing=185400.)
Here’s the result:
Note that the KML output from the pipe can be plotted directly in a Google map (simply paste the KML URL into Google Map search box and hit return.)
By writing two or three different queries, and pulling the data separately into a web page via the JSON feed, we can easily create a map that displays the schools that have opened and closed between 1/1/08 and 1/10/09:
If we take the CSV output of the pipe, we can also see how it’s possible to transport the content into a Google spreadsheet (once again thanks to @hapdaniel for pointing out that changing the output switch of a pipe’s RSS feed from rss to csv does the format conversion job nicely):
which gives:
(Note that the CSV import seems to require quite a flat data structure (though it is trying really hard with the more hierarchical data – it’s just not quite managing to catch the data values?), so some renaming within the pipe might be required to make sure that the child attributes of each feed item do not have any children of their own. Empty attributes also need pruning.)
PS I did try importing the XML output from a RESTful YQL query into a Google spreadsheet with an =importXML formula but it didn’t seem to work. Firstly, the RESTful URI was too long (easily solved by rewriting it as a shortenedURI). Secondly, the Google spreadsheet didn’t seem to like output XML :-(
So near, yet so far… but still, it poses the question: could we write containerised queries/topic specific APIs over data.gov.uk SPARQL endpoints that expose the results in a spreadsheet capable of importing XML?
My (Rather Scruffy) MOSAIC Library Data Competition Entry
Several weeks ago, I put in an entry to the JISC MOSAIC Library Data Competition based on a couple of earlier hacks I’d put together that were built around @daveyp’s MOSAIC API wrapper the competition dataset. Here’s the howto…
First thing to note is that the application built on stuff I’d posted about previously:
- an elaboration of UCAS course choice pages with a link that identified books related to a particular course based on course code: First Dabblings With @daveyp’s MOSAIC Library Competition Data API;
- a bookmarklet that would “look up to see whether there are any courses associated with a particular book (or its other ISBN variants) if its ISBN appears in the URI”: People Who Referred To This Book Were Taking This Course.
So what was the submission? A page, keyed in a RESTful way by a UCAS course code, that:
- takes a course code,
- looks for the set books that have been borrowed more than a certain number of time by students associated with that course code (“find popular books associated with this course”),
- grabs a review of each book from the Amazon mobile site,
- annotates each book with a list of courses whose students have borrowed the book (“find other courses whose students have used this book”).
This page can be called using the following URI pattern:
http://ouseful.open.ac.uk/mosaic.php?cc=COURSECODE
(Note that the service can be quite slow at times – the pipe is doing a fair bit of work and I’m not sure how quick the MOSAIC API is either. But that’s not the point, right? The point is identifying the logical glue required to join up the MOSAIC service API with a range of other index keys and web services, so that a production service could then potentially be implemented against a proven (-ish!;-) and demonstrably working (sometimes!) functional spec.)
The pipework itself can be found here: MOSAIC Data: Books on a course, with related courses
The first part takes a UCAS course code as key/index value, and queries the MOSAIC API; only books that have been taken out more than a specified minimum number of times in the context of a particular course are passed though:
A link to the book cover is then included in the description item of each book, and a call made to find the courses related to that book. A crude bit of screenscraping on the Amazon mobile page for each book brings in a book review. (I had originally intended to pull in more reviews from the Amazon API, but over the summer Amazon introduced a key based handshake to access to the API – so s***w ‘em.)
The output of the pipe is pulled into this page as a JSON feed, and the data from it is used to populate the page.
The first column in the table simply displays the title of each book associated with the specified course code.
The book cover is pulled in from… Worldcat, I think…, keyed by ISBN10 (maybe there are licensing issues involved..?) The preview link pops up a preview of the book in a shadowbox, if available, or failing that a link to the generic book info page on Google Books. (Close the shadowbox using the X on the bottom right of the Shadowbox view.)
It should be possible to handle the previewer using code that is displayed directly within the shadowbox, but I ran out of time trying to get it to work, so resorted to using a helper page instead that could be embedded via an iframe in the shadowbox (the helper might be quite useful in it’s own right as a piece of rapid protoyping componentware? http://ouseful.open.ac.uk/gbookIframeEmbed.php?isbn=159059858X). The lightbox code is from Shadowbox.js.
The Amazon info (the ‘first’ listed Amazon review for the book) is pulled in from the Amazon mobile site via a Yahoo pipe. (The Amazon URIs I use look something like http://www.amazon.co.uk/gp/aw/d.html/?a=ISBN10&er=1) Since Amazon started requiring API requests to be signed, it’s made quick hacks difficult; the next quickest thing is to scrape the mobile site, which is what I’ve done here. A regular expression in the page rewrites the Amazon mobile URIs to the normal web URIs.
The course info columns shows info for courses that are also associated with the book; because not enough people in HE appear to care about URIs and “pivot data”, we often can’t just take a course code and create a URI that links to a corresponding course description. In the short term, I pivot back to this page, so you can see what other books are associated with the specified course. And as a hack, I munge together a Google search query that at least tries to track the course down based on course code and HEI name (e.g. http://www.google.com/search?q=BSc%28H%29+Computer+Games+Programming+%22University+of+Huddersfield%22. I don’t query UCAS page directly because the UCAS search uses session variables and a handshake as part of a shortlived URI to a set of search results.) Many of the results are to timed out UCAS searches indexed by Google though. It also amuses me that for some HEIs, searching their public site with the course code for a course they have ‘advertised’ on the UCAS site turns up no results. Zero. Zilch. None.
I also posted a complementary bookmarklet that can be used to annotate course search results page on the UCAS website with a link to the appropriate related books’n'courses page.
You may have noticed that the competition entry was posted in a minimal, unstyled form (I had hoped to make use of a Google visualisation API table widget to display the results, but proper work intruded ;-) This is in part to make the point that it is not – never was meant to be – a production service. It’s a working rapid prototype intended to demonstrate how Library data might be used outside the Library domain to act as a marketing support tool for Higher Education courses on the one hand, and an informal learning/related resources recommendation tool on the other.
These sorts of prototypes can be constructed in 1 to 2 hours and provide something tangible for Library folk to talk around (as opposed to documents produced at length describing how the needs of fictional characters and user scenarios generated by break out groups in “let’s reinvent our web presence” departmental away days…
They’re also the sorts of thing that we should be creating and discussing as throwaways on a regular basis, not hiding away for months end because they’re in some competition or other…
(As to why I haven’t posted this before – a huge half written blog post backlog; the how to has been available on the demo page, which was tweeted about widely as soon as I’d got it on to the server…)
PS see also @ostephen’s Read To Learn competition entry, which takes a set of ISBNs from an uploaded file, looks them up against the MOSAIC API and returns the UCAS course codes of courses that are associated through book loans with the uploaded ISBNs (and maybe xISBNs too?). Each course code is then looked up against the current UCAS course catalogue, and the search results (i.e. the list of corresponding courses at institutions across the UK) is retrieved and displayed. In short, Read To Learn takes a set of ISBNs and finds related courses from a course code lookup on the UCAS site. My app just took a single course code and tried to find related books (along with reviews of the books) and courses.
My ILI2009 Presentation…
Not a lot of use without speaker notes, but anyway… I may try to record a slidecast of this… or maybe not…
For anyon looking for Arcadia Project details, check the Arcadia Project blog and/or or my Arcadia Mashups blog.
Once upon a time, there was a simple answer to the question “where is the Library?”. But as library services move online, and the archival role of the library moves towards maintaining digital, rather than physical, artefacts, pointing to a particular building in answer to that question is no longer the best answer.
In this presentation, I will explore the notion of various ‘invisible library’ functions, identifying a role for “Library Inside” services that may go unrecognised by patrons in the same way that the manufacturer of the processor inside your computer is hidden away from you unless it is explicitly revaled through a marketing logo.
In particular, I will explore several different takes on the idea of ‘invisibility’ – invisibility that arises from the increasingly commoditised nature of information (do you want a coffee, or a Starbucks?); through a proxy (the Elves and the Shoemaker); or through an unacknowledged or misdirected presence in an unexpected place (invisible theatre).
Through the development of appropriate tools, it is possible to allow patrons to leverage library servics without having to access Library websites directly. One example of this is “invisible authentication” via the “libezproxy” bookmarklet. It works as follows: if a user has discovered the title page of a subscription article the user’s institution subscribs to, the click of a button will rewrite the URL so that the page is presented to the user via their institution’s subscription proxy. The user gets the full text of the article without going anywhere.
Othr invisible e-library services can be delivered through university VLEs – does the student need to know that the library has provided that list of resources?
One of the problems faced by many lending libraries on university campuses is the tendency of academics to hoard books. The distributed library shelf (the ‘inventoryless library’) removes the need for centralised holdings by allowing borrowers to keep books on their own shelves, and declare their location to a distributed catalogue. “The Fall and Rise of the Roman Empire”? Ah yes, Prof G. has a copy in their office, as does Dr W. As the price of books falls through resellers such as Amazon, rethinking a collections policy that allows individual users to buy books direct, and then loaning them on becomes thinkable…
Proactive invisible Library support can increasingly be offered through social networks – comments on blog posts, answers to tweeted questions (whether or not they are posted by “your own” patrons) helps keep knowledge moving around the distributed academy, and may lead to an unforeseen payback further down the line.
As far as the archival role goes, many university libraries are now responsible for maintaining online repositorys that collect together copies of the university’s research outputs. But you don’t really expect anyone to really go there, do you? That’s what Google’s for… So if your users are trying to access your content via Google, you need to work on your SEO… And to know that it’s working effectively, you need to keep an eye on your web analytics…
See also: The Invisible Library, For Real… (but check the date stamp…;-)

























