Brown University Library Digital Technologies Brown University Library Digital Technologies Bundler 2.1.4 and homeless accounts This week we upgraded a couple of our applications to Ruby 2.7 and Bundler 2.1.4 and one of the changes that we noticed was that Bundler was complaining about not being able to write to the /opt/local directory. Turns out this problem shows up because the account that we use to run our application is … Continue reading Bundler 2.1.4 and homeless accounts Upgrading from Solr 4 to Solr 7 A few weeks ago we upgraded the version of Solr that we use in our Discovery layer, we went from Solr 4.9 to Solr 7.5. Although we have been using Solr 7.x in other areas of the library this was a significant upgrade for us because searching is the raison d’être of our Discovery layer … Continue reading Upgrading from Solr 4 to Solr 7 PyPI packages Recently, we published two Python packages to PyPI: bdrxml and bdrcmodels. No one else is using those packages, as far as I know, and it takes some effort to put them up there, but there are benefits from publishing them. Putting a package on PyPI makes it easier for other code we package up to … Continue reading PyPI packages New RIAMCO website A few days ago we released a new version of the Rhode Island Archival and Manuscript Collections Online (RIAMCO) website. The new version is a brand new codebase. This post describes a few of the new features that we implemented as part of the rewrite and how we designed the system to support them. The … Continue reading New RIAMCO website Deploying with shiv I recently watched a talk called “Containerless Django – Deploying without Docker”, by Peter Baumgartner. Peter lists some benefits of Docker: that it gives you a pipeline for getting code tested and deployed, the container adds some security to the app, state can be isolated in the container, and it lets you run the exact … Continue reading Deploying with shiv Checksums In the BDR, we calculate checksums automatically on ingest (Fedora 3 provides that functionality for us), so all new content binaries going into the BDR get a checksum, which we can go back and check later as needed. We can also pass checksums into the BDR API, and then we verify that Fedora calculates the … Continue reading Checksums Exporting Django data We recently had a couple cases where we wanted to dump the data out of a Django database. In the first case (“tracker”), we were shutting down a legacy application, but needed to preserve the data in a different form for users. In the second case (“deposits”), we were backing up some obsolete data before … Continue reading Exporting Django data Searching for hierarchical data in Solr Recently I had to index a dataset into Solr in which the original items had a hierarchical relationship among them. In processing this data I took some time to look into the ancestor_path and descendent_path features that Solr provides out of the box and see if and how they could help to issue searches based … Continue reading Searching for hierarchical data in Solr Monitoring Passenger’s Requests in Queue over time As I mentioned in a previous post we use Phusion Passenger as the application server to host our Ruby applications. A while ago upon the recommendation of my coworker Ben Cail I created a cron job that calls passenger-status every 5 minutes to log the status of Passenger in our servers.  Below is a sample … Continue reading Monitoring Passenger’s Requests in Queue over time Looking at the Oxford Common Filesystem Layout (OCFL) Currently, the BDR contains about 34TB of content. The storage layer is Fedora 3, and the data is stored internally by Fedora (instead of being stored externally). However, Fedora 3 is end-of-life. This means that we either maintain it ourselves, or migrate to something else. However, we don’t want to migrate 34TB, and then have … Continue reading Looking at the Oxford Common Filesystem Layout (OCFL)