So you're thinking of taking G450?

To get a feeling for what's involved in this course, the following books have been borrowed in significant numbers from university libraries by students taking the same course. You can preview some of the books online via Google books. A recent review from Amazon for each book is also provided. Finally, if a particular book has been borrowed by students on other courses, those courses are also identified.
Examples: E615, B390, e216. If no course code is specified, a default course (G450) is shown instead.

Working on it... please be patient... fetching data now...

Pipes is processing the MOSAIC feed...

I think...

It should be finding books related to this course...

And other courses related to those books..

Which is why it's taking some time...

Especially if there are lots of books associated with the course...

Or lots of other courses associated with the books...

Nearly there...

Any second now...

Come on Yahoo Pipes... I'm waiting...


Maybe you should reload...? or try a different course code...?


This page is intended to be linked to from third party web pages that carry UK HEI course codes, such as the UCAS course search web pages. The following bookmarklet will annotate UCAS course search results pages with links that point back to this page. (See First Dabblings With @daveyp’s MOSAIC Library Competition Data API for more info about how a complementary bookmarklet works over the same UCAS pages.)
UCAS courses info bookmarklet.
(Drag the bookmarklet onto your browser bookmarks toolbar and click it whenever you are on a UCAS course search results page.)


This page can be called using the following URI pattern:


Only tested in Firefox and Safari...


The page builds on a couple of tricks that have been previously published on the web: First Dabblings With @daveyp's MOSAIC Library Competition Data API and People Who Referred To This Book Were Taking This Course.

As a starting point, I looked at this Books on courses pipe (which grabs a list of books associated with a particular course code from the MOSAIC API) and this MOSAIC LIbrary lookup by ISBN pipe (which grabs a list of courses associated with a particular book, as keyed by an ISBN10, from the MOSAIC API) and came up with a hybrid pipe (MOSAIC Data: Books on a course, with related courses) that:

  1. takes a course code,
  2. looks for the unique set books associated 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"),
  3. grabs a review of each book from the Amazon mobile site,
  4. annotates each book with a list of courses whose students have borrowed the book ("find other courses whose students have used this book").

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.) For a demo of the embedded preview effect, try this example book preview. It should be possible to handle the previewer using code within this page, but I ran out of time, so resorted to using a helper page (e.g. 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 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 asociated 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. Many of the results are to timed out UCAS searches though. It also amuses me that for some HEIs, searching their public site with the course code turns up no results. Zero. Zilch. None.

Finally, the bookmarklet. That's just reuse again of a bookmarklet published in First Dabblings With @daveyp's MOSAIC Library Competition Data API.


Partly because everything is bundled in to one pipe, the pipe can time out when a course has a lot of books associated with it. But this is just a proof of concept, right?!;-)
If a call times out, reloading the same page straight away doesn't necessarily call the pipe again (some browsers/o/s appear to cache things?) A hack would be to add some random chars to a dummy argument in the pipes URL each time it's called, so that the URI is considered to be unique and will always be fetched.

Possible Extensions

There are a couple of obvious extensions to make that would be trivial if websites had been designed with tinkering in mind.

For example, if UCAS had a sessionless RESTful search URI structure it would be easy enough to provide a link to search the UCAS site by course code. As it is, the UCAS site has session variables in the URI, and I can't be bothered to hack the handshake...

For some time, an XML standard for sharing course related marketing information has been proposed (XCRI). If UK HEIs could get their act together to: a) publish this data; b) ideally using a common URI pattern; it would be relatively easy to add a link to the course info, or pull it directly into this page. I have exposed course codes in the "Other Courses" column, but can't trivially use these codes to republish, or even link to, course info. Which is why they link back here.

I was hoping to produce a complementary page that would take an ISBN and create a similar view (using a pipe to look for related courses, and then annotating those courses with related books) but I ran out of time. (I also thought it might be interesting to be able to toggle views - e.g. look down a list of books for a course, or switch to a view that displays courses related to a particular book.)


This page is a proof of concept demonstrator intended to illustrate how Library book loans data might be used to help potential applicants or new students get a feel for what a course is like based on the books people borrow who are taking that course.
This application was put together as a submission to the MOSAIC Developer Competition . It took five to six hours, including the time spent writing these explanatory notes but not including the time spent on the original pipework that inspired this hack. (I think the original "work" took about the same amount of time to build and blog about?) I hope that doesn't mean the judges discount the application as unworthy of winning, though, just because it only took 1 person half a day to do...;-) And if the app isn't shiny and polished enough for you, with JQuery and CSS goodness everywhere, you can just f**k right off...;-)

For more things that might be useful, one day, see
blog comments powered by Disqus