Code4Lib 2013: Reflection & Thoughts

After almost a week since Code4Lib 2013, I’m still not sure it’s all sunk in. Every year I look at the conference program, I wonder if the sessions will actually interest me, but I go anyway and get blown away. Regardless, I was more excited this year since I was the program committee lead this year, helped with sponsorship, prepared a lightning talk and decided to be the opening MC. Continue reading “Code4Lib 2013: Reflection & Thoughts”

Code4Lib Day 3: Morning Notes

Hands off! Best Practices and Top Ten Lists for Code Handoffs

  • Naomi Dushay, Stanford University Library

Code handoffs are never smooth. Ever.

Ratio of time spend reading vs. writing code, 10:1.

The Truck Test

  • what if you were run over a truck and someone else had to take over?
  • need to code so a stranger can read it and understand it

The Boy Scout Rule

  • “Leave the code cleaner than you found it”
  • need to maintain your code
  • otherwise you’re part of the problem

It’s More Than Code

  • naming should make sense: servers, scripts, everything
  • config files should not point to boxes
  • tools chosen can be the problem
  • should you be rolling this on your own?
  • probably something been done before
  • some think if you write code really well, then you don’t need to comment. Not true.
  • Documentation and comments are there to inform, explain, clarify, warn, need maintenance
  • readme’s should make sense
  • tests are code, should also think about readability of these
  • failures should be addressed ASAP
  • KISS – Keep It Simple Stupid
  • DRY – don’t repeat yourself

Readable Code

  • follow conventions
  • meaningful names: variable, method, class, file
  • small, single purpose methods

Cleverness that reduces readability isn’t clever.


  • Clean Code: A Handbook of Agile Software Craftsmanship by Robert Martin
  • Refactoring: Improving the Design of Existing Code by Martin Folwer et al.

The Care and Feeding of a Crowd

  • Shawn Averkamp, University of Iowa
  • Matthew Butler, University of Iowa

Presentation Slides

DIY History

  • transcribe items in collection
  • omeka + scripto + mediawiki
  • still in development: want to add social media aspects/integration
  • err sorry, brain temporarily sort of died. See slides and I’ll go get a cookie to recharge

How to be an effective evangelist for your open source project Creating a Commons

  • Bess Sadler, Stanford University Library

Full Write Up by Bess herself

Lost a member of our community this year: Aaron Swartz

  • helped to define Creative Commons licenses
  • 3 versions: machine, human, and lawyer readable
  • code4lib should do the same principle
  • shared engineering practices are becoming more and more important
  • investment that’s worth it
  • please get code contributors to sign a contributor license agreement
  • can determine whether contract allows participation
  • don’t want to lose informal sharing, but law cases have happened and we need to protect ourselves

Building Code

  • what are we building?
  • we are building a culture, a commons
  • Fedora4lib – came early and rented a house together
  • Hydra = a community
  • cultivate a place where we can
  • teaching at Ruby on Rails workshops – too big a job to leave to a small group of people

Hacker Epistemology

  • how is knowledge acquired?
  • how do we decide what’s true?
  • collaboration with disregard of conventional mental thinking

Building the Community

  • need to expand and include everyone who wants to join
  • more steps in building a more inclusive community
  • adopted a code of conduct, because it was a good idea and making an explicit statement
  • need to let other people to know that we’re trying
  • “We are all imposters.” – just acknowledge it, we all feel that way, but bolster ourselves
  • allow ourselves to be seen even when there’s no guarantee of success
  • we can support each other
  • cannot be accomplished alone
  • want to craft a process for submitting issues

Thank you, code4lib!

The End

And that’s it! Until 2014.

nuzzling red pandas
Feel the Love. Happy Valentine’s Day

Code4Lib Day 2: Lightning Talks

Demian Katz –, Geeby-Deeby, and the Dime Novel Bibliography Project.

  • interactive fiction books
  • Made a really big bibliography
  • people sending in more
  • put it in a big database
  • open-source project to adapt backend
  • MySQL db that models various types of entities, relationships
  • backend system to edit entities, enter data, edit relationships

Rachel Frick – LODLAM Summit 2013 and Challenge

  • linked open data in library, archive, and museum
  • had challenge to win cash prize
  • can still submit, just fill out form and make/submit video

Kenny Ketner – Occam’s Reader

  • allow libraries to lend ebooks to each other using document delivery model
  • compatible with IILiad
  • no training, no workflow change
  • can add formats incrementally (started with PDF)
  • basic interface that discourages abuse
  • access previously unaccessible resources
  • in alpha testing
  • Slides

Al Cornish – Orbis Cascade Alliance Shared ILS Project

  • primary service is consortial services
  • move to new system beyond traditional ILS
  • single shared system (vs. currently 37)
  • explore collaborative technical services, collection development
  • Alma + Primo selected, migration in progress

