Monday, October 12, 2009

Adding RSS feeds to Drupal's Apache Solr Search module

(Drupal 6.x branches only!)

It's actually embarrassingly simple:

1. Install and enable the OpenSearch Feed module.

That's it! To test, try a launching a search; an "XML" button will appear next to the "Search" button on all Apache Solr Search results pages.

By the way, this makes your site OpenSearch-compliant, meaning that IE7+, Firefox and others will auto-detect your search engine and let you add it to your browser's "Quick Search" bar.

Tuesday, July 14, 2009

Applying code patches in Windows Vista

(I'm speaking of .patch files, BTW) =)

In Vista it was particularly frustrating figuring out how to do this in Windows:
   patch -p0 <patchfile
...something that's pretty simple in the UNIX shell of your choice.

I started by installing GNU Patch for Windows... but Vista didn't want to run it because of Windows UAC. Also, to me it seemed too cumbersome to have to open up a Windows commmand prompt JUST to apply patches, when I was doing everything else from the Windows Explorer UI thanks to the awesome TortoiseCVS.

So, here's what I did:
  1. Install GNU Patch for windows, using the Binaries ZIP file; I installed it in C:\Program Files
  2. Make sure patch.exe now lives in c:\program files\patch\bin\patch.exe
  3. Create the .bat file c:\program files\patch\bin\patch.bat with these commands:
    @echo off
    "c:\program files\patch\bin\patch" -p0 < %1
  4. Create two .manifest files to keep UAC happy:

    c:\program files\patch\bin\patch.exe.manifest
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <requestedExecutionLevel level="asInvoker"/> 

    c:\program files\patch\bin\patch.bat.manifest
    With the exact above contents of patch.exe.manifest

  5. Associate .batch files with the new patch.bat file. You can do this by creating an empty file and renaming it something.patch. On Windows Explorer, right-click this new file and use the "Open with" option, and tell Windows to always use c:\program files\patch\bin\patch.bat to open this file type.
There! Now, when you double-click on .patch files from Windows Explorer, a command line will open up with the Patch results, and wait for a keystroke before closing.

Tip: Always remember to place your patches in the correct directory!

Friday, June 26, 2009

My article about our Drupal library discovery layer

At last, it's out.

From the abstract:

The purpose of this paper is to document how the library at Tecnológico de Monterrey, Monterrey Campus came to use the open source Drupal with other freely available tools as the basis for an extensible platform for current and future information discovery gateways.

The article is available here:
From OPAC to CMS: Drupal as an extensible library platform (subscription required; you can get a pre-print version).

Basically the article relates how we built a library discovery layer built on Drupal, which contains the portion of our collections that is relevant to the School of Biotech and Health at the university. It uses the Drupal Millennium and HILCC modules, the Google Custom Search Engine, EZProxy and lots of other Drupal modules to do it.

As it stands, I'm proud I was able to publish my first article in a peer-reviewed Journal; I, however, think I could have delivered a better product. Something for next time =)

Also, I was rather surprised to find out the journal (Library Hi-Tech) has impact factor metrics from ISI-Thomson.

I'm not sure if I can distribute a pre-print version; I'll ask =) Pre-print version is here.

You can also view my earlier post about a presentation on the same subject.

Tuesday, May 5, 2009

Library of Congress releases LCSH as linked data

Yesterday the LOC announced it is releasing it's first service on which contains LCSH terms represented as RDF/XML, N-Triples and JSON.

The vocabulary is available for download, or can be searched online at

Here are some sample snapshots:

Search for "simple machines"

View for the topical term "Simple machines". Note you can export the term as RDF, N-Triples or JSON.

Each term has a "Visualization" tab which shows related, broader and narrower term relationships.

Thursday, April 16, 2009

Authenticating Drupal users against III / Millennium

The Millenium (III) Integration module for Drupal now has a VERY experimental module that uses screen-scraping to allow authenticating users against an III system using their library credentials (barcode/ID, last name and PIN).

This is done using a bit of screenscraping and using the "usual" Drupal API hooks.

The neat side of doing this is you could, in theory:
  • [optionally] share your currently loaned items with other users or publicly
  • receive custom alerts while navigating within the Drupal site ("you owe the library $$")
  • when looking at an item imported via Millennium module for Drupal, see a message informing this item is one you currently have/is overdue, etc.
  • let users make some/all of their loaned items public (in profile? RSS? etc)
  • Mash up any of the previous with other Drupal modules (imagine "Your Friend checked out this book, and rated it ****", or "Subscribe to your friend's checkout feeds", etc.)
Here's a screenshot of how this shows under the /user Drupal path:

