Week Beginning 2nd June 2025
I made the Iona place-names map resource live this week, in preparation for the official launch on Monday next week. After working on the project on and off for several years it’s great to get the resource out there. It can be accessed here: https://iona-placenames.glasgow.ac.uk/map/.
I spent a lot of my time this week continuing with the development of the versioning system for the Books and Borrowing project. Due to other commitments I didn’t manage to work on this task last week, having completed the updates to the scripts for generating the cached data the week before, so it was good to be able to return to this task and make a bit of progress. This week I focussed on updates to the API, which is a pretty major task as every single database call in more than 5000 lines of code needs to be updated. Before I did so I also had to consider how the user’s selected data version would be passed to the API. Appending it to the end of the existing set of parameters would be messy, as each endpoint would then potentially have the version passed through a different parameter. Instead I decided to that the version should appear at the very start of each endpoint call, before the file type selection. So for example, ‘/api/v2/1/json/libraries’ will retrieve all ‘version 1’ data for the ‘libraries’ endpoint as a JSON file while ‘/api/v2/2/json/libraries’ will retrieve all ‘version 2’ (and version 1) data. In order to ensure older calls that don’t feature the version number continue to work, I set the API to use the ID of the most recent live version of the data if the version number is omitted. Also, the API checks to ensure that any version number passed does actually correspond to a version of the data that is actually live in the system, so the API will never publish data that is still in development.
With this update to the API in place I then needed to work through every database query in every endpoint in order to add in the version limit. In some endpoints this was pretty straightforward to do, but other ones did get rather complicated, involving cached data in new database tables or specific versions of cached JSON files. I didn’t manage to complete the update to the API by the end of the week, but I’m hopeful I’ll be able to do so next week, at which point I aim to add a new version of the API to the live site, in preparation for redeveloping the front-end to work with the versioning system.
On Thursday this week we had the interviews for Ophira Gamliel’s project, and this took up more than half of the day. The interviews all went smoothly and we had a good discussion about potential candidates afterwards.
Also this week I had a chat with Geert, the editor of the Anglo-Norman Dictionary, about further updates to the site. We’re intending to add in a part of speech option to the advanced search and we spent some time discussing how this might function. I also gave him so advice on long-term digital preservation, helped him set up a new ‘phase’ and fixed an issue when adding lead editor initials to entries through the dictionary management system.
I also gave some advice to Tony Harris, who is developing a thesaurus system based on my code for the Bilingual Thesaurus, and fixed a couple of issues that Marc had spotted with the unified API version of the Historical Thesaurus that I worked on in April. Marc had spotted that some information was missing from the ‘recommended’ category section in the search results. The blank recommended category information was caused by the API correctly returning an empty subcat array for categories that don’t have subcats. Unfortunately the front-end code was checking for the presence of this array when deciding whether the recommended category was a sub or main category, and as the array was present (but empty) for maincats it was treating them as subcats and not displaying the correct details. It took a while to identify the cause of the problem but once I’d done so it was very easy to fix. The second issue that Marc spotted was a URL encoding issue, with both slashes and spaces causing problems. This was something I managed to sort relatively quickly.