Makoto Okamoto – Crowd Funding for Library in Japan

  • culture of donation changed a lot after 3.11
  • share experience and metrics
  • key to success is setting up appropriate ticket

William Denton – Code4Lib 2013 Augmented Reality View in Layar

  • picking points of interest from two spots
  • 1: Google Places map
  • 2: Twitter search API – of the ones that are geolocated
  • Web service in Ruby and Sinatra, hosted on Heroku
  • Rainbows End by Vernor Vinge – go read it.
  • Slides

Rosalyn Metz – What I learned while I was away

  • learned about planning, budget, and time
  • time is the most important thing
  • track your time, might be spending too much time on things e.g. don’t spend more than 10 mins on a single email
  • can demonstrate where need help
  • Slides

Nettie Lagace – Recent Cool Fun NISO Activities

  • ResourceSync Framework Specification
  • Bibligraphic Roadmap Initiative
  • Slides

Chuck Koscher – Fundref

  • list of funders
  • what articles given certain funding

Andromeda Yelton – Five Conversations About Coding

  • computer science majors in 1995: yardstick of who is cooler than who dependent on the most arcane knowledge
  • boston python workshop 2012: women friendly course. Expecting to be judged.
  • chad nelson, monday night. It’s not free
  • bess sadler, yesterday. We have a problem with insecurity
  • important to recognized our limitations, but have this imaginary yardstick
  • ever done coding? majority. think coder? 1/2

Jeremy Morse – mPach: Publishing directly into HathiTrust

  • sorry, didn’t quite get this one

Rob Dumas – Git in Five Minutes

That’s all for today.

sleeping owl
How I Feel

Code4Lib Day 2: Afternoon Notes

De-sucking the Library User Experience

  • Jeremy Prevost, Northwestern University

Libraries hate library users. If we didn’t, our websites wouldn’t suck.


  • if a user can’t find it, why do you own it?
  • spend a lot of money on acquiring resources or access to them
  • want to allow them to find them
  • Good: works like Google from the user’s perspective
  • Bad: needs to know how it works to make it work e.g. need to know MARC; can only find known items
  • live examples: Ex Libris Voyager vs. Primo
  • Voyager: no relevant results even using boolean ‘AND’
  • Primo: can use boolean or not, relevant results – de-sucked!

Requesting Item

  • Request information/user experience also sucks
  • Prepopulated info, request item if not available – de-sucked!

Renew Item

  • consistency
  • made interfaces consistent – de-sucked!


  • not going away
  • no mobile until mid-2007 for iPhone
  • jQuery mobile – Apr 2010 – but updating two sites sucks, no support for tablets
  • Mar 2013: responsive design, bootstrap

Libraries don’t hate library users!

  • start with something that you would enjoy using


Google Analytics, Event Tracking and Discovery Tools

  • Emily Lynema, North Carolina State University Libraries
  • Adam Constabaris, North Carolina State University Libraries

How to track in-page events. Decide which events to track, push to Google.

Event Tracking Use Cases

  • hidden or externally AJAX events e.g. facets, tabs
  • internal links that occur in multiple places e.g. request item
  • external links


  • Catalog: click on tabs twice as much as everything else; full text used a lot; browse graphical < text because of placement; about half request item even though in 2 different places
  • Summon: trying to track what they could track. Paging more popular than facets


  • GA API script
  • jQuery API
  • HTML5 Data Attributes: data-* for use by scripts
  • decide what to track
  • basic technique
  • Summon gets harder. Have to get it in the code. more selectors

Debugging & Testing

  • set up safety net first
  • know the debugger
  • use the GA debug
  • test a lot

Actions speak louder than words: Analyzing large-scale query logs to improve the research experience

  • Raman Chandrasekar, Serials Solutions
  • Susan Price, Serials Solutions

Single unified index for all the items from all libraries’ collections.

RMF Goals

  • observe and log user actions e.g. queries, filters, click patterns
  • compute quality of search results e.g. user behaviour
  • analyze data to improve search results and enhance research experience

Data-Driven Documents: Visualizing library data with D3.js

  • Bret Davidson, North Carolina State University Libraries

Slides and resources

Why D3?

  • uses technologies that you already know
  • capable library – pre-built path generations, well maintained etc.
  • community – documentation, training available
  • might not because of learning curve, and don’t need something this complex


  • suma – space assessment toolkit
  • show visualization real time, tables, and CSV file

HTML5 Video Now!

  • Jason Ronallo, North Carolina State University Libraries

Yes! Also, slides/presentation.

Here’s Why

  • Flash video cannot be run on most mobile/tablets

