<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>MediaShelf Blog</title>
	
	<link>http://yourmediashelf.com/blog</link>
	<description>Going way beyond Digital Asset Management</description>
	<pubDate>Mon, 01 Mar 2010 23:18:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/MediashelfBlog" /><feedburner:info uri="mediashelfblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Blacklight, ActiveFedora and Shelver: Interplay between Searching, Managing and Indexing in a Repository Solution</title>
		<link>http://feedproxy.google.com/~r/MediashelfBlog/~3/DAJYpAvrXWY/</link>
		<comments>http://yourmediashelf.com/blog/2010/03/01/blacklight-activefedora-and-shelver-interplay-between-searching-managing-and-indexing-in-a-repository-solution/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 22:54:01 +0000</pubDate>
		<dc:creator>Matt Zumwalt</dc:creator>
		
		<category><![CDATA[Hydra]]></category>

		<category><![CDATA[conferences]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[explanations]]></category>

		<category><![CDATA[fedora]]></category>

		<category><![CDATA[solutions]]></category>

		<category><![CDATA[blacklight]]></category>

		<category><![CDATA[conference]]></category>

		<category><![CDATA[indexing]]></category>

		<category><![CDATA[open repositories]]></category>

		<category><![CDATA[or10]]></category>

		<category><![CDATA[solr]]></category>

		<guid isPermaLink="false">http://yourmediashelf.com/blog/?p=342</guid>
		<description><![CDATA[I submitted an abbreviated version of this proposal (limited to 4 pages) to the OR10 review committee.  Feel free to download the abbreviated version or this long version in PDF format.
OpenRepositories 2010 Presentation Proposal (Long Version)
Any repository solution provides facilities for Creation, Management, &#38; Editing of Content as well as facilities for Searching &#38; Browsing [...]]]></description>
			<content:encoded><![CDATA[<p><em>I submitted an abbreviated version of this proposal (limited to 4 pages) to the OR10 review committee.  Feel free to download the </em><em><a href="http://yourmediashelf.com/blog/wp-content/uploads/2010/03/or10_proposal_blacklight_activefedora_and_shelver.pdf">abbreviated version</a> </em><em>or this </em><a href="http://yourmediashelf.com/blog/wp-content/uploads/2010/03/long_version_of_or10_proposal_blacklight_activefedora_and_shelver.pdf"><em>long version</em></a><em> in PDF format.</em></p>
<h3>OpenRepositories 2010 Presentation Proposal (Long Version)</h3>
<p>Any repository solution provides facilities for Creation, Management, &amp; Editing of Content as well as facilities for Searching &amp; Browsing through that content.  Experience has shown that when a solution binds these two areas of functionality together too tightly, the system becomes brittle and unworkable, discouraging innovation.  Our work on the Hydra project has produced a flexible and intuitive solution that combines these two areas in an almost entirely decoupled fashion.  This solution, which is already working in multiple Hydra applications, is built on a three-part pattern where <em>Blacklight</em> handles Search &amp; Discovery, <em>ActiveFedora</em> handles Creation, Management and Editing of Content, and a small application called <em>Shelver</em> supplies the crossover point by indexing the content into Solr so that it will show up in Blacklight.  This three-part approach reflects a strong pattern for designing and/or improving repository solutions.  The main pivot of this approach is to treat indexing as its own separate part of the application and to allow that indexing processes to evolve constantly as part of the application development cycle.</p>
<p>This work is the product of combining established best practices, best of breed software, and lessons learned from an iterative approach to application development.  While our implementation is focused on Fedora Repositories, the software could be used in multiple contexts and the pattern is certainly applicable to any content-oriented application.</p>
<h2>The anatomy of a Hydra Application</h2>
<p><em><strong>Note</strong>: This is a working model of the functional structure of a Hydra application.  The complete designs for the final features and functionality of Hydra applications reach far beyond what is presented here.  For more information on the greater vision around the Hydra project, please refer to the <a href="http://www.fedora-commons.org/confluence/display/hydra/The+Hydra+Project">Hydra Project pages on the Fedora Commons wiki</a>.</em></p>
<ul>
<li>The portion of a Hydra application that handles Creation, Management, &amp; Editing of content is provided by the Hydra Core, which consists of ActiveFedora along with a few Hydra &#8220;helpers&#8221; which integrate ActiveFedora into Ruby on Rails.</li>
<li>The Search &amp; Discovery portion of a Hydra application is a Blacklight installation - nothing more, nothing less.  As with any Blacklight installation, its behavior and appearance are likely to be customized but otherwise there is nothing Hydra-specific about it.</li>
<li>Shelver (which can be run either from within the application, from the command line, or as a JMS listener) indexes content and its salient metadata in Solr, usually pulling that content from Fedora.</li>
</ul>
<p>These three components &#8212; Blacklight, and Hydra Core and Shelver &#8212; work in concert to present a consolidated repository solution to the end user.  Meanwhile, the three components are sufficiently decoupled that each could be run as a freestanding application.  They interoperate based on a minimal contract that revolves around decisions about what information should be in Solr and how it should be represented in the Solr index in order to achieve the ideal search experience.</p>
<p>In the process of customizing or extending a Hydra application, some changes require modifications to all three components, but most changes impact only one or two of the components at a time.  This makes it very easy to iteratively improve the application and adapt to real world needs.</p>
<p>This structure grew naturally out of a process of exploration.  In early 2009 developers at UVA and Stanford discovered that it was relatively easy to put Blacklight on top of a Solr index that had in turn been been populated by ActiveFedora &#8212; effectively turning Blacklight into a search &amp; discovery interface for that Fedora repository.  Based on that, we tried dropping ActiveFedora-driven views &amp; controllers for editing Fedora content into the same Ruby on Rails application as an existing copy of Blacklight.  It worked like a charm.  The two systems happily coexist.  What we found was that as long as we could change and refine how the metadata percolates from Fedora into Solr, getting Blacklight to operate together with the ActiveFedora management component was completely straightforward.</p>
<p>With most Hydra applications, all content is stored in a Fedora Repository.  However, there is nothing to prevent you from adding non-Fedora content to solr and having it show up in the (Blacklight) search &amp; discovery views.  Of course, that content will not be editable unless you implement the code to integrate with that content&#8217;s host system.</p>
<h3>Best of Breed: Blacklight &amp; ActiveFedora</h3>
<p><a title="Blacklight Project" href="http://projectblacklight.org">Blacklight</a> is a next generation Search &amp; Discovery tool.  It was intentionally designed to serve a single purpose - Search &amp; Discovery - without having any knowledge of indexing, cataloging, or even the location of the content it&#8217;s searching through.  Whatever information you have in your Solr index, Blacklight will help you expose a rich, faceted search interface for exploring through that information and displaying detail views of individual records.  This open-ended design made it very easy for us to integrate Blacklight directly into our Hydra applications as-is.  The ease with which we achieved this seamless integration is a testament to the quality of Blacklight&#8217;s design.</p>
<p><a href="http://yourmediashelf.com/activefedora/">ActiveFedora</a> is a Ruby library that encapsulates the details of interacting with a Fedora repository and provides high-level tools for defining data models, creating Fedora objects, and modifying the data associated with those objects.  While opening the door to rapid, iterative application development, ActiveFedora also attempts to expose and accentuate many of the strong design patterns inherent in Fedora.  ActiveFedora&#8217;s emphasis on flexibility and design patterns provided us with many opportunities to make our Hydra applications robust and re-usable.  In particular, ActiveFedora makes it possible for multiple Hydra (and non-Hydra) applications to operate on top of a single Fedora repository, thus achieving the goal of providing many lightweight views onto complex, heterogeneous repository content.</p>
<h3>Hydra Core: the building blocks of an interface for creating &amp; editing Fedora content</h3>
<p>Hydra Core provides the Ruby on Rails code that handles Creation, Management, &amp; Editing of Fedora content.  This primarily consists of Rails helpers for generating edit interfaces and Rails controllers to handle the submissions from those interfaces.</p>
<p>Fedora allows a great amount of freedom with respect to data models and metadata.  As a result, we could not simply create a single generic content management interface in Hydra.  Instead, we created a number of &#8220;helpers&#8221; that allow you to deal with your Fedora content and its metadata at a high level of abstraction.  For example, the editable_metadata_field helper generates the HTML for displaying an editable version of whichever metadata field you specify.  All you have to know is what field you want to display and where it is stored within the object.  Everything else is handled for you.</p>
<p>The forms generated by the Hydra helpers need somewhere to submit their data to.  This is handled by the Rails controllers provided by Hydra core.</p>
<p>Underneath the helpers and controllers, Hydra Core relies on ActiveFedora to handle connecting with Fedora, modeling Fedora objects &amp; metadata, and performing the basic operations of creation, retrieval, updating and deletion.</p>
<h3>Shelver: a script that brought unexpected freedom</h3>
<p>When we wrote Shelver, we didn&#8217;t anticipate how integral it would become to the application development process.  Shelver started out as something extremely simple.  A developer at Stanford initially wrote it in order to populate a Solr index with some working data from a Fedora Repository.  Over time, as needs arose, we built out the script to be more robust.  It soon became apparent how crucial it is to be able to modify and/or augment the behavior of your indexing tool.  In most other systems, the indexing tool is either implicit (relational databases) or external to your application and difficult to re-configure (ie. Fedora GSearch).  As a result, when working with other systems, discussion of (and changes to) the indexing strategy are kept to a minimum.  In contrast, since we had Shelver at our disposal, we found ourselves constantly tweaking it to satisfy new functionality.  This ability to tweak our indexing routines gives us radical freedom to explore new features, improve the search experience, and increase the quality of search results.</p>
<p>Eventually, we pulled shelver into the Hydra app itself so that we could trigger it as part of the save/update process, though we retained the hooks for running it as a command line tool as well.  We also did this because we found that changes we made to shelver often corresponded to changes in the search interface.  Shelver was continually evolving in conjunction with the application, so it made sense to track the code with a single versioning system.</p>
<h2>Approaches to Indexing: from RDBMS to Fedora + Shelver</h2>
<h3>RDBMS (data model &amp; search index combined)</h3>
<p>If you rely solely on a Relational Database to drive your application, your data model (the database schema) is also your indexing model &#8212; any search oriented changes necessitate changes to your data model.  This makes it difficult to refine and extend the search &amp; discovery portion of the application without impacting other areas of functionality.</p>
<h3>RDBMS + Solr (separate search index from data without much thought to the conceptual differences)</h3>
<p>A number of tools exist for pulling content from a relational database into Solr.  This achieves the goal of separating the search index from the data itself, allowing you to have an indexing model separate from your data model.  However, often with these systems the indexing methodology remains tightly bound to the data model.  This is more of a conceptual stumbling block than a technical one.  It&#8217;s easy to underestimate the complexity and distinctiveness of indexing for search &amp; discovery.  It is not enough to index your data in Solr; you must think differently about how and why you put it there.  This &#8220;thinking&#8221; must be manifest somewhere in the application&#8217;s code, ideally separated from the rest of the application.</p>
<h3>Fedora + GSearch + Solr (freestanding tool specifically handles indexing)</h3>
<p>Fedora is explicitly designed with the idea that you should separate your data model from your indexing solution(s).  This allows us to use any variety of content models and metadata schemas to represent our content in Fedora while pulling that information into any number of indexes to suit specific searching needs.  The most common indexing approach with Fedora repositories is to use Fedora GSearch to pull Fedora content into a Lucene, Solr or Zebra index.  This approach has the benefits of completely separating the data from the index while also providing a freestanding, configurable tool to handle the process of indexing.</p>
<p>GSearch was designed with the goal of enabling 1) full-text searching of Fedora content and 2) indexing of arbitrary XML metadata from Fedora objects.  It runs as a web application alongside Fedora, listening for JMS messages or REST API commands telling it to (re)index Fedora objects.  The process by which GSearch indexes the content is implemented as a mix of XSLT and Java code.</p>
<p>GSearch establishes the strong best practice of decoupling both the search index and the indexing process from the data itself.  This pattern was part of Fedora&#8217;s design all along, but thus far GSearch has been the clearest manifestation of it.</p>
<p>Because it was designed specifically to enable full-text indexing using XSL Transformations (XSLT), GSearch operates on the premise that you are <em>transforming</em> the content in order to put it in the index.  In a basic system, transformations are sufficient.  However, most repository solutions eventually need to actively <em>process</em> the data when indexing it, performing complex actions in order to decide how to populate the search index.  Because XSLT does not lend itself to performing such complex processes, you must modify Java code if you want to implement this type of processing in GSearch.  Modifying that code has proven daunting for most.  Very few projects have taken on the challenge of modifying the GSearch code itself.  Those that have modified the code have only done so in minimal and relatively stable ways.</p>
<h3>Fedora + Shelver + Solr (allowing the indexing methodology to constantly evolve)</h3>
<p>If you want to provide a great search &amp; discovery experience in your application, you must make it easy to iteratively &#8220;massage&#8221; the indexes.  Anyone who manages a Blacklight or VuFind installation on top of their ILS (or anyone who participates in Code4Lib) can attest to the fact that in order to achieve a truly successful search &amp; discovery experience you must continually refine the way you index your metadata.  Little changes in your indexing methodology can bear tangible results for end-users.</p>
<p>In building SALT, the first Hydra application to combine Blacklight with ActiveFedora, we created Shelver as an alternative to GSearch because we wanted to be able to specify our indexing process in Ruby code and, where possible, we wanted to use simple mapping files rather than being forced to use XSLT and Java to perform those actions. We assumed that Shelver would be a relatively simple application whose code rarely changed.  After all, when using GSearch we rarely changed the XSLT and basically never changed the Java code.  We expected that the same would be true with Shelver.  We were wrong.  Shelver is constantly changing because we are constantly coming up with new things that we want to do to improve the search &amp; discovery utilities in our Hydra applications.  As time passes, the code of Shelver itself has stabilized, but the instructions for how to index specific data from Fedora continually morphs as a regular part of the application development process.  In fact, touching the Shelver code has become such an integral part of our work that we can&#8217;t imagine building a repository solution without this kind of freedom.</p>
<h2>Conclusion, Observations and Best Practices</h2>
<p>To review, some of the recommendations coming out of this work are to</p>
<ul>
<li>use indexing as the crossover point between decoupled solutions for searching through and managing your content</li>
<li>make the indexer an explicit, evolving part of your application</li>
<li>use flexible components that were designed with iterative development in mind</li>
<li>re-use established best practices where possible</li>
<li>combine best of breed solutions for astounding results</li>
</ul>
<p>We were pleasantly surprised to discover how easy it was to combine Blacklight and ActiveFedora into a single Fedora solution.  The three-part pattern that emerged out of this effort, which now constitutes a basic Hydra application, builds on well established practices and serendipitously combines them in a stable, intuitive way.  This in turn provides a strong base for us all to carry out a great amount of innovative work in the coming years.</p>
<img src="http://feeds.feedburner.com/~r/MediashelfBlog/~4/DAJYpAvrXWY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yourmediashelf.com/blog/2010/03/01/blacklight-activefedora-and-shelver-interplay-between-searching-managing-and-indexing-in-a-repository-solution/feed/</wfw:commentRss>
		<feedburner:origLink>http://yourmediashelf.com/blog/2010/03/01/blacklight-activefedora-and-shelver-interplay-between-searching-managing-and-indexing-in-a-repository-solution/</feedburner:origLink></item>
		<item>
		<title>Final Videos from Code4Lib 2010</title>
		<link>http://feedproxy.google.com/~r/MediashelfBlog/~3/mcprIjyUghk/</link>
		<comments>http://yourmediashelf.com/blog/2010/02/28/final-videos-from-code4lib-2010/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 16:48:00 +0000</pubDate>
		<dc:creator>Matt Zumwalt</dc:creator>
		
		<category><![CDATA[Matt's Adventures and Musings]]></category>

		<category><![CDATA[collaboration]]></category>

		<category><![CDATA[conferences]]></category>

		<category><![CDATA[2010]]></category>

		<category><![CDATA[asheville]]></category>

		<category><![CDATA[code4lib]]></category>

		<category><![CDATA[dev8d]]></category>

		<category><![CDATA[london]]></category>

		<guid isPermaLink="false">http://yourmediashelf.com/blog/?p=328</guid>
		<description><![CDATA[I&#8217;ve posted my last videos to the Code4Lib &#38; Dev8D 2010 channel on Vimeo. (NB: the Dev8D responses are all on YouTube, not Vimeo).  We only had a half day on Thursday but I managed to run around and gather enough video for one montage of hello messages and three mini-interviews.
I convinced Thursday&#8217;s emcee to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve posted my last videos to the <a href="http://vimeo.com/channels/88710">Code4Lib &amp; Dev8D 2010 channel</a> on Vimeo. (NB: the Dev8D responses are all on YouTube, not Vimeo).  We only had a half day on Thursday but I managed to run around and gather enough video for one montage of hello messages and three mini-interviews.</p>
<p>I convinced Thursday&#8217;s emcee to let me conclude the morning announcements by showing Dev8D&#8217;s video saying hello to us and recording a quick video of the whole conference saying &#8220;Hi Dev8D.  How&#8217;s the weather in London?&#8221;.  Lesson learned: when recording 200 people saying hello, keep the microphone away from your mouth.</p>
<p>A snowstorm was threatening to disrupt everyone&#8217;s travel plans so we spread to the winds pretty swiftly once the figurative gong rang at noon, but I managed to grab lunch at Asheville&#8217;s infamous <a href="http://www.12bones.com/">12 Bones Smokehouse</a> with some friends before departing.</p>
<p><object width="475" height="267"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9751077&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9751077&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="475" height="267"></embed></object>
<p><a href="http://vimeo.com/9751077">Code4Lib 2010 Last Day</a> from <a href="http://vimeo.com/user3243709">Matt Zumwalt</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p><object width="475" height="267"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9751199&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9751199&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="475" height="267"></embed></object>
<p><a href="http://vimeo.com/9751199">Mark Matienzo at Code4Lib 2010 Recommends &#8220;Ask Anything&#8221;</a> from <a href="http://vimeo.com/user3243709">Matt Zumwalt</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p><object width="475" height="267"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9751230&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9751230&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="475" height="267"></embed></object>
<p><a href="http://vimeo.com/9751230">Matt Cordial at Code4Lib 2010 - Lightweight Tools and Robust Testing</a> from <a href="http://vimeo.com/user3243709">Matt Zumwalt</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p><object width="475" height="267"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9751263&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9751263&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="475" height="267"></embed></object>
<p><a href="http://vimeo.com/9751263">A Little Blacklight Lovefest at Code4Lib 2010</a> from <a href="http://vimeo.com/user3243709">Matt Zumwalt</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<img src="http://feeds.feedburner.com/~r/MediashelfBlog/~4/mcprIjyUghk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yourmediashelf.com/blog/2010/02/28/final-videos-from-code4lib-2010/feed/</wfw:commentRss>
		<feedburner:origLink>http://yourmediashelf.com/blog/2010/02/28/final-videos-from-code4lib-2010/</feedburner:origLink></item>
		<item>
		<title>Dev8D 2010 Day 3: Developer Challenges</title>
		<link>http://feedproxy.google.com/~r/MediashelfBlog/~3/LY6FOrJxFgA/</link>
		<comments>http://yourmediashelf.com/blog/2010/02/26/dev8d-2010-day-3-developer-challenges/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 23:58:59 +0000</pubDate>
		<dc:creator>Edwin Shin</dc:creator>
		
		<category><![CDATA[conferences]]></category>

		<category><![CDATA[dev8d]]></category>

		<guid isPermaLink="false">http://yourmediashelf.com/blog/?p=314</guid>
		<description><![CDATA[Among the highlights of dev8D are the developer challenges. Last year, List8D took home the £5,000 first prize at the Developer Decathlon. This year, there are ten different challenges, or bounties. Mahendra Mahey explained that last year&#8217;s single grand prize format left a number of otherwise deserving innovation efforts unrecognized. As a result, this year&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Among the highlights of dev8D are the developer challenges. Last year, <a href="http://list8d.org/">List8D</a> took home the £5,000 first prize at the Developer Decathlon. This year, there are ten different challenges, or bounties. Mahendra Mahey explained that last year&#8217;s single grand prize format left a number of otherwise deserving innovation efforts unrecognized. As a result, this year&#8217;s challenges draw from a variety problem spaces:</p>
<ol>
<li><a href="http://wiki.2010.dev8d.org/w/Talk_1">Linked Data API/Data</a></li>
<li><a href="http://wiki.2010.dev8d.org/w/Talk_2">EDINA - Unlock Places API &#038; Geo/Data</a></li>
<li><a href="http://wiki.2010.dev8d.org/w/Talk_3">Building the best IMS Basic LTI Tool</a></li>
<li><a href="http://wiki.2010.dev8d.org/w/Talk_4">Blackboard/Learning Tools Interoperability API/Data</a></li>
<li><a href="http://wiki.2010.dev8d.org/w/Talk_5">Memento: Time Travel for the Web</a></li>
<li><a href="http://wiki.2010.dev8d.org/w/Talk_6">Internet Archive API/Data</a></li>
<li><a href="http://wiki.2010.dev8d.org/w/Talk_7">Mobile API/Data</a></li>
<li><a href="http://wiki.2010.dev8d.org/w/Talk_8">Microsoft Zentity</a></li>
<li><a href="http://wiki.2010.dev8d.org/w/Talk_11">Eprints 3.2 API/DATA</a></li>
<li><a href="http://wiki.2010.dev8d.org/w/Talk_12">MLA Data</a></li>
</ol>
<p>The bounties include cash, an iPod Touch, an Acer 751 Netbook, and Amazon vouchers. Microsoft Research is offering the biggest prizes: both an Xbox 360 <em>and</em> a multi-touch Tablet PC.</p>
<p>Deadline for <a href="http://wiki.2010.dev8d.org/w/Bounties">submissions</a> is 10am tomorrow.</p>
<p>Although I hope that next year, Code4Lib and dev8D won&#8217;t overlap, if they should, I&#8217;d like to see if we can&#8217;t build some cross-conference teams to compete. There&#8217;s certainly enough intersection of interests that if we can bring some of the work of Code4Lib participants to bear on the challenges at dev8D, we&#8217;d see some pretty amazing things.</p>
<img src="http://feeds.feedburner.com/~r/MediashelfBlog/~4/LY6FOrJxFgA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yourmediashelf.com/blog/2010/02/26/dev8d-2010-day-3-developer-challenges/feed/</wfw:commentRss>
		<feedburner:origLink>http://yourmediashelf.com/blog/2010/02/26/dev8d-2010-day-3-developer-challenges/</feedburner:origLink></item>
		<item>
		<title>Dev8D 2010 Day 2: 3D Printing with RepRap’s Adrian Bowyer</title>
		<link>http://feedproxy.google.com/~r/MediashelfBlog/~3/NEl-ZwWVzgA/</link>
		<comments>http://yourmediashelf.com/blog/2010/02/26/dev8d-2010-day-2-3d-printing-with-repraps-adrian-bowyer/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 06:10:20 +0000</pubDate>
		<dc:creator>Edwin Shin</dc:creator>
		
		<category><![CDATA[conferences]]></category>

		<category><![CDATA[dev8d]]></category>

		<guid isPermaLink="false">http://yourmediashelf.com/blog/?p=301</guid>
		<description><![CDATA[Adrian Bowyer, from the University of Bath, visited us today at dev8D to demonstrate RepRap. RepRap is a 3D printer that uses plastic as raw material (the ink, or toner, if you will) to produce three-dimensional objects.
Aside from the pure geek-appeal of a self-replicating, 3D printer that accepts designs from Art of Illusion or Blender, [...]]]></description>
			<content:encoded><![CDATA[<p>Adrian Bowyer, from the University of Bath, visited us today at dev8D to demonstrate RepRap. RepRap is a 3D printer that uses plastic as raw material (the ink, or toner, if you will) to produce three-dimensional objects.</p>
<a href="http://yourmediashelf.com/blog/wp-content/uploads/2010/02/mendel.jpg"><img src="http://yourmediashelf.com/blog/wp-content/uploads/2010/02/mendel-300x283.jpg" alt="RepRap 2.0 &quot;Mendel&quot;" title="RepRap 2.0 &quot;Mendel&quot;" width="300" height="283" class="size-medium wp-image-307" /></a>
<p>Aside from the pure geek-appeal of a self-replicating, 3D printer that accepts designs from Art of Illusion or Blender, is the amazing potential of RepRap to change the world as we know it. That sounds a little breathless and it&#8217;s certainly not entirely true: RepRap can&#8217;t fully replicate itself, yet (currently, just better than 50%). But ask yourself what might happen if everyone had a fabrication plant at home. At a cost of only £300 in materials to produce, RepRap could make manufacturing accessible to even some of the poorest communities. What happens to the sales of entire classes of goods and manufacturing if you, as Google&#8217;s Chris DiBona observed, have &#8220;China on your desktop&#8221;?</p>
<p><object width="480" height="300"><param name="movie" value="http://www.youtube.com/v/BpHX-Abn_tg&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/BpHX-Abn_tg&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="300"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/MediashelfBlog/~4/NEl-ZwWVzgA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yourmediashelf.com/blog/2010/02/26/dev8d-2010-day-2-3d-printing-with-repraps-adrian-bowyer/feed/</wfw:commentRss>
		<feedburner:origLink>http://yourmediashelf.com/blog/2010/02/26/dev8d-2010-day-2-3d-printing-with-repraps-adrian-bowyer/</feedburner:origLink></item>
		<item>
		<title>Code4Lib 2010 Comes to a Close with Zombies, Google Wave and Mobile App Development</title>
		<link>http://feedproxy.google.com/~r/MediashelfBlog/~3/LfDBCGQLV64/</link>
		<comments>http://yourmediashelf.com/blog/2010/02/25/code4lib-2010-comes-to-a-close-with-zombies-google-wave-and-mobile-app-development/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 17:44:02 +0000</pubDate>
		<dc:creator>Matt Zumwalt</dc:creator>
		
		<category><![CDATA[conferences]]></category>

		<category><![CDATA[asheville]]></category>

		<category><![CDATA[code4lib]]></category>

		<category><![CDATA[google wave]]></category>

		<category><![CDATA[ibiblio]]></category>

		<category><![CDATA[paul jones]]></category>

		<guid isPermaLink="false">http://yourmediashelf.com/blog/?p=296</guid>
		<description><![CDATA[Keynote #2: catfish, cthulhu, code, clouds and Levenshtein distance
The final half-day of Code4Lib 2010 began with a roving, sublimely geeky keynote address by Paul Jones, Director of ibiblio.org (you know - host of project Gutenberg, etc.).  His opening challenge: &#8220;What is the levenshtein distance between Paul Jones and Cathy Marshall?&#8221; Little did he know that zoia the irc [...]]]></description>
			<content:encoded><![CDATA[<h3>Keynote #2: catfish, cthulhu, code, clouds and Levenshtein distance</h3>
<p>The final half-day of Code4Lib 2010 began with a roving, sublimely geeky keynote address by <a href="http://www.ibiblio.org/pjones/">Paul Jones</a>, Director of ibiblio.org (you know - host of project Gutenberg, etc.).  His opening challenge: &#8220;What is the l<a href="http://en.wikipedia.org/wiki/Levenshtein_distance">evenshtein distance</a> between Paul Jones and Cathy Marshall?&#8221; Little did he know that zoia the irc bot can compute levenshtein distances on the fly.  From this opening volley, he galloped through brain science, geek slang, asbergers, quality control, zombies, physical anthropology and catfish.</p>
<p>If you take a look at the <a href="http://irc.code4lib.org/code4lib/2010-02-25">code4lib irc log</a> you can tell exactly when Paul posed the levenshtein distance challenge (14:17:31 UTC/GMT) and exactly when he asked the audience to provide their answers (14:48:49 UTC/GMT).</p>
<blockquote>
<table class="log" style="border-collapse: collapse; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #f5f5ff; background-position: initial initial; margin: 1em;" border="0">
<tbody>
<tr>
<td class="time" style="vertical-align: top; color: gray; text-decoration: none;">[<a style="color: gray; text-decoration: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #ff9999;" name="14:48:49" href="http://irc.code4lib.org/code4lib/2010-02-25#14:48:49">14:48:49</a>]</td>
<td class="nick" style="vertical-align: top; text-align: right; color: gray; padding-left: 1em; padding-right: 0.2em;">&lt;<a style="color: black; text-decoration: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #ff9999;" href="http://irc.code4lib.org/users/gsf#user">gsf</a>&gt;</td>
<td class="content" style="vertical-align: top; border-left-width: 1px; border-left-style: solid; border-left-color: #d3d3d3; padding-left: 0.2em; white-space: pre-wrap;">@levenshtein &#8220;cathy marshall&#8221; &#8220;paul jones&#8221;</td>
</tr>
<tr>
<td class="time" style="vertical-align: top; color: gray; text-decoration: none;">[<a style="color: gray; text-decoration: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #ff9999;" name="14:48:49" href="http://irc.code4lib.org/code4lib/2010-02-25#14:48:49">14:48:49</a>]</td>
<td class="nick" style="vertical-align: top; text-align: right; color: gray; padding-left: 1em; padding-right: 0.2em;">&lt;<a style="color: black; text-decoration: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #ff9999;" href="http://irc.code4lib.org/users/zoia#user">zoia</a>&gt;</td>
<td class="content" style="vertical-align: top; border-left-width: 1px; border-left-style: solid; border-left-color: #d3d3d3; padding-left: 0.2em; white-space: pre-wrap;">gsf: The levenshtein distance of cathy marshall and paul jones is 12.</td>
</tr>
</tbody>
</table>
</blockquote>
<h3>Lighting Talks</h3>
<ul>
<li>Batch OCR using Open Source Tools - Jonathan Brinley</li>
<li>VuFind at Western Michigan University - Birong Ho</li>
<li>Please clean my data! - Vinita Tuteja, National Library of Australia</li>
<li>Library a la Carte update - Kim Griggs and Michael Klein</li>
<li>Serving Fedora content using Drupal and Fedora content models and disseminators - Alexander O&#8217;Neill, University of Prince Edward Island</li>
<li>Library Values for the Internet - Jodi Schneider</li>
<li>GroupFinder: Who/What/Where/When for patrons at your library - Joe Ryan, NCSU</li>
<li>Digital Video Made Easier - Datastore and conversion using video APIs (YouTube, blip.tv): Jason Clark, Montana State University</li>
<li>EAD, APIs, and Cooliris: providing access to digitized archival materials. - Tim Shearer</li>
</ul>
<h3>Final Presentations: Developing Mobile Apps and Developing bots for Google Wave</h3>
<p>This year&#8217;s conference ended with one presentation about Google Wave and two about Mobile App Development.</p>
<p>Sean Hannan&#8217;s <em>You Either Surf or You Fight: Integrating Library Services with Google Wave</em>.  Wave is Google&#8217;s next-gen communication/collaboration/publishing platform built from this premise:</p>
<p>Email is based on the only metaphor we had for text communication &#8212; the postal mail system.  Given our contemporary idioms of emails, instant messaging, blogs, microblogs, VOIP, video teleconferencing, and collaborative document editing (ie. Google Docs), what would you get if you reinvented email today?</p>
<p>After a heraldic launch last year, Google Wave has been slow to gain traction even with the most adventurous of technology early adopters.  Wave is definitely visionary, but it also might be a technology before its time &#8212; Either that, or next year you will be reading these posts via Wave and you will wonder &#8220;How did people ever communicate without this?&#8221;  Time will tell.</p>
<p>When Sean polled the room to see who already had Wave accounts, almost all of the 250 people raised their hands but nobody was logged into their accounts. This bears testimony to both the tech fashion-forwardness of Code4Lib and Wave&#8217;s lack of traction as a tool that people might actually use.</p>
<p>Sean talked through the process of building, running and debugging an interactive bot for Wave that allows you to query some of Johns Hopkins web services on the fly from a &#8220;wavelet&#8221; in Google Wave.  His bot is called uncle-milty and is located at http://uncle-milty.appspot.com</p>
<img src="http://feeds.feedburner.com/~r/MediashelfBlog/~4/LfDBCGQLV64" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yourmediashelf.com/blog/2010/02/25/code4lib-2010-comes-to-a-close-with-zombies-google-wave-and-mobile-app-development/feed/</wfw:commentRss>
		<feedburner:origLink>http://yourmediashelf.com/blog/2010/02/25/code4lib-2010-comes-to-a-close-with-zombies-google-wave-and-mobile-app-development/</feedburner:origLink></item>
		<item>
		<title>Code4Lib 2010 Day 2: Afternoon Session</title>
		<link>http://feedproxy.google.com/~r/MediashelfBlog/~3/o8aXlc1B5JE/</link>
		<comments>http://yourmediashelf.com/blog/2010/02/25/code4lib-2010-day-2-afternoon-session/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 12:42:22 +0000</pubDate>
		<dc:creator>Matt Zumwalt</dc:creator>
		
		<category><![CDATA[Matt's Adventures and Musings]]></category>

		<category><![CDATA[collaboration]]></category>

		<category><![CDATA[conferences]]></category>

		<category><![CDATA[2010]]></category>

		<category><![CDATA[asheville]]></category>

		<category><![CDATA[blacklight]]></category>

		<category><![CDATA[code4lib]]></category>

		<category><![CDATA[drupal]]></category>

		<category><![CDATA[search]]></category>

		<category><![CDATA[stanford]]></category>

		<guid isPermaLink="false">http://yourmediashelf.com/blog/?p=269</guid>
		<description><![CDATA[It&#8217;s extremely gratifying to attend a conference where super smart presenters don&#8217;t shy away from showing real code.  It&#8217;s even better to be at a conference where the presenters manage to show complex code while making it understandable even to people who don&#8217;t use the related systems.  Every presenter today has managed to do that [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s extremely gratifying to attend a conference where super smart presenters don&#8217;t shy away from showing real code.  It&#8217;s even better to be at a conference where the presenters manage to show complex code while making it understandable even to people who don&#8217;t use the related systems.  Every presenter today has managed to do that really well.</p>
<p>This is what happens when smart people people come together, communicate often (year round), and respect each other.</p>
<h3>Building a Better Advanced Search</h3>
<p>Naomi Dushay &amp; Jessie Keck&#8217;s presentation on building a better advanced search for <a href="http://searchworks.stanford.edu">SearchWorks</a> is a key example of this unabashedly technical yet clear and concise communication.  They opened with a clear presentation of the real-world situation, including usability goals, etc.  They followed this with a breakdown of the desirable features and the possible ways to implement them.  Naomi then plunged into seriously complex solr config details that she managed to make intelligible step-by-step.  Hint: she used screenshots of the code with the salient items circled.</p>
<h3>Drupal 7: A more powerful platform for building library applications</h3>
<p>Cary Gordon from the Cherry Hill Company showed us the new features in Drupal 7.  I expected to be bored, since I don&#8217;t use Drupal and can&#8217;t stand the sight of PHP code. Instead, I was pleasantly impressed and intrigued by the features Cary walked through.  I keep hearing that Drupal has matured substantially in recent years, but I didn&#8217;t believe it until now.</p>
<h3>Enhancing Discoverability With Virtual Shelf Browse</h3>
<p>Andreas Orphanides, Cory Lown, and Emily Lynema from NCSU showed us their snazzy virtual bookshelf with an &#8220;infinite shelf&#8221; allowing you to scroll through book covers five at a time ad infinitum.  One wonderful idea is the use of &#8220;faux covers&#8221;, where they generated something that looks like a real book cover whenever a real cover image couldn&#8217;t be retrieved for a search result.</p>
<p>As with almost any Code4Lib presentation, this would have been intriguing if they only gave a demo of the software but they didn&#8217;t stop there.  80% of the time was spent explaining how they did it, what technologies they used, how they thought about the problem, what worked well and what went wrong.  Gosh I love hackers who share.</p>
<h3>How to Implement A Virtual Bookshelf With Solr</h3>
<p>In their third presentation of the day (remember, presentations were chosen by open popular vote), Naomi Dushay and Jessie Keck showed us their work around implementing the much-desired support for browsing through digital collections using a virtual shelf organized by call number.  This feature sounds simple, but the implementation proved more challenging.  To start with, the librarians couldn&#8217;t come to a consensus about what constitutes &#8220;correct&#8221; ordering.  Solution: ignore the arguing librarians and go straight to the users!</p>
<p>The real challenge lay in sorting out 8 million call numbers from numerous libraries using a variety of call number systems (ie. LC, Dewey, SUDOC, Thesis, etc.)  Who knew that call numbers were so complex? Not I, until now.</p>
<p>I knew these guys were good - I&#8217;ve collaborated with them, I&#8217;ve seen their code - but wow.  I didn&#8217;t realize how remarkably good they were until this third presentation.</p>
<h3>Lightning Talks &amp; Breakout Sessions</h3>
<p>The day closed with <a href="http://wiki.code4lib.org/index.php?title=2010_Lightning_Talks_Singup">13 Lightning Talks</a> followed by <a href="http://wiki.code4lib.org/index.php/2010_Breakout_Sessions">6 Breakout Sessions</a>.</p>
<p>Lightning Talks:</p>
<ul>
<li>LibX Update - Godmar Back</li>
<li>How to build a Virtual Bookshelf Without Solr (or MySQL) - Maccabee Levine</li>
<li>VIVO, an interdisciplinary national network - Paul Albert</li>
<li>WolfWalk, two ways - Jason Casden</li>
<li>Custom metasearch widgets - Alex Smith</li>
<li>Node.js development - Gabriel Farrell</li>
<li>Catalog Auto-suggest using SOLR - Jill Sexton</li>
<li><a href="http://yitznewton.org/emeraldview">EmeraldView</a>, a PHP frontend for Greenstone - Yitzchak Schaffer</li>
<li>Faceted browse on the cheap - Tom Keays</li>
<li><a href="http://docs.google.com/present/edit?id=0AaAHjV7nFQ21ZGc3MzhxdzRfOTdjOW01d2pmcg&amp;hl=en">EAD, APIs, and Cooliris</a>: providing access to digitized archival materials. - Tim Shearer</li>
<li><a href="http://developer.statsbiblioteket.dk/kill/code4lib.html">Kill the Search Button</a> - Michael Nielsen, Jørn Thøgersen [facilitated by Roy Tennant]</li>
<li>You Heard It Here First&#8230; - Roy Tennant</li>
<li><a href="http://fits.googlecode.com/">File Information Tool Set (FITS)</a> - Spencer McEwen</li>
</ul>
<p>Breakout Sessions:</p>
<ul>
<li>Mobile Dev</li>
<li><a href="http://projectblacklight.org">Blacklight</a> - Bess Sadler</li>
<li>Tools4Lib - the best tools used in your job - Devon Smith/decasm</li>
<li>Let&#8217;s Link Our Data - If you have data, metadata, vocabularies, or just about anything else you want to link, show up and we&#8217;ll figure out what to do with it! - Ryan Scherle/ryscher</li>
<li>Homebrew - building your own instead of using Fedora/DSpace/Blacklight/whatever - Esmé Cowles/escowles</li>
<li>API queries to vocabularies - Ya&#8217;aqov Ziso</li>
</ul>
<img src="http://feeds.feedburner.com/~r/MediashelfBlog/~4/o8aXlc1B5JE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yourmediashelf.com/blog/2010/02/25/code4lib-2010-day-2-afternoon-session/feed/</wfw:commentRss>
		<feedburner:origLink>http://yourmediashelf.com/blog/2010/02/25/code4lib-2010-day-2-afternoon-session/</feedburner:origLink></item>
		<item>
		<title>Video: Hello to Code4Lib from Dev8D</title>
		<link>http://feedproxy.google.com/~r/MediashelfBlog/~3/zDR3DUoDN9c/</link>
		<comments>http://yourmediashelf.com/blog/2010/02/25/video-hello-to-code4lib-from-dev8d/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 04:58:39 +0000</pubDate>
		<dc:creator>Edwin Shin</dc:creator>
		
		<category><![CDATA[conferences]]></category>

		<category><![CDATA[code4lib]]></category>

		<category><![CDATA[dev8d]]></category>

		<guid isPermaLink="false">http://yourmediashelf.com/blog/?p=288</guid>
		<description><![CDATA[In acknowledgment of Hello to Dev8D from Code4Lib, Dev8D prepared a warm greeting for Code4Lib from otherwise cold and wet London:

]]></description>
			<content:encoded><![CDATA[<p>In acknowledgment of <a href="http://yourmediashelf.com/blog/2010/02/24/video-hello-to-dev8d-from-code4lib/">Hello to Dev8D from Code4Lib</a>, Dev8D prepared a warm greeting for Code4Lib from otherwise cold and wet London:</p>
<p><object width="480" height="300"><param name="movie" value="http://www.youtube.com/v/eJJIFrEVyUQ&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/eJJIFrEVyUQ&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="300"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/MediashelfBlog/~4/zDR3DUoDN9c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yourmediashelf.com/blog/2010/02/25/video-hello-to-code4lib-from-dev8d/feed/</wfw:commentRss>
		<feedburner:origLink>http://yourmediashelf.com/blog/2010/02/25/video-hello-to-code4lib-from-dev8d/</feedburner:origLink></item>
		<item>
		<title>Dev8D 2010 Day 1</title>
		<link>http://feedproxy.google.com/~r/MediashelfBlog/~3/tNSr4z4Rp4E/</link>
		<comments>http://yourmediashelf.com/blog/2010/02/25/dev8d-2010-day-1/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 01:12:19 +0000</pubDate>
		<dc:creator>Edwin Shin</dc:creator>
		
		<category><![CDATA[conferences]]></category>

		<category><![CDATA[dev8d]]></category>

		<guid isPermaLink="false">http://yourmediashelf.com/blog/?p=225</guid>
		<description><![CDATA[JISC Developer Days (aka dev8D) kicked off today at the University of London Union with an estimated 500 attendees. I don&#8217;t remember the number of attendees last year, but it feels much bigger this year. Spanning five rooms, I counted at least 27 different sessions, talks and workshops over the space of a single afternoon.
Linked [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://dev8d.org/">JISC Developer Days</a> (aka dev8D) kicked off today at the University of London Union with an estimated 500 attendees. I don&#8217;t remember the number of attendees last year, but it feels <em>much</em> bigger this year. Spanning five rooms, I counted at least <a href="http://data.dev8d.org/2010/programme/dev8d_programme.html">27 different sessions</a>, talks and workshops over the space of a single afternoon.</p>
<p>Linked Data was the dominant theme today, starting with the pre-conference <a href="http://www.meetup.com/Web-Of-Data/calendar/12317420/">Linked Data Meetup</a> which included presentations and workshops from Tom Scott, Patrick Sinclair, and Silver Oliver of the BBC and John Sheridan &amp; Jeni Tennison of <a href="data.gov.uk">data.gov.uk</a> among many, many others.</p>
<p>Lin Clark of DERI ran a Drupal RDFa workshop in the afternoon. She demonstrated <a href="http://drupal.org/project/rdfcck">RDF Mapping</a>, the <a href="http://drupal.org/project/rdfproxy">RDF SPARQL Proxy</a>, and the <a href="http://drupal.org/project/sparql_ep">RDF SPARQL Endpoint</a> modules and gave a preview of the RDF features to expect in Drupal 7 core.</p>
<p>One session I really wanted, but wasn&#8217;t able, to attend was Jim Downing&#8217;s <a href="http://wiki.2010.dev8d.org/w/Project_Zone_Wed_PM#Multicore_Processing_-_Session_1">Multicore Processing</a> session. Not a terribly interesting title, but he worked through mining linked data from data.gov.uk, using the Clojure library <a href="http://liebke.github.com/incanter/">Incanter</a> to find correlations in the data, and finally, parallelizing the data processing.</p>
<p>The dev8D spirit of developer happiness was nowhere more evident than in this year&#8217;s new attention to electronics. I sat at a table watching Emma Tonkin build an electronic whiteboard with <a href="http://dev8d.jiscinvolve.org/2010/02/24/how-to-make-a-low-cost-electronic-whiteboard/">a nano-projector and Wiimote</a>. Walking over to the projects room, I saw Ben O&#8217;Steen working with facial recognition software, Dave Tarrant turning off and dimming lights over the local network, Julian Cheal wiring each room&#8217;s entry with an RFID reader, and Ian Ibbotson programming an Arduino. Tomorrow, I&#8217;m told, we&#8217;ll have someone showing off a <a href="http://en.wikipedia.org/wiki/RepRap_Project">RepRap</a> 3D printer.</p>
<p>I find the impromptu meetings as valuable as any of the structured components of dev8D. I sat down with Andy Turner, a researcher at the University of Leeds, who introduced me to <a href="http://www.casa.ucl.ac.uk/genesisblog/?page_id=2">GENeSIS</a>, a mad-scientist level modeling and simulation project that I thought was absolutely fascinating. Just as serendipitously, as we wrapped up Day 1 of dev8D at the pub (where else?), I found myself drinking a pint with Scott Wilson and we got to talking about Apache Wookie and HTML 5.</p>
<p>See you tomorrow!</p>
<img src="http://feeds.feedburner.com/~r/MediashelfBlog/~4/tNSr4z4Rp4E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yourmediashelf.com/blog/2010/02/25/dev8d-2010-day-1/feed/</wfw:commentRss>
		<feedburner:origLink>http://yourmediashelf.com/blog/2010/02/25/dev8d-2010-day-1/</feedburner:origLink></item>
		<item>
		<title>Code4Lib Day 2: Closing out the Morning</title>
		<link>http://feedproxy.google.com/~r/MediashelfBlog/~3/bRhTg23BSY0/</link>
		<comments>http://yourmediashelf.com/blog/2010/02/24/code4lib-day-2-closing-out-the-morning/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 16:53:30 +0000</pubDate>
		<dc:creator>Matt Zumwalt</dc:creator>
		
		<category><![CDATA[Matt's Adventures and Musings]]></category>

		<category><![CDATA[collaboration]]></category>

		<category><![CDATA[conferences]]></category>

		<category><![CDATA[blacklight]]></category>

		<category><![CDATA[code4lib]]></category>

		<category><![CDATA[drupal]]></category>

		<category><![CDATA[fedora]]></category>

		<category><![CDATA[human search engine]]></category>

		<category><![CDATA[koha]]></category>

		<category><![CDATA[wgbh]]></category>

		<guid isPermaLink="false">http://yourmediashelf.com/blog/?p=259</guid>
		<description><![CDATA[Media, Blacklight, and Viewers Like You
Chris Beer from WGBH (Boston&#8217;s Public Television; producers of Nova, Julia Child, etc.) walked us through the inner workings of the new WGBH website that runs on Blacklight, Fedora, and LightHTTPD.  Without getting bogged down in the details, he touched on many of the technical and organizational challenges they faced [...]]]></description>
			<content:encoded><![CDATA[<h3>Media, Blacklight, and Viewers Like You</h3>
<p>Chris Beer from WGBH (Boston&#8217;s Public Television; producers of Nova, Julia Child, etc.) walked us through the inner workings of the new WGBH website that runs on Blacklight, Fedora, and LightHTTPD.  Without getting bogged down in the details, he touched on many of the technical and organizational challenges they faced and how they addressed them.  Some of the technologies in the mix</p>
<ul>
<li>Blacklight</li>
<li>Fedora</li>
<li>PBCore: Metadata Standard for Media based on Dublin Core</li>
<li>ODRL: Open Digital Rights Language</li>
<li>JQuery</li>
</ul>
<p>Chris did some amazing things with JQuery and FlowPlayer in his customized Blacklight views.  One example: You can browse to a point in a video by clicking in the transcript. If you then play the video, the transcript automatically scrolls with it &#8212; accurately.  This was made possible by the fact that WGBH already has detailed timecodes embedded in their transcripts.</p>
<p>The data model for a single episode in the WGBH archive fills an entire page &#8212; raw video, edited video, music, images, post-processing, transcripts, etc. with rights and permissions varying for each part.  This highlights the grace of Blacklight, which allowed him to simply leave that system in place and merely expose the public parts with a slick, faceted search &amp; discovery interface.</p>
<p>One detail that Chris called out was the fact that Fedora has trouble with large (5GB+) datastreams.  He pulled up the corresponding (unresolved) tickets in Fedora&#8217;s Jira to establish the fact that this is a long-known unresolved problem.  He then added that WGBH&#8217;s own internal (proprietary) DAM system has the same problems.  At least with open source software, addressing a bug like this is a matter of public process and community initiative rather than being subject to the whims of a single organization.</p>
<p>WGBH will soon be launching a number of public websites based on this Fedora+Blacklight combination.</p>
<h3>Becoming Truly Innovative: Migrating from Millennium to Koha</h3>
<p>Ian Walls from NYU gave a humorous account of finally ditching proprietary Integrated Library Systems, which he represented as battling kittens, in favor of the open source ILS called <a href="http://koha.org">Koha</a>.  He went through the details of how they handled the challenge of migrating their data from iii (the proprietary ILS) to Koha and closed by telling the room that the process he used should work for anyone with a similar proprietary install.  The NYU migration took a total of 3-4 months without any all-nighters.</p>
<p>All of the code he used is available at <a href="http://contribs.koha.org">contribs.koha.org</a>. I don&#8217;t personally work with ILS systems, so I can&#8217;t say I have a solid read on the impact of this information, but I got the distinct impression that this was very encouraging news for a many of the people in the room.  When someone from the audience asked for a show of hands &#8220;How many people would like to migrate away from iii?&#8221; more than a third of the room raised their hands.</p>
<h3>Ask Anything! (aka. Human Search Engine)</h3>
<p>I know the Dev8D people will dig this one.</p>
<p>Dan Chudnov from Library of Congress facilitated an open-ended session where anyone with a question/request/missed connection could grab a mic and announce their desire.  In short, the &#8220;If there&#8217;s anything that you want to ask everybody, now is your chance to speak up.&#8221; The core idea was to give people an opportunity to tap the collective knowledge of the room.</p>
<p>The process was to hear a question, identify people who want to respond, and then move on to the next question.  The full-room discussion was kept to a minimum.  Here are most of the questions asked (I missed a few).</p>
<ul>
<li>Switching from Perl: What language should I switch to?</li>
<li>How do I make an API accessible only from specific domains</li>
<li>Who is using my library (pymarc) and how are you using it?  Please tell me so I can make it better.</li>
<li>How do I extract files from Internet Archive .arc format?</li>
<li>Is anyone interested in helping my organization port a custom staff app from Millenium ILS to Aleph ILS?</li>
<li>Is there any interest in a 1-2 day Blacklight meeting?</li>
<li>Has anyone used the California Digital Library digital curation microservices?</li>
<li>Please tell us: What do Librarians (non-techies) need to know about software development?</li>
<li>What&#8217;s the best way to do complex log analysis? (answer: <a href="http://www.splunk.com/">splunk</a>)</li>
<li>I want to allow people to add data to my site without maintaining user info for them?  I want to use something like OAuth but it has to work with something like curl as the client? (recommendation: <a href="http://rpxnow.com">RPX</a>)</li>
<li>How do I model dates &amp; date ranges in RDF?</li>
<li>Proposal for a breakout session on building homebrew digital repositories (instead of Fedora, DSpace, etc)</li>
<li>Request for 10 minute tutorial on 3D graphics programming</li>
<li>Anyone interested in modeling archival description in RDF? If so, join http://groups.google.com/group/semantic-archives</li>
<li>Is anyone using OpenCalais module for Drupal?</li>
<li>Is anyone here going to be working on the OLE project?</li>
<li>I&#8217;ve created software for hiding borrower information in library systems, but how can I share the code without making it vulnerable to &#8220;the man&#8221;?</li>
<li>Is anyone doing work with HTML5? Especially geodata services, etc?</li>
<li>Are there any libraries out there using Plone for their website?</li>
<li>Who else is developing Facebook apps for their libraries?  Any ideas how to make a useful Facebook app for a library?</li>
<li>Is anyone using MARCLogic or eXist in production systems?</li>
<li>Since this seems to be really working, Should we start something like a Stackoverflow for library hackers? (answer: Yes.  Awesome idea.)</li>
<li>We&#8217;re working on search &amp; discovery with non-roman scripts in a solr/lucene context.  Please provide suggestions.</li>
<li>Is anyone working on natural language processing implementations for machine learning?</li>
<li>We&#8217;re moving all of our production systems to cloud environments.  Has anyone else done that?</li>
<li style="text-align: left;">Is there a JSON library for MARC? (answer: it&#8217;s built into <a href="http://www.open-ils.org/">evergreen</a>, OCLC is also looking into it.)</li>
</ul>
<p>The verdict on Ask Anything: resounding applause, many smiles.</p>
<h3>Surprise Trivia</h3>
<p>Alex O&#8217;Neil from University of Prince Edward Island emcee&#8217;d a very fun round of trivia before we adjourned for lunch.  It was wicked fun.</p>
<img src="http://feeds.feedburner.com/~r/MediashelfBlog/~4/bRhTg23BSY0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yourmediashelf.com/blog/2010/02/24/code4lib-day-2-closing-out-the-morning/feed/</wfw:commentRss>
		<feedburner:origLink>http://yourmediashelf.com/blog/2010/02/24/code4lib-day-2-closing-out-the-morning/</feedburner:origLink></item>
		<item>
		<title>Code4Lib 2010 - Day 2 Opening Presentations: Being Smart about How You Work</title>
		<link>http://feedproxy.google.com/~r/MediashelfBlog/~3/brGlDVj36dE/</link>
		<comments>http://yourmediashelf.com/blog/2010/02/24/code4lib-2010-day-2-opening-presentations-being-smart-about-how-you-work/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 15:34:24 +0000</pubDate>
		<dc:creator>Matt Zumwalt</dc:creator>
		
		<category><![CDATA[Matt's Adventures and Musings]]></category>

		<category><![CDATA[conferences]]></category>

		<category><![CDATA[asheville]]></category>

		<category><![CDATA[code4lib]]></category>

		<category><![CDATA[conference]]></category>

		<category><![CDATA[dev8d]]></category>

		<guid isPermaLink="false">http://yourmediashelf.com/blog/?p=253</guid>
		<description><![CDATA[Day Two of Code4Lib opened with three great presentations on ways to be smarter about how you approach application development.  This was such a strong set of particularly relevant presentations that I&#8217;m dedicating a whole post to it.  Coincidentally, all three presentations were lead by women.
For those who were not in attendance, I strongly recommend seeking out [...]]]></description>
			<content:encoded><![CDATA[<p>Day Two of Code4Lib opened with three great presentations on ways to be smarter about how you approach application development.  This was such a strong set of particularly relevant presentations that I&#8217;m dedicating a whole post to it.  Coincidentally, all three presentations were lead by women.</p>
<p>For those who were not in attendance, I strongly recommend seeking out the slides (and the video) of these presentations.  They were all engaging, concise and informative reviews of topics that are important for any developer who wants to do their job with professionalism, confidence and agility.</p>
<h4>Iterative Development Done Simply</h4>
<p>Emily Lynema from North Carolina State University gave a rapid-fire account of agile development in the real world.  Two years ago, at a conference like this the presentation(s) about agile development tended to be spoken in the abstract - &#8220;Did you realize we could work like this?&#8221;.  Now that agile development has properly caught on in many organizations, it&#8217;s rewarding to hear someone give a breakdown of &#8220;Here&#8217;s how it actually works for us on our projects.&#8221;</p>
<h4>Vampires vs. Werewolves: Ending the War Between Developers and Sysadmins with Puppet</h4>
<p>Bess Sadler from Stanford (formerly of UVA) and the Blacklight Project gave her <em>Vampires and Werewolves</em> rallying call for ending the war between developers and system administrators.  Developers are responsible for making new apps, implementing new features, and offering new technologies that meet users needs; it&#8217;s their job to innovate.  System Administrators are responsible for ensuring the stability of systems; it&#8217;s their job to be risk-averse.  This is usually a recipe for protracted pain.  Bess proposes that we can solve this by changing the way we think about the relationship between these two groups.  She also proposes using a number of industry best practices.</p>
<ul>
<li>&#8220;Let go of the anger. Really listen.&#8221;</li>
<li>Take the system administrators out to coffee</li>
<li>Test your code &amp; use continuous integration (ie. <a href="http://rspec.info/">Rspec</a> with <a href="http://eigenclass.org/hiki/rcov">rcov</a> &amp; Hudson)</li>
<li>Use system monitoring (ie. <a href="http://www.nagios.org/">nagios</a>) to monitor specific features as well as apps</li>
<li>Document your software (&#8221;You can&#8217;t RTFM if TFM doesn&#8217;t exist.&#8221;)</li>
<li>Use an automated system configuration tool (ie. <a href="http://reductivelabs.com/products/puppet/">Puppet</a>)</li>
</ul>
<div>This last item, using automated system configuration tools like puppet, is the lynchpin of Bess&#8217; argument.  By allowing developers to automate the majority of deployment tasks, you gain clear paths for developers and system administrators to share the burden of keeping the &#8220;villagers with pitchforks&#8221; happy.</div>
<h4>I am Not Your Mother: Write Your Test Code</h4>
<div>Naomi Dushay, Willy Mene, and Jessie Keck from Stanford told us &#8212; and showed us &#8212; why testing your code is a must.  Naomi opened with an opening coda &#8220;I am not your mother.  Write your test code.&#8221; and then showed us through the rcov coverage reports (in Hudson) for <a href="http://projectblacklight.org">Blacklight</a>, <a href="http://searchworks.stanford.edu">SearchWorks</a> (Stanford&#8217;s customized version of Blacklight), both of which went from below 10% test coverage to over 90% test coverage in under a year.</div>
<div>Jessie Keck followed with his account of being converted to Test Driven Development (TDD), including a quick real-time demos of writing <a href="http://rspec.info/">rspec</a> tests and <a href="http://cukes.info/">cucumber</a> tests.  He also gave some</div>
<div>Willy Mene closed out the presentation with a breakdown of the different types of tests you should be writing</div>
<div>
<ul>
<li>unit tests</li>
<li>integration tests</li>
<li>black box/functional/acceptance tests</li>
</ul>
</div>
<div>One of the crucial points that Naomi, Willy and Jessie all mentioned was the fact that all developers already write <em>informal</em> tests by calling bits of code and printing out the result in order to visually confirm that the code is working properly.  The main argument in favor of automated tests is that a computer is better than you (and your LCD-strained eyes) at performing repetitive actions.</div>
<h3>Video of the Presentations</h3>
<p>All of the Code4Lib presentations are being recorded.  They will be posted on the <a href="http://code4lib.org/conference/2010">conference website</a> sometime in the days/weeks after the event ends.</p>
<p>Possibly next year we will be able to stream the presentations live.  That would certainly make the irc channel easier for outsiders to follow.</p>
<img src="http://feeds.feedburner.com/~r/MediashelfBlog/~4/brGlDVj36dE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yourmediashelf.com/blog/2010/02/24/code4lib-2010-day-2-opening-presentations-being-smart-about-how-you-work/feed/</wfw:commentRss>
		<feedburner:origLink>http://yourmediashelf.com/blog/2010/02/24/code4lib-2010-day-2-opening-presentations-being-smart-about-how-you-work/</feedburner:origLink></item>
	</channel>
</rss>
