Could it run somewhere other than libguides?

As a thought experiment, I was wondering if we could easily get our library homepage up and running on a platform other than LibGuides. On the one hand, this seems like it should be pretty easy, as it’s all HTML/CSS/JS. But nonetheless, I wouldn’t be surprised if there would be some problems lurking in the corners.

Our page is a LibGuides group homepage that we totally emptied of content and rebuilt from the ground up. So there’s basically no boilerplate Springshare-written code in there; we wrote almost all of it all ourselves. In theory, this would make it more portable.

On the other hand, the carousel would break, as that is LibGuides-specific. But that’s really not critical to the site, and could be replaced with other content. Other bits could be adapted. For example, the script that fetches the library hours would need to be pulled out of the LibGuide where it lives now. It might throw an error if you tried to run it from a different domain. I’m not sure; I’d have to try to see.

It’s interesting to think about these things, which may someday be relevant. I’m not going to try migrating it now, as there is no pressing need, but I’ll definitely continue with the thought experiment.

Posted in homepage, libguides | Comments closed

AR, future directions

For me, holidays are a time to do a bilan, to take stock and to think about what’s next. In that spirit, here are some augmented reality things I’d like to pursue in our library in the new year:

  • Use AR.js to render text in the virtual space, not just shapes.
  • Explore more of the possibilities offered by the A-Frame framework.
  • Build out our AR game’s UI to allow for dialog boxes, quiz questions, etc.
  • Look at alternatives to AR.js. Maybe now there are other, more robust options?
  • Try hosting the AR game somewhere other than on LibGuides. (Because having access to server-side scripting — which LibGuides does not offer — would allow us to capture more interesting analytics.)
  • Finish a paper that Prof. Carrie Jedlicka and I are writing on this.
  • Maybe try to get a poster accepted at a conference?
Posted in ar | Comments closed

Task force

It is probably very nerdy that I am as excited as I am to join something called the Alma Extensibility Task Force. It’s basically a committee to work with the Alma APIs, and I am totally here for it. There are a bunch of reasons for this:

  • It’s a chance to work with some stellar colleagues. Seriously, the people on this task force are top notch.
  • I’ll probably get to do some substantial Python programming. After some time spent wandering in the wilds of JavaScript, this sounds very appealing.
  • I might be able to finally contribute meaningfully to the Alma work on my campus. Up until now, I’ve been lingering in dissatisfied way on the edges of our library’s Alma work, not really wanting to become a power user of the Alma web UI, but still wanting to contribute more meaningfully. This task force may be my chance to do that.
  • I may actually have some knowledge to contribute here. I’ve done a lot of API-based projects over the years, and this (I think) is exactly the skill set they’re looking for.

So I will hum with excitement in advance of our first meeting in January. Until then, I hope everyone has a happy holiday!

Posted in alma, api, committees | Comments closed

Migrating to bootstrap 5

LibGuides seems to have finally begun its long journey to Bootstrap 5. In the abstract, this is really good news. New features! Modern tools! No longer having to worry about Bootstrap 3 being EOL! All good stuff.

But in practice, I think this might ultimately mean a lot of work for our library. Our library homepage is a heavily-bootstrapped group homepage. I expect that a lot would break if we simply flipped the switch to Bootstrap 5. The official list of breaking changes is daunting (and this list only covers the 4 to 5 part of the migration!).

Also, the migration timelines are still unclear to me. So far, Springshare has only launched Bootstrap 5 for the A-to-Z lists. I asked about subsequent timelines on the Springshare Lounge earlier this afternoon, but it’s the day before Thanksgiving, and I assume many people are (quite rightly) busy with the non-Bootstrap parts of the holiday.

My thought is to pitch this whole situation to my co-workers as a chance to do a redesign. If lots of things are breaking anyway, why not make it better? I bet we can come up with some constructive, iterative ideas for improvements.

Posted in bootstrap, homepage, libguides | Comments closed

Research and sordid calculations about promotion

I’m up for promotion this year, and it’s too late to try to get any more research papers published before my file gets reviewed by the promotion committee. So a few days ago I made the very pragmatic/mercenary decision to not start any new research projects right now. Instead, I’ll focus on committee work, which can still plausibly move the needle on my promotion application. Research can wait.

But then I woke up on Sunday morning super depressed about this decision. It feels very un-motivating to not be working on a paper. I find the research to be one of the most rewarding parts of academic librarianship, and I don’t really want to give that up, even if it isn’t really expedient right now.

Which is to say my research hiatus might be over after just a few days. I have some stuff I want to work on.

Posted in research | Comments closed


I’m trying something new: cross-posting from Gemini. I don’t foresee doing this very often. It’s a bit of an experiment.

So I had been using AV-98 by solderpunk as a gemini client, which was last updated 3 years ago according to the repository on tildegit. Anyhow, the recent lack of maintenance has been catching up with it, as there are an increasing number of problems with the client with each successive Python release.

