Author Archives: Mike Jones

Final Project Report

Major Outputs

The m-biblio project has produced a number of significant outputs:

  • Results of a survey with students
  • Report on workshop with students
  • Software for finding, storing and exporting references:
    • A java-based web service for querying third-party bibliographic sources.
    • An iOS application that uses the camera to scan barcodes band manage citations.

Background

The m-biblio project was managed by the R&D/ILRT team of IT Services at the University of Bristol. The University, founded in 1876, is internationally distinguished as one of the best universities in the UK with world-class research and excellent teaching.

The m-biblio project wanted to look at the potential for smart phones to be used for the recording and organisation of bibliographic information for students within a library context.

The initial proposal stated:

“We propose to enhance the learning and research activities of the University of Bristol’s academic community by developing a mobile application that can record and organise references to books, journals and other resources. These references can be added actively by scanning barcodes and QR codes, or passively by automatically recording RFID tags in items being used for study and research. With permission of the user, the application will submit anonymous usage data to their library. This innovation will provide library staff with a valuable set of user-derived usage statistics. It will be able to track which resources were used, and where. The library will therefore be given a rich seam of usage patterns, including data about library items that are often confined to branches such as periodicals, journals and reference books. The application will be made available to the wider FE/HE community for use in other institutions.”

The project focussed on barcodes for books and Digital Object Identifers (DOIs) for papers and journals. The Library at the University of Bristol doesn’t use QR codes within the catalogue and it became apparent that we couldn’t read our RFID tags with an NFC capable device. However, we were successful in meeting a number of objectives, including investigation the student workflow and creating a prototype.

The challenge

Smartphone ownership among students is on the increase and the devices are bundled with a number of sensors such as cameras and, more recently, NFC readers. We wanted to investigate how we could use the phones to help students more accurately capture and manage references. A number of existing applications exist for managing references, such as Endnote, and we wanted to provide a tool that would work within a students existing study or research workflow which might already use such tools.

The Mobile Advantage

The prototype application does demonstrate the possibilities of using mobile devices to help collect and manage references. Work with students demonstrated that they had problems capturing the details of items accurately and displaying them in the correct format. In addition, a large percentage of students didn’t take advantage of bibliographic management tools. There is a gap in the market to provide a simple phone-based tool that can capture references.

Lessons Learnt

There were a number of key points:

  • The capturing and management of references is a particular stress point for students. They can find it difficult to capture accurate references and provide them in the format expected by their tutors.
  • Some students find existing bibliographic tools overly complex to use.
  • It is possible to provide a tool that can improve the capture and accuracy of references. However, references might need amending due to errors or missing information when they were originally catalogued.
  • There are copyright issues relating to the data provided by publishers that needs to be considered when deploying an app within an institution.

Technical Approach

There were two key pieces of technology developed for the project:

First, a Java web service (JAX-RS) that took a unique identifier (barcode, DOI number) and then queried a third-party bibliographic service for matching results. The results were then returned to the querying client in the JSON format. For University barcodes, the institution’s library catalogue (Aleph) was queried. COPAC was used for ISBN numbers and Crossref was used for DOI numbers.

Second, an iOS client that scanned barcodes and accepted DOI numbers from the user and queried the m-biblio web service for results. The references were stored on the phone and could be exported (via email) in Harvard or Chicago bibliographic styles. A third-party library was used for scanning and decoding barcodes, but some development effort was needed to create a decoder for the Telepen barcodes used by the University library. We opted to create a iOS native application (iPhone, iPad, iPod Touch) to take advantage of the native widgets and controls to allow rapid application development with a responsive user interface.

Conclusions and recommendations

The project does demonstrate the potential capabilities of using mobile devices to capture and manage citations and how there is a place for such a tool in the existing study and research workflow of students. The RFID tags used by the library couldn’t be read by NFC-capable devices, but further investigation is needed to look at taking advantage of new RFID library standards. The app could be developed further to provide better management of captured references, allow the export to more formats (including Endnote and Bibtex) and provide a way of capturing DOI numbers through a camera rather than the software keypad on the device.

The app is with beta testers

We advertised for beta testers on the University Portal Service. 18 people requested to join the beta and about 10 have downloaded the application. We are using the TestFlight service to manage testers and distribute the application.

Beta testers create an account on the site and then register their device. We can then create a provisioning profile that allows the app run on their device outside of the App Store. We upload a version of the application to Testflight and notify the testers that the app is ready to download.

A tour of the m-biblio iPhone app

The current version of the iOS application allows you to:

  • Scan ISBN numbers for book details
  • Scan University Library barcodes for book and thesis details
  • Enter DOI numbers for papers and articles
  • Extract the title of a website
  • Manually add the details of books, papers and thesis
  • Export the references via email to Rich Text Format (RTF) or HTML
  • Support for the Chicago and Harvard reference styles

