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 Open Access project aims to implement a web-based submission workflow for librarians to collect articles published by Princeton faculty with the goal of submitting them to an institutional repository, that is to be developed as well. During the initial project phase, I participated in the working group, made up mostly of librarians that produced project requirements, as well as in discussions with MIT staff, who pursue a similar project. As the requirements for article discovery, publisher policy and waiver management solidified, I implemented a workflow prototype tool, to evaluate Ruby on Rails, Solr and Hydra as a possible software stack. Additionally, I implemented a waiver application tool, now used by faculty, also in Ruby on Rails with a Solr index and a MySQL database for persistence. It includes a REST API that enables dynamic population of form data 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. Since I joined, 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. In the course of implementing custom command line scripts, I bundled general-purpose functionality in a JRuby gem that enables interaction with DSpace Java objects from Ruby code. These scripts run on the DataSpace virtual machines inside a Docker container. 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. 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.
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.";
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 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 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.