Apps I'm Taking into 2021

While it’s a major challenge to identify all of the scripts, command line tools, and web-based applications that have influenced my thoughts and workflow over the previous year, here’s a set of applications that I’m excited to take with me into the new year.


Using minimal computing principles, Wax is a project that aims to facilitate the creation of digital exhibits using static site technologies. For librarians exploring digital technologies at cash-strapped institutions without a formal digital initiatives program, Wax is a lightweight and cheap (in terms of cost and maintenance) solution.

Initially, there’s a rather significant technical hurdle, but the skills can be easily repurposed for use in other data-intensive projects, web development using static sites, and other metadata or library-adjacent workflows. Here are a few of the underpinning of Wax:

Jekyll Static Site Generator
SCSS CSS Pre-processer
Bundler Gem Dependency Management
Liquid Templating Language
YAML Data Serialization Standard
Bootstrap Front-End Frameworks
Ruby Programming Language
Markdown Plain-Text Markup Language
JSON Data Interchange Format
Git Software Version Control
Github Pages Static Site Hosting Service

It’s also a great way to learn about the International Image Interoperability Framework™ [a.k.a iiif or “Triple-I-F”] and its associated manifest files and viewer applications like Mirador and OpenSeadragon. Until I started using Wax, I hadn’t considered full-text search in Javascript, which Wax provide via Elasticlunr.js.

Wax Workflow ⟶ see [documentation]

To get acquainted with the Wax workflow, a photographed several of my few favorite book covers from my personal collection and created an exhibit space called the CuriousitariumDCZ.

Example: Book Cover Exhibit Using Wax


Graphviz is an open source graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. It has important applications in networking, bioinformatics, software engineering, database and web design, machine learning, and in visual interfaces for other technical domains.

Writing diagrams using a familiar syntax - and working in an IDE, text editor, or any another code-like environment - just feels comfortably at home. Here’s the .dot file that generates the graph below

Resultant Graphs are Crisply-defined and Visually Appealing

It also makes it easy to drop in a Python utility script that takes the .dot input and generates a visual representation as a .png file… which can be quickly and easily integrated into presentation software or any number of other productivity applications.

from graphviz import Source
import os

input_file = 'contextualizing-ezproxy' + '.dot'
output_file = 'contextualizing-ezproxy' + '.png'

os.system('dot -Tpng ' + input_file + ' -o ' + output_file)

source = Source.from_file(input_file)

Here are a few tools to explore:

Pa11y Dashboard

Pa11y Dashboard is a web-based user interface for the underlying Pa11y accessibility reporting service. The dashboard simplifies the process of actively and continuously monitoring the accessibility status of a library’s service platforms.

Pa11y is an open source tool for running automated accessibility tests. Pa11y supports several common accessibility standards, including the W3C’s Web Content Accessibility Guidelines 2.0 (WCAG2A, WCAG2AA, or WCAG2AAA) and the United States GSA Section 508 standards. The aXe-core rule set is Pa11y’s default test runner suite.

Example Dashboard

If you’re familiar with Docker, you can clone the following GitHub repository and have a working version of Pa11y Dashboard in 5 minutes!

Traefik Proxy

One of my goals for 2020 was to create a small scale application hosting platform, where I could continue my exploration into the use of containerized applications within libraries and cultural heritage institutions. In early June, a working prototype was up-and-running on a general purpose t3.large EC2 instance. Code named, Esmeralda.

Esmeralda is a platform for running containerized applications behind the enterprise-class reverse proxy Traefik. Containers are orchestrated via docker-compose files and Portainer is used to provide a graphical interface into the entire environment.

Diagram of Basic Traefik Workflows

Traefik proxy handles:

  • HTTP request resolution to each container service
  • SSL termination
  • SSL certificate issuance, renewal, and installation via Let’s Encrypt

Traefik also provides a suite of middleware to upgrade connections to HTTPS, provide basic authentication services, among many other functions. Traefik instructions can be written directly into an application’s docker-compose file, which means Traefik can configure itself automatically and dynamically as new containerized applications are deployed to Esmeralda.


ngrok is a cross-platform application that enables a locally-hosted web server to be exposed to the internet. Installing ngrok on the host machine is quick and simple. Once you specify the listening port of the web server, the ngrok client will: (1) initiate a secure connection to the ngrok server, (2) create a TCP tunnel on an subdomain, and (3) route all HTTP traffic hitting the unique ngrok address to the specified port of your local host… essentially bypassing firewall restrictions and NAT mappings to expose your local machine to the internet. Pretty cool! 😎

Cataloging My Personal Library in Koha

If you’ve made it this far, feel free to run a search or two for items in my personal Library Catalog.

I’m using Koha as my ILS and ngrok to expose it to the internet. I’ve only cataloged about 100+ items related to libraries, archives, and book history. Select you keywords accordingly. Sorry, no lending privileges yet… that’s for another year.

Library Systems Analyst

Focusing on cultural heritage institutions: discovery applications, data (and metadata) wrangling, web development, process automation, and system integration.