The application only supports those devices that have a camera that can auto-focus (iPhone 3GS, 4 and 4S and the iPad 3). We need a camera that can autofocus for barcode reading. It would be possible to have the application check the capabilities of the device and only have the ‘scan’ option appear if you have an appropriate device.

This rest of this post provides a tour of the user interface and the functionality of the application.

The Main Screen

The main screen of the application shows a scrollable list of captured references:

The main screen of the m-biblo application (Harvard)

By default the references are displayed in the Harvard style, but it is possible to switch to the Chicago style:

The main screen of the m-biblo application (Chicago)

You can edit the details of captured references or delete them completely:

Details of the paperDeleting a reference

If you have captured a large number of references you can search by keywords (author or title):

Search for references

Adding a Reference

The ‘Add’ icon on the top right of the main screen shows a new screen that allows you to add new references:

Add a new reference

For example, we can scan a University Library barcode or an ISBN barcode with the camera on the phone:

Scan a barcode

After a successful scan, the app will query the m-biblio service for bibliographic data:

Search for data

The end user can then modify the data (if they wish) before saving:

Details of a search

You can also type in a barcode number with a custom keyboard:

Enter a barcode numberDetails from entering a barcode number

For Digital Object Identifiers (DOIs) you can type in the reference:

Enter a DOI numberDetails from a DOI search

It would be better, in a future version of the app, if the DOI could be scanned in using some Optical character recognition (OCR) technique. The DOI numbers can be long and have a mix of numbers and characters which are prone to error when submitting on the iOS keyboard. For example, the DOI for J.C. Holt’s article on ‘Anglo-Norman Feudalism’ is ‘10.1111/j.1468-0289.1963.tb01721.x’.

You can also extract information about a website:

Enter a URLDetails from a Website

At the moment, you can only extract the title of a website. In the future, it would be nice to extract data from meta tags if they are relevant, such as details of authorship.

Exporting the references

On the main screen the “Share” button allows you to export the references that you have captured. You can only export data via an email attachment (although there is code to support BibServer). You choose a format (Harvard or Chicago) and whether or not you want an RTF file or HTML:

Send via emailChoose a styleChoose a formatChoose a format

Preferences

The preferences for the panel allows you to choose which reference style should be used for displaying references within the application. It also allows you to determine what information you are willing to share with the m-biblio service: (1) a unique identifier for the app; (2) the details of the captured items, i.e. the barcode or DOI number; (3) the type of device you are using (iPhone, iPad etc.) and which version of the operating system.

Preferences

What’s missing

The is missing a number of things:

  • The ability to manage references within collections. For example, you might have a collection for each assignment or task.
  • Support for Endnote – it is vital that you can export your references to existing bibliographical material.
  • More citation styles need to be supported and the ability to tweak the ones that are supported. For example, how many authors should be listed before et alias is used.
  • We support books, but not chapters within books.

Bibliohack

Last month I was lucky enough to attend the BiblioHack event at Queen Mary, University of London, 13th – 14th June, 2012.

BiblioHack was a two day event on hacking and sharing ideas about open bibliographic metadata. I joined a group that was working on the BibServer software. I wanted to extend the m-biblio software so that I could export my references to BibSoup, an instance of the BibServer software.

This involved:

  • Supporting the BibJSON data format.
  • Updating the user interface in the ‘Export’ part of the application.
  • Adding an user interface to capture and manage information needed to interact with BibSoup.
  • Add code to handle the interaction with the BibSoup server.

This turned out to be a really productive exercise.

I though the code for handling the export of data was well designed so that it was easy to add support for additional export format. My confidence wasn’t justified :). After trying to update the UI on Wednesday afternoon, I decided to spend the evening completely refactoring that part of the application. I was then in a much better position on Thursday to implement code that could send a bibliography to BibServer. At one point Mark MacGillivray of Cottage Labs was updating the BibServer software while I was updating the m-biblio software. We were *almost* there when we ran out of time. At the moment, I can send a bibliography to BibSoup and it will accept it, but BibSoup fails to display it. I’m not sure what the issue is and I’m waiting for Mark to have time to look at the issue from the BibSoup end.

Despite failing at the last hurdle, the m-biblio code for exporting was in a much better shape than before. In addition, I suspect getting the data to appear in BibSoup will be a simple fix.

Oh, I was interviewed at the event ..

DevCSI Bibliohack Interview: Mike Jones from UKOLN on Vimeo.

Creating Bibliographies – a survey of students

Stuart Church (@stuchurch) of Pure Usability is helping with the student engagement and the user experience aspects of the m-biblio project. Using Bristol Online Surveys, Stuart recently ran a survey of University of Bristol students with some questions on creating bibliographies. There were 67 respondents that covered a range of disciplines and degree schemes, including undergraduates, taught postgraduates and research postgraduates.

