Blogroll

Inspired by @fsvo, I’ve added a “Blogroll” tab to the top of these blog pages. Blogrolls were a popular late 1990s/early 2000s way to recommend content. The idea is that you include a list of links to other blogs on your own blog, so that people can discover new, related content. It’s basically low-tech relevance recommendations.

These seem to have fallen out of favor. But I’d like to suggest that we need to actively encourage alternate means of content discovery. Web search isn’t great these days, and neither are LLMs. Hierarchical directories like Yahoo and DMOZ are long gone, and (in my opinion) were never that helpful in the first place. But it’s useful to have a diversity of ways to find content. It precludes capture by one or a handful of companies. It may be low tech, and very smol web, but it’s valuable.

Posted in blog, smol | Leave a comment

Hardware necromancy

I had an old, broken Dell XPS 13 9360 sitting around for quite some time. It was a computer that I really liked, but I dropped it off a table at one point, and the hinge of the monitor broke so badly that it became unusable. Anyhow, I didn’t want to throw it away, because aside from the case, it was perfectly fine.

What I did was buy a second broken Dell XPS 13 9360 on eBay for $161. This sat on my nightstand unopened for quite a while, waiting for me to find a chance to roll up my sleeves and mess with the hardware. I finally got around to tackling this last night.

The first thing I did was try to put the SSD from the original machine into the new one (which came with no hard drive). This may have worked, but I didn’t get to find out, because the fan wasn’t working. The machine wouldn’t boot, and complained loudly and angrily about the fan.

Replacing the fan was a bigger task. I first had to take out the battery (pretty easy) and the motherboard (less easy). I ultimately reassembled the laptop using the battery, fan and motherboard from the old machine, which I had more confidence in. I wired it all up again and expected it not to work :) But it booted!

But at this point the rebuilt machine didn’t recognize the SSD. I’m not sure why. Perhaps because I restored the factory settings in the BIOS? (I may be totally wrong about this; it is just a guess.) Anyhow, I was able to boot into an initramfs recovery shell, and I could get the SSD working again by running fsck (file system check) from the shell. I could then install Debian 12 from a USB drive and my “new” machine was up and running!

Posted in hardware | Leave a comment

On my occasional disavowals of coding

Every once in a while, I write a post talking about how I’m going to (more or less) walk away from coding. But nonetheless, the coding projects continue, and this blog endures. This speaks to the compelling power of writing code, even when work and/or life pulls in other directions. Programming, as many people will attest, is enchanting.

Partly this perennial interest on my part is also due to the positive reinforcement loops that can occur between programming and academic work, which I’ve talked about elsewhere. And code is a very versatile tool that can tackle many kinds of tasks in libraries, giving it an evergreen utility.

I started with Python v3.3, which was a long time ago now, and over the years I’ve run through a wide range of emotions and dispositions toward coding. Longtime readers of this blog will perhaps see a pattern, or maybe some cycles. This post is perhaps best read as another marker on that (iterative?) journey.

Posted in meta, writing | Leave a comment

OJS, part 2

In a previous post, I described my recent install of PKP’s OJS. This week, I followed up by doing a run-through of a sample publication workflow on my localhost version. In brief, it was great. Without consulting the documentation, and without very much confused clicking around, I was able to peer-review and publish a sample issue of one article. This was a big victory. While it would take a lot of configuration to adapt the tool to a real-world scenario, the fact that it was so intuitive was remarkable. I am very impressed!

Posted in ojs | Leave a comment

Code4Lib Journal issue 60

I just wanted to point out that Code4Lib Journal, issue 60 is now published!

https://journal.code4lib.org/issues/issues/issue60

  • Quality Control Automation for Student Driven Digitization Workflows
  • OpenWEMI: A Minimally Constrained Vocabulary for Work, Expression, Manifestation, and Item
  • Taming the Generative AI Wild West: Integrating Knowledge Graphs in Digital Library Systems
  • Gamifying Information Literacy: Using Unity and Github to Collaborate on a Video Game for the Library
  • Large Language Models for Machine-Readable Citation Data: Towards an Automated Metadata Curation Pipeline for Scholarly Journals
  • Refactoring Alma: Simplifying Circulation Settings in the Alma Integrated Library System (ILS)
  • Distant Listening: Using Python and Apps Scripts to Text Mine and Tag Oral History Collections
  • Static Web Methodology as a Sustainable Approach to Digital Humanities Projects

I bring this up here because I feel like this is a particularly strong issue. All of the articles are excellent! Enjoy!

Posted in code4lib | Leave a comment

In praise of the case study

The academic literature of librarianship is a bit narrow sometimes. Most journals expect conformity to an article structure taken directly from the social sciences. In my experience, this can chafe at a librarian’s creativity: we sometimes need to go to tremendous efforts to find ways to shoehorn our ideas into that social science article structure, just to make our work publishable in a peer reviewed library journal.

