Monika Mevenkamp

Princeton University - Office of Information Technology

In 2014 I joined Princeton University's IT department at the start of the Open Access Project. Its goal was to plan a workflow and implement related software support, that would enable librarians to collect, vet, and lastly publish faculty articles along with relevant metadata on Princeton's web. Together with project stakeholders I gathered requirements. I implemented a workflow prototype tool to evaluate Ruby on Rails, Solr and Hydra (Samvera) aas a possible software stack. We settled on adapting the Symplectic Elements software for article collection and using the DSpace open source software to provide access in an online repository. I implemented the required customizations to DSpace's user interface as well as its workflow module and integrated it with Symplectic. Additionally, authors may opt out of Princeton's open access mandate using a custom Ruby and Rails application, which I designed and implemented as well. It uses a MySQL database, a Solr index, includes RSpec based test cases. A REST API informs a custom AJAX function that populates form data. Capistrano streamlines deployment to production and QA systems. I continue to support all three applications since their production release in the fall of 2015. The repository can be viewed at

In addition, I have been maintaining Princeton's document repository,, also based on the DSpace open source software. The repository contains mixed materials ranging from data sets submitted by faculty, Senior Theses and Dissertations, licensed library journals, as well as working papers. In my role I interact with the different user groups, setup submission forms to collect appropriate metadata, adapt configurations as needed, and implement custom features as they become necessary. When I upgraded DataSpace from version 1.8 to version 5, I enhanced the default user interface to better match Princeton's use case.

For both repositories I modified DSpace's Java code and JSP pages extensively; worked with its Solr index as well as its Oracle database. The codebase is maintained in branches of the same git repository. I have been an active member of the DSpace community contributing code, as well as taking part in working groups. At the 2016 OR conference in Dublin, I gave a developer track demonstration about the JRuby gem I created to simplify DSpace maintenance tasks, such as normalizing metadata or gathering statistics, and presented a poster on one of my user interface customizations.

Princeton undergraduates must write a senior thesis as a requirement for graduation. Since the class of 2013 these theses are collected in DataSpace. The related submission and review process used to be very cumbersome. In the summer of 2017 I started researching options for a better solution. Coordinating with my project partner at the library I developed requirements and decided to use the Vireo open source software as a basis. Vireo is a mature Play application, uses the Spring framework, a Postgres database and Solr index. Although Princeton's use case differs from the usual Vireo use case, I was able to achieve our goals with relatively few code changes. Princeton's UX office reviewed the application favorably before its release, so did seniors and department administrators after the system opened this spring. The application runs in the Amazon cloud on an EC2 instance using an RDS server for the database. We will terminate the EC2 instance as well as the RDS server as soon as theses are imported into DataSpace. This is the first such cloud application used in production within Princeton's IT department. My project partner from the library and I will present our system at the upcoming USETDA 2018 conference.

In other smaller projects I have worked with the Amazon Cloud. I for example developed a python lambda function, triggered by CloudWatch events, that starts and stops tagged EC2 instances at predefined times. I have presented 5-minute lightning talks at Princeton's annual Unconference. I have taken advantage of Princeton's staff development opportunities, including classes on Project Management and have earned Princeton's User Experience Certificate.

Emory University and Educopia

During my 5 years at this position I was involved in strategic planning, software and systems design, development, and support, taking the lead role in many areas. I am a coauthor on two chapters in 'A Guide to Distributed Preservation' published by Educopia, and I gave the main technical presentations at annual meetings.

MetaArchive runs a network of servers, that ingest data from the web via HTTP-GET-based crawls onto their disks with the goal of preserving multiple 'healthy' copies of important electronic documents. UNIX servers, located at MetaArchive member institutions, are equipped with the LOCKSS open source Java software developed at Stanford. During my tenure the network grew from a purely American network to include locations in the UK, Spain, and Brazil.

Shortly after joining, I was invited by the LOCKSS team to help extend their Ruby on Rails monitoring tool. I designed and implemented the conspectus, a Ruby on Rails tool, now central to MetaArchive operations. It provides parts of network configurations in response to XML get requests. It integrates status information provided by a RESTful API, that I added to the LOCKSS monitoring tool and interfaces through AJAX/jQuery with a legacy PHP tool. The conspectus is highly configurable, with CSS files for different skins and global settings defining integration points with outside tools. To enable finer grained status reports and to simplify the creation of annual member reports, I implemented a set of Python/Django scripts. I augmented monitoring with Nagios, using standard as well as custom plugins, interfacing with the monitoring and reporting tools I developed.

