Brief descriptions of some of my research and work projects. For past projects that I've either abandoned or don't have time to continue, take a look at Inactive Projects.

Cantus Web App

A Progressive Web App (PWA) and server for the Cantus Database of Mediaeval church music. The client's principal requirements were fast and flexible searching, offline capability, and mobile capability. PWAs are websites that use "progressive enhancement" to offer functionality usually reserved for native mobile apps, when accessed by capable browsers. This approach allowed me to satisfy the desire for a mobile- and offline-capable experience while also providing improved search capabilities for all users. Given that Mediaeval music researchers tend to have minimal research funding, this single-interface approach also minimizes development effort.

There are several components. HolyOrders loads database records from the project's Drupal website into the server-side Solr search platform. Abbot is a Torndao-based HTTP server that allows access to Solr through the purpose-built, RESTful "Cantus API." CantusJS is a Promise-based JavaScript client for the Cantus API. Vitrail is the web app itself, built with React and NuclearJS.


Zhen is a Chinese-English translating dictionary, still in progress. It will be a progressive web app focussed on simplicity. I'm writing it first because I want to use it, but also to help me learn SQL and learn how to write a web app without any front-end frameworks. You can see the source code.

The app's name combines (one of) the Chinese name(s) for that language (romanized as zhongwen) with the English name for that language (being English). So it's ZHongwen and ENglish combining as ZHEN. Pronounced like the English name "Jenn."

Lychee: An Engine for MEI Document Management and Conversion

With Jeffrey Treviño, for the Music Encoding Conference 2016 in Montréal.

Talk describing the overall architecture of nCoda and two of the more interesting technical features of Lychee: our customization of the MEI encoding format, and the generic workflow used for everything Lychee can do.

PDF to follow!

Julius: A Web Interface for Realtime Collaborative and Scriptable MEI Document Editing

With Andrew Horwitz, Jeffrey Treviño, Simon Whitemell, and Sienna M. Wood, for the Music Encoding Conference 2016 in Montréal.

Poster demonstrating the first three "views" that will be part of nCoda:

  • CodeScoreView, showing simultaneous textual and score-based representations.
  • StructureView, to view and manipulate hierarchic sections in the score.
  • RevisionsView, showing the document's history and the differences between revisions.

Link to PDF.

Reconsidering Bartók's "The Miraculous Mandarin"

Originally for the "Music and Identity" seminar with David Brackett. Continued with Lydia Huang for the MusCan 2015 conference in Ottawa.

We produced two new readings of Bartók’s pantomime by examining the power relations through which we engage with the work, and how that affects our relationship to the characters' identities. Our interpertations provide a dramatically new perspective on this uniquely polyvalent work.