Category Archives: Supported Libraries

edsync & edsync²: support for University library of Kiel

The University library of the city of Kiel has joined the list of supported libraries. If you are a student there, be sure to check out edsync or edsync² and give some feedback on your impressions. And whether or not it’s working… I had no access to a test account, so feedback is highly appreciated. You can also write an email. The address can be found here.

FAG-TI talk/slides

On 28th September I held a short talk about EDsync at a meeting of the “Facharbeitsgruppe Lokale Geschäftgänge – Technische Infrastruktur” at the library of the University of Hannover. The FAG-TI is a gathering of people organizing the libraries’ IT infrastructure within the GBV, Common Library Network of the German States Bremen, Hamburg, Mecklenburg-Vorpommern, Niedersachsen, Sachsen-Anhalt, Schleswig-Holstein, Thüringen and the Foundation of Prussian Cultural Heritage. They are quite interested in bringing their services to mobile devices. The libraries within GBV make use of OCLC’s OPAC, a web service that allows library guests to see a list of loans and charges and so on. The service is hosted on the libraries’ servers. EDsync is an app for iOS I made available on the App Store in July last year. As far as I know my App is the only one of its kind concerning native apps running on mobile devices and offering an exact match of OPAC functionality. So back to the event: I held this talk and showed some slides. I made a pdf out of those. If you’re interested and a student/guest occasionally visiting one or more of the supported libraries you may want to have a look at the pdf. The texts are in german language but there’s a ton of screenshots (in english : ) ), so you won’t be bored even if you don’t speak german – yet. I think the slides give you a good overview of the app’s functionality. You might have seen it on the App Store but refrained from downloading it as you were not sure what it’s all about. In this case, here you are: download the slides as pdf .

Libraries of the City of Ilmenau have joined EDsync for iPhone

A staff member of one of the libraries of  the City of Ilmenau has asked for adding Ilmenau libraries to EDsync for iPhone. Today I took the necessary steps to make them available. I assigned the two libraries the beta status as I believe that there is a problem with their SSL certificate. It seems to be more or less the same problem as the one of the library at Greifswald. If you’re studying in Ilmenau, get ready to use EDsync ;p I believe Ilmenau will be able to connect within the next week. Search works already.

Happy searching!

Interviewed by André Vatter at ZBW

André Vatter has invited me to an interview and I had the opportunity to meet this very nice guy and we talked about EDsync/libraries/innovation in the library sector.

André is Community Manager at the ZBW‘s Hamburg branch. As you will notice he is way better at talking than I am so you will at least understand the questions during the interview. I have to admit that my little voice is hard to hear. The interviewer has tried to somehow adjust the volume during the post production to make it sound better. Thanks to him you can at least sometimes hear my quiet voice. Here’s the link to the interview. The interview itself is in german, by the way.

EDsync for iPhone: supported libraries

I have just added the Helmut Schmidt University to the list of supported libraries.

One parameter of the library is currently missing, so don’t wonder if the extension count for a borrowed item is not displayed correctly. I am in talks with Ulrich Hahn at the HSU to figure out the mentioned parameter. Until then HSU will remain in beta state.

Happy syncing!

Tuning Search Results [part I]

A short overview of steps to be taken to improve the display of search results within EDsync.

There have been complaints about the usability/usefulness of EDsync’s search. As I wasn’t happy with the search myself I have disabled the feature with one of the earlier versions. I left the choice upon the users to decide whether to reenable the search and take it as it was. In this post I want to explain how searching the GBV catalogues works and how I am implementing it while getting ready an improved version of the search feature for a future version of EDsync.

Good news first:

  • All libraries within the GBV are using the same schema to search their catalogues.
  • There is an xml interface to retrieve search results. It is described in a wiki page of the GBV. The state of the interface is said to be “experimental” and “in development”
  • Yes, it’s xml!

Bad news:

  • The API you may talk to in order to get down to the search results is rudimentary.
  • The xml values are intended to be displayed in a browser recognising the values’ encoding or require you to be at least aware of the values’ string encoding (multiple encodings in different libraries)
  • There is exactly one relevant value within the xml.
  • This one relevant value is the grand concatenation of all values you’d wish to be separate ones

Now let’s not monkey around but get into the matter.

To get a list of results, the GBV wiki suggests to make a call on the servers in the following format:

gso.gbv.de/DB=2.1/XML=1.0/CMD?ACT=SRCHA&IKT=1016&SRT=YOP&TRM=linux

The DB is the library’s database you want to search in (here a cached example for Hamburg – in case they move it again). The  XML=1.0 indicates that xml output is activated. The Action ACT is a search. The IKT (whatever it may stand for) is decoded here for the university of Hamburg. We’re sorting SRT by YOP, the year of publication and the search term TRM is ‘linux’.

This is a real life example.

As a result we receive something like this:
<?xml version="1.0" encoding="UTF-8" ?> // this looks good
<RESULT>
<SESSION><SESSIONVAR name="LNG">DU</SESSIONVAR>
<SESSIONVAR name="DB">1</SESSIONVAR>
<SESSIONVAR name="SID">989d11c0-3</SESSIONVAR>
<SESSIONVAR name="SET">12</SESSIONVAR>

<SESSIONVAR name="TITLE">Campus-Katalog+Hamburg</SESSIONVAR>
</SESSION>
<SET nr="12" type="0" hits="577" >

