Defending Net Neutrality. Again.

I’m bringing this blog out of dormancy to add my voice to the chorus of people defending net neutrality. It isn’t the first time; we’ve been here before when the rules were first adopted by the Federal Communications Commission in 2015. New president, new people in charge, but the reasons for keeping this rule in place remain the same. I said what I needed to say in a comment to the FCC, reproduced below.

The FCC should safeguard Internet freedom by keeping the bright-line net neutrality protections in place and upholding Title II.

RA21: A new effort to ease the user experience for off-campus access to licensed content

Earlier this year the STM Association — a trade association for academic and professional publishers — started a project called RA21: Resource Access in the 21st Century. The project is a renewed approach to moving past network address recognition and proxy agents as a way of authenticating access to licensed content. I describe the RA21 effort in general on the Index Data blog and listed some of the potential impacts on the FOLIO project.

Want to buy a can opener?

This has to be among the weirdest pieces of unsolicited mail I’ve ever received. Nigerian prince? That is so yesterday. Virtual pharmacy? Too much effort. No, what we want to sell you is a can opener!

Hi Sir/Madam,

Glad to hear that you’re on the market for can opener.

We specialize in this field for 5 years, with good quality and pretty competitive price. Also we have our own professional designers to meet any of your requirements.

Should you have any questions, call me, let’s talk details.

Yours Sincerely,


Free Software in Libraries, success stories and their impact on the library today

Today I was privileged to present to the 6th International Congress of Technological Innovation, Innovatics 2016, organized by Duoc UC Libraries, Library of Santiago, and University of Chile Libraries. The conference was simultaneously translated in English and Spanish. To aid the translators, I wrote out the text of my presentation for them to review. Below is the text as it was intended to be presented; I did diverge in a few places mostly based on what others said earlier in the conference.

Evolution of Open Source in Libraries

Happy to Announce that I’m Joining Index Data

Index Data posted an announcement on their blog about how I will be joining them next month. Confirmed! I'll be working on the open source library service platform that was announced by EBSCO last month, and more specifically in a role as an organizer and advocate for people participating in the project. It feels like my career has been building to this role. And it also means getting re-engaged in the OLE project; I was part of the design effort in 2008-2009 and then drifted away as professional responsibilities took me in other directions. In the executive overview of the OLE design report, we said:

Modify Islandora objects on-the-fly using Devel “Execute PHP Code”

Alan Stanley taught me this trick at an Islandora Camp a few years ago, and when trying to remember it this morning I messed up one critical piece. So I’ll post it here so I have something to refer back to when I need to do this again.

The Drupal Devel module includes a menu item for executing arbitrary PHP code on the server. (This is, of course, something you want to set permissions on very tightly because it can seriously wreck havoc on your day if someone uses it to do bad things.) Navigate to /devel/php on your Islandora website (with the Devel module enabled), and you’ll get a nice, big ≶textarea> and an “Execute” button:

How to fix a directory that Git thinks is a submodule

Nuts. I added and committed a directory to my Git repository when the directory itself was another separate Git repository. Now Git thinks it’s some sort of submodule, but it doesn’t know how to deal with it:

$ git submodule update
No submodule mapping found in .gitmodules for path 'blah'

And worse, Git won’t let me remove it:

$ git rm blah
error: the following submodule (or one of its nested submodules)
uses a .git directory:
(use 'rm -rf' if you really want to remove it including all of its history)

So what to do? This:

$ git rm --cached blah
$ git add blah

In my case I had a situation where there were several Git repositories-inside-a-repository, so I wanted a way to deal with them all:

$ for i in `find . -type d -name .git -print | sed 's#/.git##'`; do 
> echo $i
> rm -rf $i/.git
> git rm --cached $i
> git add $i
> done

(Be careful not to run this find command at the root of your Git repository, of course, or else you will effectively destroy its usefulness as a git repo. )

Idea for an NPR Twitter bot — Tweet me about that story I just heard

So I had an idea for a Twitter bot I would like to see. Occasionally I’ll be listening to a story on NPR and I’ll want to know more about it. Sometimes the host will say something like: “come to for more information and click on…” Other times it will be because I missed a crucial bit of the story and I’ll want to know more about it. So why not have a Twitter bot that I can call upon to say “Tell me more about that story”:

Emerging Tech: Bluetooth Beacons and the DPLA

This is the text of a talk that I gave at the NN/LM Greater Midwest Region tech talk on January 29, 2016. It has been lightly edited and annotated with links to articles and other information. The topic was “Emerging Technology” and Trisha Adamus, Research Data Librarian at UW-Madison and Jenny Taylor, Assistant Health Sciences Librarian at UIC LHS in Urbana presented topics as well.

Bluetooth Beacons

Embedding Graphics in Jaspersoft Report Files

One of the features of Jaspersoft Reports is the ability to include static graphics — logos, for instance — in the completed reports. These graphic files are normally listed in the JRXML configuration file by reference — meaning that what is stored in the configuration is a file name and not the graphic itself. Most times the configuration file and the ancillary graphics files are uploaded to a JasperReports Server for execution. In the environment that I’m working in, CollectionSpace, the report generator is embedded in the application without the JasperReports Server endpoint. The JRXML files must be compiled into the application, which makes keeping track of the ancillary graphics files somewhat troublesome.

Ideally, I would like to embed the graphics into the JRXML file itself, similar to what is done in with the data URI schema in HTML and CSS files to reduce the connection latency between client and server. This is possible, but the instructions and hints you find out on the internet to do it are out of date or incomplete. The instructions below are correct for Jaspersoft Studio version 6.2.0.