Code4Lib 2012: Conference Reflections

For those unfamiliar with Code4Lib, it is generally described as a community of computer programmers who work in information organizations, primarily libraries (2007 Code4Lib Conference Report, 2007). While geared towards programmers, the community has expanded to include many who are not coders, but have some background and a great interest in computers and technology in information organizations. To learn more: take a look at the journal, check out the website, follow the Twitter feed, sign up for the mailing list, or lurk in the IRC channel.


There were so many pre-conference sessions that I wanted to attend or at least sit in on. While some of the sessions were workshop-like where a speaker presented for (more than) half the time and there was some hands on activity afterwards, others were very much a facilitated discussion, similar to a breakout session.

The metadata session was quite interested as there were many people who were neither coders, nor cataloguers present. Honestly, I think the big takeaway at the end of the session was that cataloguers and coders need to talk to each other (not at each other) and try to understand that neither can simply work ‘magic’.

Metadata Preconference

I also got the chance to go across the river on the Microsoft Tour in the evening, where a group of us got to see prototypes of technologies they are working on and play with some of them. There were also presentations on some of the open projects they are working on, including Microsoft Academic Search, which looks like a nicer version of Google Scholar. If they get library full text linking, I think it could be pushed out fairly easily for mass use.

Washington River


The keynotes were so thought provoking. While Dan Chudnov’s keynote touched on his life lessons and the need for change for the conference, Bethany Nowviskie’s keynotediscussed the need for lazy consensus in our work place. Seemingly different topics, but I think they both touch on an issue that has been driving change in some organizations, or simply being ignored at others (or somewhere in between). Libraries (and other information organizations) and its people need to change and evolve in order to continually find its place among the world and how they play a role in people’s lives. Part of adapting is to attempting to keep up with the world as it changes – technological, culturally, socially, economically – but also being flexible enough to accommodate our own changing organization and work environment. While change is rarely easy, we can become so much better by embracing it.

Dan Chudnov - Keynote #1

Conference Presentations

While some of the presentations were honestly too code-centric or technical for me to truly comprehend, I learnt about new tools and got a lot of great ideas. I also realized that I should really acquire more programming knowledge and skills. I have as a result started CodeYear though I’m a bit behind.

Lightning talks are probably my favourite part of the conference since we get to hear about so many new ideas and projects that we might otherwise not hear about. As part of that, I think many will agree that the Code4Lib Japan team presented some of the most impressive projects especially surrounding the disaster relief efforts, and creating a meta-OPAC to search and provide information on all of Japan’s libraries. They also showed great courage in presenting in English (as many of us have enough difficulty presenting in our native language).

While completely nervous, it was also fun to get an opportunity to do a lightning talk myself on Processing.js, which I’ve honestly never used but am excited about having seen some of the projects made with it. Maybe next time I should do it on Popcorn Maker (if they get it into beta) or one of the projects I expect to be working on this year.

Ask Anything was also a great session where I got to ask about how others are implementing a wayfinding tool as we would like to do. Of course, the mailing list is also a great place for that, and I now have lots of reading to do (in addition to the CSS3 book I won!). Some of the presentations have also given me further ideas on what might be done (better) at our institution, and I hope to have to the chance to implement at least some of them.

Social Events

I can’t talk about Code4Libcon and not mention the social events. As a first timer, it can be tough to feel like you belong, especially when you’re the only one from your institution, so it was great that there were organized dinners/groups, especially the newcomer dinner. There was lots of great food that was eaten and awesome company to have interesting discussions. Hopefully with having chosen slightly farther places, I walked it all off! I also enjoyed the after dinner socials including the beer drink up (even though I don’t drink beer), which was a great opportunity to talk to people since there’s usually too many things going on during the day to truly have the chance.