But I don’t want to dwell on AV-98; it was a fine client while it lasted, but it was time to move on. Since I did like AV-98, I was drawn to offpunk, which is a fork. It’s also actively maintained (the most recent update was last week). Offpunk has a lot more features than AV-98, which is kindof fun. I like the idea of offline reading (what if I’m on a plane?), and it’s cool to read other formats, from web to rss and so on.

Offpunk is also pleasingly janky[1]. As in it is a project that I could see myself contribuing to. It’s certainly not perfect but I can plausibly see opportunities to submit patches and issues. Plus it’s written in Python, which makes me happy.

So lots of new stuff to explore here. Happy to have the opportunity for further tinkering in gemini.

[1] EDIT – The janky problems turned out to be a result of my Python setup, not Offpunk’s fault at all! My apologies to Ploum! :)

Posted in gemini, smol | Comments closed

Status page

Over the past two weeks, I put together a “status page” for our library services. It’s not live yet, but I hope to make it public soon. Basically the page gathers HTTP response codes by submitting GET requests for each of our outside services (website, collections, and other services like ILLiad, Primo, and EZproxy), and displays them to the user, helpfully color-coded to show which ones have failed.

The point is that librarians and other users – on our campus and elsewhere – can see what is working and what is not. The use case may be as straightforward as asking “is the website down?”, or perhaps may be more complicated, such as debugging eresource access problems.

One interesting thing that I learned is that a lot of our services return 3xx series responses, which are redirects. I’m not sure why this is yet. Perhaps our vendors just move their pages around a lot. Or maybe the URLs we have stored in our CMS are just particularly old. In any case it is curious and I intend to investigate further. I have set Python’s httpx library to dig a bit deeper and follow redirects to see where they lead. One hopes they ultimately lead to a 2xx, but it is clear that sometimes they don’t :(

I also had to spoof some headers to avoid unwarranted 4xx series responses. Some vendors were returning 403s if it was clear that it wasn’t a browser making the request. So I used a Firefox user-agent header and, for the most part, got more reliable responses. Some vendors continue to give 403s nonetheless. I wonder what it is about my GET request that is causing them to continue to return “Forbidden”. I will puzzle over this some more. Once I get the whole thing in decent shape, I will share it with the CUNY eresources librarians.

Posted in http status, maintenance, networking | Comments closed

The thanksgiving challenge, revisited

In 2021, I posted about how I was planning to stay home by myself for the Thanksgiving weekend and work on writing code for my Open Journal Matcher project. I then went on about how great it was. So this year I’m going to do the Thanksgiving programming challenge again. The premise is simple: stay by yourself and code all weekend. It is okay to have your dog (or other pet of your choosing) with you. Stay up late if that helps. Coffee or tea is optional but encouraged.

Some things I might try:

  • Migrate our Springshare A-to-Z page to Bootstrap 5
  • Build a status page for all of our various library services
  • Improve our public-facing Primo landing page

If anyone else is in for the challenge, let me know. Post your progress, encouragements, or visible signs of distress to Mastodon. We’re going to write a shit ton of code!

Posted in holidays | Comments closed

Ubuntu on an 2012 macbook pro

The cheap Chromebook I bought last year is starting to flake out. The keyboard is becoming less responsive; the left shift key has become particularly troublesome. I’m realizing that you can only expect so much mileage out of a $300 machine. It has been my daily driver for a year, so I think it has held up remarkably, all things considered.

I’m realizing that I need a backup machine though. I’m still not willing to buy a fancy new laptop, so I’m trying to make do with what I have. What I have is a 2012 MacBook Pro that has been sitting in a box under the bed for several years. This may not sound that appealing, and indeed you are right: running MacOS it is entirely unusable. But I put Ubuntu 22.04 on it, in an attempt to salvage some more useful years out of the hardware.

So far so good. The Ubuntu minimal install that I started with was a mistake (too minimal), so I reinstalled with the normal Ubuntu installation. I had to install some drivers to get the wireless working, but now it is a usable machine. I hope to report back once I’ve spent some time with it and can give a better assessment of how useful this setup is.

Posted in chromebook, linux, macbook, ubuntu | Comments closed


Despite doing a lot of writing over the past few years, I’m definitely not a well-seasoned editor. If I’m being honest with myself, I’m not critical enough: I’m too willing to say “yes, this is fine.” But with some texts, strong criticism is definitely needed. I also sometimes feel that my edits are too superficial, and sometimes don’t adequately address the structural problems of a text.

But I do like editing. On the editorial board for Code4Lib Journal, I really appreciate reading the papers and watching them come together through rounds of revisions and input from editors. Editing technical topics poses unique challenges, because we are all sometimes confronted with the limits of our own technical knowledge. But it is valuable work, because we’re helping to produce something that hopefully benefits the Code4Lib community and beyond.

I also feel that editing is very much a learnable skill. Even in the brief time I’ve been on the editorial board, I think my editing abilities have come a long way. Granted I was starting from a low base. Nonetheless, watching the other editors has been very instructive. I hope to stick at this until I get much better at it. It’s probably a good skill to work on.

Posted in code4lib, editing | Comments closed
  • Subscribe to this blog

Skip to toolbar