Tony Castelletto has been programming computers on one platform or another since the late 1980s, and received his MLIS in 2008 from Drexel. He has worked on unusual information projects throughout his career, starting as a technician on small NASA missions, managing the information pipelines that carried data from satellite to ground. Tony received his introduction to Library Science working as a programmer on Digital Library projects for the University of Michigan’s Digital Library Initiative. Following his library science education, Tony curated data collections for the Linguistic Data Consortium where he also helped produced electronic dictionaries in Yoruba, Mawukakan, and Tamil. Now he is scheduled to teach a series of classes for Library Juice Academy on computer programming, using Python. Tony agreed to be interviewed here, so people can learn a bit about his classes and find out if they would be right for them.
Tony, thanks for agreeing to this interview. I’ve already gone through your bio a little bit, so I’d like to get right to the classes you’ll be teaching. What are they and who are they for?
I’ll be teaching a series of short courses in programming. The first one is called Preparing to Program and it presents some of the intellectual foundations of programming that never get taught in typical programming courses or books. These often assume the student has an understanding of Computer Science or assume the student does not need know that sort of thing in order to start writing software. In many cases this assumption is warranted as a great many students come to courses after spending time educating themselves. Preparing to Program is intended to close the gap between between the interested bystander and the novice student. Preparing to Program will prepare students to make the most of any programming curriculum. I start by describing what computing is and how programming languages work. From there, the course develops skills in modeling data and processes. It wraps up by teaching students to write simple program statements; one line programs. The next two courses, Beginning Programming in Python, Parts 1 and 2, pick up from there and teach the standard set of programming skills; data structures, statements, and program structure. These courses are for the student who wants to develop fundamental programming skills and a knowledge of fundamental computer science concepts. These concepts underlie most of the programming that’s done in practice, and knowing things like how to code a sort, order a list or navigate tree structures will provide a student a good footing for more serious work. Again, over the years, I’ve noticed that programming books tend to leave these subjects alone assuming that the student has already picked up this knowledge or, worse, that it doesn’t matter. The second introductory course will deal more in object oriented design and programming and will include a section on interface design. The final course in the series, Applied Programming in Python will cover practical subjects like processing XML, databases, and provide an overview of the Django web programming framework.
Sounds like these courses comprise a very good start for a librarian who wants to program some applications for their library. Clearly they would be the best fit for a librarian who is taking on a new role on the systems side, or wants to make themselves more employable as a systems librarian. I think many of us have a basketful of ideas at the ready for how they could apply computer programming skills in their work setting, but for those who don’t, maybe you could give some examples?
I think the first motivation for a librarian to learn at least some programming or computer science is the necessity of communicating with programmers and IT professionals. I entered the library field through the digital library discipline, though it wasn’t very disciplined back at the turn of the century. A lot of growth happened very, very fast and the digital collections I worked with were fairly disorganized. My experience back then as a programmer was that there was a significant vocabulary gap even within a digital library department between the systems staff and the librarians. This communication problem threatened to derail projects and certainly slowed work down. So learning these concepts helps librarians understand the systems they work with. Going further, I’ve found that academic departments often want to do complex bibliometric analyses on citation databases and they often want to conduct this work in bulk. This often requires working with the APIs of these databases and the retrieval and parsing of large XML documents. Knowing how to write a good Perl or Python script is often what makes this sort of work feasible. This is also part of my motivation or teaching things like sorts and search trees in the introduction course. These concepts lie at the heart of almost any sort of information retrieval problem. Now lastly, during and following my library degree, I have found that many of us in the field work with purely digital objects. In my case, I worked for an organization which published sets of data. Curating this collection required me to constantly write simple scripts and, sometimes, quite complex programs. There is, I think, something of an analogy that can be made between traditional preservation and digital preservation. digital objects just like physical books do wear out and need to be repaired. Degradation happens for different reasons in each case. In the case of digital objects, the big issue is the obsolescence of formats. The data in such objects can be transformed such that an object in a disused data format can be changed to a more current form. In some cases this is a simple transformation which can be accomplished using tools that someone else designed. At other times, it’s a custom job. Many times, it’s a big job. And it’s not always an obvious job. An example here is the Tamil dictionary I helped publish many years ago. Dictionaries are huge projects which take decades to compile. In this case, the rules for latinization (how the Tamil language is represented in our alphabet) had changed and changed drastically during the thirty years it took the author to compile the data used the book and its electronic version. There existed no tool for updating this representation, so I had to create one. I do not know Tamil, however, knowing how to code up some pattern matching algorithms allowed me to rescue this work. Knowing how to program lets you create just the right tool or it lets you coordinate many tools and employ them on a large scale. And, many of the repository systems out there are open source, which means installing and operating them is not as a simple as inserting an CD and running an installer. If you’re operating something like Islandora or Fedora or Dspace, you’re going to wind up programming whether you want to or not. These are incredibly complex systems which require constant administration.
Thanks for that. I think that provides a clear idea of why librarians might want to learn programming. I’m enthusiastic about these classes and looking forward to supporting them. A question I like to close with in these interviews is, what other courses would you like to teach for LJA, if you could make up any courses you wanted to?
Well, an obvious one would be Databases since I have done a lot of work in the area, and, most importantly, Databases are the underlying information management system in almost every larger system which manages and presents information. Beyond that, I’d love to teach a course in practical Digital Preservation. I’m probably not extremely well qualified for that since my work in that area has been for a very odd organization. I suspect my experience would be well outside the mainstream. I’d also like to reprise a workshop I ran back in 2002. This workshop was entitled “What does open source have to do with libraries?” Actually, that was the conference title. I presented my work with library portals at the conference. I was roped into teaching a workshop on the Linux, Apache, MySQL, PHP stack by the conference organizers the night before the last day of the conference. So I’m not sure the workshop even had a name. The conference itself made a pretty good case for the use of open source platforms in libraries and my workshop was an overview of how this all worked. It was partly a course in practical system administration, partly an overview of some of the commonly used platforms and a lecture on how they worked together. The workshop was mad, mad, mad, I tell you. It was a four hour hands on lab. Since I had the cds with me, we installed Slackware Linux on the classroom computers (Weslayan U. is still mad at me for that I think), installed Apache web servers and almost got PHP up working. The participants, Librarians without a great deal of technology experience, were overwhelmed, but everyone got a lot out of the workshop and learned a lot of good systems skills. I’d love to come back, take this basic idea, and do it up right. With Virtual Machines, it’s now possible to teach a hands on system administration course completely online. So there are lot of possibilities for teaching technology skills that Librarians would not otherwise have an opportunity to learn.
Those sound like some good classes! I hope that we will run some of them at some point.
Thanks again for doing this interview.
Thanks for having me on the radio, Terry. Oh, wait, wrong show. Seriously, thanks for interviewing me here. I’m excited to be teaching these courses. I’ll be trying to teach coding in a fairly new way using an innovative platform called Ipython. This system allows students to get down to programming without the having to worry about installing a computer language or navigating a command line environment which can be very intimidating for novices. This is all a tad experimental so it will be an adventure.