<SHORTTITLE nr="1" PPN="642805822" matstring="MAT_B" matcode="Aaua"
format="text" available="no">SOFSEM 2011 : theory and practice of computer science : 37th Conference on Current Trends in Theory and Practice of Computer Science, Nový Smokovec, Slovakia, January 22-28, 2011 ; proceedings
<br />
// IMHO, this is marmelade
/ Ivana Černá. - Heidelberg [u.a.] : Springer, 2011</SHORTTITLE>

<SHORTTITLE nr="2" PPN="633913847" matstring="MAT_B" matcode="Aaukf"
format="text" available="no">Multicore application programming : f ...

I said this:

<?xml version="1.0" encoding="UTF-8" ?>

looked good. Except, in other libraries it may — look like this:

<?xml version="1.0" encoding="ISO-8859-1" ?>

That’s not so good. It reminds me of Switzerland. At best you speak German, French and Italian and if you want to be a good citizen please take Rhaeto-Romanic lessons, too. As a matter of fact, to get back to searching, it forced me to introduce a new attribute to my library objects, holding the string encoding. Each library object is now aware of the encoding it has to apply to its search result lists.

To summarise, by now we have all information from <SHORTTITLE nr="1" PPN="642805822" matstring="MAT_B" matcode="Aaua"
format="text" available="no">
and some arbitrary text containing html tags. The attributes of SHORTTITLE will have great importance when it comes to retrieving the details for a given search result item in the list and well, the text will be used as the title of each result in our result list. As I just mentioned the attributes are of special interest. We have the PPN as well as the nr, which I will refer to as the index in the following. We could search for the PPN to fetch a single search result for further information retrieval but the index comes in very handy as I will show you now.

When you search for a term in the catalogue, it will try to place some cookies. These cookies contain the database you were searching and it also remembers the search itself. This is when a prominent role is assigned to the index. We can now use SHW?FRST=index to obtain the detail page for the given index.

It outputs something like this:
...<TR>PPN: <TD>585163421<a href=‘/DB=1/PPNSET?PPN=585163421’ target=_blank><img src=”https://katalog.b.tu-harburg.de:443/img_psi/2.0/icons/zitierlink.gif” style=”margin-left:10px;” alt=”Zitierlink” title=”Zitierlink” border=”0″></a><br /><TR>Titel: <TD>Linux Hochverfügbarkeit : Einsatzszen

...
aal 1: TI - Technische Informatik<TR>Signatur: <TD>TIH-800
<br />

<TR>Ausleihstatus: <TD>Ausleihbestand></a><entliehen...

Actually <TR> and <TD> look like &lt;TR&gt; and &lt;TD&gt; as we receive them.  The <a href=’/DB=1/P is something like &lt;a href=’/DB=1/P. We can also observe that many <TR> tags are preceded by <br /> which is actually received like that. Anyone familiar with html will recognise the <table> elements of table row (<tr>) and table data (<td>) tags as well a hyperlink starting with <a href=… So we ask ourselves: how come? And why for gods sake? Especially, what’s the matter with some tags having a cryptic form like &lt;TR&gt; and other ones looking like <br />. To be true to you – I have no clue (yes I do, but leave it like this for now ;)). But I guess all data is processed at least twice. Once when it is retrieved from the database and a second time when the xml is produced. I have reasons to believe that the <br /> are introduced in the latter process.

However, we have to assume that someone has hacked the information of a media item into a database. We would assume that there is some kind of a form the librarian fills out and submits it to the database. This form may define fields detailing the title, the isbn, the author, and so on. Let’s name this form or application that is used to gather these infos winIBW and the language used to specify the entries in the form PICA. So all information is stored into  separate database fields in their pure beauty. Of course, it would be a lot of overhead to request an xml containing all possible fields for each single search result. Instead I would suggest either an API to ask for specified fields or a xml containing field values as a stack of key/value pairs for each relevant (not empty & relevant for display) database field. It might look like this:


<?xml version="1.0" encoding="UTF-8" ?>
<RESULTDETAILS>
...<DETAIL>
......<FIELDNAME>Author</FIELDNAME>
......<DESCRIPTION>This is some info about the author</DESCRIPTION>
......<CONTENT>Neal Stephenson</CONTENT>
...</DETAIL>
...<DETAIL>
......<FIELDNAME>Title</FIELDNAME>
......<DESCRIPTION>This is some info about the title</DESCRIPTION>
......<CONTENT>Cryptonomicon</CONTENT>
...</DETAIL>
</RESULTDETAILS>

We could easily generate tableview cells, for example.

for each DETAIL in RESULTDETAILS
do Create tableview cell: "FIELDNAME: CONTENT"

At this point I should stop dreaming and get back to reality. I’ll call it the nasty xml reality.

Next time I’ll tell about my current efforts to make the search result details a bit more comforting in EDsync.

This is where you are

As you know, I use google analytics to track your movements within ElbeDev sync (you may disable it but I encourage you not to since it allows me to improve the app in various ways). I would like to share with you the following map which shows all cities in the period of January and February where you used sync.

Interestingly there has been a lot of usage in central western Germany though there is actually no library that is supported within that region. Even though I do not track my own interaction while debugging the greatest user base is located in my hometown Hamburg. This is mainly because the libraries of Hamburg have been supported since the first release of the app – so the user base is obviously larger. But there has also been increasing access for libraries in Goettingen and Hannover which were introduced in late January. A decrease of visits from the semester time to semester break time of about 30% could be observed.