This is not ideal.

I hope to have more news to share about this topic soon. But in the meantime, I’d just like to point out one effective strategy for a librarian who is despairing at their limited stylistic choices: the case study. Library journals sometimes have a peer reviewed section devoted to case studies, and while it might be called something else, these sections are often much more flexible than they may initially appear. The useful thing about this format is that once you have spent a few paragraphs dispatching your “case”, the rest of the study is often wide open to you. You are then at liberty to take the document where you please, and make the points you want to make. Of course you still have win over the editors and the peer reviewers, but I have faith in you! So it is definitely worth considering whether your project would make an effective academic case study.

Posted in case study, research, writing | 1 Response

In praise of Bootstrap

While I’m pretty sure that it is very out of style by now, I still really like the aesthetics and functionality of Bootstrap. As an example of its utility, I recently coded up a quick, off-the-cuff static page with Bootstrap. I could make it look nice with only one ‹link› tag and no JS or CSS files, or even any inline CSS. It was fast, effective and largely painless.

The minimalism of the Bootstrap aesthetic also has a timelessness to it, in my opinion. While it is often obvious when people are leaning on Bootstrap, that does not mean that it is necessarily bad. Minimal pages are sometimes called for. Aside from the expedience of the tool, it encourages content that is readable, simple and clean. 10 out of 10; would ‹link› again.

Posted in bootstrap | Leave a comment

OJS

Our library is OJS-curious these days, so I thought I’d set up a test instance so that we can kick the tires. This post is a quick summary of the steps needed to get this working:

  1. Install KVM and virt-manager (and dependencies) on my laptop, to create and manage virtual machines.
  2. Spend quite a while debugging virt-manager, which was throwing an error. After a lot of digging, I realized I needed to enable virtualization in the BIOS.
  3. Create a VM using the virt-manager GUI. I wanted to do this project in a VM because I really didn’t want to bork my daily setup; a VM solves this problem very nicely.
  4. Install Debian bookworm as the guest OS. This took forever because (a) Debian installs are slow, (b) my laptop is not high powered, and (c) I provisioned the VM very minimally. I did some yoga while it whirred.
  5. Boot up the guest OS and install PHP and PostgreSQL.
  6. Install some more PHP dependencies: both those specified by OJS, and some others needed to support PostgreSQL.
  7. Set up the database, with the help of claude.ai :)
  8. Run the development server that is included with OJS, and do the required setup by loading the configuration page on localhost. The installation process then kicks off.
  9. Answer a few more questions, and voilĂ ! Up and running!

I think this took me about four hours altogether, but I bet you could dispatch it more quickly!

Posted in debian, ojs, vm | Leave a comment

Code4Lib 2025

The annual Code4Lib conference was earlier this week, and as always, it was inspiring and motivating. This was my 5th Code4Lib, and it has become an important part of my professional life. Talks range from the very high-level to the very detailed, and it is testament to this community that they reliably inspire no matter where they fall on this continuum.

Anyhow, here are some things I came back to my office wanting to tackle:

  • Add a “Suggest this page for accessibility remediation” link to all of our LibGuides pages, so that users can flag accessibility issues.
  • Go further in my weird journey into GitHub-LibGuides integration. I met someone else at the reception who is also doing this work, and we had an intense, long talk about our approaches.
  • Write some Vue code to randomly swap out the jumbotron image on our library home page. This should be a fun, smallish project that I made some good initial progress on at the conference.

I’m already anticipating the next Code4Lib!

Posted in code4lib, conference | Leave a comment

Pivot

As I get older, I recognize that my capacity to contribute meaningful code to librarianship is diminishing. For me, coding was originally a backup plan: a career path that I could pursue if I didn’t get tenure. But it didn’t come to that, thankfully. Also, it turned out that I love coding, and that it has brought me a great deal of joy over the years. But the window of opportunity to transition to a programming role has rapidly closed. The impression I get is that by my age, most coders have become managers and stop writing software as intensively.

Anyhow, I am fine with this. There’s not much I can do about it anyway. The result is that I should probably not continue to put all my eggs in one programming basket, and find something else to do with my time. So recently I’ve been focusing more on “peri-scholarhship”. Going forward, I want to put more of my efforts into supporting librarianship by writing articles, reading them, reviewing them, editing them, working in the publication process, and so on. I know I’m a marginal participant in this world, at best. But my calculation is that with the years I have left in the profession, I’ll be able to make more of a contribution via peri-scholarship than I would by continuing to chase JavaScript libraries.

All this to say that posts to this blog may become less frequent. I hope you’ll stay subscribed to the feed, because I’m not closing down the blog, just shifting the emphasis elsewhere for a bit.

Posted in old | Leave a comment
  • Subscribe to this blog via email

Skip to toolbar