<?xml version="1.0" encoding="utf-8" ?>

<rss version="0.91" >
<channel>
<title>Coffee|Code : Dan Scott, Caffeinated Librarian Geek</title>
<link>http://www.coffeecode.net/</link>
<description>Many ideas crammed into bits...</description>
<language>en</language>
<image>
        <url>http://www.coffeecode.net/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Coffee|Code : Dan Scott, Caffeinated Librarian Geek - Many ideas crammed into bits...</title>
        <link>http://www.coffeecode.net/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Archive of OCLC WorldCat Policy as posted 2008-11-02</title>
    <link>http://www.coffeecode.net/archives/174-Archive-of-OCLC-WorldCat-Policy-as-posted-2008-11-02.html</link>

    <description>
        &lt;p&gt;I noticed last night (Sunday, November 2nd, 2008) that the new and much-anticipated / feared OCLC WorldCat Policy had been posted. As far as the clarified terms went, I was willing to give them the benefit of the doubt until they were actually posted. I was first alerted to the freshly released policy by Terry Reese&#039;s &lt;a href=&quot;http://oregonstate.edu/~reeset/blog/archives/574&quot;&gt;initial analysis&lt;/a&gt; and was fascinated by the discussion in the comments.&lt;/p&gt;
&lt;p&gt;Then I noticed this morning on the AUTOCAT mailing list (&quot;&lt;a href=&quot;http://article.gmane.org/gmane.education.libraries.autocat/17112&quot;&gt;OCLC New Policy down after one day?&lt;/a&gt;&quot;) that the new policy had been pulled and replaced by&lt;/p&gt;
&lt;blockquote&gt;We are reconsidering some aspects of the policy. More information will be available in the near future.&lt;/blockquote&gt;
&lt;p&gt;Very interesting. That&#039;s not even enough time for most interested parties to read the policy and provide feedback.&lt;/p&gt;
&lt;p&gt;Luckily, I made use of Zotero last night to capture a snapshot of the freshly released policy. So here, for your pleasure, is the &lt;a href=&quot;http://marc.coffeecode.net/oclc_2008_11_02/&quot;&gt;archived version&lt;/a&gt; (retrieved Sun 02 Nov 2008 10:24:15 PM EST according to Zotero - and how sad a statement is that about my life that I&#039;m cruising the library &#039;nets on Sunday evenings?) of the OCLC policy that had been posted and then was immediately yanked. I&#039;m hoping that this helps informed discussion lead towards a reconsidered policy that reflects direct input from OCLC contributors.&lt;/p&gt;
&lt;p&gt;Full disclosure: my library is not an OCLC Member library, not from any ideological stance but because I haven&#039;t had time to contribute records yet. Kind of busy with the Evergreen thing, you know? But we pay for WorldCat and some other OCLC services and intend to become members. On a personal note, I think we would best be served by a plurality of services developed using the metadata to which all of the OCLC Member institutions contribute.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Dear Dan: why is using Flash for navigation a bad idea?</title>
    <link>http://www.coffeecode.net/archives/173-Dear-Dan-why-is-using-Flash-for-navigation-a-bad-idea.html</link>

    <description>
        &lt;p&gt;I received the following email late last week, and took the time to reply to it tonight. I had originally been asked by a friend to help diagnose why his organization&#039;s site navigation wasn&#039;t working in some of his browsers. I noticed that the navigation bar was implemented in Flash, and suggested that the Flash be replaced with plain old HTML, CSS, and perhaps some JavaScript as Flash for navigation is generally a bad idea. My friend&#039;s response last week was:&lt;/p&gt;
&lt;blockquote&gt;Dan, I would be interested to know why the flash is a bad idea. ...Our [website] designer seems to think otherwise.&lt;/blockquote&gt;
&lt;p&gt;Uh-oh: getting into it with the designer via proxy can&#039;t be good. But here&#039;s what I wrote in response - feel free to set me straight if I&#039;ve gone off-track:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
Jakob Neilsen said it best back in 2000 - and all of his concerns still hold up: &lt;a href=&quot;http://www.useit.com/alertbox/20001029.html&quot;&gt;http://www.useit.com/alertbox/20001029.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
To which I would add several more reasons:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Flash is not a native part of the Web, it&#039;s a third party browser plug-in; HTML + CSS and arguably JavaScript are the core parts of the Web. Anything as basic as navigation should not have to rely on a
third-party plug-in to function.&lt;/li&gt;
&lt;li&gt;How do you expect a person using a screen reader (due to visual impairment) to navigate through the site? With HTML/CSS/JavaScript, they can tab through the links on the page; with Flash, they hit something that forces them to use the mouse.&lt;/li&gt;
&lt;li&gt;Until very recently, Google could not navigate through Flash to crawl pages - and even now it&#039;s capabilities are subject to some limitations (&lt;a href=&quot;http://googlewebmastercentral.blogspot.com/2008/06/improved-flash-indexing.html&quot;&gt;http://googlewebmastercentral.blogspot.com/2008/06/improved-flash-indexing.html&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;On breaking the Web experience - if you try to right-click on the Flash navigation, you don&#039;t get the option to open the link in a new tab or window, or add a bookmark to the page that link represents. And I bet the links would work for you everywhere &lt;img src=&quot;http://www.coffeecode.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://coffeecode.net/archives/172-For-the-paranoid-deleting-Flash-local-storage-objects.html&quot;&gt;For the paranoid&lt;/a&gt;, Flash is a proprietary format and therefore requires you to trust that the content that is being served up isn&#039;t doing something nefarious while appearing innocuous. A small percentage
of people use plug-ins like &lt;a href=&quot;http://noscript.net&quot;&gt;NoScript&lt;/a&gt; to block Flash content and only enable Flash for specific pages when necessary. Having to enable it for navigation is annoying.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your designer really, really wants to keep the Flash experience, the
least they could do would be to put a plain HTML navigation menu inside
the &amp;lt;noscript&amp;gt;...&amp;lt;/noscript&amp;gt; section rather than the &quot;Get Flash!&quot; thing
that currently appears.
&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>For the paranoid: deleting Flash local storage objects</title>
    <link>http://www.coffeecode.net/archives/172-For-the-paranoid-deleting-Flash-local-storage-objects.html</link>

    <description>
        &lt;p&gt;
I&#039;m reasonably careful about the cookies I accept from Web sites - I don&#039;t want companies to be able to track every site I visit, for example, so that they can build a nice little profile about me. It&#039;s for the protection of the companies more than anything else: someone there might die of extreme boredom following the trail of &quot;Evergreen&quot;, &quot;Linux Weekly News&quot;, &quot;Python docs&quot;...
&lt;/p&gt;
&lt;p&gt;
However, I &lt;a href=&quot;http://lwn.net/Articles/304362/&quot;&gt;recently&lt;/a&gt; learned about &lt;a href=&quot;http://www.adobe.com/products/flashplayer/articles/lso/&quot;&gt;Flash &quot;local storage objects&quot; (LSO)&lt;/a&gt;, which are similar to browser cookies but capable of storing much richer information and also completely inscrutable in terms of the effectiveness of Adobe&#039;s security model. Is Flash really capable of preventing a Flash application running on microsoft.com from accessing an LSO from mail.google.com? I certainly don&#039;t know, and as Flash is a closed-source application it&#039;s hard for anyone except for the developers at Adobe to know--but I bet there are people extremely motivated to find out. (Insert obligatory &quot;See? Closed source sucks!&quot; comment here.)
&lt;/p&gt;
&lt;p&gt;
So, in my crude attempt to prevent too much garbage accumulating due to the occasional YouTube video or NBC Saturday Night Live skit that I might watch, I&#039;ve added the following rules to my cron entries to delete my entire set of LSOs every four hours:
&lt;/p&gt;
&lt;pre&gt;
5 &amp;lowast;/4 &amp;lowast; &amp;lowast; &amp;lowast; rm -fr /home/dan/.macromedia/Flash_Player/#SharedObjects 
5 &amp;lowast;/4 &amp;lowast; &amp;lowast; &amp;lowast; rm -fr /home/dan/.macromedia/Flash_Player/macromedia.com/support/flashplayer/sys/
&lt;/pre&gt;
&lt;p&gt;You Windows users can probably do something similar, but I haven&#039;t bothered to track that down yet. Sorry.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>An Evergreen track at the OLA SuperConference 2009?</title>
    <link>http://www.coffeecode.net/archives/171-An-Evergreen-track-at-the-OLA-SuperConference-2009.html</link>

    <description>
        &lt;p&gt;Just poked at the &lt;a href=&quot;http://www.accessola.com/superconference2009/&quot;&gt;OLA SuperConference 2009&lt;/a&gt; schedule (January 28 - 31, 2009) and found four sessions listed that are all about Evergreen. Wow! Check this out:&lt;/p&gt;
&lt;table style=&quot;border: solid black; border-width: 0px 0px 1px 1px; border-collapse: collapse;&quot;&gt;
&lt;th style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;ead&gt;
&lt;tr&gt;&lt;th style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;Date&lt;/th&gt;&lt;th style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;Time&lt;/th&gt;&lt;th style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;Title&lt;/th&gt;&lt;th style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;Description (may be abridged)&lt;/th&gt;&lt;th style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;Presenters&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;Thursday, January 29&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;9:05 am&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;&lt;a href=&quot;http://www.accessola.com/superconference2009/showSession.php?lsession=410&amp;usession=410&quot;&gt;It.s Just a Little Bit of Programming Isn.t It?&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;
&lt;q&gt;Follow the progress of the Library @ Mohawk.s development of the open source ILS Evergreen. Hear the trials and tribulations and learn from the mistakes and successes that have occurred along the way . we are truly a learning organization on this project. We went live in summer 2008 . come and hear about where we.ve been, where we are and where we hope to be soon.&lt;/q&gt;&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;Robert Soulliere, Systems Librarian; Cynthia Williamson, Collection &amp;amp; Access Librarian, Mohawk College of Applied Arts and Technology &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;Thursday, January 29&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;3:45 pm&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;
&lt;a href=&quot;http://www.accessola.com/superconference2009/showSession.php?lsession=614&amp;usession=614&quot;&gt;Project Conifer: Evergreen library system for Ontario Universities&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;&lt;q&gt;Find out how the Evergreen open source library system, originally developed for a public library consortium, is being adapted for academic libraries by three Ontario universities. Discussion will focus on the challenges, successes and mistakes (err, .learning opportunities.) of the project.&lt;/q&gt;&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;John Fink, Digital Technologies Development Librarian, McMaster University; Dan Scott, Systems Librarian, Laurentian University&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;Friday, January 30&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;9:05 am&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;&lt;a href=&quot;http://www.accessola.com/superconference2009/showSession.php?lsession=1017&amp;usession=1017&quot;&gt;Evergreen exposed: hacking the open source library system&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;&lt;q&gt;Join an Evergreen developer on a tour of the architecture and source code of the Evergreen library system [...] Get ready to get your hands dirty with Evergreen . this will be a session filled with code!&lt;/q&gt;&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;William Erickson, Vice President, Software Development &amp;amp; Integration, Equinox Software Inc; Dan Scott, Systems Librarian, Laurentian University &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;Saturday, January 31&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;10:40 am&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;&lt;a href=&quot;http://www.accessola.com/superconference2009/showSession.php?lsession=1808&amp;usession=1808&quot;&gt;Multilingual Language Issues of Open Source ILS&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;&lt;q&gt;Discover the Chinese version of Evergreen along with various multilingual issues related MARC standards, encoding, indexing, searching, and sorting especially associated with Chinese language.&lt;/q&gt;&lt;/td&gt;
&lt;td style=&quot;border: solid black; border-width: 1px 1px 0px 0px; margin: 0px; padding: 4px;&quot;&gt;Jason Zou, Systems Librarian, Lakehead University; Guoying (Grace) Liu, Systems Librarian, Leddy Library, University of Windsor&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;I was responsible for the sole Evergreen presentation at OLA SuperConference 2008 - it&#039;s awesome to see a lot more people jumping in this year! I&#039;m keenly anticipating this conference - we&#039;ll have to set up at least one Evergreen &quot;Birds of a Feather&quot; session.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Evergreen: deOSSification of library software</title>
    <link>http://www.coffeecode.net/archives/170-Evergreen-deOSSification-of-library-software.html</link>

    <description>
        &lt;p&gt;
In a few minutes I&#039;ll be giving a talk with John Fink at the &lt;a href=&quot;http://www.fsoss.ca&quot;&gt;Free Software Open Source Symposium&lt;/a&gt; at Seneca College on &lt;a href=&quot;http://fsoss.senecac.on.ca/2008/?q=node/32&quot;&gt;Evergreen: an enterprise-strength OSS solution for library ossification&lt;/a&gt;. I&#039;m jazzed!
&lt;/p&gt;
&lt;p&gt;
Here are the slides: (&lt;a href=&quot;http://www.coffeecode.net/uploads/talks/2008/Evergreen_OSSification.odp&quot; title=&quot;Evergreen_OSSification.odp&quot; target=&quot;_blank&quot;&gt;ODP format&lt;/a&gt;) (&lt;a href=&quot;http://www.coffeecode.net/uploads/talks/2008/Evergreen_OSSification.pdf&quot; title=&quot;Evergreen_OSSification.pdf&quot; target=&quot;_blank&quot;&gt;PDF format&lt;/a&gt;).
&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Boss me around, s'il vous plait</title>
    <link>http://www.coffeecode.net/archives/169-Boss-me-around,-sil-vous-plait.html</link>

    <description>
        &lt;p&gt;My place of work, Laurentian University, is looking for a new Director of the J.N. Desmarais Library. The call for applications closes October 30th. I think our library has done some impressive work (participating in the &lt;a href=&quot;http://www.acdi-cida.gc.ca/CIDAWEB/acdicida.nsf/En/JER-327155022-SFL&quot;&gt;food security project for the Democratic Republic of Congo&lt;/a&gt;, building the &lt;a href=&quot;http://biblio.laurentian.ca/medb&quot;&gt;Mining Environment Database&lt;/a&gt;), are doing some pretty interesting things (&lt;a href=&quot;http://conifer.mcmaster.ca&quot;&gt;Project Conifer&lt;/a&gt;), and have the potential to do a lot more. Our outgoing director has laid the groundwork for his successor to take Laurentian University&#039;s libraries to even more exciting destinations.&lt;/p&gt;
&lt;p&gt;
On the chance that you haven&#039;t heard about this opening, and would be interested - or perhaps you know someone who might be interested and would be a good candidate - I&#039;m going to attach the full job posting below. One heads-up: Laurentian is a bilingual (French / English) institution, and candidates would be expected to be bilingual.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;
Laurentian University – Director of the Library and Archives – effective July 1, 2009
&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Laurentian University is committed to serving the needs of Northern Ontario and its English-language, French-language and First Nations communities, and to extending its student recruitment into other areas of Canada.  Laurentian’s recent major accomplishments include the establishment, with Lakehead University, of the first new medical school in more than 30 years in Canada, the introduction of 6 new PhD programs, the construction of new residences and a building custom-designed to house the B.Ed. program, establishment of a new Faculty of Management, and increasing success attracting research funding, all within a vibrant bilingual milieu that appreciates the past and is building toward the future. Please consult &lt;a href=&quot;http://www.laurentian.ca&quot;&gt;www.laurentian.ca&lt;/a&gt; for more information.
&lt;/p&gt;
&lt;p&gt;
The Director of the Library and Archives will be an innovative leader who will build on the momentum of the Libraries’ information technology services, operational systems and capabilities, and provide strategic direction in accordance with the Strategic Plan approved by the Laurentian University Board of Governors.  
&lt;/p&gt;
&lt;p&gt;
The ideal candidate will be a respected academic who will bring dynamic vision and academic administrative experience, and who will be able to function in both English and French.  The candidate will have a Masters’ of Library Science from an ALA accredited library school or equivalent institution plus at least five years experience in library administration, including planning, personnel, budget, policy development and services. The candidate will have the ability to view issues from an organization-wide perspective and to contribute effectively to collaborative projects within and outside the institution.  The candidate will have knowledge of trends in higher education and information technology that affect acquisition, management, storage and dissemination of print, multi-media and electronic resources. Experience in writing grant proposals and effectively administering such grants would be a strong asset.
&lt;/p&gt;
&lt;p&gt;
Laurentian University is committed to employment equity, welcomes diversity in the workplace and encourages applications from all qualified individuals including women, members of visible minorities, aboriginal persons and persons with disabilities.  All qualified candidates are encouraged to apply; however, Canadians and permanent residents will be given priority.
&lt;/p&gt;
&lt;p&gt;
Should you want to learn more about this unique leadership opportunity,
e-mail Susan Silverton, Vice-President, Academic (Anglophone Affairs) at ssilverton@laurentian.ca
or forward your CV, a letter of introduction and the names of three referees
in confidence, to Linda Mainville, Assistant to the Vice-Presidents, Academic, Laurentian University, Ramsey Lake Road, Sudbury, Ontario P3E 2C6
&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Access 2008 hackfest report: Zotero vs Evergreen</title>
    <link>http://www.coffeecode.net/archives/167-Access-2008-hackfest-report-Zotero-vs-Evergreen.html</link>

    <description>
        &lt;p&gt;&lt;strong&gt;Update: 2008-10-07&lt;/strong&gt; As of &lt;a href=&quot;http://svn.open-ils.org/trac/ILS/changeset/10774&quot;&gt;changeset 10774&lt;/a&gt;, the detailed record view in Evergreen&#039;s dynamic catalog is now recognized by Zotero. &lt;/p&gt;

&lt;p&gt;
I really like Zotero. And it works really well with Evergreen&#039;s current &quot;basic search&quot;
because it embeds &lt;a href=&quot;http://unapi.info&quot;&gt;unAPI&lt;/a&gt; links that enable Zotero to
consume &lt;a href=&quot;http://loc.gov/mods&quot;&gt;MODS&lt;/a&gt; representations of the underlying
bibliographic records and generate a complete citation based on that.
&lt;/p&gt;
&lt;p&gt;
However, Zotero doesn&#039;t work with Evergreen&#039;s current &quot;dynamic search&quot; interface - which
is a problem, because it is the default search interface. Evergreen embeds a link to the
unAPI server, and fills in the unAPI link via an AJAX call after the underlying XHTML
has been loaded - but it seems that &lt;a href=&quot;http://forums.zotero.org/discussion/4069/detecting-unapi-in-dynamic-content/&quot;&gt;Zotero&lt;/a&gt; doesn&#039;t
recognize that the DOM has been changed by the AJAX event and never discovers the unAPI
link. So... I had submitted a challenge to Hackfest to fix this, because I really want to
be able to use Zotero with Evergreen when Project Conifer launches.
&lt;/p&gt;
&lt;p&gt;
And, as with every other Hackfest I have attended, I end up working on my own challenge.
In discussing the problem with William from &lt;a href=&quot;http://canadiana.org&quot;&gt;canadiana.org&lt;/a&gt; and Walter Lewis from
&lt;a href=&quot;http://www.knowledgeontario.ca&quot;&gt;Knowledge Ontario&lt;/a&gt;, I described how the dynamic interface doesn&#039;t use any templating (apart
from entity substitution for localization support), that there wasn&#039;t really any way to
inject content server side into the underlying XHTML, and that I really didn&#039;t want to have
to dig into the guts of Zotero to enable it to parse the DOM after events had completed.
William asked &quot;so you can&#039;t even do a server side include?&quot;, which ended up breaking the
problem wide open - because yes, we already use server side includes to identify which DTD
to load for localization purposes.
&lt;/p&gt;
&lt;p&gt;
Step 1 was to modify the detailed record display to put the unAPI link template in place,
and to modify the Apache configuration to pass in hardcoded values for each of the SSI
variables. A quick test and - it didn&#039;t work. Uh oh.
&lt;/p&gt;
&lt;p&gt;
That led to much scratching of the head. Was Zotero getting tripped up by the masses of 
XHTML elements in the dynamic template that are simply hidden? Did it give up after trying to
parse 100K or so of content? Were there differences in the content types being served up by
Apache? The next step was to compare the content of the &quot;basic search&quot; output against the
&quot;dynamic search&quot; output - and that led to one seemingly innocent difference.
&lt;/p&gt;
&lt;p&gt;
The unAPI server link in the &quot;basic search&quot; output included an absolute link to the server,
while the corresponding link in the &quot;dynamic search&quot; output used a relative link to point
to the root of the server. I didn&#039;t think that would be a problem, but eliminating variables
is always good - and when I tested with a hardcoded server link, the Zotero hint icon lit
up and the mystery was solved. Between enabling the record unAPI link to appear in the
static XHTML via SSI and changing the unAPI server link to use an absolute value, Zotero and
Evergreen could work together in harmony.
&lt;/p&gt;
&lt;p&gt;
I haven&#039;t committed the fix for this yet to the repository, as I haven&#039;t finalized the exact
SSI incantations that will be needed to embed the record ID in the unAPI link. But now you
know the solution, and could tackle the problem yourself if you get tired of waiting for me
and feel inspired. And once the problem is fixed, I&#039;ll update the post to let you know what
version of Evergreen carries the fix.
&lt;/p&gt;
&lt;p&gt;
Oh, and my hackfest report slides &lt;a href=&quot;http://www.coffeecode.net/uploads/talks/2008/Cite_me_bite_me.pdf&quot; title=&quot;Cite_me_bite_me.pdf&quot; target=&quot;_blank&quot;&gt;are attached&lt;/a&gt;, in case anyone cares.
&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Access 2008 presentation: Project Conifer report</title>
    <link>http://www.coffeecode.net/archives/168-Access-2008-presentation-Project-Conifer-report.html</link>

    <description>
        &lt;p&gt;On Friday, October 3rd, I had the honour of presenting the progress of Project Conifer with my colleague &lt;a href=&quot;http://libgrunt.blogspot.com&quot;&gt;John Fink&lt;/a&gt; to my peers at Access 2008. Project Conifer is the effort to bring the &lt;a href=&quot;http://evergreen-ils.org&quot;&gt;Evergreen&lt;/a&gt; open source library system to a consortium of academic libraries in Ontario (Algoma, Laurentian, McMaster, Northern Ontario School of Medicine, and Windsor).&lt;/p&gt;
&lt;p&gt;I&#039;m just going to link quickly to the slides for now, as I&#039;m a little bit brain-dead after the conference. John led off the talk with an overview of what Conifer is all about and why we were motivated to tackle such a large project - he has &lt;a href=&quot;http://www.slideshare.net/adr/access2008-presentation-v3-presentation&quot;&gt;posted his slides&lt;/a&gt; via the SlideShare thingy. Editorial comment: I really enjoy John&#039;s presentation style and content. He&#039;s a hard act to follow!&lt;/p&gt;
&lt;p&gt;And then I rambled on with an overview of the ups and downs of the project so far, the resources we have invested in the project, our progress towards our target go-live date (May 2009), and some sneak previews of the goodies that are included in the any-day-now-if-I-would-just-stop-going-to-conferences-and-apply-myself-for-a-few-days-dangit Evergreen 1.4 release. Well - they&#039;re not really sneak previews, because of course you could check the code out of the repository and built it yourself - but it&#039;s so much easier when somebody else already has it running, right?&lt;/p&gt;
&lt;p&gt;Anyway, my slides are available in both &lt;a href=&quot;http://www.coffeecode.net/uploads/talks/2008/Access2008Conifer.odp&quot; title=&quot;Access2008Conifer.odp&quot; target=&quot;_blank&quot;&gt;OpenOffice.org Impress format&lt;/a&gt; and &lt;a href=&quot;http://www.coffeecode.net/uploads/talks/2008/Access2008Conifer.pdf&quot; title=&quot;Access2008Conifer.pdf&quot; target=&quot;_blank&quot;&gt;PDF&lt;/a&gt;.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Software Freedom Day 2008 - Sudbury</title>
    <link>http://www.coffeecode.net/archives/166-Software-Freedom-Day-2008-Sudbury.html</link>

    <description>
        &lt;p&gt;I opted to do something out of the unusual (for me) this year when I learned about &lt;a href=&quot;http://softwarefreedomday.org&quot;&gt;Software Freedom Day&lt;/a&gt;; I signed up to organize an event in Sudbury. Given everything that was already on my plate, it was pure foolishness to do so - but it was also important to me to try and pull together people in Sudbury with an interest in open source and free software. I&#039;m hoping that this is just the first of many such events.&lt;/p&gt;
&lt;p&gt;Did I mention that trying to organize an event in an academic environment during August and early September is madness? I was incredibly fortunate to land three excellent guest speakers on very short notice.&lt;/p&gt;
&lt;h2&gt;Keynote: Open Source and Open Learning&lt;/h2&gt;
&lt;p&gt;Dr. Rachel Ellaway, Assistant Dean of Education Informatics at the Northern Ontario School of Medicine, kicked off the event and instantly repaid all of the effort of putting together the whole event. In just one hour, she:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;eloquently introduced the &lt;a href=&quot;http://www.fsf.org/licensing/essays/free-sw.html&quot;&gt;four freedoms of free software&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;mapped the continuum of free software from public domain to closed source,&lt;/li&gt;
&lt;li&gt;situated the academy and publicly funded institutions in the same philosophical category as open source,&lt;/li&gt;
&lt;li&gt;posited that in education the process of learning was more important than the product,&lt;/li&gt;
&lt;li&gt;introduced &lt;a href=&quot;http://ocw.mit.edu&quot;&gt;MIT&#039;s OpenCourseWare&lt;/a&gt; effort to make most of their course materials (syllabus, readings, lecture notes, assignments, and projects) freely available online,&lt;/li&gt;
&lt;li&gt;discussed the problems of learning objects from the 80&#039;s and 90&#039;s that are now locked away in binary files that simply won&#039;t run on today&#039;s computers - and an effort named &lt;em&gt;BoneYard&lt;/em&gt; that she is involved in to convince the rights holders to donate the source code (be it COBOL or BASIC or anything) behind these learning objects to a repository so that others can reuse the underlying algorithms and breathe new life into the objects,&lt;/li&gt;
&lt;li&gt;questioned the continuing faith in &quot;contact hours&quot; as the gold standard for academic service when one hour spent developing a scenario for a virtual learning environment could engage students in multiple hours of active learning&lt;/li&gt;
&lt;li&gt;wondered whether our institutions could move towards open administration and governance models&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;... all in an entertaining and engaging style. Sudbury and the Northern Ontario School of Medicine are lucky to have Dr. Ellaway in our midst.&lt;/p&gt;
&lt;h2&gt;Moodle course management software&lt;/h2&gt;
&lt;p&gt;We were also fortunate to have Dr. Rick Danielson, Full Professor in the School of Human Kinetics, on hand to discuss the history of course management software at Laurentian University and his own experiences with Ilias and Moodle. While on sabbatical in 1998, Dr. Danielson piloted the use of WebCT at Laurentian for course management and lead the creation of a purchasing consortium to license WebCT for more than 40 institutions across Ontario. A few years later, Dr. Danielson switched his personal WebCT server to the open source alternative &lt;a href=&quot;http://www.ilias.de/index.html&quot;&gt;Ilias&lt;/a&gt; coure management system; and, shortly after that, to &lt;a href=&quot;http://moodle.org&quot;&gt;Moodle&lt;/a&gt;. At the time, Ilias did not offer a module that supported online quizzes, and Dr. Danielson was also won over by Moodle&#039;s more refined interface. For Dr. Danielson, the choice between using the university&#039;s WebCT instance and Moodle running on his own server is all about control, saving money, and being lazy: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;He craves control over his teaching environment and independence from central IT, and running his own Moodle server gives him that.&lt;/li&gt;
&lt;li&gt;He watched the license fees for WebCT rise as it was acquired first by ULT and then by Blackboard, and doesn&#039;t mind that he has to spend some money on his own server because Moodle itself is freely redistributable&lt;/li&gt;
&lt;li&gt;He was happy to work hard to learn how to install and administer Red Hat Linux, Apache, MySQL, and PHP in order to run Moodle - now he can be lazy because it simply works.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dr. Danielson&#039;s talk was full of tangents and insider stories about the history of the university and Northern Ontario - quite entertaining and quite irreverent. He did a good job conveying the spirit of the early adopter of new technology to the audience, and in answer to the question of whether Laurentian&#039;s next course management system should be WebCT, he said &lt;em&gt;Tuum est&lt;/em&gt; (&quot;It&#039;s in your hands!&quot;).&lt;/p&gt;
&lt;p&gt;Given that &lt;a href=&quot;http://www.moodle.uqam.ca/moodleinfo/&quot;&gt;UQAM successfully automated the conversion of over 90% of their WebCT courses to Moodle&lt;/a&gt; (laziness is a virtue, remember), and given that we are facing a migration from WebCT to something else (the product name does not even appear on Blackboard&#039;s Web site), I hope that Laurentian will seriously consider Moodle. I have asked to be part of the evaluation committee for the next course management system here, as I want to ensure that we can provide much better integration between our library systems and our learning systems than we have today. I know that Evergreen will give us the flexibility we require on the library side; we need to ensure that we have a course management product with the flexibility that we need on the other side - and finally, we need the people willing to make the integration between the systems work and to demonstrate to faculty how they can easily take advantage of that integration.&lt;/p&gt;
&lt;h2&gt;ParaViewGeo - open source visualization from MIRARCO&lt;/h2&gt;
&lt;p&gt;The third guest speaker was Robert Maynard, lead developer for &lt;a href=&quot;http://paraviewgeo.mirarco.org&quot;&gt;ParaViewGeo&lt;/a&gt; at E2VO, a subsidiary of MIRARCO. ParaViewGeo is a customized version of &lt;a href=&quot;http://www.kitware.com/&quot;&gt;ParaView&lt;/a&gt; by KitWare. The BSD license used by ParaView gives E2VO the right to modify the software and redistribute binary versions of it without redistributing the source code; however, E2VO does plan to make most of their additions and customizations available, and has been pushing patches back to the upstream product.
&lt;/p&gt;
&lt;p&gt;Robert showed a number of screenshots that demonstrated how ParaViewGeo could transform basic two-dimensional diagrams into much richer three-dimensional visualizations. For example, ParaViewGeo can read AutoCAD files and do a far better job of displaying three-dimensional figures. Also, a CD of data produced for the &lt;a href=&quot;http://www.discoverabitibi.com/&quot;&gt;Discover Abitibi initiative&lt;/a&gt; included a proprietary application with a license that timed out after one year, but ParaViewGeo was able to read and display the data in more detail than the original application was capable of.&lt;/p&gt;
&lt;p&gt;Perhaps as interesting as the product was the insight that Robert provided on their software development process. Robert described how, due to a lack of students with software development skills in the Sudbury region, he opted to lead a three-week software development boot camp for their student developers starting from extremely basic principles (&#039;let&#039;s open a file and write to it&#039;), motivating them to achieve via competitive gaming techniques and tangible rewards (&#039;whichever team successfully completes this problem first gets free lunch today&#039;), group learning techniques (all seven team members worked in one large room; when a programmer hit a road block, Robert would demonstrate the solution on a projector so that all the team members could learn at once), and leading by example (Robert was always the first person in the room and the last person to leave).&lt;/p&gt;
&lt;h2&gt;Project Conifer: Open Source Academic Library System&lt;/h2&gt;
&lt;p&gt;I gave a presentation on &lt;a href=&quot;http://conifer.mcmaster.ca&quot;&gt;Conifer&lt;/a&gt;, of course. Project Conifer is the effort to bring Evergreen to the Ontario academic libraries for Algoma University, Laurentian University and partners, McMaster University, Northern Ontario Health Integration Network, and the University of Windsor. I&#039;m the project manager for Conifer and one of the core developers for Evergreen, so I can&#039;t possibly &lt;em&gt;not&lt;/em&gt; talk about it on Software Freedom Day. As regular readers of this blog already know plenty about Conifer, I won&#039;t recap much here. The audience was quite impressed with the upgraded user experience that Evergreen offers out of the box over our current system, and sensed the potential for a system like this to offer integration with course management systems, integration with our inter-library loan system, and even the simple pleasures of direct physical borrowing between participating institutions.&lt;/p&gt;
&lt;p&gt;I was also given the perfect excuse to purchase an iTouch with library or Conifer funds. One of the audience members asked if the dynamic interface supported the iPhone or iTouch, as they would like the ability to search for books or journals while in the stacks. I had to answer that I did not know, not being in possession of such a device, but was able to assert that Opera Mobile on my Windows Mobile cellphone worked extremely well. The audience member then tried out their own iTouch and determined that the interface was at least able to support search - but clearly I need to do a deeper investigation &lt;img src=&quot;http://www.coffeecode.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Artificially enhanced research : free software and fantastic research&lt;/h2&gt;
&lt;p&gt;This was my mostly-demo session, which probably would have been better delivered earlier in the day while both audience members and myself were fresher, but somebody had to have the last slot in the session. I presented a few free software tools that I thought would be of interest to researchers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://libx.org/editions/3A/4D/3A4D0B6F/libx.html&quot;&gt;LibX browser toolbar for Laurentian University&lt;/a&gt;: I showed that while the LibX toolbar is handy as a quick way of searching our catalogue, it&#039;s much more about embedding quick access to our library resources within your browser. I quickly got off on a tangent, however, as I was showing the Google Scholar &quot;magic button&quot; and had to explain what Google Scholar was, how it differed from regular Google, and answer the faculty member&#039;s question about whether he should send students to our subject databases page or to Google Scholar (my answer: &quot;Well, both!&quot;).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://zotero.org&quot;&gt;Zotero&lt;/a&gt; research plug-in for Firefox: while LibX got their attention, Zotero got the audience buzzing. Just a quick demonstration of capturing a set of citations from a Wikipedia page, adding a note, taking a snapshot of the Wikipedia page, organizing research into folders, adding tags, and searching in full-text through your captured materials (optionally filtering by tag) was enough to get most of the people in the room interested. Zotero makes research &lt;strong&gt;fun&lt;/strong&gt; - students will want to do research just so they can play with Zotero!&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://zone.biblio.laurentian.ca&quot;&gt;LU|ZONE|UL institutional repository&lt;/a&gt; : by this point, I was running out of time, so I tried to quickly link back to Dr. Ellaway&#039;s discussion of open access and funding agencies&#039; new requirements to deposit articles and datasets in institutional repositories. However, after pointing out that Laurentian has actually had an institutional repository in production for over a year, one faculty member asked why we should care about depositing articles if we have access to the article through our electronic journal subscriptions? I&#039;m not as good at answering this question as I probably should be; my answer was that it&#039;s a means of making that content available to researchers at those institutions that don&#039;t have a subscription to that journal; and that it&#039;s a means for our institution to have direct access to our own researchers&#039; output without necessarily having to continue to pay annual licensing fees to access that ouput. I also pointed out some of the opportunities that alternate publishing formats like institutional repositories make possible; Guy Gaudreau&#039;s book &lt;em&gt;&lt;a href=&quot;https://zone.biblio.laurentian.ca/dspace/handle/10219/34&quot;&gt;Les hauts et les bas de la vie des mineurs de Kirkland Lake&lt;/a&gt;&lt;/em&gt; would not have been published with the striking colour charts he was able to include in the fully-digital version he contributed to LU|ZONE|UL - nor would he have had the ability to publish each chapter as it was finished and use the feedback to improve the rest of the book or to reissue corrections to that chapter.&lt;/li&gt;
&lt;li&gt;Finally, I mentioned our &lt;a href=&quot;http://journal.code4lib.org/articles/49&quot;&gt;library&#039;s quick lookup laptops&lt;/a&gt; which now run on Linux LiveCDs for stability, robustness, environmental friendliness, and budget purposes. They&#039;re an open source experience that our library members use on a daily basis without any apparent problems; they &quot;just work&quot;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So... to sum up, I believe the event was well worth the effort. We had approximately twenty participants with a mix of undergraduate and graduate students, faculty, librarians, and members of the public (including one fellow who drove all the way from North Bay to attend!). Now that I know what I&#039;m doing, and now that we have a better idea of the interested parties on campus, I believe that we will be able to build a bigger event next year. I don&#039;t think I would hold it on a Saturday again, even if that&#039;s when Software Freedom Day is officially scheduled, because students and faculty really value their weekends. And I hope that we have more events - perhaps smaller, perhaps less formal, and perhaps more frequent - throughout the year.&lt;/p&gt;
&lt;p&gt;Finally, I want to thank the team of people at the J.N. Desmarais Library that helped me to make this event possible, in no particular order: Leïla Saadaouai, Dorothy Robb, Christine Guerra, Noella Cliche, Ashley Thomson, and Joscelyne Meilleur. Your efforts were certainly appreciated by our participants today.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Heating up Evergreen search</title>
    <link>http://www.coffeecode.net/archives/165-Heating-up-Evergreen-search.html</link>

    <description>
        &lt;p&gt;So, after loading 3.7 million records into the Project Conifer test server, we have found that search can be slow. Not really a big surprise, because I&#039;ve spent very little time tuning the database beyond running a VACUUM FULL and tweaking just a few parameters. But one of the extremely useful hints that Mike Rylander gave me about PostgreSQL a long time back is that it relies primarily on file system caching to cache access to data, from the reasonable perspective that your file system already knows which files are being accessed most often. PostgreSQL&#039;s data is stored in files that map back to individual tables and indexes; unlike some other database systems that I&#039;ve worked with, you don&#039;t dedicate system memory specifically to caching those database files (hello, DB2 buffers!); instead, you just trust the file system to know what&#039;s best.&lt;/p&gt;
&lt;p&gt;That caching approach works great on a system that&#039;s in production and getting a steady stream of queries reflecting what users actually search for on a day to day basis. However, if you&#039;ve just loaded a test system, then it doesn&#039;t have much opportunity to cache and the first dozen (or hundreds, or thousands!) of queries will be slow as your database goes out and loads up files from disk. Even worse, if you have a system like ours where backups have temporarily been set up as &quot;tar czf /backups/backup.tar.gz /&quot;, then on a nightly basis your file system cache is going to be filled with all kinds of irrelevant data.&lt;/p&gt;
&lt;p&gt;So what are we to do? Well, actually, another extremely useful hint that Mike Rylander gave me was to just run the pertinent data files through /dev/null to load up the file system cache. On the surface, it seems like a dirty hack, but it&#039;s a smart one, and we can even make it elegant. Let&#039;s walk through the process:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You need to know where your data files are. You (or your system installer) will have created a PostgreSQL cluster. In my case (on Debian Etch), I can find it at /var/lib/postgresql/main/base. Then, by running &quot;du -hs /var/lib/postgresql/main/base&quot; I can see that one of our databases (represented by a directory name that&#039;s just an integer - &quot;16385&quot;) weighs in at 60GB. That&#039;s our 3.7 million record baby. If you run an &quot;ls&quot; command on that directory, you&#039;ll see that it&#039;s filled with hundreds of files of differing sizes, most of them with just plain integers for their names. This is where the data is stored.&lt;/li&gt;
&lt;li&gt;You need to know the base filenames that you want to use to warm up the file system cache. For my first stab at this, I decided to warm up the cache with the full-text search indexes, as I know those are frequently used by Evergreen&#039;s search. To figure out the base filenames for these indexes, we can query PostgreSQL&#039;s catalog of its own objects:&lt;pre&gt;
evergreen=# SELECT relfilenode, relname, relpages
evergreen-# FROM pg_class WHERE relname LIKE &#039;%vector%&#039;;
 relfilenode |                   relname                    | relpages 
-------------+----------------------------------------------+----------
      648864 | authority_full_rec_index_vector_idx          |    59282
      649137 | metabib_title_field_entry_index_vector_idx   |    29766
      649149 | metabib_author_field_entry_index_vector_idx  |    20125
      649161 | metabib_subject_field_entry_index_vector_idx |    23481
      649173 | metabib_keyword_field_entry_index_vector_idx |    90709
      649185 | metabib_series_field_entry_index_vector_idx  |     8682
      649210 | metabib_full_rec_index_vector_idx            |   452980
(7 rows)
&lt;/pre&gt;
&lt;strong&gt;relfilenode&lt;/strong&gt; is the basename of the files that we want to load into the file system cache.&lt;/li&gt;
&lt;li&gt;The maximum size of your file system cache cannot be more than the physical RAM installed on your system, so you&#039;ll want to tally up the size of the index data files to ensure that their total is less than the total amount of your physical RAM. Note that in the example from our system, below, I&#039;m using &quot;*&quot; because database objects with lots of data will be split between multiple files with extensions like &quot;.1&quot; and &quot;.2&quot; in sequential order:
&lt;pre&gt;
# cd /var/lib/postgresql/main/base/16385
# du -hs 649185* 649210* 1065608*
68M	649185
1.1G	649210
1.1G	649210.1
1.1G	649210.2
1.1G	1065608
1.1G	1065608.1
1.1G	1065608.2
842M	1065608.3
# du -hs 649207*
1.1G	649207
1.1G	649207.1
1.1G	649207.2
467M	649207.3&lt;/pre&gt;
Adding all of this up, we&#039;re getting close to the 16GB of RAM installed on our database server. If we add any more data, we will want to add more RAM to the system.
&lt;/li&gt;
&lt;li&gt;Now we warm up the cache by outputting the contents of each file into /dev/null. &lt;pre&gt;
# cd /var/lib/postgresql/main/base/16385
# cat 648864* &gt; /dev/null
# cat 649137* &gt; /dev/null
# cat 649149* &gt; /dev/null
# cat 649161* &gt; /dev/null
# cat 649173* &gt; /dev/null
# cat 649185* &gt; /dev/null
# cat 649210* &gt; /dev/null
&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After running through this relatively simple exercise, searches were definitely much snappier on our test system. I plan to automate the process so it runs after every one of those cache-killing backups. If there is interest, I could package it into a simple Perl script that other sites could use to assist with their testing - or to help warm up the file system cache after a large data load, for example.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Academic reserves for Evergreen: request for comments</title>
    <link>http://www.coffeecode.net/archives/164-Academic-reserves-for-Evergreen-request-for-comments.html</link>

    <description>
        &lt;p&gt;
I&#039;ve posted a second revision of the &lt;a href=&quot;http://open-ils.org/dokuwiki/doku.php?id=feature:academic_reserves&quot;&gt;&quot;academic reserves&quot; requirements RFC&lt;/a&gt;. I&#039;m not looking to boil the ocean with the first iteration of academic reserves for Evergreen (that&#039;s what third-party systems like &lt;a href=&quot;http://reservesdirect.org&quot;&gt;ReservesDirect&lt;/a&gt; and Ares are for), but I am hoping that by engaging the community in a discussion we can ensure that we build something that satisfies the core set of requirements for academic institutions in the area of reserves.  My lack of familiarity with what other institutions with more capable systems, or with local workarounds or third-party reserves systems installed, makes me nervous that I&#039;m missing something obvious. So if you feel like weighing in on the discussion, please address your comments to the &lt;a href=&quot;http://open-ils.org/listserv.php&quot;&gt;Evergreen General mailing list&lt;/a&gt;, add a comment here, or send me email if you prefer to keep your comments private.
&lt;/p&gt;
&lt;p&gt;
The biggest change in the second revision of the RFC is the inclusion of a base set of requirements for electronic reserves. For physical items alone, the requirements expressed in the RFC go far beyond the capabilities of the ILS we currently use at Laurentian; getting even basic support for electronic reserves in Evergreen would be a huge win for us when we migrate.
&lt;/p&gt;
&lt;p&gt;
That said, I&#039;ll probably start working on implementing a subset of the requirements real soon now; it should be easy enough to make a course correction should something significant turn up during the second round of comments.
&lt;/p&gt; 
    </description>
</item>
<item>
    <title>(unofficial) bzr repositories for Evergreen branches</title>
    <link>http://www.coffeecode.net/archives/163-unofficial-bzr-repositories-for-Evergreen-branches.html</link>

    <description>
        &lt;p&gt;I wrote a long blog post about the distributed version control workflow that the two Laurentian students working on &lt;a href=&quot;http://open-ils.org&quot;&gt;Evergreen&lt;/a&gt; (Kevin Beswick and Craig Ricciuto) are using successfully this summer, only to lose the post to a session timeout and my own lack of caution (note to self: if writing directly in the browser text field, CTRL-A CTRL-C before hitting preview!). So the gist of the blog post was:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://bazaar-vcs.org&quot;&gt;bzr&lt;/a&gt;, with the &lt;a href=&quot;http://bazaar-vcs.org/BzrSvn&quot;&gt;bzr-svn plugin&lt;/a&gt;, works quite well for cloning and updating from a centralized Subversion repository like Evergreen&#039;s; just watch out for memory consumption issues due to memory leaks in the Python bindings for Subversion (&lt;a href=&quot;http://jelmer.vernstok.nl/blog/archives/218-bzr-svn-now-with-its-own-Subversion-Python-bindings.html&quot;&gt;fixed&lt;/a&gt; in the development version of bzr-svn)&lt;/li&gt;
&lt;li&gt;there&#039;s no compelling reason for Evergreen to move to a different version control system; it&#039;s easy to use a distributed version control workflow with the Evergreen Subversion repository as-is&lt;/li&gt;
&lt;li&gt;you can tar up a bzr branch and untar it where ever you like and &quot;bzr up&quot; will immediately happily work (which is how I worked around the severe memory constraints on this server that ended up repeatedly running into the Linux out of memory killer when I was trying to create a bzr-svn checkout from scratch)&lt;/li&gt;
&lt;li&gt;it&#039;s a hell of a lot faster to check out or branch from a bzr repository than it is from a Subversion repository, so if you&#039;re going to take this approach set up one clean bzr repository using bzr-svn and check out or branch from that using bzr, rather than repeatedly using bzr-svn to create new branches&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To enable you to get a bzr repo of Evergreen quickly, I&#039;ve set up (unofficial, of course, but updated hourly) bzr repositories of the most useful Evergreen branches as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://bzr.coffeecode.net/ILS/trunk&quot;&gt;Evergreen trunk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bzr.coffeecode.net/ILS/acq-experiment&quot;&gt;Evergreen acq-experiment&lt;/a&gt; (acquisitions and serials branch)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bzr.coffeecode.net/OpenSRF/trunk&quot;&gt;OpenSRF trunk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Enjoy!
&lt;/p&gt; 
    </description>
</item>
<item>
    <title>eIFL-FOSS ILS workshop on Evergreen, day one</title>
    <link>http://www.coffeecode.net/archives/162-eIFL-FOSS-ILS-workshop-on-Evergreen,-day-one.html</link>

    <description>
        &lt;p&gt;
The following summary is taken almost directly from an email I wrote to one of the would-be participants who was, sadly, prevented from making it to Yerevan due to travel complications. I meant to clean this up earlier and post it, but have not yet found the time - so I might as well just post it as is with most names obfuscated and possibly some additional editorial comments. Those who are new to installing and configuring Evergreen might find this useful; and reading through it, I remembered a few challenges I planned to tackle &lt;img src=&quot;http://www.coffeecode.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;
&lt;/p&gt;
&lt;hr width=&quot;50%&quot; /&gt;
&lt;p&gt;
Shortly after I arrived on Monday, I was able to try out the
install of Evergreen 1.2.1.4 that A. and G. from the Fundamental
Science Library (FSL) had completed with only two email exchanges with me.
I was very happy to see that they had successfully completed the install!
There was only one minor problem with the structure of the &quot;organizational
unit&quot; hierarchy that I had to fix. After that, we confirmed that we were
able to import bibliographic records from Z39.50 and attached call numbers and
copies to those records. Finally, we tried searching for the records in
the catalogue and were delighted to see that everything was working as
we had hoped. That allowed me to sleep well on Monday, in preparation for the
first day of the workshop on Tuesday.
&lt;/p&gt;
&lt;p&gt;
After the introductions of the workshop participants on Tuesday, I gave the
introduction to Evergreen presentation and Henri Damien Laurent of BibLibre
demonstrated Koha. Both Henri Damien Laurent and I showed our respective
library systems running with an Armenian interface, thanks to the translation
efforts of Tigran! Then we broke into separate Koha and Evergreen groups to
work together on our respective library systems. Of the attendees of the
workshop, E. was the most
interested in migrating his library (with 40,000 volumes) to Evergreen. A.,
from one of the 29 branches of the American University of Armenia (AUA), also
attended most of the Evergreen session. Even though his institution is mostly
interested in Koha, he wanted to be able to compare the two systems. Albert&#039;s
colleague S. attended the Koha training session so they would be able to
compare their experiences later.  Our group also had R. from the Netherlands
and A., G., and A. from FSL -- apparently Tigran is considering
running Evergreen as a union catalogue, so his IT people are very interested
in learning more.
&lt;/p&gt;
&lt;p&gt;
Our first exercise was to model the organizational unit hierarchy using the
configuration bootstrap interfaces in the /cgi-bin/config.cgi. We began by
drawing the hierarchy on a whiteboard. The &quot;Yerevan Consortium&quot;
represented the Evergreen system as a whole; we added the FSL, MSU, and AUA
systems as children of the Yerevan Consortium, and then added specific branches
as children of each of these systems. While we were creating this hierarchy, I
showed the participants how the organization unit type defines the labels used
in the catalogue as well as the respective depth in the hierarchy for each type.
&lt;/p&gt;
&lt;p&gt;
We then ensured that the systems and branches in the hierarchy had the right
types, and that the types were defined with valid parent-child relationships. We
found a few types that were children of themselves, which causes a problem in
searching. There was also some confusion about the role of types to
organization units, resulting in the creation of types with labels like &quot;FSL&quot;
rather than &quot;Library System&quot;. After a few minutes of explanation and working
through correcting the exercises, I think the participants were better able to
understand the relationship between types and organization units.
&lt;/p&gt;
&lt;p&gt;
After we were satisfied with the structure of the organization unit hierarchy, I
ran the autogen.sh script to update the catalogue and staff client
representations of the hierarchy. Well, first I demonstrated how search in the
catalogue will quickly be broken if you do not run the autogen.sh script &lt;img src=&quot;http://www.coffeecode.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
Our next step was to register new users with the Evergreen staff client. This
helped introduce the participants to the staff client, as well as giving them
a quick introduction to some parts of Evergreen that still need to be localized
to allow regional variations on postal code formats, telephone numbers, and
forms of identification. The default Evergreen staff client still enforces
American conventions, but fortunately I have had to create patches for Evergreen
to support my own country&#039;s standards so I can assure you that it is relatively
easy to change or remove these format checks. In the future, it would be
wonderful to include a localization pack for each locale interested in using
Evergreen that supports regional variations on date formats, phone number
patterns, etc. The participants were pleased with the feedback mechanism in
the staff client that summarized all of the remaining problems with the current
patron record (missing address, invalid phone number, etc) and made it easy to
switch between screens without losing any of the data they had already entered.
&lt;/p&gt;
&lt;p&gt;
Once we had registered new users for each of our branches, we went to work
importing new bibliographic records and attaching call numbers and copies to
those records. This gave us a good opportunity to see how changing the scope
of a search in Evergreen from &quot;Everywhere&quot; down to a specific branch changes
the search results, and demonstrated how the organization type labels are
displayed in the catalogue. As an aside, I should point out that in Evergreen
1.4 (due by the end of this summer), the labels are internationalized so that
different labels can be displayed depending on the locale in which you are
using the catalogue or staff client. Good news for those of us who work in
bilingual or multilingual libraries!
&lt;/p&gt;
&lt;p&gt;
Now that we had records with copies attached and patrons registered in our
Evergreen instance, we were able to use the catalogue&#039;s &quot;My Account&quot; features
to try out features like sharable bookbags, account preferences, and the
account summary. Users also have the ability to specify their
own user names and to log in with those instead (which means that they can
simply remember their unique nickname rather than, say, a 14-digit barcode).
&lt;/p&gt;
&lt;p&gt;
The first feature that the participants discovered, of course, was the
strong password enforcement feature. When a patron is registered, the system
automatically generates a random 4-digit password; however, this is not
considered to be a safe password, so when they log in they are forced to
change it to a longer password containing both numbers and letters.
&lt;/p&gt;
&lt;p&gt;
At this point, we also discovered a data validation bug: in the staff client,
it is possible to enter a user barcode that consists of letters and numbers.
However, in the catalogue, user barcodes containing letters are considered
invalid and the system will not even attempt to log that user in; it simply
rejects the barcode. I plan to ask E. to report this bug to the Evergreen
mailing list; it would be an excellent outcome of the workshop if participants
felt comfortable reporting problems to the mailing list, and reporting this
problem in particular would help improve the quality of Evergreen.
&lt;/p&gt;
&lt;p&gt;
Things were going reasonably well, but we noticed that the system was
running into a problem if you tried to edit a bibliographic record after
you had already created or imported the record. I had rather fortunately
already experienced this problem (it is a result of different behaviour
regarding XML namespaces between different versions of LibXML2) and knew
that it had been fixed in 1.2.2.1. So rather than trying to fix the problem
with the installed version of 1.2.1.4, I decided to try upgrading our
Evergreen system to the recently released 1.2.2.1 to demonstrate to the
participants that the upgrade process was fast, reasonably well documented,
and not nearly as complicated as the install process. This was, by the way,
something Randy had urged me to do, so I blame him for the subsequent problems
we experienced (hah!).
&lt;/p&gt;
&lt;p&gt;
The first problem is that the change from 1.2.1.x to 1.2.2.x requires the
installation of a new Perl module from CPAN (JSON::XS). This is not much of a
problem in itself, as the module is very easy to install and compile; however,
given our internet connection I had to wait a long time for the CPAN
repository metadata to be downloaded. The participants were still able to use
the system while this was happening, but we ended up hitting the coffee break
still waiting for CPAN to finish. (As an aside, Irakli and I were discussing
the possibility of having the eIFL-FOSS coordinators investigate setting up
local mirrors of FOSS resources like CPAN to speed up access to frequently
used resources).
&lt;/p&gt;
&lt;p&gt;
When we returned from the coffee break, the JSON::XS install had finished but
the participants were having problems searching and using the staff client. I
checked the logs (using the &quot;grep ERR /openils/var/log/*&quot; command to start
with) and saw that our database connections were dying for some reason. On a
hunch, I checked the system logs (&quot;dmesg&quot;) and discovered that the Linux &quot;out
of memory (OOM) killer&quot; had started killing random processes to try to free up
memory. It was killing the PostgreSQL processes, the Evergreen processes -
anything! I was lucky, because I had been reading about the OOM on Linux
after hearing about a Linux user that had run into a similar
problem, and knew that the way to disable the OOM was to prevent Linux from
overcommitting memory to processes in the first place. Wondering why our
system had started running out of memory in the first place, I ran &quot;free&quot; and
saw that it had been set up with no swap space; I confirmed this by running
fdisk to see that there were no swap partitions. Here, however, I made a
mistake. I ran &quot;echo &#039;2&#039; &gt; /proc/sys/vm/overcommit_memory&quot; to prevent Linux
from overcommitting memory to new processes and to prevent the OOM killer from
killing any more random processes. But this also meant that I was immediately
unable to launch any new programs - so I could not safely shut down PostgreSQL
and Evergreen, and we had to turn the power off to the system.
&lt;/p&gt;
&lt;p&gt;
Fortunately, the system started up cleanly again (hurray for journalled
filesystems) and I was able to complete the upgrade before the rest of our
hands on session for the day was finished. A few things that are missing in the
current upgrade instructions:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You have to compile the new version of Evergreen. The easiest way to do
this is to copy install.conf over from your previous version of Evergreen and
run &quot;make config&quot; to ensure that all of the settings are still correct, then
run &quot;make&quot; to build the new version of Evergreen.
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Very important&lt;/strong&gt;: Before installing the new version of Evergreen, you must
prevent the database schema from being completely recreated or it will destroy
any data that is already in your system. One way of doing this is, during the
&quot;make config&quot; step, to list all of the Evergreen targets &lt;u&gt;except for&lt;/u&gt;
openils_db. I am simply incapable of remembering all of those targets, so my
dirty workaround is to open Open-ILS/src/Makefile in an editor and modify the
&quot;install: &quot; make target by removing the &quot;storage-bootstrap&quot; make target. What
we really need is an &quot;upgrade&quot; target for &quot;make config&quot; that simply installs
everything except for the database schema.
&lt;/li&gt;
&lt;li&gt;Confirm that the new version of Evergreen has been installed by running
the srfsh command &quot;request open-ils.storage open-ils.system.version&quot;.
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
For tomorrow (today, by the time you receive this), A. and G. are going to
create a swap file to enable the system to swap memory to disk if need be; the
system has 1 GB of RAM, which is enough for a small Evergreen system but when
one is compiling programs at the same time as running Evergreen swap space
really is necessary. This was a very good lesson learned for all of us!
&lt;/p&gt;
&lt;p&gt;
E. also interested in learning more about basic Linux
administration. His institution currently runs on an entirely Windows
infrastructure, so the requirement to learn Linux is a fairly high hurdle.
I&#039;m hoping that the eIFL-FOSS list will be a good resource for him to start
that journey. He has also asked to go over the step-by-step instructions for
installing Evergreen, so I&#039;m considering starting that in a VMWare session so
that we can run through the steps. Our major goal for tomorrow is to migrate
some data from FSL&#039;s legacy system into Evergreen. Wish us luck!
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Editorial comment:&lt;/em&gt; The combination of Armenian and Russian MARC records refused to load into the Evergreen 1.2.2.1 system, but on the flight home I confirmed that they loaded perfectly and were searchable on my Evergreen development system. As the development version will become this summer&#039;s 1.4 &quot;internationalization&quot; release, we are in good shape.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Editorial comment 2:&lt;/em&gt;On the second day, while running in circles trying to figure out why the records were refusing to load into the 1.2.2.1 system, I decided to try the &lt;a href=&quot;irc://chat.freenode.net/#openils-evergreen&quot;&gt;#openils-evergreen&lt;/a&gt; IRC channel. Yerevan is 9 hours ahead of the Toronto/Atlanta time zone, so at noon Yerevan time I was hardly expecting any of the current core Evergreen developers to be online - yet, to our amazement, Mike Rylander responded. This was a pretty convincing demonstration to the attendees that the core developers really aren&#039;t far away or hard to contact at all.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Get out of jail, go free, part I</title>
    <link>http://www.coffeecode.net/archives/161-Get-out-of-jail,-go-free,-part-I.html</link>

    <description>
        &lt;p&gt;
As Mark Leggott mentioned in &lt;a href=&quot;http://loomware.typepad.com/loomware/2008/05/vendor-to-open.html&quot;&gt;Vendor to Open Source ILS in 1 Month #1&lt;/a&gt;, I had the pleasure of assisting the migration of the University of Prince Edward Island library system from Unicorn to Evergreen. &lt;a href=&quot;http://coffeecode.net/archives/123-Evergreen-and-the-business-case-for-choosing-an-open-source-ILS.html&quot; title=&quot;Business case for choosing an open source library system&quot;&gt;A little over a year ago&lt;/a&gt;, in discussing the business case for open source library systems, I stated that one of the problems we faced with migrations is that the license for a proprietary system often inhibits openly sharing of information about how to export data from those systems in machine-usable formats. Thus, the open source library community needs to encourage the development of &quot;migration ninjas&quot;. Little did I know that I would soon join the guild of ninjas and become &lt;em&gt;deadly and silent, and unspeakably violent&lt;/em&gt;(1)(2). 
&lt;/p&gt;
&lt;p&gt;
As a result, I have created a utility script that should be of assistance to SirsiDynix Unicorn or Symphony sites who are interested in exploring the possibilities offered by other library systems. The rather dryly named &quot;export_unicorn.pl&quot; script was added to the &lt;a href=&quot;http://sirsiapi.org&quot; title=&quot;Unicorn API repository&quot;&gt;Unicorn API repository&lt;/a&gt; as entry # 228 today under a GPL v2 license(3). As the script uses the Unicorn/Symphony API, however, I am sadly (to the best of my knowledge) not free to simply share the script with anyone. Therefore, to gain access to the script you must be an API-certified Unicorn or Symphony customer. Still, by making an export script available to SirsiDynix customers that provides the raw data in a relatively standard output format, it should ease the effort required by the migration ninjas for open source systems to massage the data into the needed input formats, and to avoid the &lt;a href=&quot;http://www.google.ca/search?q=define%3Atetsubishi&quot; title=&quot;small, sharp, often poisoned caltrops scattered to immobilize or slow down pursuers&quot;&gt;tetsu-bishi&lt;/a&gt; scattered by the proprietary systems in defence of &quot;their&quot; data(4)(5).
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://www.bnlmusic.com&quot;&gt;Barenaked Ladies&lt;/a&gt;, &quot;The Ninjas&quot;. &lt;em&gt;Their website is horrible Flash and JavaScript overkill but damnit Jim, they&#039;re musicians, not webmasters; the &quot;Snacktime&quot; album is especially recommended if you have kids.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Although I have to say I&#039;m nowhere near as violent as Mike Rylander, who with his PostgreSQL-fu can carve seemingly any piece of data into the shape needed for import into Evergreen.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Thanks to Mark Leggott for insisting that I retain copyright over the scripts created during the UPEI migration and for allowing me to share those scripts in the appropriate avenues. It&#039;s another weapon (shuriken? ninja-to?) in the migration ninja arsenal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;This data does, after all, belong to the libraries who license a library system, but at least one company reportedly has a pattern of repeatedly removing interfaces that enable easy machine-readable access to library data...&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;I find myself being thankful that Unicorn does provide an API for generating machine-readable data exports; all that it cost our library was a week of my life and the associated training fees and travel expenses&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt; 
    </description>
</item>
<item>
    <title>Introduction to Evergreen at eIFL-FOSS ILS workshop</title>
    <link>http://www.coffeecode.net/archives/160-Introduction-to-Evergreen-at-eIFL-FOSS-ILS-workshop.html</link>

    <description>
        &lt;p&gt;
I was in Armenia last week, leading a &lt;a href=&quot;&quot;http://www.eifl.net/cps/sections/services/eifl-foss/ils/ils-project-workshop&quot;&gt;workshop on open source library systems&lt;/a&gt; along with Henri Damien Laurent from &lt;a href=&quot;http://biblibre.com&quot;&gt;BibLibre&lt;/a&gt;. My charge was to introduce Evergreen and lead participants in two days of hands-on experience with the system; Henri took on the same task for Koha.  I cannot say enough good things about our host for the workshop, the &lt;a href=&quot;http://www.sci.am&quot;&gt;Fundamental Library of the National Academy of Sciences of Armenia&lt;/a&gt; headed up by Tigran Zargaryan; nor can I offer enough compliments to Randy Metcalfe on his skills in ensuring that everything ran smoothly; nor can I express how rewarding it was to meet representatives of so many different countries and how much I enjoyed their company! I look forward to helping the pilot sites succeed with their implementations.
&lt;/p&gt;
&lt;p&gt;
So, for the short term, I&#039;ll simply link to the &quot;Introduction to Evergreen&quot; presentation that I gave at the start of the workshop in 
&lt;a href=&quot;http://www.coffeecode.net/uploads/talks/2008/Evergreen-eIFL-FOSS.odp&quot; title=&quot;Evergreen-eIFL-FOSS.odp&quot; target=&quot;_blank&quot;&gt;OpenOffice&lt;/a&gt; and &lt;a href=&quot;http://www.coffeecode.net/uploads/talks/2008/Evergreen-eIFL-FOSS.ppt&quot; title=&quot;Evergreen-eIFL-FOSS.ppt&quot; target=&quot;_blank&quot;&gt;PowerPoint&lt;/a&gt; formats (as I promised to the participants). In the next day or two I plan to post a summary of the workshop activities; some of the lessons learned; and where I think I&#039;ll focus my attention next.
&lt;/p&gt; 
    </description>
</item>

</channel>
</rss>