Ten of the students then joined a two hour workshop to further investigate the journey they make in creating bibliographies and to identify the pain points. It also examined how mobile devices might be used in the process of capturing and managing citations.

Work from the workshop with students

We will provide a detailed report on the workshop in a future blog post, but I thought it would be useful to provide the responses to the original survey.

1. Approximately how many references do you usually put in your essays?

None: 0.0% 0
1-5 4.5% 3
5-10 17.9% 12
10-20 41.8% 28
More than 20: 35.8% 24

2. What tends to be the approximate ratio of books to journal articles in your reference lists?

Pretty much all books 4.5% 3
25% books / 75% journal articles 34.3% 23
50% books / 50% journal articles 19.4% 13
75% books / 25% journal articles 17.9% 12
Pretty much all journal articles 17.9% 12
Varies too much to say 6.0% 4

3. How do you usually find your references?

Online citation databases (e.g. Web of Knowledge) 36
Google Scholar 49
University library system 38
Via reading lists provided by lecturers 44
Other (please specify): 7

For other, respondents included “a mix of the above”, “academia.edu”, JSTOR, “reference list from other journal articles” and “using bibliographies from relevant books”.

4. Where do you store your references?

In word processor format (e.g. Word) 50
Using bibliographic software (e.g. EndNote, Papers) 14
In a hand-written notebook 15
I don’t store my references 6
Other (please specify): 1

For the “other”, there was a single comment: “When online, I bookmark them”.

5. What’s your biggest frustration about managing references?

This was a free text response but there were a number of common themes:

  • Citing the reference in the correct format
  • Copying the reference format easily from a paper
  • Different lecturers have different preferences for style of referencing, so its difficult to know what style to choose.
  • Endnote not supporting the style I want in word…
  • having to put them all in the exact harvard style of referencing
  • Inputting the data into Endnote
  • Missing information in the sources
  • Needing to know exact page numbers and having to look them up if i forgot to write them down
  • Remembering page numbers for quotations
  • Time-consuming
  • Too many references, often keeping track can be difficult

6. If you could design a simple piece of software to help you manage your references better, what would it do?

Once again, this was a free text response with a number of responses, including:

  • Allow me to: Record according to chosen system (Harvard, etc) Copy directly into essay/thesis Go back to original source (eg. to re-download or checkout of library)
  • Automatically put in references as I put in the sentences
  • Compile them, format them to the desired style and alphabetise
  • format my references
  • insert into word easily without adding random other numbers and things in/li>
  • it could help me to make a right order and help me to check what part I am missing for the references
  • it would automatically put them in alphabetically order and split them into the types of references they are eg books, journals etc
  • It would house your entire bibliography and help in shortening and referencing in the correct style for your department. it would also allow you to keep track of how many times you had referenced a certain source
  • Quick and easy to learn, will format in necessary style
  • Shape the references into the same referencing system.
  • take the journals and books you’ve read and write them in the correct format
  • You would type in title, author, chapter and page refs and the software would automatically create the bibliography reference in the correct standardised format

Keyboard for barcodes

The prototype application will be for devices that run iOS 5. We are developing a proof of concept and can look at developing for a wider range of devices in the future.

The best case scenario means that users can scan barcodes with the camera on their iOS device. In reality, this will only be possible with the iPhone (3GS, 4 and 4S). The iPod Touch and iPad 2 have a fixed focus camera that isn’t suitable for scanning nearby objects. In fact, the Open Source ZBar bar code library we are using says that these devices aren’t supported. The original iPad and older iPod touches have no camera. Even for those devices with suitable cameras, the barcode may be faint or damaged .

We therefore need to allow for the manual entry of barcodes via a keyboard. In iOS you have a number of prebuilt keypad layouts, including default (standard keyboard), email (standard keyboard with an at sign and period) and numeric. The closest suitable pre-built keyboard was numeric (0 – 9, Delete). However, I also need to accommodate the characters ‘x’ and ‘-‘. We don’t actually need the dash (‘-‘) for searching ISBN numbers, but I thought it would be less confusing to allow the user to enter the character if it was on the back of a book.

I therefore created a custom keyboard. The image below was my first attempt:

First attempt at a barcode keyboard

However, it was pointed out that most numeric keyboards only have 3 buttons across. So, this led to my second attempt:

Second attempt at a barcode keyboard

This is more familiar and has larger buttons – especially useful for people with clumsy fingers like myself.

Any thoughts and suggestions welcome :).

Update

Based on some feedback I’ve increased the size of the X. I’ve also nudged up the size of the dash.

Third attempt at a barcode keyboard

The different shade of grey is an artefact of the way I took the screenshot, I think.

Dev8D

