News

The latest about what I've been working on

Uploading a thousand Gallery images to Commons
Uploading a thousand Gallery images to Commons

I recently finished work on CommonsTool, a Python script to upload artwork images to Wikimedia Commons. In addition to uploading the image files, it creates Structured Data on Commons claims to provide machine-readable metadata about the images and to link them to Wikidata items that describe the underlying artwork objects. It also uploads the images to the Vanderbilt Libraries’ International Image Interoperability Framework (IIIF) server and generates IIIF manifests to display those images in a IIIF viewer.

Making SPARQL queries to Wikidata using Python
Making SPARQL queries to Wikidata using Python

I recently solved several annoying problems that I’d been having when using SPARQL queries to acquire data from Wikidata. My success inspired me to write a comprehensive Python class that will reliably carry out every kind of SPARQL Query and Update, with defaults to easily make SELECT queries to Wikidata.

Birding in Puerto Rico
Birding in Puerto Rico

After recently making a trip to Puerto Rico that was primarily focused on bird watching, I decided to write a blog post to pass on some of what we learned. Much of the information that we got from books or the Internet was outdated or incorrect, so hopefully this post will help others to have an easier time finding good places to bird there.

QT Py RP2040 workshop
QT Py RP2040 workshop

I’m really excited to be working with Vanderbilt Science and Engineering librarian Francisco Juarez to develop a workshop series to teach participants to program the QT Py RP2040 microcontroller using CircuitPython.

VanderBot 1.9 supports somevalue
VanderBot 1.9 supports somevalue

One of the issues I discussed at my recent talk in the Art in Context: Identity, Ethics, and Insight symposium was the problem of representing anonymous artists in knowledge graphs. The solution that the Wikidata community has accepted is to associate a P170 (creator) claim with a somevalue snak having a P3831 (object has role) qualifier value of Q4233718 (anonymous). In RDF, this corresponds to a blank node and Wikidata claims using somevalue are represented by blank nodes in the Query Service.

Latest Posts

Open Science recipes published
Open Science recipes published

My colleage from the Vanderbilt Libraries’ Digital Lab, Shenmeng Xu, an I have published two chapters in the ACRL’s 2025 Open Science Cookbook. The Cookbook is a lighthearted take on technical topics where instructions are given in “recipe” format to teach beginners new tech skills.

Favorite winners of Nebula Award for Best Novel
Favorite winners of Nebula Award for Best Novel

In March 2025, I finished reading all 60 of the winners of the the Nebula Award for Best Science Fiction or Fantasy novel. Many of my favorites were also winners of the Hugo Award, so I wrote a follow-up blog post to my earlier post about my favorite Hugo winners, focusing on favorites that weren’t already discussed in the Hugo post.

Favorite winners of Hugo Award for Best Novel
Favorite winners of Hugo Award for Best Novel

In May 2023, I finished reading all 71 of the winners of the the Hugo Award for Best Science Fiction or Fantasy novel. There were some fantastic books on that list and some real duds.