So, you “get” the Library 2.0 thing, and you’ve been through the 23 things. You are up-to-date on web services like blogs wikis and the like. You even know a bit of html. But you feel there is something missing in your understanding of Web 2.0. You do not want to get into programming your own web service, but you are the sort who liked those field trips you took at the local print shop. You want to see what’s under the hood of a Web 2.0 service so you can understand what all this stuff is really about. You saw The Machine is Us/ing Us and it got you part of the way there, but it seemed a little too dumbed-down for you. You want to *really* look under the hood of web services.
That said, your mind doesn’t work like a programmer. You are not going to be coding in PHP any time soon. You don’t like manipulating variables and handling loops and all those other weird systems-oriented stuff that the big O’Reilly books tell you about. And when you are honest with yourself, you understand that you will probably always choose television over web development.
The question you have in your mind is “Will I understand what is happening with emerging trends better if I understand more about programming.” My answer to this question is “yes.” But you do not have to learn how to program to understand about programming. Most programming concepts are fairly benign — the devil is always in the details. The good news is that Google and Wikipedia are chock full of good information about most technology. The bad news is that the language techies use to describe what they do is shaded in three-letter-acronyms, technical jargon and obscure references to text-based adventure games. It’s as if they do not want you to know what they are talking about.
Well, I decided to come up with 10 programming concepts that could help you get a better understanding of what brings Web 2.0 about. That way, you don’t have to cover a lot of ground that may not matter to you. I wouldn’t exactly call this mandatory reading, but it is meaningful, trust me. On the other hand, you’ll have to accept some jargon at the same time — so this is not exactly beginner stuff. Either way, you’ll benefit from Googling at least one or two of these concepts, I guarantee it.
So here it is. 10 programming concepts that would benefit a librarian who spent five minutes reading about them.
- Object-oriented Programming (OOP)
In a nutshell: Creating code that can be re-used in multiple programs.
Why it matters: OOP marked an important change in computing and is probably the main reason you are using a mouse instead of text-based commands. Back when I had my Commodore 64, I was taught to create programs in linear fashion. Do this. Do that. If this is the case, then do that — otherwise do something else. Programs had numbers to show the modus operandi (ahem — notice how, er MARC still uses numbers?).
OOP is different. Instead of “do this, do that,” I create an object. I say “here is a cat. It has whiskers, and fur and a tail. It does some funny things like meow and scratch and puke furballs.” Then I can put that cat into my old-fashioned programs. I can call my cat George. George has long whiskers, blue fur and a bushy tail. He meows when he sees food and scratches when you pull his tail. That’s neat. Except, the real trick is that other programmers can make their own cats too with their own names, shapes and behaviors.
But that’s not all either. Set up a form and you can make it so that your users can create cats too. Aha! Now you know why OOP connects to library 2.0. OOP has been around for a while, but it is the kind of coding practice that makes open source and user-driven products possible.
How can you learn more (besides Wikipedia)? : Any good programming book will have a chapter on OOP.
- Client-side scripting (AJAX)
How can you learn more (besides Wikipedia)? : I like this article by PC Magazine.
In a nutshell: Have you ever used a spreadsheet and wished you could take the cells of a particular column and break it into further columns? A relational database makes that sort of thing possible — except it does it through a series of tables that are interconnected (related) which are later accessed through something called a query (a search).
Why it matters: I think most library school students are learning about relational databases in their MLIS classes, but it is important enough that it deserves mention. When David Weinberger speaks about everything being miscellaneous, he is really affirming the value of the relational database. Because the relational database uses relationships instead of a tree-style taxonomy, it reduces needless repetition of data and opens the door to unforseen connections between different sets of data. The many-to-many relationship, in particular, really makes the prospect of mashing up huge masses of data from projects like Wikipedia in “god” databases like Freebase a possibility (while relational databases have been around for a long time, they have become fast and big enough now to handle huge amounts of data quickly).
How can you learn more (besides Wikipedia)? Hopefully library school taught you about relational databases. If not, you might want to play with a GUI(graphical)-style database product like Access. (For geeks: Yes, I know MySQL pwns Access, but I’m talking about using it to learn what a relational database is).
- Server-side scripting (PHP, Perl, Java, Ruby etc.)
In a nutshell: Server side scripts give instructions to the computer (the server) that hosts a webpage, instead of using a browser on the user’s desktop. Server side scripts are usually faster than client side ones, and most AJAX programming requires at least some server-side scripts.
Why it matters: It matters mostly for the same reasons that AJAX matters. Server side scripts make the major of the web happen. What has happened is that scripts like PHP are becoming more easy for the neophyte programmer to understand (PHP uses natural language alot) and are therefore creating an environment where alot more people are coding. Another thing that many people do not realize is that when you “view source” on a webpage, most frequently it is not a “page” of html that you are seeing, but code that is “outputted” by a server-side script like PHP.
How can you learn more (besides Wikipedia)? : Pick up a book on Java or PHP. Or go for the W3 Schools tutorials.
In a nutshell: These are the rules for transferring information on the internet.
Why it matters: I’m not sure how much this does really matter. I guess I just think librarians should have a little more in-depth knowledge about how computers talk to each other.
How can you learn more (besides Wikipedia)? : The James Marshall Tutorial is a classic.
- Open Source Software (OSS)
In a nutshell: Software that is released without protections that prevent users from viewing the “source code” of the product, and with licenses that encourage users (within certain boundaries) to distribute the product freely and change the product to their own needs.
Why it matters: If websites were all hosting using expensive proprietary software, you would never see the kind of boom in internet services that you see now. All of the client-side products I have mentioned are open source. But it’s not just that the products are free — it’s that communities have built themselves around the development of these open source products. And many open source products have built themselves into Web 2.0 services. Take WordPress, for instance. See, when you have huge communities working together, they need advanced services that promote collaboration. Look at the documentation for any open source product (how about Drupal?) and you are almost certain to find a wiki hanging around somewhere.
How can you learn more (besides Wikipedia)? : The Open Source Initiative is a good resource.
- The Document Object Model (DOM)
In a nutshell: Basically the DOM is the rules for retrieving data from XML or html documents. AJAX uses the html object model to make its magic happen, and other scripts use the DOM to extract information from RSS feeds.
Why it matters: XML is kind of like the universal solvent for data. If two services do not play well together, you always have XML to fall back on. Even so, XML is about taxonomies which is at the core of the library profession. We should be aware of how our taxonomies are turned into web interfaces, if only in a superficial way.
How can you learn more (besides Wikipedia)? : I think the W3 schools covers the DOM fairly well. There is a separate tutorial on the html DOM (same principles, just a tad different approach).
- Encryption and Digital Rights Management (DRM)
In a nutshell: Encryption is nothing new. You have information; you have a code to represent that information; you have a key or solution that will turn one into the other. Maybe you need to look at encryption tools like MD5, or SSL but in the end it’s all still like the Little Orphan Annie Ovaltine-Advertising decoder ring from A Christmas Story. DRM uses encryption to prevent users from breaking copyright on their products (software, DVDs, CDs, e-books etc.).
Why it matters: Copyright and DRM is the real battlefield of the Web 2.0 movement. Many Web 2.0 folks are outspoken about such products, saying that they put needless restrictions on paying customers. Others steadfastly argue that DRM is necessary to keep people from stealing their intellectual property. You oughta know about this stuff, because where the chips fall will say alot about the future of the Web and the business of business in general.
How can you learn more (besides Wikipedia)? : Cory Doctorow is a good source. Though he obviously sits to one side of the issue, Cory always points out the cases where the bad guys (to him) are making their arguments.
In a nutshell: All computer software requires a platform to make the things you do on the key board and mouse make sense to a computer. Windows is a platform. So is Linux.
Why it matters: In the end, the platform you use will dictate in the end how the software will perform. That said, there are three more reasons why I added this to the list. 1) One of the tenets of Web 2.0 is that of the “Web as platform.” Basically, this means that what can be done on Windows can be done on the web. If you look at Google Documents, you will get an idea of what this means. 2) I always think its good to remind people that Windows is just one of many possible platforms that people can use to make software work. 3) Platforms are changing. The battle of platforms continues onto handheld devices, and both the iPhone and the upcoming “Surface Computer” appear to be offering widely different platforms for the future.
How you can learn more (besides Wikipedia)? : Try linux out. Or a Mac.
In a nutshell: Let’s say someone offers to do dishes for you, but after every plate he cleans, he asks you where it goes. Annoying, right? You want all plates to go in the same spot, right? A cascading stylesheet (CSS) is a way for a programmer to say “ok. All headers are going to be green, 12 point Times New Roman font.” An XSLT stylesheet is a way for a programmer to say “ok. all data with “this” tag is going to appear at the top of the page. Either way, you are looking at the rules for style being separated from the rules for content.
Why it matters: Stylesheets are behind any service that lets you change the “skin” of the webpage you view. It is also behind all the fancy templates that WordPress and other services offer. If you are a Horizon user, you may want to know that the current Horizon Information Portal uses XSLT stylesheets to display the available data.
How you can learn more (besides Wikipedia)? : Back to the W3 Schools.
That’s it. Just a challenge for you to brush up on your technology if you so desire. I don’t think it’s mandatory to learn this stuff, but taking a bit of time to familiarize yourself with these concepts does help make some extra sense about where the web, and a whole whack of other IT services are going in the future.
Nicolas Morin has a nice response
to the list. He suggests adding Unix, SQL, Apache (and web servers) and the notion of API to the list. He is also curious about the order I put them in. Responses below:
The order: no real priorities there. The list was intended as a grab bag of things to look through.
I’m inclined to think Unix and Apache are the sort of things you can leave to systems people. If you are installing products on your lonesome, maybe you want to learn more about these.
SQL falls under “relational database” — it’d be nice if librarians knew more SQL, but I think it’s too much like programming. Suffice it to say that you need to give instructions to a computer to tell it how to search, store & organize your data. This is called a “query.” SQL is the language to do that. For most people I know, SQL is intimidating. I don’t want the list to be intimidating — learn what a relational database is first, then if you get enthusiastic, go for SQL.
API goes along with “Object oriented programming” although, I agree it’s a pretty big miss there. Using my analogy above, once you’ve created your cats, you can give people the list of things the cat will do. That list is the API. Once you share an API, people can do all kinds of wonderful things with your cat. Maybe even mash it up with a dog. Then you can see the fur fly! :)
He suggests replacing DOM with XML. Probably a good suggestion, although I find most tutorials on XML talk about syntax more than they explain why you would use it. DOM explains a bit more about the structure of an XML document and how you might extract data from it. It’s pretty much 6 of one, 1/2 a dozen of the other.
He also suggests taking out encryption and platforms. For one, Unix is a platform, so that’s why I put it in. I wanted to avoid the typical geeky acronyms and products names out as much as possible. Also, as I said before, I think platforms are going to change in the near future. This is a heads up.
Encryption is there mostly because DRM is such a big issue these days. Also, if we are helping clients evaluate good websites, we ought to know a little more about how secure sites work. There are other, more mind-blowing things that are interesting about encryption as well. Some of it is covered in a couple of great books I’m reading: The Man Who Knew Too Much (biography of Alan Turing, the man who invented the computer) and Decoding the Universe (about information theory).