“Of things to come”, the TL;DR version


My colleague and former coworker Mike Rylander wrote a blog post about Equinox Software’s new services. The writing was a little bit formal, so I’m rewriting it in the spirit of a friendly amendment. What I think he meant was:

Equinox Software solves problems for libraries using Open Source software. We use Open Source because it’s powerful, and because it lets us help a lot of libraries. Open Source is not just a way of making software—Open Source is also a way of making communities of people who can help each other. That’s how people make Android phones, Google Chrome, and Ubuntu Linux. Open Source also means working together to create projects that benefit many people, and libraries love working together to create projects like that! So it’s a great fit.

Making Open Source software is exciting, but after the excitement fades, we have to work together to keep it in good shape. Sometimes volunteers will help out. When there aren’t enough volunteers, it’s important to know that there are people who find and fix bugs, and add new features. It’s important to be able to rely on the fact that someone out there will continue to improve Open Source software. Service providers—companies that do Open Source for a living—are a good way of being sure that community software will stay healthy.

Volunteers are crucial to Open Source. Most volunteers use the software and discover something they want to improve. Volunteers rarely have enough free time to see the big picture. Usually, volunteers study the part of the software they want to improve, then work on that part. When software gets complicated—and library software is complicated—some of the people working on it need to have enough time to see the big picture. All the parts have to work together smoothly. You don’t want anyone to have to reinvent the wheel. (Unless it’s a really awesome new wheel, in which case, go for it!) It’s better and cheaper to work with a good plan. So we need people who have enough time in their day to think about the big picture. Service providers can pay programmers who learn the software in depth, who can suggest plans for the community to consider.

We at Equinox Software have been thinking about the big picture. We know that Open Source software communities need to solve some long-term challenges. We’re going to be announcing some new services at ALA Midwinter that we hope will help the Evergreen and Koha communities to thrive for a long time. Stop by booth 541.

TL;DR: Long-range plans are a big deal for Open Source, and service providers like us can help.

Mike, is that more or less what you meant?


Free TextMarks service is over


Well, since my TextMarks service expired and you can’t get their free service anymore, this “Find your local library with a text message” service is no longer hooked up to SMS.

However, if you’re curious about what the service did, you can still reach http://sylvar.freeshell.org/finder.php?use_html=yes&zip=33166 to see the text message it would have sent you. Obviously, if you have a ZIP code other than 33166, you might want to alter the URL a little bit.


@tavros02 rides again!


The University of South Florida’s Tavros02 submersible autonomous vehicle (robotic submarine!), when it is deployed, tweets its position, heading, and some basic measurements. Its tweets look like this:

LAT=27.761812 LON=-82.634977 HEAD=267.30 ALT=2.36 DEP=1.10 TEM=21.16 CON=34726 #USF #SeaTweet

Well, that’s pretty cool, but I wanted to make it even cooler. So I wrote a REST service in PHP that would get the RSS feed of the sub’s Twitter timeline and convert it to a KML file (a geographic XML file, basically) that would display it on Google Maps. The KML file looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
    <Snippet>A robotic submarine with a Twitter habit, operated by the USF Marine Science EcoSystems Technology Group.</Snippet>
      <p><b>About @tavros02:</b></p>
      <p>Solar-powered Autonomous Underwater Vehicle (SAUV), #2 in <a href='http://www.marine.usf.edu/systems/tavros'>the Tavros fleet</a>, operated by the <a href='http://www.usf.edu/'>USF</a> <a href='http://www.marine.usf.edu/'>Marine Science</a> <a href='http://www.marine.usf.edu/systems/'>EcoSystems Technology Group</a>.</p>
        <b>Raw data</b>
          <li>Last update: Fri, 09 Nov 2012 18:58:02 +0000 (one year ago)</li>
          <li>Latitude: 27.761812</li>
          <li>Longitude: -82.634977</li>
          <li>Heading: 267.30</li>
          <li>Water depth: 2.36m</li>
          <li>Depth of vehicle below surface: 1.10m</li>
          <li>Water temperature: 21.16°C (70.1°F)</li>
          <li>Conductivity: 34726 S/m(10^-4)</li>
        <b>Computed data</b>
          <li>Practical salinity (PSS-78): 31.16 [assuming 1 standard atmosphere]</li>

Then everything changed when the Fire Nation attacked Twitter API upgraded to pure OAuth and disallowed anonymous API calls. I ended up learning a lot about OAuth in the process, and a little bit more about PHP, but I’ve got it set up again and @tavros02 is back on the map:


A few neat tricks are involved here:

  1. I used a royalty-free SVG of an arrowhead icon and modified it to use the official colors of the University of South Florida, then wrote a script to rotate it one degree at a time, 360 times, and save it as a series of 360 PNG files with a transparent background. Since @tavros02’s heading rounds to 267 degrees, the arrow is pointing almost-but-not-quite-west.
  2. When I asked why @tavros02 measures conductivity, the answer was ‘because that lets us compute salinity’. I was fascinated by this and added some code to calculate the salinity. So now the popup also displays the PSS-78 salinity, which in this case is 31.16 (it’s dimensionless).

Sadly, @tavros02 itself has not been tweeting for quite some time. The data above is the most recent available. But I’m looking forward to following her next voyage on Google Maps, thanks to a homemade PHP REST service!


Find your local library with a text message!


Today I am very proud to announce that I’ve created the service I wished for ten years ago.

Text LIBRARY 12345 to 41411, assuming that your ZIP code is 12345 (and if it is, how’s the weather in Schenectady?). You will get a text message with the name, address, and phone number of the nearest library.

Here’s how it works:

  • You send the text message “LIBRARY 12345” to 41411 (TextMarks).
  • TextMarks uses the word LIBRARY to assign the rest of the message (“12345”) to my TextMarks application.
  • My TextMarks application sends the rest of the message (in this case, your ZIP code) to a server at freeshell.org. Running PHP scripts on freeshell.org isn’t free, but for a one-time $36 donation, you get that privilege.
  • freeshell.org searches NCES IMLS for branch and central libraries, then finds the first result and identifies the name, address, and phone number in its HTML code.
  • freeshell.org sends back a very simple result with newlines where appropriate (view the source to see how it’s really formatted).
  • TextMarks sends you the literal answer from freeshell.org, plus a brief advertisement with which TextMarks pays the bills. (I don’t see a penny from this except when y’all phone up potential employers and tell them they’d do well to hire me for 2010.)

Things I’d like to add eventually:

  • Support for other location forms like SCHENECTADY[,] NY or 1060 w addison st chicago il, probably with a call to a Google Maps API
  • Support for libraries outside the US (though I caution you, if you give me a location on the south end of Grosse Ile, Michigan, my script won’t know that the Essex County Library in Amherstburg, Ontario is nearer than Bacon Memorial Library in Wyandotte, Michigan — though in that particular case you might not care unless you have a boat)
  • A minor efficiency tweak: search for libraries within 1 mile, and if none are found, try again with 5 miles, 10 miles, and 50 miles before giving up.
  • If no results are found, say so apologetically.

Please tell everyone about it, especially truckers and other business travelers, snowbirds, people who are moving to a new home, etc.

And please let me know what you think, and how to improve it! Thanks especially to Susan Hansen for suggesting IMLS as a more recent source of data.


OCLC should share WorldCat data for commercial and noncommercial use


OCLC’s Review Board of Shared Data Creation and Stewardship asked for comments on OCLC’s policy on sharing bibliographic information with partners who make a profit.  Here’s my comment, which I’ve also submitted to the board:

OCLC supports “WorldCat data sharing that encourages innovation and benefits libraries, museums and archives while protecting OCLC’s members’ investment in WorldCat.”

Sharing bibliographic data freely, without worrying about whether it advances profitable causes, achieves all these criteria.  It certainly encourages innovation; it certainly will benefit libraries, museums, and archives; and the wealth of innovative services based on freeing the records will handsomely repay members’ investment in WorldCat while benefiting the world at large as well.  Let us not hoard metadata like a jealous dragon.

As librarians, we don’t ask our patrons whether their in-house use of business reference books is intended to help a for-profit entity. We don’t have separate usage policies for entrepreneurs and non-entrepreneurs. We trust that the use of our information will benefit society at large in many ways, some obvious and some subtle. Why should OCLC behave differently?


The thing about grant-funded positions is…


Grant-funded positions are liable to run out of funding, and that’s exactly what has happened with my most recent large-scale consulting project.  I’m still available as a consultant, and I’m also looking for work in Atlanta.  Thanks to those who have already wished me luck—I’m sure you’ll be nearly as happy as I am when I have good news about employment!


Where can I submit abstracts in a way that will help researchers?


There are loads of articles out there with no abstracts available, leading to NAA bias (‘No Abstract Available’—i.e. the tendency to overlook highly relevant articles because the title fails to convey the relevance and there’s no other good metadata).

So let’s say I’ve read a scholarly article and I believe there’s no abstract available. I’d like to write an abstract and make it easy for researchers to associate it with that article. How should I do that? Is there an Abstracts Wiki somewhere? Should I use a COinS reference as a trackback of some sort?