I recently attended the Dev8D conference (14 – 16 February, 2012) which is primarily aimed at developers working in Higher Education, but also attracts developers from other sectors. The conference is a mix of invited speakers, delegates offering talks, workshops and tutorials. The event is free for the attendee and is funded by JISC and other sponsors. The Professional Development Group of IT Services at the University of Bristol were kind enough to fund my travel, accommodation and subsistence.

One of the great aspects of the conference are the whiteboards where delegates can offer to do talks or ask for talks. In the afternoon, those sessions that attracted the most interest went ahead – you put a mark next to a session you were interested in with a marker pen. One such session was the really informative session by Owen Stephens and Thomas Meehan on library data. I’ve started accessing library data for m-biblio and they provided a really useful session on MARC and why library catalogues provide the information in a certain format. The session was a rich mine of information on systems, tools and formats!

For a more detailed report on the event, see my personal blog.

Scanning Barcodes – supporting Telepen

One of the key pieces of information for discovering bibliographic data will be the barcodes on the books – either the barcode used by the Library at the University of Bristol or the ISBN numbers associated with the books.

It would be nice if we could take advantage of the camera on the device to scan the barcode and save the user from having to type the numbers in manually. There are a couple of libraries for scanning barcodes:

  • ZXing (Zebra Crossing) – a Java library with Android support. There is also a partial port to iOS that only supports QR Codes.
  • ZBar – a C library that has bindings for a number of languages and includes an SDK for the iPhone.

These libraries have good support for a number of formats such as UPC-A, EAN-8, Code 128 and QR Codes. However, they don’t support the proprietary telepen format that is very popular in UK academic and public libraries.

It therefore seems that one of the first key development tasks will be adapting one of the libraries to support for telepen barcodes.

Validating barcode numbers

It would be great if the app could send a barcode number to the web service without the user being forced to decide upfront what kind of barcode is being sent, e.g. a barcode used by the library or an ISBN number. Clearly, the service needs to know what kind of number it is dealing with to make a sensible decision on what bibliographic source to query.

I’m exploring the use of validators to help the service to determine what type of value we are dealing with. At the moment, the interface is pretty simple:

public interface Validator {
    boolean validate(final String value);
}

Basically, an implementation would take a value and determine whether or not it believes it is valid. The first implementation developed covers the barcode numbers used by the Library at the University of Bristol.

Barcodes at the University are ten digits long and follow the following format:

  • The first digit is the prefix and is always the number 1
  • The second through to the 9th digit will be from the range 0 to 9.
  • The tenth digit is the check digit and can range from 0 to 9 or be the character X

The validator can therefore declare any value it receives that is not 10 digits in length as invalid. It can also dismiss any 10 digit numbers that don’t start with 1. Beyond that we need to apply an algorithm that determines the validity of the check digit (tenth digit) against the other numbers (excluding the prefix).

Each number is multiplied against a relevant weighting in the following list: {7, 8, 4, 6, 3, 5, 2, 1}. Modulus 11 is then used on the sum of the weighted values to get a remainder. The remainder is then subtracted against 11 to get the check digit value. If the value is 10, then that is represented by the character X. Clear as mud?

So, for the barcode 1511075964, we ignore the prefix and multiply the next 8 digits against the appropriate number in the weightings list:

(5 x 7) + (1 x 8) + (1 x 4) + (0 x 6) + (7 x 3) + (5 x 5) + (9 x 2) + (6 x 1) = 117

Find the remainder:

117 % 11 = 7

Subtract from 11 to find the check digit:

11 – 7 = 4

Therefore, 1511075964 is a valid University barcode because the last number matches the check digit created by the algorithm.

ISBN 10 numbers have ten digits but use a different weighting to calculate the check digit. It will be interesting to calculate the probability of a clash – the possibility of a number being a valid University barcode number and a valid ISBN 10 number.

Technical Architecture

For the mobile application to obtain citation information, it needs to be able to associate a physical item (such as a book) to the relevant bibliographic information. We plan to provide a RESTful service that can take a lookup value, such as a barcode number, and then search bibliographic sources for useful data for the user. For example, in the case of our library stock, each item has a barcode number that can be used as a unique identifier to search our library catalogue, Aleph.

It is better to provide a intermediate service rather than allowing the application to query Aleph directly. It will be easier to extend the service to support different and multiple bibliographic sources without having to update the application on the phone. The service will just continue to return data in a format that the application understands.

The service can also be used to store and query the usage statistics that are of interest to the library staff.

Below is a diagram of the planned architecture:

Proposed architecture

I’ve already made a modest start on the development of the service, by querying Aleph through the X-Service API for details of a item via a barcode lookup. For those interested, I’m using JAX-RS (Jersey) to provide the RESTful service and the Spring Application Framework for dependency injection.