Now, of course this is teh fragile, using screenscraping and stuff. Current options are: (1) $hell out for Patron API module for III, (2) use SIP (which still requires a module), or (3) keep at this;

How can YOU help? If you have an III system at your command, you could provide me with a temporary login to test against.

Thursday, March 26, 2009

Tuesday, March 17, 2009

HILCC module for Drupal

In our Drupal sites for our library and now in our Knowledge Hub we've been using LCC to catalog items and then using HILCC to produce a navigatable architecture in our Drupal sites.

This functionality is now available to the public at large as a Drupal module, which you can download here:

HILCC is a hierarchic classification scheme developed originally at Columbia University Libraries, designed to offer library catalogs a way to easily cluster similar-subject items for navigation. HILCC is licensed under a Creative Commons BY-NC license.

For now it's only available for Drupal 5, but a D6 version is in the works.

Thursday, March 5, 2009

LOC (re-)releasing Subject Headings and more

Karen coyle mentioned LC is bringing back subject headings and other information (some originally available in the now-defunct

More info is available in

What this means, is that at last some of LC's controlled vocabularies will be available to build the semantic web.

Wednesday, January 28, 2009

Auto-tag your content with Calais for Drupal

This is rebooting my interest in automated classification. =)

Check out the Calais Drupal module, based on the Calais service from Thomson-Reuters.
The Calais modules for Drupal (found at are feature-rich, highly intuitive and designed to make it easy for Drupal users to automatically metatag their content, generating rich Semantic metadata that can be shared via a simple key and integrated into the larger content universe.

The screencast shows what an implementation would look like. I'm ready to use Drupal's RSS aggregator or FeedAPI module to pull in some content and see how Calais auto-tagging would work.

Of course, now I want to see what Calais does to library items imported into Drupal, see how Drupal would expose RDF and other stuff!

Tuesday, January 27, 2009

Disabling Etags from affecting your YSlow score

YSlow is a great tool to quickly determine what optimizations can make your site quicker. However, Yahoo determined to include checking for ETags; if the server in question has ETags enabled, YSlow scores will be negatively affected. This should really not always be true, as ETags aren't always "bad"; if your site runs from a single server, having ETags enabled helps.

Looking for an explanation for this, I came across a comment from David C-L inside the Yahoo Developer's Blog:
  • Type about:config in the Firefox address bar.
  • look for the setting named extensions.firebug.yslow.pointsEtags and set it to 0. If the setting doesn't exist, you can create it by right-clicking and choosing "Add".
Now Firebug will not ignore the ETags setting on servers to determine the YSlow score.

Friday, January 23, 2009

Why implement federated search tools you hate?

In my case, I of course don't *hate* federated search engines, I just think some could be MUCH better (that's why I wrote a PHP layer on top of III's Metafind years ago before actually rolling it out to users).

In "Why Reference and Instruction Librarians Hate Federated Searching", the author points out a bunch of shortcomings of these tools, but mid-article reveals the reason:

Given the above, why are federated search products still on the market, and why are libraries still contracting with vendors? What has changed my own mind in the last five years, transforming me from a reluctant community college reference librarian fighting it tooth and nail to a web librarian petitioning the university’s budget priorities committee for extra funds to pay for it? Two things: usability testing and developments in federated search products themselves.

It goes on to mention new features, new attitudes, and the real-world impact of simply exposing all this quality information we have tucked away in our many, many subscription databases: trying to simplify our present too many interfaces, paths, requirements, dead ends, and opportunities for confusion.

Oh! Also, Don't forget to check out

Thursday, January 22, 2009

Userfly: hosted screen recording for usability testing

UserFly touts itself as a tool to do usability studies by just adding a line of javascript to your pages. In reality, it is a screen recording tool that stores the actions your users did in real time.

The recording works, although since the pages seem to be captured from the Userfly servers and then overlayed with actions from the browser, you will find that if the user is already logged in, Userfly might not playback actions on those pages correctly.

The service seems like it's still in an experimental stage. IMO it still needs some polishing (the demo video is narrated by someone with a cold), and personally adding the javascript to one of my sites really slowed down page loading.

To be honest I would need more testing to judge if it works or not. I love the idea of just adding the javascript and getting instant recordings of site visitors. from Chris Estreich on Vimeo.

On a side note, a full usability test consists of more than just going by screen recordings of users, just make sure you read up on the subject before actually embarking on a testing spree "just" with this tool =)

Wednesday, January 21, 2009

Drupal 6.x Starter Theme Comparison

This courtesy of the aggregator:

This table shows the current crop of themes that identify themeselves as starter themes for Drupal.

A starter or "base" theme is one that typically has very little style and is designed primarly for the purpose of building your own unique Drupal theme. For more information about theming Drupal view the Drupal 6 Theme Guide.