<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blyberg.net &#187; Programming</title>
	<atom:link href="http://www.blyberg.net/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blyberg.net</link>
	<description>A library-geek blog</description>
	<lastBuildDate>Mon, 16 Nov 2009 04:10:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Library 2.0 websites: Where to begin?</title>
		<link>http://www.blyberg.net/2006/03/12/library-20-websites-where-to-begin/</link>
		<comments>http://www.blyberg.net/2006/03/12/library-20-websites-where-to-begin/#comments</comments>
		<pubDate>Sun, 12 Mar 2006 14:24:06 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Libraries]]></category>
		<category><![CDATA[AADL]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[L2]]></category>
		<category><![CDATA[OPAC]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web-Design]]></category>

		<guid isPermaLink="false">http://www.blyberg.net/2006/03/12/library-20-websites-where-to-begin/</guid>
		<description><![CDATA["This is my website. There are many like it, but this one is mine..." Much has changed in the last year with respect to the notion of a "library website". It's as though the clear, glassy surface of a morning bay has been turned and cast about by steel, unforgiving turbines. Many unsuspecting libraries are [...]]]></description>
			<content:encoded><![CDATA[<p><img align="left" src="/wp-content/images/oneappleout.jpg"/>"This is my website.  There are many like it, but this one is mine..."</p>
<p>Much has changed in the last year with respect to the notion of a "library website".  It's as though the clear, glassy surface of a morning bay has been turned and cast about by steel, unforgiving turbines.  Many unsuspecting libraries are now caught in that turbulent wash, casting about for something, anything to hold on to as they begin the daunting task of "the redesign".  The problem is, where do we even begin? If there was no gold standard before, there still is none, but we now acknowledge two things:  Traditional library websites drain the life-force from patrons.  Our OPACs finish the job.</p>
<p>So where do we go from here?  Is there anything, anything at all we can use as a <i>modus operandi</i> as we, once again, begin the process of re-provisioning the obligatory library website?</p>
<p><img align="right" src="/wp-content/images/web5points.png"/>Let me suggest five directives that may help get your creative minds turning.  I want to talk about these not only because they represent common sense, good design, and patron convenience, but also because by using these directives as a kernel in your new project, you are sure to come out the other side feeling highly rewarded and sporting a new website that will invigorate your inner-geek for years to come.</p>
<p><strong>Social software</strong>, as you are probably aware, was born of the read/write web.  Partially due to persistent connections, newer software, higher bandwidth, and plain old human acceptance of the machine, the social web is a beautiful lace spun with minds, machines, and information.  It is who we are as humans--it is community. just like the public library is community.  So to ignore social software in the context of our library websites, is to ignore our communities.  We need to find a prominent place on our mantle for it and ensure that our websites invite humanity in and give it right back.  The point here is to extend the boundaries of the library, perhaps blurring the edges like watercolor so we're not quite sure where the library ends.</p>
<p>There are many ways to incorporate social software into your sites, not the least of which is the use of mash-ups, or the judicious use of an <strong>open source</strong> database like MySQL in conjunction with a little PHP, running on Linux, served up by Apache. <img align="left" src="/wp-content/images/opensource-110x95.png"/>Adopting open-source platforms and technologies in a library is not just financially beneficial.  Philosophically, it's the right thing to do.  We ought to be developing on open-source then turning around and making our work freely available to one another.  We <i>are</i> libraries after all, we ought to act like it, not just in the stacks and at the circulation desks, but in the server rooms and IT departments as well.  Don't forget the intrinsic benefits of supporting and pursuing an open sourced development program. Eric Raymond writes in The Cathedral and the Bazaar:</p>
<blockquote><p>...we have fun doing what we do. Our creative play has been racking up technical, market-share, and mind-share successes at an astounding rate. We're proving not only that we can do better software, but that joy is an asset.</p></blockquote>
<p>Joy truly should be an asset as you continue to plug away at your web project.  If it is, the final product will reflect it.  Open source allows success to be contagious as code is reused, changed, improved, forked, spawned into radical new ideas.  That sounds like something a public library ought to be involved with, doesn't it?</p>
<p>I think it's time libraries took the notion of <strong>single sign-on</strong> seriously.  We need to get away from the model where patrons are required to have their library cards handy every time they reserve an item. Who wants to have one set of credentials to access the OPAC and yet another to make a blog comment, or fill out an ILL request?  Why not be like the rest of the world and simply require a username and password?  Let me take this one step further, as well, and suggest that your new websites support <i>session-based</i> single sign-on--a useful little bit of web technology that has been around since, well, almost forever.  When I create an account on a site I use frequently, I expect that I'll not have to keep re-entering my password every time I visit.  Otherwise, I won't be visiting that site very frequently.  </p>
<p>Single sign-on is not just about convenience, either.  A unified user management system is a vital ingredient in the foundation of a cohesive online experience.  Think about what your users will be doing, especially in light of the fact that you're going to implement all those great social software features.  As I've mentioned before, the library website can be so much more than just a resource--it can, and should be a destination--a community touchstone.  You can't do that if there is a functional disconnect between what you're offering and how you're offering it.  </p>
<p>Single sign-on will prove to be a more difficult implementation than you may be thinking at the moment.  As you scratch the surface, you'll see why, what will all the disparate software you'll be gluing together.  After all, it's not like our vendors are going out of their way to offer and support <strong>open standards</strong>.  We ought to, of course, for many of the same reasons I've outlined for open source.  <img align="left" src="/wp-content/images/w3c_home.png"/>Open standards, however, gives us the flexibility both internally and externally to promote vital services in a timely and easily accessible manner.  That sounds good, right?  Adopting W3C standards will ensure that we've provisioned for any eventuality.  Need to export? No problem.  Someone wants to get Greasemonkey all up in your site?  Go right ahead, Ed.  RSS feeds?  Absolutely essential.  Want to offer a web services front-end to your OPAC?  Why not use SOAP and throw in some WSDL so that potential coders can hit the ground running? Open standards, open minds, open doors.</p>
<p>Then there's the white elephant.  Your OPAC--that malignant growth that looks nothing like the rest of your site and appears to have been coded by a CS 101 student who is contemplating switching majors to say, English.  Insist on an <strong>integrated OPAC</strong>.  Again, this may be a technical challenge, but nothing is impossible.  If you find a way to tame the beast, you're going to completely transform the way your website operates.  Ideally, the OPAC should be embedded inside the framework of your site so that you have access to all the site data and functionality during page parse.  Once you've got control over what, where and when your OPAC displays, you'll find that a world of opportunity has opened up to you.  While pondering a way to achieve this, you may find yourself, again, at your vendor's doorstep, whimpering, "please sir, may I have some more?"  Unless the request is in an RFP, however, good luck.  All we can do is chip away at them, in the meantime, there are ways of getting around that technical hurdle, but they probably require a programmer--a position libraries should consider adding anyway.</p>
<p>All this is an oversimplification of an arduously complex process, I confess.  Sometimes, however, when you're not sure where to begin, it helps to consider all your options within a set of parameters.  If I were to launch into a library website project right now, these are the "must-haves" I'd start with.  For my part, these comprise an ideal that will stand a project in good stead as we continue to cast about in a 2.0 world.</p>
<p>[tags]Library, Libraries, L2, Web Design, OPAC, Development, Programming, Coding, PHP, HTML, HTTP, AADL[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blyberg.net/2006/03/12/library-20-websites-where-to-begin/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Conversational Programming</title>
		<link>http://www.blyberg.net/2006/02/22/conversational-programming/</link>
		<comments>http://www.blyberg.net/2006/02/22/conversational-programming/#comments</comments>
		<pubDate>Wed, 22 Feb 2006 19:56:13 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Libraries]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Coders]]></category>
		<category><![CDATA[Library 2.0]]></category>
		<category><![CDATA[Mashups]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Superpatron]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.blyberg.net/2006/02/22/conversational-programming/</guid>
		<description><![CDATA[Yes, this is a two-way title, referring to both today's SirsiDynix Institute talk I was lucky enough to be part of and the topic of mashups. Despite the fact that AADL and the surrounding area was under attack and I was disconnected from the data portion of the presentation for the duration, it went extremely [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, this is a two-way title, referring to both today's <a href="http://www.dynix.com/institute/">SirsiDynix Institute</a> talk I was lucky enough to be part of and the topic of mashups.  Despite the fact that AADL and the surrounding area was <a href="http://status.itcs.umich.edu/outage.php?id=8351">under attack</a> and I was disconnected from the data portion of the presentation for the duration, it went extremely well.  As usual, I'm humbled by the articulate insights of <a href="http://stephenslighthouse.sirsi.com/">Stephen Abram</a>, <a href="http://www.librarycrunch.com/">Michael Casey</a>, and <a href="http://tametheweb.com/">Michael Stephens</a>.  If you missed it, be sure to catch the <a href="http://www.dynix.com/institute/seminar/index.asp?sem=20060222">archive</a> when it comes out later this week.<br />
<img align="left" src="/wp-content/images/cathedral.jpg"/ alt="The Cathedral" title="The Cathedral"/><br />
A topic of discussion today was mashups.  a <a href="http://en.wikipedia.org/wiki/Mashup_%28web_application_hybrid%29">mashup</a>, for those who are unfamiliar with the term, is "a website or web application that seamlessly combines content from more than one source into an integrated experience" [wikipedia].  More than likely, you've encountered them already without even knowing they were mashups.  These are bits of code that can allow you to either incorporate external data sources into your own site or, conversely, can make data streams available from your site that can be "mashed in" to remote sites.  Recently, mashups have become a very vogue topic.</p>
<p>The first ever <a href="http://www.mashupcamp.com/">mashup camp</a> drew to a close yesterday.  It was the brain-child of <a href="http://blogs.zdnet.com/BTL">David Berlind</a> and <a href="http://www.mashupcamp.com/index.cgi?DougGold">Doug Gold</a>.  Essentially, It was a collection of mashup authors from around the country and, ostensibly, the world who gathered to share their creativity and brainpower.  Notably, among them was Ann Arbor's Ed Vielmetti.  He's <a href="http://vielmetti.typepad.com/superpatron/2006/02/at_mashup_camp_.html">reported back</a> on the "camp's" progress--be sure to check out <a href="http://vielmetti.typepad.com/superpatron/">his blog</a>.<br />
<img align="right" src="/wp-content/images/bazaar.jpg"/ alt="The Bazaar" title="The Bazaar"/><br />
But what does this have to do with libraries, and why should we be paying attention to this?  Well, beside the fact that mashups are the new, hot technology and we should be keeping up with all new, hot technology, mashups have enormous potential to redefine he library boundary both in terms of the technology itself and the people creating it.</p>
<p>Immediately, we can see the potential on our own sites by bringing in highly-polished, powerful tools in ways that enhance the information we already have to offer.  A good example that Stephen Abram cited, was the ability to use the Google Maps API to provide very specific, very user-friendly directions to library branch locations.  What makes mashups so exciting is that creativity and innovation are the key elements at play in the construction of these things.</p>
<p>The fact that new, high-level scripting languages and development engines like Ruby or Ruby on Rails, even, are being developed make the assemblage of Web 2.0 APIs a fairly easy endeavor.  As a result, we're starting to see our patrons get into the groove as they begin to spin their own creations.  Ed Vielmetti's <a href="http://vielmetti.typepad.com/superpatron/2006/02/inserting_libra.html">Amazon mashup</a> is a great example of this.  He's written a Greasemonkey plugin that sneaks item availability into an Amazon record.  The subversive nature of these things really tickles my fancy--it allows us, as end users, to do things that would mortify any sales team.  We need to laud the use of our data wherever our patrons decide it should be.</p>
<p>Mashups are about individual empowerment.  As libraries, we need to be able to step right in and lend tools to our users that will allow them to start creating these <i>unintended uses</i>.  Again, this requires us to have... that's right, suitable APIs!  The <a href="http://www.blyberg.net/2006/01/26/major-enhancements-for-patron-rest/">PatREST</a> project I'm working on strives to do just that and I'm so grateful that <a href="http://www.daveyp.com/blog/">Dave Pattern</a> at Huddersfield has joined me.  We've been able to create a bilateral push for this by producing near-identical results using two very different systems.</p>
<p>The mashup also poses some fundamental questions about the library's reach--where it begins (from the patron view) and where it ends (from our insider's view).  By enabling users to spin our library tendrils into any place they like, we're creating a very ambiguous border on our OPACs, which, in turn, causes the entire ILS to recede into the background and play a significantly different role.  Increasingly, it's just the business logic we want.</p>
<p>And so, as a whole new generation of Frankensteins are born, can you say that your ILS ready?  Can you deal your data out under the table?  With sleight-of-hand, we're going to make the library insidious.</p>
<p>[tags]Mashups, API, Web 2.0, Library 2.0, Programming, Coders, Superpatron[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blyberg.net/2006/02/22/conversational-programming/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Rime of the Ancient ILS</title>
		<link>http://www.blyberg.net/2006/02/19/the-rime-of-the-ancient-ils/</link>
		<comments>http://www.blyberg.net/2006/02/19/the-rime-of-the-ancient-ils/#comments</comments>
		<pubDate>Mon, 20 Feb 2006 03:34:55 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Libraries]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[ILS]]></category>
		<category><![CDATA[Integrated-Library-System]]></category>
		<category><![CDATA[Library-Vendors]]></category>
		<category><![CDATA[OPAC]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.blyberg.net/2006/02/19/the-rime-of-the-ancient-ils/</guid>
		<description><![CDATA[I love that every now and then posts like this one from Sarah Houghton crop up. And while most ILS vendors do a pretty good job of ignoring the dissatisfaction outright (I know ours does), I like to think these posts must still get under their skin--even if just a little bit. This latest maneuver [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://static.flickr.com/26/100843428_64e16b1d1c_m.jpg" alt="" align="right" />I love that every now and then posts like <a href="http://librarianinblack.typepad.com/librarianinblack/2006/02/library_systems.html">this one</a> from Sarah Houghton crop up.  And while most ILS vendors do a pretty good job of ignoring the dissatisfaction outright (I know <a href="http://www.iii.com/">ours</a> does), I like to think these posts must still get under their skin--even if just a little bit.</p>
<p>This latest maneuver against our vendors' flanks consists of several posts in addition to Sarah's.  She links to <a href="http://www.familymanlibrarian.com/?p=1030">a post</a> from <a href="http://www.familymanlibrarian.com/">Steve Oberg</a> who, in turn, links to a <a href="http://scanblog.blogspot.com/2006/02/twiddly-bits.html">very interesting post</a> at <a href="http://scanblog.blogspot.com/">It's all good</a>.</p>
<p>Sarah has every right to express the frustration she does with vendors.  They are still, in many ways, serving to stifle some great innovation at a time when innovation is both vital and time-sensitive.  I think that's the impetus for this frustration, now.  Working with existing systems is outright infuriating and the promises we get from our vendors are like those you might get from an addict who owes you money:  "I'll have it for you next week, I promise!"</p>
<p>I found Steve Oberg's observations to be particularly keen, though I do take issue with one point: <em>"By and large, lack of deep pockets and resources to research and quickly implement new products or features"</em>.  I believe the problem is not money even though vendors may see it that way--they are looking at the marketplace which is generating a perpetual demand for widget X, Y, and Z.  Ultimately, I see this as a problem that is internal to our libraries and not with our vendors.  Oberg almost touches on this with another point, <em>"More attention [is] given to librarians’ needs than library users’ needs"</em>.  Except, I would phrase it, "More attention is given to librarians' needs than the needs of those who work intensively with the ILS." In other words, the tech staff.  Libraries have been incredibly reticent when it comes to letting technical people make the technical decisions.  The result?  Vendors who are given laundry lists of nonsense by folks who really don't know what they're asking for.</p>
<p>Alane at <a href="http://scanblog.blogspot.com/">It's all good</a> has a marvelous paraphrase of Pat Sommers, CEO of <a href="http://www.sirsidynix.com/">SirsiDynix</a>:</p>
<p><em>Pat was responding, if I recall correctly, to a question from the floor about why ILS vendors don't innovate more quickly. Pat remarked that his company spends $10 million a year tweaking their systems to respond to requests from customers, and that left scant time and resources to make big changes. Robin rephrased this to describe all that activity as "building twiddly bits."</em></p>
<p>I'm glad Pat Sommers called us out on this.  We are ultimately responsible for giving flight to an albatross that draws both vendors and libraries away from the marriage between our vision of tomorrow's  library and 21st century technology.  In reality, all we really need is the simplest of solutions: the ability to innovate on our own.  But what will that take?</p>
<p>First, librarians need to stop asking for silly little twiddly bits.  Libraries should be listening to their IT departments and vetting requests through them.  If you don't have an IT staff, then a part of the solution is reevaluating your staffing needs so that you have some technical people on-board--this can be as simple as canvasing your existing staff, looking for someone who wants to make the move into geekdom.  I believe that a coder-on-board sign is simply a characteristic of most 21st century libraries--it's not enough to employ the best librarians you can find, you need to get passionate, interested techies as well.  Ideally, library schools ought to be considering the merits of a CS track.  Courses need to be developed that synthesize coding skills with library science.  The more technical know-how that is mixed in to their customer-base, the better chance vendors have at getting sensible feature-requests.</p>
<p>But it's not just us.  ILS vendors need to wake up!  An entire new business strategy needs to be extolled.  What should that strategy look like?  Vendors need to enable library staff with tool-sets in the form of standards and APIs.  Of course I've been over this time and time again, but the fact is, most vendors are not hearing this. Maybe I'm feeling the fatigue that sets in after months of subverting the intended use of our system, but quite frankly, I hold little hope that our vendor will decide to pursue a strategy that champions community dev.  In fact, during a recent visit to AADL, we were told by a top III executive that we have all the APIs we need.  Apparently, he seemed unfamiliar with the entire notion.  What we've accomplished is in spite of our ILS, not because of it.  He was visiting under the pretense that they were <em>very impressed</em> with what we'd done with their system--I thought, "great, this is encouraging--a chance to open a dialogue".  As it turned out, he was just using AADL as a sales venue for another customer.  The irony makes me grit my teeth.  It's a good thing I was on vacation that week--I might have told him that we've done things to their system that would make Paris Hilton blush.  (I would have thought it, at least.)</p>
<p>There is real frustration among the people who are working with these systems, but it should also be said that some vendors are making an effort and seem to be truly "getting it"--or at least trying to get it.  It's not entirely fair to castigate them all.  They are not just some dark uber-force, brooding "out there" among the turbines of a ravenous capital market.  It's important to take a good look at your own ILS and vendor to determine whether they <em>really</em> have your best interests in mind.  You may just find that they do.  If that's the case, use every ounce of that good fortune to your advantage because many of us are not so lucky.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blyberg.net/2006/02/19/the-rime-of-the-ancient-ils/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>If you build it&#8230;</title>
		<link>http://www.blyberg.net/2006/02/14/if-you-build-it/</link>
		<comments>http://www.blyberg.net/2006/02/14/if-you-build-it/#comments</comments>
		<pubDate>Tue, 14 Feb 2006 18:33:23 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Libraries]]></category>
		<category><![CDATA[AADL]]></category>
		<category><![CDATA[Library 2.0]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Virtual-Card-Catalog]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.blyberg.net/2006/02/14/if-you-build-it/</guid>
		<description><![CDATA[As promised, I've been keeping some very simple metrics on the usage of a virtual card catalog service that I quietly added to the AADL catalog several weeks ago. But before I go any further, I need to disclose several tidbits about this whole endeavor. First, this was a "black-ops" project. That is to say, [...]]]></description>
			<content:encoded><![CDATA[<p><img align="left" src="/wp-content/images/margusage212.png" alt="Marginalia Usage" title="Marginalia Usage"/>As promised, I've been keeping some very simple metrics on the usage of a virtual card catalog service that I quietly added to the <a href="http://www.aadl.org/catalog/">AADL catalog</a> several weeks ago.</p>
<p>But before I go any further, I need to disclose several tidbits about this whole endeavor.</p>
<p>First, this was a "black-ops" project.  That is to say, I consulted no one before launching into this.  I did not go to the public and ask their opinion.  I did not go to my colleagues and solicit their input.  I did not float this in committee.  I didn't get any official authorization to do it.  In fact, the whole thing flew under the radar from its conception through to fruition, which took exactly four days.  In many ways, it was a spur-of-the-moment project that I did to keep busy during a few relatively quiet days.  Sometimes, you need to throw caution to the wind and just do it.</p>
<p><a href="http://www.aadl.org/cat/seek/search/X?lord%20of%20the%20rings&#038;searchscope=26&#038;m=&#038;SORT=D"><img align="right" src="http://static.flickr.com/31/88747034_ac6b0b15f6_m.jpg"/ alt="An unpresuming presence" title="An unpresuming presence"/></a>Bear in mind that the only place this service was advertised was on this blog (where, admittedly, it was subsequently picked up by several others).  I did not announce it to AADL staff--I let them <a href="http://www.aadl.org/node/1367">discover it on their own</a>.  Many probably still don't know it's there.  When you look at the numbers, know that they reflect those who either read about the cards on a blog or stumbled across it during their course of regular business.</p>
<p>It was a very fun little project, but the real value was that I could slip it into production very quietly and let it act as a proof-of-concept for some very real, very large changes I want to do to our OPAC (which I <i>definitely</i> need authorization for).  Essentially, I wanted to answer a very simple question:</p>
<p>Is the public ready for a social OPAC?</p>
<p>What I found indicates something very special, indeed.  In fact, as time progressed, I began double-checking my methods which consisted of a simple laundry list of basic queries, which I'll describe.  As you can see, I only have 7 collection dates and they are not at regular intervals so the growth rates represented are a little deceiving, but as I've said before, this is very unscientific--I'm definitely no statistician!  The results, however, are real.</p>
<p>The first graph here (above) is the simplest of all.  It's the total number of marginalia comments in the system over time.  The query was simply:</p>
<div class="hl-surround" style="height:28px;"><div class="hl-main"><pre><span class="hl-reserved">SELECT</span><span class="hl-code"> </span><span class="hl-var">COUNT</span><span class="hl-brackets">(</span><span class="hl-code">*</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-reserved">FROM</span><span class="hl-code"> </span><span class="hl-identifier">cc_marginalia</span></pre></div></div>
<p>The count for each date, respectively is: 35, 107, 160, 413, 593, 634, 790.  You can clearly see that the number or cards being marked up is experiencing a steady climb.  I actually am not terribly surprised by this, but for an unadvertised service, it's still much higher than I had expected or hoped for.</p>
<p><img align="left" src="/wp-content/images/numcardscoll212.png"/>Now, marking the cards up is one thing--it's a fire-and-forget process, it doesn't even require a user to be logged in.  Adding a card to a collection is another.  Adding a card requires that a user be logged in to a valid account and represents, what I consider, a higher participation factor.  This means that users are not only adding marginalia, but they are taking advantage of the ability to build card catalog collections.  To me, this is really exciting stuff because it tells me that a) the service is useful and b) there is a market for this kind of stuff in a library setting.  FYI, the query for this data is:</p>
<div class="hl-surround" style="height:28px;"><div class="hl-main"><pre><span class="hl-reserved">SELECT</span><span class="hl-code"> </span><span class="hl-var">COUNT</span><span class="hl-brackets">(</span><span class="hl-code">*</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-reserved">FROM</span><span class="hl-code"> </span><span class="hl-identifier">cc_savedcards</span></pre></div></div>
<p>The data for the preceding graph dates is 8, 43, 66, 82, 216, 320, 388.  </p>
<p>If you're interested, you can take a <a href="http://www.aadl.org/pcc/john/">look at my saved cards</a>.  In addition to knowing how many cards were being added to collections, I needed to know how many people were collecting cards.<img align="right" src="/wp-content/images/numuserscoll212.png"/>  This is where I really started to feel my pulse quicken.  These numbers told me that, despite a lack of advertisement, a substantial number of people were building card catalog collections.  I have to be honest and say that I was expecting only 20 to 30 users participating after three weeks.  As of 2/11, however, there were 75 users building collections!  Check out the growth over time: 2, 6, 22, 42, 58, 62, 75 for each date respectively.  Of course, to put that in perspective, we have 20,955 registered users on our Drupal site as of 2/14--our regular users are an extremely small fraction of that, however.  To get this data, I ran the following query:</p>
<div class="hl-surround" style="height:28px;"><div class="hl-main"><pre><span class="hl-reserved">SELECT</span><span class="hl-code"> </span><span class="hl-var">COUNT</span><span class="hl-brackets">(</span><span class="hl-reserved">DISTINCT</span><span class="hl-brackets">(</span><span class="hl-identifier">uid</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-reserved">FROM</span><span class="hl-code"> </span><span class="hl-identifier">cc_savedcards</span></pre></div></div>
<p>So... How many of those users not only started to build card catalog collections, but opted to share their collections with the world?<img align="right" src="/wp-content/images/numusersshcoll212.png"/>  I was blown away by these results.  Simply amazing: virtually every person to create a card catalog collection also opted-in to sharing it.  To me, this speaks volumes about the types of services our users want and it tells me that a good number of our library users want to interact with each other--a vital ingredient if you want a social OPAC.  It also  sheds a little light on the sophistication of our users--a lot of them are already Web 2.0-aware and will be sensitive to new services like this.  Our commercial counterparts are doing a great job of softening the market for us--now all we have to do is provide the tools on our systems.</p>
<p>There is a very good chance I'm overlooking something here--if there is a metric you'd like to see me add, <i>please</i> ask for it and if it's feasible, I'll do my best to provide it.</p>
<p>Our users are smart, clever, interesting, positive, intuitive, and social.  They may not know it yet, but they're waiting for their public libraries to be a catalyst for the community.  There is something wonderfully special and intimate about shared experience--that is why Web 2.0 is so successful.  When those experiences are centered around books, movies, and music and they're aggregated at the local level, the product becomes highly personal--how inspiring would it be to have patrons who are proud of the job <i>they've</i> done for <i>their</i> library?</p>
<p>NOTE: The above graphs were created using the open source graph library, <a href="http://www.aditus.nu/jpgraph/">jpgraph</a>.</p>
<p>[Update 4/16/2006 2:42PM]<br />
Somehow, this post got flagged as "private" .. Odd.  Very odd, but fixed now.<br />
[/Update]</p>
<p>[tags]Web 2.0, Virtual Card Catalog, Library 2.0, Programming, Library, AADL[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blyberg.net/2006/02/14/if-you-build-it/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Source code for virtual card catalog images</title>
		<link>http://www.blyberg.net/2006/02/10/source-code-for-virtual-card-catalog-images/</link>
		<comments>http://www.blyberg.net/2006/02/10/source-code-for-virtual-card-catalog-images/#comments</comments>
		<pubDate>Fri, 10 Feb 2006 22:34:30 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Libraries]]></category>
		<category><![CDATA[AADL]]></category>
		<category><![CDATA[Library 2.0]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Virtual-Card-Catalog]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.blyberg.net/2006/02/10/source-code-for-virtual-card-catalog-images/</guid>
		<description><![CDATA[<a href="/downloads/iii-vcards-0.1.tar.gz">iii-vcards-0.1.tar.gz</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.aadl.org/cat/ccimg/1258697/"><img align="right" src="http://www.aadl.org/card/cardimg.php?bnum=1258697&#038;card=1&#038;comment1=413&#038;comment2=249&#038;comment3=170&#038;c1_font=kristenscript&#038;c2_font=Efficient2&#038;c3_font=dulcesfont&#038;shrink=.6"/></a>I can't tell you how many people have emailed me about getting the source code to the virtual card catalog images I <a href="/2006/01/19/creating-a-virtual-card-catalog/">announced</a> a few weeks ago.  Anyway, I've finally gotten around to stripping out all the garbage from the script that generates the images, and I'm <a href="/downloads/iii-vcards-0.1.tar.gz">releasing it here</a> (and as always, it'll be available in the <a href="/files/">files</a> section).  There are a few things you need to keep in mind about it, however.</p>
<p>First, this code is written for use with III's XMLOPAC and requires my PHP XMLOPAC class.  That said, an astute PHP coder could easily port this app and make it usable on another system (I heartily encourage that).  Someday, I plan to make it completely generic so that all you need to do is pass it the data itself.  I'm a little busy at the moment, however.</p>
<p>I am not releasing the card stock images that AADL uses.  There was no license info associated with the original images.  Until I can contact the folks at <a href="http://www.library.upenn.edu/exhibits/pennhistory/library/cards/cards.samples.html">UPenn</a> and find out what the deal is, I'm not going to make them available.  It'd be very easy to create your own stock, however.</p>
<p>Same deal with the fonts.  I was able to freely download them--so should you.</p>
<p>At present, this code is really meant for developers, it is not a "package" that will work out of the box.  You must know what you're doing in order to get this going.</p>
<p>I'm releasing it under GPL for all the world to use freely, forever and ever.</p>
<p>Included in the tarball is a README file with some basic instructions.  Be sure to read that before emailing me your questions.</p>
<p>Enjoy.  I'm looking forward to some possible creative uses.  Please email me if you get it working as I'd love to see what you're doing with it.  If you come up with a particularly interesting use, I'll be sure to showcase it here.</p>
<p>[tags]PHP, Programming, Virtual Card Catalog, AADL, Web 2.0, Library 2.0, Open Source[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blyberg.net/2006/02/10/source-code-for-virtual-card-catalog-images/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>III XMLOPAC Class update</title>
		<link>http://www.blyberg.net/2006/02/08/iii-xmlopac-class-update-2/</link>
		<comments>http://www.blyberg.net/2006/02/08/iii-xmlopac-class-update-2/#comments</comments>
		<pubDate>Wed, 08 Feb 2006 20:47:08 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Libraries]]></category>
		<category><![CDATA[AADL]]></category>
		<category><![CDATA[III]]></category>
		<category><![CDATA[OPAC]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XMLOPAC]]></category>

		<guid isPermaLink="false">http://www.blyberg.net/2006/02/08/iii-xmlopac-class-update-2/</guid>
		<description><![CDATA[<a href="/downloads/iii-xmlopac-1.10.tar.gz">iii-xmlopac-1.10.tar.gz</a>]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/images/xmllogo.jpeg" alt="" align="left" />After a fair amount of work, I'm releasing an update to the iii-xmlopac class.  I've been sitting on this update for awhile because it's a fairly big update and I wanted to make sure it was performing like it should.  I highly recommend that anyone using this class update because a number of fairly critical bugs have been fixed, including a messy tangle of UTF8 encoding issues.</p>
<p>In addition, I've included an XSLT file written by <a href="http://library.csusm.edu/catalog/sru/xserver/test.htm">David Walker</a> which I've modified slightly.  It allows me to easily extract subject headings from the XML, so yes, this class now will return an array of subject headings!!</p>
<p>So, be sure to <a href="/downloads/iii-xmlopac-1.10.tar.gz">download</a> the latest version.  As always, you can grab it anytime from the <a href="/files/">files</a> section.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blyberg.net/2006/02/08/iii-xmlopac-class-update-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Major enhancements for patron-REST</title>
		<link>http://www.blyberg.net/2006/01/26/major-enhancements-for-patron-rest/</link>
		<comments>http://www.blyberg.net/2006/01/26/major-enhancements-for-patron-rest/#comments</comments>
		<pubDate>Thu, 26 Jan 2006 21:41:53 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Libraries]]></category>
		<category><![CDATA[OPAC]]></category>
		<category><![CDATA[PatREST]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.blyberg.net/2006/01/26/major-enhancements-for-patron-rest/</guid>
		<description><![CDATA[(Codenamed PatREST in my SVN) When last I wrote about this, it was little more than a working proof-of-concept, but I've been working on it a lot this week--partly driven by DaveyP's experiments and Ed's tinkering, but mostly because I've been planning to do this for a long time now. So, to cut to the [...]]]></description>
			<content:encoded><![CDATA[<p>(Codenamed PatREST in my SVN)</p>
<p>When last I wrote about this, it was little more than a working proof-of-concept, but I've been working on it a lot this week--partly driven by <a href="http://www.daveyp.com/blog/">DaveyP's experiments</a> and <a href="http://vielmetti.typepad.com/superpatron/">Ed's tinkering</a>, but mostly because I've been planning to do this for a long time now.</p>
<p>So, to cut to the chase:<br />
PatREST now provides an easy, RESTful URI to do searches on quite a few fields.  Essentially, you will plug the search key into the URI, followed by the search term.  You can also request optional paging for keyword, author searches by appending hits-per-page and page-# to the URI.  It looks like this:</p>
<p>http://www.aadl.org/rest/search/[searchkey]/[searchterm]/[hits-per-page]/[page-#]</p>
<p>The following search keys are available:</p>
<p>title<br />
author<br />
callnum<br />
keyword<br />
subject<br />
gvtdocnum<br />
stdnum (ISBN/ISSN)<br />
titlekey<br />
controlnum<br />
barcode<br />
record (Bib #)<br />
bibnum (Bib # - Same as record)<br />
itemnum</p>
<p>Go ahead and try <a href="http://www.aadl.org/rest/search/keyword/japan/10/1">this keyword search</a>.  It'll look something like this:</p>
<p><a href="http://www.flickr.com/photos/jblyberg/91487868/"><img src="http://static.flickr.com/25/91487868_4ee1995bd3_m.jpg" /></a></p>
<p>You'll notice that the XSLT stylesheet presents it nicely, all the data may not be displayed, but the XML is sound.  Go ahead and view source to examine the schema.  I've departed quite a bit from my original schema in order to provide a little bit of metadata for processing purposes.  The XSLT allows you to click on a title which will take you to another RESTful record:</p>
<p><a href="http://www.flickr.com/photos/jblyberg/91487869/"><img src="http://static.flickr.com/18/91487869_f3a271d474_m.jpg" /></a></p>
<p>You'll notice that the URI for this record looks like <a href="http://www.aadl.org/rest/record/1035670/">/rest/record/1035670/</a> ... It's /rest/record/[bibnum]/.  The XSLT allows you to click on either the title or cover image to go to the regular OPAC record.  Again, view source for the XML schema.  This schema has changed little and you'll notice that I'm taking advantage of OCLC's xISBN service.</p>
<p>The real treat in all this, however, is the ability to access your personal records RESTfully.  To do this, I make use of the RSS token that is provided to every cardholder who has registered for an online account.  This is the token that authenticates RSS readers against our system.  It is a 32 character MD5 hash that looks something like "316928e0d260556eaccb6627f2ed657b".  Accessing personal data is as easy as using the following URIs:</p>
<p>For checkouts, you would use /rest/checkouts/[token] (ie http://www.aadl.org/rest/checkouts/316928e0d260556eaccb6627f2ed657b).  You'll then get output at looks something like:</p>
<p><a href="http://www.flickr.com/photos/jblyberg/91487870/"><img src="http://static.flickr.com/27/91487870_6a00d6c546_m.jpg" /></a></p>
<p>For holds, the URI is /rest/holds/[token].  Output looks like:</p>
<p><a href="http://www.flickr.com/photos/jblyberg/91487871/"><img src="http://static.flickr.com/36/91487871_90882d7159_m.jpg" /></a></p>
<p>Both of those results allow you to click on the bibnum and access the REST record for that item.  Again, check the XML schema with your browser (no point in putting it here).</p>
<p>Please hack away at this and send me your comments/suggestions.  You're absolutely correct that it doesn't adhere to any existing standard, but that's because I didn't want it to.</p>
<p>On a slightly less geek-oriented note...</p>
<p>I've gone <a href="/2005/11/24/talis-responds-to-bill-of-rights/">several rounds</a> with Talis's Richard Wallis before, so I want to call your attention to a post he <a href="http://blogs.talis.com/panlibus/archives/2006/01/just_resting.html">made the other day</a> in which he suggest that a) DaveyP and I collaborate and b) I/we consider using industry standards.  I'd like to respond by saying that Dave and I have been communicating extensively.  Ed Vielmetti has been involved as well.</p>
<p>Richard writes:</p>
<p><em>I encourage John, Dave, and those that follow them to take a look at these standards like we have</em></p>
<p>I can't speak for Dave, but I'm very familiar with these standards and so is Ed.  I think Richard is completely missing the point of this whole project which is to put a friendly, accessible, and useful development interface into the hands of <strong>patrons</strong>.  Ed offers just a small example of the type of features that existing standards don't readily make available:</p>
<p><em>Already there is a lot more useful function in it than you can get in SRU, e.g. permalinks for card records and a sensible way to get item availability.</em></p>
<p>Bear in mind, that comment was made prior to my work with RESTful holds and checkouts, which, as far as I know, don't even have a standard XML schema--I don't think it's been done before! (I'd love to be corrected on this)  This project will also evolve to the point where holds can be placed RESTfully, items renewed, fines paid.  It'll also extend to our other features like checkout history, wifi device management, personal card catalog management.  Adding this functionality is not only going to allow the public to develop highly useful applications, but it'll be a framework by which we ourselves can build new services in-house.  Vendor's obviously haven't stepped up to this, so we are--and we believe in our patrons.  They deserve this kind of access to their public library.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blyberg.net/2006/01/26/major-enhancements-for-patron-rest/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