How it Works

  • uses video HTML tag
  • use simple fallback – download if can’t view
  • problem: browsers cannot decide on single codec to use; codec war
  • solution: multiple sources: mp4, webm
  • use poster attribute as “screenshot” and don’t have to download video right away
  • add type attribute to say which format to use; can be very explicit
  • only one video per page please!
  • properties exposed in JavaScript
  • can add custom controls, more info for users
  • events that you can listen for e.g. timeupdate to update time in a video; update wording e.g. which floor
  • analytics: play, pause, seek, ended
  • can do visualization of engagement
  • can style with CSS
  • track for subtitles

Polyfills and Advantages

  • provide video controls
  • flash fallback
  • progressive download and range requests

Future of Media on the Web

  • DRM looks to be coming
  • Popcornjs – can do annotation
  • Web Audio API – mix audio, filters, etc.
baby and mother owl
Breakout Time

Code4lib Day 1: Lightning Talks

Cynthia Ng  – RULA Bookfinder

Julien Gibert – Turning a Solr Response into a RDF file

  • Sorry, this went by me, plus I was busy running back to my seat

Bill Dueber – Datamart Report Generator at UMich

  • actually talking about spreadsheets
  • want to support data-drive decision making, but it’s boring, and canned reports tend not to do it
  • can end up in substring hell
  • solution: build data warehouse
  • took Aleph oracle COBOL store, removed insanity and put it in another oracle database
  • funds and inventory reports now possible
  • running 20-25 reports a week
  • more than when we ran it by hand, and saves lots of time

Jonathan Rochkind – bento_search

  • RubyRails gem
  • external search services e.g. Google books
  • federated e.g. primo, eds, ebscohost, scopus, worldcat, google books
  • can use whatever you want, just need to add it
  • can customize to have link resolver
  • much more functionality

Masao Takaku – saveMLAK project for two years

  • came out of the effort to save museum, library, archive, kominkan (community centre) after the big earthquake
  • gather information of facilities in damaged area using a wiki
  • coordinate activities to rebuild
  • efforts are still continuing

Jon Stroop – Loris Image Server

  • define syntax for image access
  • can specify width/height, part of image, quality
  • Talk link

Ross Singer – How are you managing copyright?

  • lazy attempt at crowd-sourced business development
  • copyright is complicated
  • there are standard licenses, but then there are a lot of exclusions and exceptions
  • still, roughly the same model
  • management already being done in some capacity by the universities
  • but in US/Canada there is fair dealing and fair use
  • Slides

Eric Nord – Candybars for Bugs

  • Harold B. Lee Library
  • worked on maps in library
  • pop up map
  • will give candy bar if found error
  • only had to give away 18
  • have a ‘report a problem’ with this item
  • builds the idea to power the patron

Megan O’Neill Kudzia – Games for Pedagogy in the Library

  • working with faculty
  • a lot of interest, but no opportunity to talk about it
  • purchasing games on an ask basis
  • working out how to make accessible, in catalogue
  • licensing issues for PC/console games

Geoffrey Boushey – GEDI Reference App for InterLibrary Loan

  • General Electronic Document Interchange (ISO Standard)
  • used by Ariel
  • headers added to a file when sent from one institution to another
  • basis for making an easy to use tool so different ILL systems can communicate with each other
  • on Github

George Campbell – three.js: 3D Objects in the browser

  • used to have to use flash or flip through images
  • can now use interactive 3D graphics
  • can scale, add text/images, move

John Sarnowski – Audio Archiving with Full Text Search

  • ResCarta Toolkit
  • display and play audio
  • add metadata
  • use conversion tool
  • embeds into XML portion
  • final file can then be searched
  • words can be highlighted just like a text file

That’s the end of Day 1! Join us tomorrow. Time for a nap.

sleeping panda cubs

Code4Lib Day 1: RULA Bookfinder: Getting People to Books Fast! Lightning Talk

Video on Internet Archive

Not a New Problem

  • mapping the shelf where an item is located
  • common implementation: stackmap
  • but paid
  • implementation into catalogue similar, add button to click on to get map

What’s Different

  • full screen = bigger map
  • links to video tutorials in lightbox/fancybox
  • share map through link, and via email
  • automatically prioritize by loan period (regular vs. reference only) and availability, while still showing you the other locations
  • responsive
  • integrated search, built for mobile
  • shelf signage (though seen 1-2 other libraries doing this as well)

Are People Using It?

  • Launched mid-Nov, Dec exam period, Jan first real indication
  • desktop ~2/3, mobile ~1/3 of usage

What Do Users Think?

  • Demo’ed at Learning Commons Open House just before launch – a lot of positive feedback
  • Usability Study
  • most agree/strongly agree: easy to understand, easy to follow, prefer having shelf number
  • a couple didn’t like look/colours of floor plan, but most still liked it
  • most importantly: level of frustration = lower