While the presentations were great, the socials were fun, and the backchannels (Twitter and IRC) provided links and laughs, what I have taken away from the conference of the utmost importance are the connections I have made with people, whether it be to learn more about tools we would like to build, to stalk follow them because of their interesting tweets, or simply to keep in touch because I had an interesting conversation with them. Dan hit the nail on the head when he said that we come for the people. (We love you too, Dan.)

On an interesting side note, while it was not intentional, my blog saw a major spike in activity due to my blogging on the conference (peak of 590 in a day!). I honestly primarily did it for myself, but I am glad that people have found it useful and its flattering to see so many people visit. I have edited them and added as many links and presenter slides/videos as possible to help those who could not attend (and would prefer not to sit through the video archive).


This was my first Code4Lib Conference and only my second conference. I am very happy that I got the opportunity to attend, which I could not have done without the support of my supervisor and institution, and especially the Oregon State University and the Digital Library Federation who sponsored five Minority and Gender Diversity Scholarships, one of which I received. I was particularly grateful of the fact that the scholarship was not geared for students, but for those in need of funding, which frequently applies to new graduates or term employees (or both, which is where I fit in).

(Some of the) C4L12 Organizers

Thanks again to all the hosts, organizers, volunteers, speakers, A/V guy, social event leaders, and everyone else who made the conference possible. I look forward to 2013 in Chicago!

Aerial view

Code4lib Day 3: Notes and Takeaways

You know, it’s hard to MC, follow twitter, pay attention, and blog, so as usual, only notes and takeaways for some of the presentations.

Full posts:

Your UI Can Make or Break the Application

  • software developers are creative
  • Prototyping: fail early and fail fast
  • user involvement: screenshots along with requirements
  • creates user buy-in
  • warning: don’t make demos look done!
  • don’t be afraid to “borrow” ideas
  • help the user be successful
    • stick with familiar designs
    • use simple language
    • keep labels/functionality consistent
    • give instant feedback
      • provide inline validation
      • some feedback through AJAX
  • Helpful Sites:

Quick and Dirty Clean Usability: Rapid Prototyping with Bootstrap

by Shaun Ellis, Princeton University

Important to get user feedback, meaning to get things in front of them. Use drawings to keep people from getting bogged down by aesthetics.

Twitter released Bootstrap, an open source style guide that will put your feet in your shoes. It allows you to get really quick feedback on static images and interactive pieces, but will not make your site “instant delicious”.

Allows a lot of customization based on grid system.

Prototype yourself out of the cave.

Some References:


Some archive/relevant links:

Code4lib Day 3: Keynote #2 Lazy Consensus

by Bethany Nowviskie, University of Virginia

She began by expressing that it is great to have a speaker from the inside the community and lots of thanks to the invitation to talk. Then continued to talk a bit about her background and where she is coming from, including Blacklight and Hydra. She is now in the library world, where she was introduced to many issues such as open access, class issues.

Lazy Consensus

Frequently, lazy consensus gets formalized, such as in committees. When a decision needs to be made, a proposal is put forward. Some might agree, but the default answer is yes. If there are objections, then you go back, but usually just some adjustments. In order to object, people need to take the time to think and take the effort.

Some might think that there are fortunes for the bold. However, with this social contract where  we already agree that if you don’t say yes or no, “we’re not waiting on you,” inertia can work with you or against you.

Chaotic Good

Your team should work in lazy consensus. Use it to do what you know is right. How do you know what’s right? Make sure you’re one of the good guys. Act and speak up when you need to.

Ideal Conditions

  • skunkworks / R&D operations – trust them to have a plan
  • developer-driven 20% time
  • rabble-rouse… in disguise – organize smartly to fit in
  • knowing your enemies (trends, not people) – extract personalities, because usually fighting bad trends, not people
  • finding your friends (people, not just trends) – check data preservation, open access, digital humanities people

Your (Ethical) Obligations

  • always share information freely – it will fail otherwise
  • never shut out the public services and user experience
  • practice what you’d teach – think mentoring a promising novice
  • if you screw up, confess
  • try not to screw up in the first place

