Monika Mevenkamp

Princeton University

Since joining Princeton I have been part of the university’s Open Access Scholarly Communications project. In addition, I am responsible for the university’s existing digital repository, DataSpace.

The pilot phase of the Open Access project ended on in Oct 2016 when the Open Access Repository made 100 articles published by Princeton faculty openly accessible on the Internet. From the beginning I took part in the library's working group which developed requirements for the collection workflow.

Early on I implemeted a prototype workflow tool, to evaluate Ruby on Rails, Solr and Hydra as a possible software stack. In the end the group decided to purchase Symplectic Elements, to support article discovery and to integrate it with a DSpace repository instance. I added a custom extension to the DSpace workflow system that allows us to send email notifications to authors. Additionally, I implemented a waiver applicastion tool in Ruby on Rails with a Solr index and a MySQL database for persistence. It includes a REST API and JavaScript that dynamically generates suggestions as users type text into a search field. Code deployment with Capistrano facilitates frequent revisions. RSpec-based test cases enable quick validation of code changes.

DataSpace is a web application, based on the DSpace open source software, that is written in Java with a UI implemented by JSP pages and data stored in an Oracle database, Solr indices, as well as the file system. I have implemented UI changes and modified the submission workflow for the Senior Theses collection according to requests by the Dean of Students and Mudd Library. As a result, starting with the 2013 class year, theses are now available as full text on the Princeton network. In January 2016 I upgraded the DataSpace instance from version 1.8 to version 5.4. I rewrote DSpace ‘s checksum tool to allow targeted checking or status reporting of selected document subsets. All code and configurations are now maintained under Git, which simplifies the submission of code to the developer community. Several contributions have become part of the DSpace code base.

In the course of implementing custom command line scripts to facilitate day-to-day operations, I bundled general-purpose functionality in a JRuby gem, that enables interaction with DSpace Java objects from Ruby code. I presented a poster on one of my DSpace UI modifications and gave a developer track demonstration about the JRuby gem at the 2016 Open Repositories conference.

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 iOCKSS 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.";

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.

Concorde

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.