Georgia Tech

While I worked at Georgia Tech I supported the library's DSpace based institutional repositories. Among other projects I integrated Google Analytics into Georgia Tech's open access repository, SMARTECH, extended its statistics capabilities, and generally supported and adapted the software to library needs. In my other role I supported the library's archives department in its move towards using the Archivist Toolkit.";


  • Princeton University Unconference @ OIT - 5min Lightning Presentations
    • Cloud Automation (pdf | ppt)
    • Infrastructure as Code - Why the Buzz ? (pdf | ppt)
    • JRuby (pdf | ppt)
  • 2016 Open Repository Conference
    • Scripting DSpace in JRuby with the jrdspace gem (pdf | ppt)
    • Collection level Customization in DSPACE with CSS and a little bit of Java (pdf | ppt)
  • ALA Annual Conference
    • 2009 Poster Presentation Handout (pdf)
  • Educopia Members meeting
    • 2012 Monitoring at MetaArchive (pdf)
    • 2209 MetaArchive Architecture (pdf)
    • 2009 Ingesting Content with Plugins (pdf)
    • 2008 MetaArchive Architecture (pdf)
    • 2008 Plugin Developmemt and Standards (pdf)

Algorithm Animation

Princeton high school's computer science teacher mentioned on one of my regular visits, that animation helps students understand algorithms. Nonetheless, many students can not translate this understanding into code, especially where recursion is involved. I developed animations of mergesort (and a slightly improved version), a recursive factorial computation, and a permutation enumerator. In each case the animation shows the codes execution and related data changes side by side.

First I implemented the algorithms in Python, annotated the code with print statements that traced their actions in JSON format. I designed JavaScript classes for showing the data, code snippets, a stack of code snippets with push and pop methods, a class representing the action trace as it is printed by the Python routines. The action tracer allows step, run, and stop actions.

You can see the animations HERE and browse the html, css, JavaScript, and Python code THERE.

iPhone App

In February, 2012, I released my first iPhone Application. It is a proof of concept application showcasing the Concorde TSP code, developed by Appelgate, Bixby, Chvatal, and Cook.The code computes the optimal solutions to traveling salesman problems with many nodes.

The App serves as a companion to the Book In Pursuit of the Traveling Salesman by William Cook. It animates the solution progress for problems it reads from the Internet, generates randomly, or defines based on locally bundled data.

A newer version of the App is available for free from iTunes. Please try it and send us feedback.

QSopt Library

QSopt is a linear programming software package. It is written in the C programming language. I ported it to Windows/Visual-C++ and Java. I also wrote graphical user interfaces for this library and helped to develop its website.


The Concorde graphical user interface can be used to apply the Concorde TSP Solver to a specified set of cities as well as several edge generating algorithms. It is implemented in Visual C++ and available for download to Windows users.

MCM Theater

MCM Theater is a Java package that I developed. It provides an easy to use class library for an introductory Java programming class. I used it in a Mini Course at Galloway for 8-th graders who developed small screensaver programs.;

The companion web site MCM Theater makes heavy use of Java Applet, a technology that unfortunately did not age well.

Princeton High Google Site

When my children entered the Princeton high school, I found the schools web site disorienting and I tried to come up with ideas to help inform parents in a more user friendly fashion. Initially I considered using the Drupal CMS. While it offers great flexibility and many features, Drupal requires at least a minimum of tech support, which precluded its use.

In the end I settled on building a Google Site. Once the site layout with a Google Calendar, Announcements, and a few dedicated pages stabilized, upkeep mostly consisted of posting announcements and updating the calendar. The most difficult piece became finding relevant information and rewriting it for the web. I maintained the site from its inception in 2009 to the 2012/13 school year, when I trained my replacement to take over.

By 2011 all other PTOs in the school district started a google site, each mirroring the high school site's design. The district launched a site redisgn in the 2012/13 school year, which incorporated several of the PTO site's popular features, among them a search button, announcements on the front page, and google calendars.

Through the site I got in touch with the school's Director of Service-Learning and Experiential Programs. Discussing with her the administrative aspects of managing the service projects of about 350 10th graders, as well as the schools tutoring program, I introducing her to Google Forms and Google Group Mailing Lists, tinyurl, ...

Math Practice Sheets

When my son was supposed to practice multiplication tables I developed a web page that simply generated itself on the fly. I continued working on building sheets for various math topics. Some of them are accessible through the Math Practice Sheets link.

This is now many years ago .. but the sheets still work and may still be useful to someone.