In Applying

If you have a bad technical plan, the library administration might not notice whether you implement it to the letter. They probably care more about the spirit than the letter of it. However, do genuinely try to explain to all levels of the organization.

Never do it alone. The word consensus is in there for a reason. You need enough people who agree on the direction to take that can be implemented reasonably and sustainably.

Keep talking to people.


If you produce, administration will have your back, but then you need to deliver a product that will make everyone look good, even the dead weights.


The library is not involved enough in larger issues at the university, national, or government level. One common example is the research that is produced, peer-reviewed, and then sold back to the university at exorbitant prices.

It’s up to you to make contact with the leadership level of the organization. If you have a problem, put it on the agenda. Make the first move.

Shift Needed

There should a bias toward action. Stagnation is a far, far greater danger than taking measured risks.

Drive it like you stole it.

Q & A Comments

Does this reflect reality? Sometimes it is the person. – Act like it is the trend, even if it is the person. This will work better in some areas than others, but it is flexible.

Some believe that they are righteous and do not care about consensus. – Power to the people. Get enough of the staff to implement a directive.

How to deal with it going wrong? – Hard to do sometimes in formalized way, and need to do collectively.

EDIT: Bethany has now posted her version of the keynote talk on her blog.

Code4lib Day 2: Mobile Breakout Notes

Just a few notes if anyone is interested:

  • digital collections tool: wolf walk, digital images
    • geolocation using JavaScript to make it availble in HTML5
    • find it easier in app store, means more people use app
  • HTML5 more clunky with jQuery mobile
  • native app smoother, especially Google Maps
  • mobile site: only force on homepage and opt out using query string
  • mobile app/site needs to be interoperable
  • designing: mobile framework better at bringing out ideas vs. developing web version of a website
  • how do you build up services? concentrate on what is needed on mobile devices
  • should have just what you need and do it well while taking advantage of mobile aspects e.g. bluetooth, GPS
  • how best to build?: REST layer on top of what’s available
  • time resource: if know objective C, then just adding functions
  • voice use: comfort level? accurate enough? difficulty with quiet/study areas/floors?
  • phone tap to reserve seats/room, other application?
  • staff use in stacks? Shelflister: barcode scanner inserts into web form for shelf reading or collection development, including circulation data
  • mobile hours: just give today’s hours or closed (give tomorrow’s hours)

Code4lib Day 2 Afternoon: Notes and Takeaways

An afternoon of more presentations, which were a bit more technical in terms of data indexing, storage, and use. As a result, there are no detailed posts, but here are a few notes and takeaways.

  • Be careful when you try to parse a bunch of files you download from the web. Parse and store, distribute up front, and build a test index first.
  • Making Software Work – read it
  • The results of one study is not the truth.
  • It’s hard to make a study repeatable.
  • Does agile work? That’s the wrong questions. Really, when does bug fixing has the highest cost?
  • High-risk bugs should be done as early as possible, instead of the easy bugs.
  • What language? Depends on the problem.
  • Make developer happiness hours. (block off time with no meetings)
  • Give people open sight lines instead of high cubicle walls.
  • Be as transparent as possible (e.g. JIRA) including progress.
  • Put projects into short iteration cycles.
  • No code without passing tests!
  • Slides (PDF) for the last talk: Practical Agile: What’s Working for Stanford, Blacklight, and Hydra by Naomi Dushay

In-browser Data Storage and Me

by Jason Casden, North Carolina State University

  • Suma: data collection application using in-browser storage.
  • Indexed database API (aka IndexedDB, WebSimple DB) is where things seem to be going, but limited browser support.
  • Web (DOM) Storage is basically universally supported.
  • Web SQ DB still viable option.
  • lawnchair: object storer, but have adapters for a long list of DBs/APIs.
  • persistence.js: asynchronous JavaScript object-relational mapper and adapters are being built out. Can be used with node.js and MySQL.


