Monday, February 17, 2014

Pybrarians Ahoy!

Lately I've been writing a lot of Python code at work, and realizing what a powerful, versatile, expressive and beautiful language it is. In the past I focused on languages where there was a specific application for it's use, such learning Ruby so that I could use Rails, or learning JavaScript so that I could use jQuery. In both of those situations, the language was a means to an end for using an application instead of the other way around. Python is the first language I've found where I really enjoy the language itself, and all of it's applications are interesting and approachable BECAUSE they're in Python. A lot of other librarians on Twitter seem to be into Python as well, which led me to an idea: what if there were a community centered around librarians using Python? Imagine a group of people with common problems and common interests using a common language. With that end in mind, I started working on Pybrarians. Currently Pybrarians is just me running a blog, Twitter account, GitHub organization a forum, but hopefully more people will learn about it and join in. Before I can expect anyone to join, I've got to do quite a bit of writing to give shape to the idea of what Pybrarians even is, which is why I haven't been writing here lately and most likely won't be writing here much in the immediate future.

To see how the project is going, check out or follow the project on Twitter (@pybrarians). If you would like to join the project and write some blog posts, email me at my personal account or at the official project email, pybrarians [at]

Monday, December 9, 2013

Migrating from

When I first started working as a web developer for the Lilly Library, one of my first tasks was to migrate a few student projects from to the Lilly's locally hosted Omeka installation. I quickly found out that there wasn't a nice step-by-step walk-through of the process (at least not that I could find), so I decided to wing it. Luckily everything turned out okay (well almost, I'll let you know where I made mistakes so that you can learn from them), but now that I have a few migrations under my belt and have even done a conference presentation about Omeka, some people see me as an Omeka expert (I'm not) and come to me with questions. While I certainly don't mind answering questions and am always happy to help anyone if I can, it seems that questions about migrations come up the most frequently by far. Can you migrate an site to your local instance? How do you do it? What complications does it pose? Since this question comes up so often, I've decided to go ahead and turn my own personal notes about performing migrations into a full-blown tutorial. Leave a comment if you have any suggestions for improving the tutorial, and as always, this is Public Domain content. Feel free to do whatever you want with it, attribution is appreciated but not required.

Saturday, October 26, 2013

Filling in the Gaps

Recently I had a minor breakthrough that turned out to be major: I grasped the concept of "cascade order" in CSS. Now while this isn't really a huge deal in the grand scheme of things, it represents a giant breakthrough for me. Prior to this breakthrough, I HATED CSS. With a passion. It just never works right, and when you finally get it to do the thing you want, it all breaks when you try it in a different browser. Simply awful, right? Since CSS is so obviously terrible, I avoided using it like the plague. I had a few similar experiences with JavaScript, so at that point I had pretty much dismissed front-end web development as a whole as a lot of cross-browser wheel spinning.

Tuesday, September 24, 2013

Code and Craftsmanship

I've spent a lot of time lately reflecting on the idea of programming as a craft. This is not a new idea by any means, as the idea of "software craftsmanship" has enough cultural traction to warrant it's own Wikipedia page. Heck, there's even a Manifesto for Software Craftsmanship and you can sign your name to it if you want. The basic idea behind software craftsmanship is to apply the traditional attitudes and values of craftsmanship in other fields to software development.

Monday, August 26, 2013

I'm Overbooked!

It's a new semester, and I'm afraid I might have scheduled a bit too much for myself.  I'll be working two jobs (web development at the Lilly Library, and a new job as a TEI encoder at the University Archives), taking classes (Library Management and Advanced XML), and doing my metadata internship in the Digital Projects & Services dept.

As part of the internship requirements, I have to blog about what I have accomplished/learned/read, but it's too dry to post here. I have created an external blog at where I'll put all that stuff, so if you want to read it you can. Teaser: my internship revolves around following the revisions to the newest version of EAD, and trying to figure out the feasibility of creating an OAI-ORE metadata feed from DPS' Fedora repository. Juicy! Unfortunately, all of this means that I'll be writing here very little, if at all, until the semester ends. The silver lining to that rain cloud is that when I finally finish up and get some time to write, I'll have a lot of new knowledge and new things to say. If you start to miss me, you can always check out the internship blog, I'll be writing new things there every week. It's mandatory.

Tuesday, July 30, 2013

Web Development 101 @ Hack Library School

It's been a bit since I have posted anything here, but that doesn't mean that I've been slacking.  I'm pleased to report that Hack Library School has been kind enough to post some of my writing on their site (and if you have never been to HLS before, definitely check it out!). Check out the links below to see both parts of my guest post.

Web Development 101 – The Basics (Part I)
Web Development 101 – Beyond the Basics (Part II)

Monday, June 24, 2013

Using Templates in the Shell

If you have ever created an XHTML web page or worked in Java, you know what "boilerplate code" is. It's the junk that has to be put into every document no matter what. It's what holds you back from doing the creative stuff. At times, it can be soul crushing. You may have a great idea, but by the time you have typed out all of the required text your spark of inspiration is lost. It dosen't have to be that way, and there are many ways to circumvent this problem. This post explores one of my favorite methods using shell variables.

Monday, June 3, 2013

Demystifying the Shell, Pt. I - A Gentle Introduction to Command Line Interfaces

The following is the first entry in an ongoing series that explores the use of shells on Unix-like operating systems (such as Linux or Mac OS X). Future entries in the series will be linked at the bottom of the post as they are completed.

-Overcoming Shell Shock-

In the fall of 2011 I began my first semester of library school by taking S401, "Computer-Based Information Tools." It was in S401 that I got my first taste of web development, but my favorite memories from that class happened in the 3 week stretch of the course dedicated to Unix. Few people in the class had ever heard of Unix, and nobody really knew what it was. This portion of the course was taught by a guest lecturer who was the system administrator for our department's servers and a true Unix guru. I distinctly remember everybody hating this part of the course with a passion. Almost everybody showed up for the first class just to see what Unix was, but by the next week only half the class showed up. The third session only a handful of people showed up, and some of them even left early. I felt bad for the lecturer, but he didn't seem to care. He was delighted to have a weekly three hour block where he could rant about the history of Unix and how great it was, and I was just as delighted to listen. Even though I didn't completely understand what Unix really was (it is a deceivingly complicated topic), I was deeply intrigued by the retro beauty and straightforward logic of the command line.

Friday, May 24, 2013

Summer Update

It's been a while since my last post, and I have a great excuse: I've been extraordinarily busy. Lots of major things have happened, and I'm still struggling to digest it all. Between the end of the semester, a conference presentation, a new job, 2 pending internships, and a few minor changes to my self image, I haven't had a whole lot of free time to sit down and write (although I should anyways, because writing always helps me make sense of things).

Monday, April 22, 2013

Book Review: Jump-Start Your Career as a Digital Librarian

Buy now at the ALA store!

A few weeks ago I was having lunch with a friend of mine in the SLIS career office, which has a bookshelf full of resources for students who are getting ready to graduate and want advice. Most of the books are standard fare about writing good resumes and cover letters or the typical "do's and dont's" for job interviews, but a good number of the books are specifically aimed towards library students preparing for traditional librarian jobs. While there is a lot to learn from books like these, there isn't as much overlap between traditional and digital librarian positions. The kinds of jobs I'm looking for are pretty specific and specialized, and there was never anything on that shelf that seemed very relevant to my needs. Imagine my surprise when I glanced over at the bookshelf to look for any new additions and saw "Jump-Start Your Career as a Digital Librarian" on display front-and-center.  It begged me to pick it up, and I obliged.