For newcomers, computer source code can look quite alien. Librarians might be reminded of the first time they saw a MARC record—a mishmash of recognizable words and bits of information embedded in funky punctuation.
Even people who expressed an early interest in computers as children can initially find themselves discouraged from learning more as adults. Andromeda Yelton, for example, recently reflected on her experience taking a required computer science class as part of her bachelor’s degree program in mathematics at California’s Harvey Mudd College, telling LJ that “I just felt like I was so far behind that there was no point in even trying.”
But later, as an MLIS student, Yelton says she began to view coding knowledge as more of an opportunity and a necessity. “The parts of the field where there’s a lot of change and innovation happening tend to be very technology oriented,” she says. Comparing her programming proficiency to software engineers wasn’t helpful, she realized. She had a much stronger foundation in programming than most librarians and wanted to build on that.
Starting Tutorials & Resources
Bohyun Kim’s Tips for Getting Started
acrl.ala.org/techconnect/?p=2460
Catalogers and Coders catcode.pbworks.com
Codecademy www.codecademy.com
Code4Lib Wiki wiki.code4lib.org
Coding Questions stackoverflow.com
Java Tutorials and Resources www.greenfoot.org
Library Code Year Interest Group connect.ala.org/node/167971
Library-related Questions libraries.stackexchange.com
Official Python Site python.org
Official Ruby Site www.ruby-lang.org
Open Source Library Software foss4lib.org
Open Source Programming Community github.com
Subscription-based Training www.lynda.com
WORLD WIDE WEB CONSORTIUM News, tutorials www.w3.org
Yelton has since gone on to become a founding member and web developer for Gluejar Inc., the entity behind the much-watched Unglue.it crowdfunding project that encourages authors and publishers to release ebooks under Creative Commons licenses if specific pledge thresholds are met under a timed deadline. She has also become a leading advocate for improving coding knowledge within the library field.
Code Year
In January 2012, she and Carli Spina, emerging technologies and research librarian at Harvard Law School Library, worked on behalf of ALA’s Library and Information Technology Association (LITA) to launch the Library Code Year Interest Group at the American Library Association’s (ALA) Midwinter Meeting, along with librarians Shana McDanold and Jen Young from ALA’s Association for Library Collections and Technical Services (ALCTS). The group encourages librarians to start learning JavaScript using online tutorials from online start-up Codecademy.
For librarians already harried by their day jobs, Yelton lays out a cogent argument in a blog post on her personal website. First, she notes that programming skills can actually make many day-to-day tasks easier. “Librarians do a lot of work with data processing and web stuff, frequently involving repeated, predictable, or systematic steps,” she writes. “Edit this whole pile of MARC records to a particular standard. Provide more context in your chat widget. Anything of this nature is amenable to improvement through code, and a lot of the improvements are surprisingly low-hanging fruit” that could be facilitated with small programs.
Learning code can also help librarians customize and improve the usability of web-based resources and vendor interfaces and improve communication with a library’s IT staff and software vendors. This allows people with coding knowledge “to better characterize problems, specify goals, make intelligent cost-benefit decisions, and know when people are pulling the wool over your eyes (and when you’re asking for the impossible). It lets you be more a collaborator, less a supplicant,” she writes.
Jason Griffey, associate professor and head of library information technology for the University of Tennessee at Chattanooga (UTC) and LJ 2009 Mover & Shaker, agrees. “There’s huge amounts of utility,” he says. “The lowest possible level of utility is that you simply know how to talk to the people who are building the tools that you’re using. The ability to understand code, even if you don’t write it, comes with the ability to talk about it intelligently.”
Pirate project
Yelton mentioned projects by Griffey and Matthew Reidsma, web services librarian for Grand Valley State University (GVSU) in Michigan, to illustrate the potential that coding knowledge can have for the field.
Griffey says that he doesn’t consider himself a programmer and doesn’t write programs from scratch. But learning coding has made it possible for him to customize open source programs, such as WordPress plugins used by UTC, or, notably, to develop the LibraryBox fork of artist David Darts’s PirateBox project.
PirateBoxen are portable wireless file-sharing devices that allow anyone within range to upload and download files including photos, videos, music, and documents in total anonymity. As Griffey explained in an earlier interview with LJ (“Open Source LibraryBox Project Branches Out”), he thought that the underlying technology had a lot of potential for use in libraries, allowing easy downloading of Creative Commons–licensed content, ebooks from Project Gutenberg, or songs and artwork produced by local musicians and artists.
However, a totally anonymous file-sharing device could also allow illegal trafficking of copyrighted content or worse. So, Griffey removed portions of the PirateBox code that enabled anonymous uploading and has since added tweaks and user interface customizations tailored to libraries.
He started by following Darts’s step-by-step instructions to build a PirateBox using Linux-based OpenWrt firmware and a TP Link Portable N-Router. Then he explored the system and started experimenting. As Griffey notes, these types of projects can involve a lot of trial and error.
“Once I oriented myself and got a rough map of how the system was doing what it was doing, I would alter things and reload the system and see what happened. The first couple of times, I broke things really, really badly,” he laughs. “There were lots and lots of mistakes…but [breaking] things gave me other pieces of information. The negative feedback is just as valuable as the positive feedback when you’re trying to figure out how something works.”
Make it work
Where Griffey’s project explores relatively uncharted territory, Reidsma’s work with a vendor’s link resolver deals with problems that many librarians might find familiar.
“We use a lot of Serials Solutions products. I like them a lot, and I think functionally they’re great,” Reidsma says.
Yet he didn’t like the way the system’s link resolver was displaying search results. In one of the library’s first usability tests of the system, it became clear that the design was confusing to users. Rather than clicking on article links, most users were instead clicking on the name of the database from which the article was sourced.
“The layout seems to be much more useful for how Serials Solutions wants to display its information from its database, [rather] than for how users actually interact with citations,” he says. “So I wrote a script a couple of years ago. As the page loads, it just grabs all of the relevant information…and rewrites the whole page on the fly.”
With only a minor lag, the script is invisible to users, and Reidsma’s more intuitive design helps them find what they are looking for more quickly.
Starting simple
As the previous chair of the LITA Mobile Computing Interest Group (2010–12), founding editor of ALA’s Association of College & Research Libraries (ACRL) TechConnect blog, and active member of the LITA/ALCTS Code Year Interest Group, Bohyun Kim, the digital access librarian for Florida International University Medical Library, has become another leading advocate for librarians learning to code.
In a 2012 TechConnect post, she acknowledged that many Code Year participants are likely to have trouble fitting regular coding lessons into their busy schedules but encouraged people to build their confidence and renew their interest by jumping in and writing something simple and practical.
“There is never such a time when you already know everything needed for a project before you start working on the project,” she says. “In most cases, you discover what you need to learn only after you start a project and run into a problem that you need to solve.”
In her ACRL TechConnect blog posts, Kim demonstrates how one can use AJAX (Asynchronous JavaScript and XML) to pull data from Flickr, Reddit, and Pinboard APIs (application programming interfaces) and display them on a library’s website. Using the same concepts, it’s possible to “mash up data feeds from multiple providers and create something completely new and interesting such as HealthMap, iSpecies, and Housing Maps,” she writes.
“You can get geographic data from Google Maps and health data from the U.S. Centers for Disease Control and Prevention, for example, and mash them up and present [them] in a way that you think is meaningful to your patrons,” Kim says. “I think it would be a very interesting topic for libraries, which need to play a more active role in information dissemination in ways that can capture people’s attention. In the past, libraries have been focusing on information acquisition, organization, and access and attended the needs of library patrons who visit the library to use its resources. But now that information is not scarce but abundant and people’s attention is difficult to come by, libraries will need to explore new ways to serve their patrons and address their changing information needs. Coding skills will help libraries to adapt themselves to this new environment of information abundance.”
Diving in
In addition to the JavaScript programming that the Library Code Year Interest Group is focusing on, Python and Ruby are good programming languages to start with, Yelton says.
“They’re full-featured programming languages, but they’re more approachable,” she explains. “There’s a lot of good tools out there for helping you rapidly build things that are really complicated—web frameworks getting multiuser websites that are full of dynamic content up and running without having to know a lot about security or databases or what have you.”
Over the years, the field of computer science has earned a reputation as a bit of a boys’ club in which many consider asking for help an option of last resort. That type of culture can feel unwelcoming to newcomers. While Yelton says that her personal experience had been rarely negative, she acknowledges that “in code, it’s overwhelmingly men, and some of those spaces can be intimidating to people who aren’t experts and to women.”
This is another advantage of Python and Ruby, Yelton says. “Both of those languages also have communities that do a lot of outreach to newbies, and are explicitly pro-diversity.”
For example, the Boston Python user group hosts an annual weekend workshop aimed at introducing women to the programming language in a project-driven setting. Similar programs have been offered in cities including Chicago and Philadelphia, Yelton says, and several members of the Library Code Year Interest Group have taken and/or led these workshops. Using these courses as a guide, the group plans to host a Python preconference prior to ALA’s annual conference this summer in Chicago.
“I’m really looking forward to adapting [the workshop] for librarians,” Yelton says.
Finding aid
Programming, in general, is becoming more collaborative and open, and Harvard Law’s Spina suggests that interested librarians explore the variety of formats that are now available to start learning.
“There’s a lot of different resources out there, and you have to know a little bit about what’s available to you and how you learn the best,” she says.
Academic librarians, in particular, could look into taking classes at the schools where they work. Also, free online lectures and tutorials are proliferating for several topics related to coding. Or they could check to see if their institution has a relationship with Lynda.com, a subscription-based site that offers extensive, detailed tutorials on a variety of software packages and programming languages including JavaScript and Ruby.
“A lot of places already have a subscription that you might not realize you have access to,” Spina says. “But there’s also a lot of things that people can do if they look around their local area. I’ve participated in both Ruby and Python workshops locally here in Boston, with organizations that aren’t geared toward librarians but are geared toward helping beginners get started with those languages. That’s great for somebody who likes to work more in a group, or thinks that that helps them to keep up with it.”
The library field also has plenty of untapped potential for building a coding community of its own, Kim believes. One goal of her November 9 presentation “Geek Out: Adding Coding Skills to Your Professional Repertoire” at the 2012 Charleston Conference was to reignite interest in the subject and inspire more librarians to get involved.
“I get this impression that there are so many people who are interested in this and so many people who are capable of learning this and doing something useful,” she says.
Haskell tutorial by Justin Ward by Nayu Kim, Attribution-NonCommercial License
Excited to see this article go live! Readers who are interested in the intro to Python preconference we’ll be running at Annual can read more about it at http://ala13.ala.org/ticketed-events#LITA , and it’s open for registration. The curriculum is appropriate for students at all levels, including people without any previous programming experience. We aim to create a friendly, supportive environment and hope to see people from all kinds of libraries there.
Librarians should also consider taking computer science / programming classes through MOOCs.
Matt and Andromeda,
Thank you for sharing this story about some of the new skills that help us in the Digital Age. I agree with Eduhacker that librarians should explore the MOOCs available but they vary widely in difficulty even when they are called Computer Science 101.
I have tried several Computer Science courses in the last year and the best one for beginners with no coding experience is Nick Parlante’s Coursera course. His Computer Science 101 from Stanford, https://www.coursera.org/course/cs101, explains the core concepts of how computer code works and provides achievable exercises to practice the coding concepts (a pared down Javascript) you are learning.
Udacity’s Introduction to Computer Science by David Evans, https://www.udacity.com/course/cs101, is at a higher level and uses Python to create a Search Engine. It is fascinating but I found it hard to keep up even after taking the previous class. However, if one is up to the challenge this second course gets you up and running with Python.
“Over the years, the field of computer science has earned a reputation as a bit of a boys’ club in which many consider asking for help an option of last resort. That type of culture can feel unwelcoming to newcomers.”
Thanks for the article, I’ve been reading a few about programming skills being a necessity in professions other than direct computing and this was very interesting.
However, I couldn’t disagree much more with the quote above. I’ve found Computer Science, and in particular. programming, the most open culture of any field that I’ve been involved in. Possibly as the Internet is so intrinsically linked to it, you only have to know of sites like StackOverflow.com to know that any question you may have has probably already been asked by someone, and answered by many people.
Type into google something like ‘how do i show a calendar control on my web site’ and the first result is a blog about how to do just that (admittedly in this case pretty outdated), and it includes downloadable source code and step by step instructions. The culture is so open you’re bombarded with help. Rather than ‘becoming more collaborative and open’ I don’t think it’s ever been anything other than extraordinarily so. Programming has an overwhelmingly open-source collaborative culture, and has done for a long time.
This is of course the online community but offline I’ve also found in University and at work, programmers get stuck into things together and share problems and thoughts.
It is of course male-dominated so I’ve no doubt there is a cultural barrier for women, in the same way that there would be for anyone getting involved in a field for which they are in some kind of minority.