Code4lib Day 2 Morning: Notes & TakeAways

I didn’t take full notes on all the presentations. I like to just sit back and listen to some of the presentations, especially if there are a lot of visuals, but I do have a few notes.

Full Notes for the following sessions:

Building Research Applications with Mendeley

by William Gunn, Mendeley

  • Number of tweets a PLoS article gets is a better predictor of number of citations than impact factor.
  • Mendeley makes science more collaborative and transparent. Great to organize papers and then extract and aggregate research data in the cloud.
  • Can use impact factor as a relevance ranking tool.
  • Linked Data right now by citation, but now have tag co-occurrences, etc.
  • Link to slides.

NoSQL Bibliographic Records: Implementing a Native FRBR Datasotre with Redis

No notes. Instead, have the link to the presentation complete with what looks like speaker notes.

Ask Anything!

  • Things not taught in library school: all the important things, social skills, go talk to the professor directly if you want to get into CS classes.
  • Momento project and UK Archives inserting content for their 404s.
  • In response to librarians lamenting loss of physical books, talk to faculty in digital humanities to present data mining etc., look at ‘train based’ circulations, look at ebook stats.
  • Take a look at for library cataloguers learning to code as well as codeyear hosted by codeacademy.

Code4ib Day 2: Stack View: A Library Browsing Tool

by Annie Cain, Harvard Library Innovation Lab

What’s the point?

Why recreate the physical stack? Why not just use a list? There are advantages to display books like books.


  • If you have multiple branches, you can put all the materials into one shelf.
  • More visual, such as using page numbers to create thinner or wider images.
  • Add more information – color can represent such as frequency of checkouts.

How to Get Started

  • build HTML objects and draw using CSS
  • works as jQuery plugin
  • Start with book data – wrestle data out of your catalog, extract pieces you want and feed it into Solr, or use API, such as WorldCat
  • pump out stack view using JSON

Code available on github.

Q&A Comments

  • Usability testing gives mixed reviews. Librarians and those used to browsing the library are happy with it, but others don’t seem to care.
  • Experimentation with items other than books is to come.
  • No plans yet for catalogue integration as not much use case, but working on it.
  • Also take  a look at Chrome WebGL bookcase.

More information on available on the Harvard Innovative Lab website, and below is a demo.

Code4lib Day 2: How People Search the Library from a Single Search Box

by Cory Lown, North Carolina State University

While there is only one search box, typically there are multiple tabs, which is especially true of academic libraries.

  • 73% of searches from the home page start from the default tab
  • which was actually opposite of usability tests

Home grown federated search includes:

  • catalog
  • articles
  • journals
  • databases
  • best bets (60 hand crafted links based on most frequent queries e.g. Web of Science)
  • spelling suggestions
  • loaded links
  • FAQs
  • smart subjects

Show top 3-4 results with link to full interface.

Search Stats

From Fall 2010 and Spring 2011, ~739k searches 655k click-throughs

By section:

  • 7.8% best bets (sounds very little, but actually a lot for 60 links)
  • 41.5% articles, 35.2% books and media, 5.5% journals, ~10% everything else
  • 23% looking for other things, e.g. library website
  • for articles: 70% first 3 results, other 30% see all results
  • trends of catalogue use is fairly stable, but articles peaks at the end of term

How to you make use of these results?

Top search terms are fairly stable over time. You can make the top queries work well for people (~37k) by using the best bets.

Single/default search signals that our search tools will just work.

It’s important to consider what the default search box doesn’t do, and doubly important to rescue people when they hit that point.

Dynamic results drive traffic. When putting few actual results, the use of the catalogue for books went up a lot compared to suggesting to use the catalogue.

Collecting Data

Custom log is being used right now by tracking searches (timestamp, action, query, referrer URL) and tracking click-throughs. An alternative might be to use Google Analytics.

For more, see the slides below or read the C&RL Article Preprint.