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

<channel>
	<title>τεχνοσοφια &#187; Development</title>
	<atom:link href="http://lackoftalent.org/michael/blog/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://lackoftalent.org/michael/blog</link>
	<description>The occasional rambling of a digital library artisan</description>
	<lastBuildDate>Sun, 24 Jan 2010 18:30:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Command-line shuffle</title>
		<link>http://lackoftalent.org/michael/blog/2009/09/26/command-line-shuffle/</link>
		<comments>http://lackoftalent.org/michael/blog/2009/09/26/command-line-shuffle/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 20:50:05 +0000</pubDate>
		<dc:creator>Michael Giarlo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://lackoftalent.org/michael/blog/?p=500</guid>
		<description><![CDATA[
Being a nerd, I tend to like the command-line.  When I&#039;m working on my laptop at home, I tend to like listening to music.  Before I discovered that mplayer had a really convenient shuffle idiom, I would invoke it thusly (to listen to all my Pavement tracks in shuffle mode):

export IFS=$'\n'
for track in [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="oai:lackoftalent.org:technosophia:500"><!-- &nbsp; --></abbr>
<p>Being a nerd, I tend to like the command-line.  When I&#039;m working on my laptop at home, I tend to like listening to music.  Before I discovered that <a href="http://en.wikipedia.org/wiki/MPlayer">mplayer</a> had a really convenient shuffle idiom, I would invoke it thusly (to listen to all my Pavement tracks in shuffle mode):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">IFS</span>=$<span style="color: #ff0000;">'\n'</span>
<span style="color: #000000; font-weight: bold;">for</span> track <span style="color: #000000; font-weight: bold;">in</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>upnp<span style="color: #000000; font-weight: bold;">/</span>MediaTomb<span style="color: #000000; font-weight: bold;">/</span>Audio<span style="color: #000000; font-weight: bold;">/</span>Artists<span style="color: #000000; font-weight: bold;">/</span>Pavement <span style="color: #660033;">-name</span> \<span style="color: #000000; font-weight: bold;">*</span>.mp3 <span style="color: #000000; font-weight: bold;">|</span> ~<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>shuffle.py<span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #000000; font-weight: bold;">do</span> <span style="color: #c20cb9; font-weight: bold;">mplayer</span> <span style="color: #007800;">$track</span>; <span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p>And the wee shuffle script I whipped together looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># shuffle.py</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">random</span>
&nbsp;
args = <span style="color: #008000;">list</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">stdin</span><span style="color: black;">&#41;</span>
<span style="color: #dc143c;">random</span>.<span style="color: black;">shuffle</span><span style="color: black;">&#40;</span>args<span style="color: black;">&#41;</span>
<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>.<span style="color: black;">writelines</span><span style="color: black;">&#40;</span>args<span style="color: black;">&#41;</span></pre></div></div>

<p>And here&#039;s the convenient shuffle idiom that renders my arg-shuffling script somewhat useless:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>upnp<span style="color: #000000; font-weight: bold;">/</span>MediaTomb<span style="color: #000000; font-weight: bold;">/</span>Audio<span style="color: #000000; font-weight: bold;">/</span>Artists<span style="color: #000000; font-weight: bold;">/</span>Pavement <span style="color: #660033;">-name</span> \<span style="color: #000000; font-weight: bold;">*</span>.mp3 <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">mplayer</span> <span style="color: #660033;">-playlist</span> - <span style="color: #660033;">-shuffle</span> <span style="color: #660033;">-loop</span> <span style="color: #000000;">0</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://lackoftalent.org/michael/blog/2009/09/26/command-line-shuffle/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JSONovich emerges</title>
		<link>http://lackoftalent.org/michael/blog/2009/08/24/jsonovich-emerges/</link>
		<comments>http://lackoftalent.org/michael/blog/2009/08/24/jsonovich-emerges/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 18:18:50 +0000</pubDate>
		<dc:creator>Michael Giarlo</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[JSONovich]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://lackoftalent.org/michael/blog/?p=492</guid>
		<description><![CDATA[
JSONovich has now emerged from the Mozilla Add-ons sandbox and is available to the masses: http://addons.mozilla.org/en-US/firefox/addon/10122.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="oai:lackoftalent.org:technosophia:492"><!-- &nbsp; --></abbr>
<p><a href="http://lackoftalent.org/michael/blog/json-in-firefox/">JSONovich</a> has now emerged from the Mozilla Add-ons <a href="http://lackoftalent.org/michael/blog/2008/12/23/jsonovich-in-the-sandbox/">sandbox</a> and is available to the masses: <a href="http://addons.mozilla.org/en-US/firefox/addon/10122">http://addons.mozilla.org/en-US/firefox/addon/10122</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lackoftalent.org/michael/blog/2009/08/24/jsonovich-emerges/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linking World Digital Library Data</title>
		<link>http://lackoftalent.org/michael/blog/2009/08/10/linking-world-digital-library-data/</link>
		<comments>http://lackoftalent.org/michael/blog/2009/08/10/linking-world-digital-library-data/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 22:44:29 +0000</pubDate>
		<dc:creator>Michael Giarlo</dc:creator>
				<category><![CDATA[APIs]]></category>
		<category><![CDATA[Cataloging and Metadata]]></category>
		<category><![CDATA[Digital Libraries and Archives]]></category>
		<category><![CDATA[Linked Data]]></category>
		<category><![CDATA[OAI-ORE]]></category>
		<category><![CDATA[World Digital Library]]></category>

		<guid isPermaLink="false">http://lackoftalent.org/michael/blog/?p=457</guid>
		<description><![CDATA[
As I mentioned earlier, I&#039;ve been learning about linked data in the context of dropping it into the World Digital Library project.  I am hopeful we&#039;ll be able to deploy the RDF views[1] before too long.  In advance of that, I thought it might be helpful to share a sample of what our [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="oai:lackoftalent.org:technosophia:457"><!-- &nbsp; --></abbr>
<p>As I <a href="/michael/blog/2009/07/31/validating-ore-from-the-command-line/">mentioned earlier</a>, I&#039;ve been learning about linked data in the context of dropping it into the <a href="http://www.wdl.org">World Digital Library</a> project.  I am hopeful we&#039;ll be able to deploy the RDF views[1] before too long.  In advance of that, I thought it might be helpful to share a sample of what our RDF would look like.  The RDF below represents the WDL item for the U.S. Constitution.  I appreciate constructive criticism.</p>
<p>A few things to note:</p>
<ul>
<li>Mmm, Unicode.</li>
<li>Item types are from the <a href="http://bibliontology.com/">Bibliographic Ontology</a>.</li>
<li>Most of the properties are from the <a href="http://dublincore.org/documents/dces/">Dublin Core Metadata Element Set</a> ontology, especially used where literals are objects rather than resources identified by URI. </li>
<li>Where possible I dug up or found URIs and used the <a href="http://dublincore.org/documents/dcmi-terms/">Dublin Core Metadata Terms</a> ontology.</li>
<li>An item is modeled as an aggregation of its constituent files, as defined in <a href="http://www.openarchives.org/ore/">OAI-ORE</a>.  The notion here is that an ORE aggregation of an item, as expressed in a resource map which is discoverable via a link header in each item detail page, is a &#034;whole&#034; item, including all of its files[2], metadata, and translations.</li>
<li>I&#039;m also making light use of the <a href="http://www.semanticdesktop.org/ontologies/nfo/">NEPOMUK File Ontology</a> to express that constituent files are files, and to be explicit about file sizes so that folks know in advance of retrieving it how large files are.</li>
<li>Links out to <a href="http://purl.org/NET/decimalised#">DDC</a> (Decimalised Database of Concepts), <a href="http://www.lingvoj.org/">Lingvoj</a>, <a href="http://dbpedia.org/">DBpedia</a>, and <a href="http://id.loc.gov/authorities/">Library of Congress Authorities &amp; Vocabularies</a> (e.g., LC Subject Headings) are included where possible. [3] I&#039;d be especially stoked to hear of other vocabs I might link to.  The more linked the data, the better.</li>
<li>The output below is Turtle for readability, but the application will offer up RDF/XML.</li>
</ul>
<p>The data after the jump:<br />
<span id="more-457"></span></p>

<div class="wp_syntax"><div class="code"><pre class="ttl" style="font-family:monospace;">@prefix rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; .
@prefix dc: &lt;http://purl.org/dc/elements/1.1/&gt; .
@prefix dcterms: &lt;http://purl.org/dc/terms/&gt; .
@prefix nfo: &lt;http://www.semanticdesktop.org/ontologies/nfo#&gt; .
@prefix ore: &lt;http://www.openarchives.org/ore/terms/&gt; .
@prefix rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt; .
&nbsp;
&lt;http://localhost/static/c/2708/service/00303_2003_001_pr.jpg&gt;
    dc:format &quot;image/jpeg&quot; ;
    nfo:fileSize &quot;259485&quot;^^&lt;http://www.w3.org/2001/XMLSchema#long&gt; ;
    a nfo:FileDataObject .
&nbsp;
&lt;http://localhost/static/c/2708/service/00303_2003_003_pr.jpg&gt;
    dc:format &quot;image/jpeg&quot; ;
    nfo:fileSize &quot;267031&quot;^^&lt;http://www.w3.org/2001/XMLSchema#long&gt; ;
    a nfo:FileDataObject .
&nbsp;
&lt;http://localhost/static/c/2708/reference/00303_2003_004_pr_thumb_item.gif&gt;
    dc:format &quot;image/gif&quot; ;
    nfo:fileSize &quot;56620&quot;^^&lt;http://www.w3.org/2001/XMLSchema#long&gt; ;
    a nfo:FileDataObject .
&nbsp;
&lt;http://localhost/static/c/2708/service/00303_2003_004_pr.jpg&gt;
    dc:format &quot;image/jpeg&quot; ;
    nfo:fileSize &quot;233875&quot;^^&lt;http://www.w3.org/2001/XMLSchema#long&gt; ;
    a nfo:FileDataObject .
&nbsp;
&lt;http://localhost/static/c/2708/service/00303_2003_002_pr.jpg&gt;
    dc:format &quot;image/jpeg&quot; ;
    nfo:fileSize &quot;245809&quot;^^&lt;http://www.w3.org/2001/XMLSchema#long&gt; ;
    a nfo:FileDataObject .
&nbsp;
&lt;http://localhost/item/2708/about.rdf&gt;
    dcterms:created &quot;2009-08-10T18:11:25-04:00&quot;^^dcterms:W3CDTF ;
    dcterms:creator &lt;http://dbpedia.org/resource/World_Digital_Library&gt; ;
    dcterms:modified &quot;2009-08-10T18:11:25-04:00&quot;^^dcterms:W3CDTF ;
    ore:describes &lt;http://localhost/item/2708/about.rdf#item&gt; ;
    a ore:ResourceMap .
&nbsp;
&lt;http://localhost/item/2708/about.rdf#item&gt;
    dc:created &quot;17 Septembre 1787&quot;@fr, &quot;17 de septiembre de 1787&quot;@es, &quot;17 de setembro de 1787&quot;@pt, &quot;17 сентября 1787 г.&quot;@ru, &quot;1787年9月17日&quot;@zh, &quot;September 17, 1787&quot;@en, &quot;&quot;&quot;١٧ ايلول ١٧٨٧
&quot;&quot;&quot;@ar ;
    dc:creator &quot;Constitutional Convention, United States&quot;@en, &quot;Convención Constituyente, Estados Unidos&quot;@es, &quot;Convention constitutionnelle, États-Unis&quot;@fr, &quot;Convenção Constitucional, Estados Unidos&quot;@pt, &quot;Конституционная Конвенция, Соединенные Штаты&quot;@ru, &quot;الاتفاقية الدستورية، الولايات المتحدة&quot;@ar, &quot;制宪会议，美国&quot;@zh ;
    dc:extent &quot;Manuscript (4 pages of parchment)&quot;@en, &quot;Manuscrit (4 pages de parchemin)&quot;@fr, &quot;Manuscrito (4 páginas de pergamino)&quot;@es, &quot;Manuscrito (4 páginas em pergaminho)&quot;@pt, &quot;Рукопись (4 пергаментных страницы)&quot;@ru, &quot;مخطوطة (٤ صفحات من الورق النفيس)&quot;@ar, &quot;手草本（4 页羊皮纸）&quot;@zh ;
    dc:language &quot;Anglais&quot;@fr, &quot;English&quot;@en, &quot;Inglés&quot;@es, &quot;Inglês&quot;@pt, &quot;Английский язык&quot;@ru, &quot;الإنجليزية&quot;@ar, &quot;英语&quot;@zh ;
    dc:publisher &quot;Administração de Registros e Arquivos Nacionais&quot;@pt, &quot;Archives Nationales et Administration des documents (NARA) des États-Unis d'Amérique &quot;@fr, &quot;Los Archivos Nacionales y Administración de Documentos (NARA) de los Estados Unidos de América&quot;@es, &quot;National Archives and Records Administration&quot;@en, &quot;Управление национальных архивов и документов&quot;@ru, &quot;الإدارة الأمريكية للوثائق والسجلات الوطنية&quot;@ar, &quot;美国国家文件与档案管理局&quot;@zh ;
    dc:subject &quot;Constituciones&quot;@es, &quot;Constituições&quot;@pt, &quot;Constitutional &amp; administrative law&quot;@en, &quot;Constitutions&quot;@en, &quot;Constitutions&quot;@fr, &quot;Derecho constitucional y administrativo&quot;@es, &quot;Direito constitucional e administrativo&quot;@pt, &quot;Droit constitutionnel et administratif&quot;@fr, &quot;Politics and government&quot;@en, &quot;Politique et gouvernement&quot;@fr, &quot;Política e governo&quot;@pt, &quot;Política y gobierno&quot;@es, &quot;Конституции&quot;@ru, &quot;Конституционное и административное право&quot;@ru, &quot;Политика и правительство&quot;@ru, &quot;الدساتير&quot;@ar, &quot;السياسة والحكومة&quot;@ar, &quot;القانون الدستوري والإداري.&quot;@ar, &quot;宪法&quot;@zh, &quot;宪法 &amp; 行政法&quot;@zh, &quot;政治和政府&quot;@zh ;
    dc:title &quot;Constitución de los Estados Unidos&quot;@es, &quot;Constituição dos Estados Unidos&quot;@pt, &quot;Constitution des États-Unis&quot;@fr, &quot;Constitution of the United States&quot;@en, &quot;Конституция Соединенных Штатов&quot;@ru, &quot;دستور الولايات المتحدة&quot;@ar, &quot;美国宪法&quot;@zh ;
    dcterms:DDC &quot;342&quot; ;
    dcterms:LCSH &lt;http://id.loc.gov/authorities/label/Constitutions&gt; ;
    dcterms:alternative &quot;Constitution of the United States&quot;@en ;
    dcterms:dateSubmitted &quot;2009-05-07T06:45:21-04:00&quot;^^dcterms:W3CDTF ;
    dcterms:description &quot;1787 年 5 月 14 日，制宪会议在费城的议会大楼（独立厅）召开，目的是修订《邦联条例》。 由于开始时只有两个州的代表团出席，成员不得不一天天地休会，直到 5 月 25 日与会人数达到法定的七个州。 通过讨论和争辩，6 月中旬时明确显示大会与其修改现有的《联邦条例》不如为政府重新起草一份全新的框架。 整个夏季，代表们都在非公开会议中辩论、起草、重新起草新宪法的条款。 主要的争论问题包括要赋予中央政府多大权利、允许各州在国会中有多少个代表席位以及这些代表应该如何选举产生——由人民直接选举还是由各州立法人员选举产生。 这部宪法是很多人智慧的结晶，是合作政治运作和妥协艺术的典范。&quot;@zh, &quot;A Convenção Federal reuniu-se na Casa de Estado (Hall da Independência), em Filadélfia, em 14 de maio de 1787 para revisar os Artigos da Confederação. Em virtude de estarem presentes, inicialmente, as delegações de apenas dois estados, os membros suspenderam os trabalhos, dia após dia, até que fosse atingido o quórum de sete estados em 25 de maio. Através de discussões e debates ficou claro, em meados de junho que, em vez de alterar os atuais artigos da Confederação, a convenção deveria elaborar uma estrutura inteiramente nova para o governo. Ao longo de todo o verão, os delegados debateram, elaboraram e reelaboraram os artigos da nova Constituição em sessões fechadas. Entre os principais pontos em questão estavam o grau de poder permitido ao governo central, o número de representantes no Congresso para cada Estado, e como estes representantes deveriam ser eleitos - diretamente pelo povo ou pelos legisladores do estado. A Constituição foi o trabalho de muitas mentes e permanece como um modelo de cooperação entre lideranças políticas e da arte da condescendência.&quot;@pt, &quot;La Convención Federal se reunió en la Cámara del Estado (Salón de la Independencia) en Filadelfia el 14 de mayo de 1787, para revisar los artículos de la Confederación. Debido a que las delegaciones de sólo dos estados estuvieron presentes inicialmente, los miembros levantaron sesión de un día para el siguiente hasta que se obtuvo un quórum de siete estados el 25 de mayo. A través de la discusión y el debate se hizo evidente a mediados de junio que, en lugar de modificar los actuales artículos de la Confederación, la convención prepararía un marco totalmente nuevo para el gobierno. Durante todo el verano, los delegados debatieron, prepararon y redactaron nuevamente los artículos de la nueva Constitución en sesiones a puerta cerrada. Entre los principales puntos en cuestión estuvieron cuánto poder otorgar al gobierno central, el número de representantes en el Congreso que se iban a permitir a cada Estado y la forma en que estos representantes debían ser elegidos, directamente por el pueblo o por los legisladores estatales. La Constitución fue el resultado del trabajo de muchas mentes y se erige como modelo de cooperación política y del arte del compromiso.&quot;@es, &quot;La Convention Fédérale s'assembla dans la Chambre Législative (Independence Hall) à Philadelphie le 14 mai 1787, pour réviser les articles de la Confédération. En raison de la seule présence initiale des délégations de deux États, les membres ajournèrent d'un jour à l'autre jusqu'à ce que le quorum de sept États soit obtenu le 25 mai. Â travers les discussions et les débats, il devint clair dès la mi-juin que, plutôt que de modifier les articles existants de la Confédération, la convention allait plutôt ébaucher un cadre entièrement nouveau pour le gouvernement. Tout au long de l'été, les délégués débattirent, élaborèrent, et remanièrent les articles de la nouvelle Constitution, à huis clos. Les principaux points litigieux portaient sur la puissance à accorder au gouvernement central, sur le nombre de représentants au Congrès pour chaque État, et sur le mode d'élection de ces représentants - directement par le peuple ou par les législateurs de l'état. La Constitution fut l'œuvre de nombreux esprits et reste un modèle de coopération politique et de l'art du compromis.&quot;@fr, &quot;The Federal Convention convened in the State House (Independence Hall) in Philadelphia on May 14, 1787, to revise the Articles of Confederation. Because the delegations from only two states were present initially, the members adjourned from one day to the next until a quorum of seven states was obtained on May 25. Through discussion and debate it became clear by mid-June that, rather than amend the existing Articles of Confederation, the convention would draft an entirely new framework for the government. All through the summer, the delegates debated, drafted, and redrafted the articles of the new Constitution in closed sessions. Among the chief points at issue were how much power to allow the central government, how many representatives in Congress to allow each state, and how these representatives should be elected--directly by the people or by the state legislators. The Constitution was the work of many minds and stands as a model of cooperative statesmanship and the art of compromise.&quot;@en, &quot;Федеральное собрание собралось на заседание в Доме правительства (зал Независимости) 14 мая 1787 года для пересмотра Статей Конфедерации. Поскольку вначале на заседании присутствовали представители только двух штатов, Собрание было распущено на несколько дней до тех пор, пока 25 мая не был обеспечен кворум из представителей семи штатов. В ходе дискуссий и дебатов к середине июня стало понятно, что собрание было намерено скорее составить новый вариант структуры правительства, нежели чем пересматривать существующие Статьи Конфедерации. В течение всего лета делегаты обсуждали, составляли черновые варианты статей новой Конституции и тут же их пересматривали в ходе закрытых заседаний. Среди основных обсуждавшихся вопросов были вопросы степени власти и полномочий, которыми должно быть наделено центральное правительство, количества представителей в Конгрессе от каждого штата, а также процедуры переизбрания этих представителей — непосредственно жителями штатов или законодательными собраниями штатов. Конституция была плодом работы многих политиков и является ярким примером сотрудничества государственных деятелей и искусства компромисса.&quot;@ru, &quot;اجتمع ممثلو الاتحاد الفدرالي في قصر الدولة (قاعة الاستقلال) في فيلادلفيا يوم ١٤  أيار ١٧٨٧ لتعديل النظام الأساسي للاتحاد. وحيث حضر وفدان اثنان فقط من وفود الولايات في البداية، رفع الأعضاء الحضور الجلسة من يوم إلى آخر حتى اكتمل النصاب القانوني بحضور وفود سبع ولايات في ٢٥ أيار. وقد اتضح خلال المناقشات والحوار بحلول منتصف حزيران أنه بدلا من تعديل مواد الاتحاد الكونفدرالي القائمة، كان على المؤتمرين صياغة إطار جديد تماما بالنسبة للحكومة. وطوال ذلك الصيف، ناقش المندوبون وصاغوا ثم أعادوا صياغة مواد الدستور الجديد في جلسات مغلقة. ومن بين النقاط الرئيسية التي دار حولها الجدل مدى صلاحيات الحكومة المركزية وعدد الممثلين في الكونغرس لكل ولاية ، وكيفية انتخاب هؤلاء ممثلين -- بالانتخاب المباشر من الشعب أو من قبل مشرّعي الولايات. لقد كان الدستور من عمل عقول كثيرة وهو يمثل نموذجا لفن الحكم التعاوني حنكة التوصل إلى الحلول الوسط.&quot;@ar ;
    dcterms:identifier &quot;http://localhost/item/2708/about.rdf#item&quot; ;
    dcterms:language &lt;http://www.lingvoj.org/lang/en&gt; ;
    dcterms:publisher &lt;http://dbpedia.org/resource/National_Archives_and_Records_Administration&gt; ;
    dcterms:spatial &lt;http://dbpedia.org/resource/North_America&gt;, &lt;http://dbpedia.org/resource/United_States_of_America&gt;, &quot;América del Norte&quot;@es, &quot;América do Norte&quot;@pt, &quot;Amérique du Nord&quot;@fr, &quot;Estados Unidos da América&quot;@pt, &quot;Estados Unidos de América&quot;@es, &quot;North America&quot;@en, &quot;United States of America&quot;@en, &quot;États-Unis d'Amérique&quot;@fr, &quot;Северная Америка&quot;@ru, &quot;Соединенные Штаты Америки&quot;@ru, &quot;أمريكا الشمالية&quot;@ar, &quot;الولايات المتحدة الأمريكية&quot;@ar, &quot;北美&quot;@zh, &quot;美国&quot;@zh ;
    dcterms:subject &lt;http://dbpedia.org/resource/Constitutions&gt; ;
    dcterms:temporal &quot;1700 AD - 1799 AD&quot;@en, &quot;1700 ap. J.-C. - 1799 ap. J.-C.&quot;@fr, &quot;1700 d.C. - 1799 d.C.&quot;@es, &quot;1700 d.C. - 1799 d.C.&quot;@pt, &quot;1700 н.э. - 1799 н.э.&quot;@ru, &quot;1700 公元 - 1799 公元&quot;@zh, &quot;١٧٠٠ م - ١٧٩٩ م&quot;@ar ;
    dcterms:title &lt;http://dbpedia.org/resource/Constitution_of_the_United_States&gt; ;
    ore:aggregates &lt;http://localhost/static/c/2708/reference/00303_2003_004_pr_thumb_item.gif&gt;, &lt;http://localhost/static/c/2708/service/00303_2003_001_pr.jpg&gt;, &lt;http://localhost/static/c/2708/service/00303_2003_002_pr.jpg&gt;, &lt;http://localhost/static/c/2708/service/00303_2003_003_pr.jpg&gt;, &lt;http://localhost/static/c/2708/service/00303_2003_004_pr.jpg&gt; ;
    ore:isDescribedBy &lt;http://localhost/item/2708/about.rdf&gt; ;
    a &lt;http://purl.org/ontology/bibo/Manuscript&gt; ;
    rdfs:seeAlso &lt;http://hdl.loc.gov/loc.wdl/dna.2708&gt; .</pre></div></div>

<h5>Notes</h5><ol class="footnotes"><li id="footnote_0_457" class="footnote">Sadly, the URIs are uglyish due to some constraints from our caching configuration.  I figure we can redirect uglyish URIs to cool ones and make use of owl:sameAs if those constraints go away.</li><li id="footnote_1_457" class="footnote"><em>sans</em> certain low-quality derivatives such as small thumbnails and tiles for the zoom interface</li><li id="footnote_2_457" class="footnote">I was poking through the DBpedia output for <a href="http://www.geonames.org/">Geonames</a> URIs as well, but my method was way too slow and clunky, so that&#039;s disabled for the time being.  Clients can always follow their noses from the DBpedia output.</li></ol><br/>
<hr/>]]></content:encoded>
			<wfw:commentRss>http://lackoftalent.org/michael/blog/2009/08/10/linking-world-digital-library-data/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Validating ORE from the Command-line</title>
		<link>http://lackoftalent.org/michael/blog/2009/07/31/validating-ore-from-the-command-line/</link>
		<comments>http://lackoftalent.org/michael/blog/2009/07/31/validating-ore-from-the-command-line/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 18:52:54 +0000</pubDate>
		<dc:creator>Michael Giarlo</dc:creator>
				<category><![CDATA[Linked Data]]></category>
		<category><![CDATA[OAI-ORE]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[World Digital Library]]></category>

		<guid isPermaLink="false">http://lackoftalent.org/michael/blog/?p=440</guid>
		<description><![CDATA[
I&#039;ve been periodically poking at getting Linked Data/RDF views hooked into the World Digital Library web application, following Ed Summers&#039; lead from his work on Chronicling America.  The RDF views also use the OAI-ORE vocabulary to express aggregations &#8212; in WDL, an item is an aggregation of its constituent files.  The goal is [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="oai:lackoftalent.org:technosophia:440"><!-- &nbsp; --></abbr>
<p>I&#039;ve been periodically poking at getting <a href="http://linkeddata.org/">Linked Data</a>/RDF views hooked into the <a href="http://www.wdl.org/">World Digital Library</a> web application, following <a href="http://inkdroid.org/journal/">Ed Summers</a>&#039; <a href="http://lists.w3.org/Archives/Public/public-lod/2009May/0301.html">lead</a> from his work on <a href="http://chroniclingamerica.loc.gov/">Chronicling America</a>.  The RDF views also use the <a href="http://www.openarchives.org/ore/">OAI-ORE</a> vocabulary to express aggregations &#8212; in WDL, an item is an aggregation of its constituent files.  The goal is to provide a semantically rich and holistic representation of a WDL item (identifier, constituent files, metadata, translations, and so on). </p>
<p>The ORE format is a new one for me so it&#039;s hard to say whether the output of my dev branch is valid ORE or not.  Plus I&#039;m a sucker for validators.  Turns out <a href="http://www.csc.liv.ac.uk/~azaroth/">Rob Sanderson</a> has developed a <a href="http://code.google.com/p/foresite-toolkit/">Python library for validating ORE</a>, and this little snippet is what I&#039;ve been using to validate the ORE.  I didn&#039;t put much effort into making it readable, so much as banging something functional out so I can meet deadlines, so mea culpa and all that.  But without further hemming and hawing, the code:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># validate.py</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">from</span> foresite <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
&nbsp;
rem = RdfLibParser<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">parse</span><span style="color: black;">&#40;</span>ReMDocument<span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
aggr = rem.<span style="color: black;">aggregation</span>
n3 = RdfLibSerializer<span style="color: black;">&#40;</span><span style="color: #483d8b;">'n3'</span><span style="color: black;">&#41;</span>
rem2 = aggr.<span style="color: black;">register_serialization</span><span style="color: black;">&#40;</span>n3<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> rem2.<span style="color: black;">get_serialization</span><span style="color: black;">&#40;</span>n3<span style="color: black;">&#41;</span>.<span style="color: black;">data</span></pre></div></div>

<p>Most of this code is naively copied and pasted from Rob&#039;s excellent <a href="http://code.google.com/p/foresite-toolkit/wiki/PythonLibrary">Foresite documentation</a>.</p>
<p>I invoke it thusly: <code>python validate.py {URL}</code></p>
<p>And the output:</p>

<div class="wp_syntax"><div class="code"><pre class="n3" style="font-family:monospace;">@prefix _27: &lt;http://www.semanticdesktop.org/ontologies/nfo#&gt;.
@prefix _28: &lt;http://localhost/en/item/1/id#&gt;.
@prefix _29: &lt;http://localhost/en/item/1/&gt;.
@prefix bibo: &lt;http://purl.org/ontology/bibo/&gt;.
@prefix dc: &lt;http://purl.org/dc/elements/1.1/&gt;.
@prefix dcterms: &lt;http://purl.org/dc/terms/&gt;.
@prefix ore: &lt;http://www.openarchives.org/ore/terms/&gt;.
@prefix rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt;.
@prefix rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;.
@prefix rdfs1: &lt;http://www.w3.org/2001/01/rdf-schema#&gt;.
&nbsp;
 _28:ResourceMap a ore:ResourceMap;
     dc:format &quot;text/rdf+n3&quot;;
     dcterms:created &quot;2009-07-31T14:23:31Z&quot;;
     dcterms:modified &quot;2009-07-31T14:23:31Z&quot;;
     ore:describes _29:id. 
&nbsp;
 _29:id a bibo:Image,
         ore:Aggregation;
     dcterms:DDC &quot;973&quot;;
     dcterms:alternative &quot;Antietam, Maryland. Allan Pinkerton, President Lincoln, and Major General John A. McClernand&quot;@en;
     dcterms:created &quot;1862年10月3日&quot;@zh,
         &quot;3 de octubre de 1862&quot;@es,
         &quot;3 de outubro de 1862&quot;@pt,
         &quot;3 octobre 1862&quot;@fr,
         &quot;3 октября 1862 года&quot;@ru,
         &quot;October 3, 1862&quot;@en,
         &quot; ٣ آكتوبر، ١٨٦٢&quot;@ar;
     dcterms:creator &quot;Gardner, Alexander&quot;@en,
         &quot;Gardner, Alexander&quot;@es,
         &quot;Gardner, Alexander&quot;@fr,
         &quot;Gardner, Alexander&quot;@pt,
         &quot;Гарднер, Александр&quot;@ru,
         &quot;جاردنر, أليكسندر&quot;@ar,
         &quot;加德纳, 亚历山大&quot;@zh;
... (and so on and so forth)
     dcterms:title &quot;Antietam, Maryland. Allan Pinkerton, President Lincoln, and Major General John A. McClernand: Another View&quot;@en,
         &quot;Antietam, Maryland. Allan Pinkerton, el Presidente Lincoln y el General Principal John A. McClernand: Otra visión&quot;@es,
         &quot;Antietam, Maryland. Allan Pinkerton, le président Lincoln et le général-major John A. McClernand: Autre vue&quot;@fr,
         &quot;Antietam, Maryland. Allan Pinkerton,  Presidente Lincoln e Major-General John A. McClernand: Outra Vista&quot;@pt,
         &quot;Антитэм, штат Мэриленд. Аллан Пинкертон, президент Линкольн и генерал-майор Джон А. Макклернанд: Другой снимок&quot;@ru,
         &quot;أنتينام، ميريلاند ألان بينكرتون، الرئيس لينكولن، واللواء جون أ. ماكليرناند: منظر آخر&quot;@ar,
         &quot;安蒂特姆，马里兰州 艾伦·平克顿、林肯总统和少将约翰·A ·马克克拉南: 另一个视角&quot;@zh;
     ore:aggregates &lt;http://localhost/static/c/1/reference/04326u_thumb_item.gif&gt;,
         &lt;http://localhost/static/c/1/service/04326u.tif&gt;;
     ore:isDescribedBy &lt;http://localhost/en/item/1/item.rdf&gt;;
     rdfs:seeAlso &lt;http://hdl.loc.gov/loc.wdl/dlc.1&gt;. 
&nbsp;
 &lt;http://localhost/static/c/1/reference/04326u_thumb_item.gif&gt; a _27:FileDataObject;
     dcterms:format &quot;image/gif&quot;;
     _27:fileSize &quot;34531&quot;^^&lt;http://www.w3.org/2001/XMLSchema#long&gt;. 
&nbsp;
 &lt;http://localhost/static/c/1/service/04326u.tif&gt; a _27:FileDataObject;
     dcterms:format &quot;image/tiff&quot;;
     _27:fileSize &quot;1301614&quot;^^&lt;http://www.w3.org/2001/XMLSchema#long&gt;. 
&nbsp;
 ore:Aggregation rdfs1:isDefinedBy &lt;http://www.openarchives.org/ore/terms/&gt;;
     rdfs1:label &quot;Aggregation&quot;. 
&nbsp;
 ore:ResourceMap rdfs1:isDefinedBy &lt;http://www.openarchives.org/ore/terms/&gt;;
     rdfs1:label &quot;ResourceMap&quot;.</pre></div></div>

<p>You might pick up on some warts I have yet to fix, but there you go.</p>
]]></content:encoded>
			<wfw:commentRss>http://lackoftalent.org/michael/blog/2009/07/31/validating-ore-from-the-command-line/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WDL metadata mapping, and, parsing TEI in Python</title>
		<link>http://lackoftalent.org/michael/blog/2009/07/13/wdl-metadata-mapping-and-parsing-tei-in-python/</link>
		<comments>http://lackoftalent.org/michael/blog/2009/07/13/wdl-metadata-mapping-and-parsing-tei-in-python/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 22:27:46 +0000</pubDate>
		<dc:creator>Michael Giarlo</dc:creator>
				<category><![CDATA[Cataloging and Metadata]]></category>
		<category><![CDATA[Metadata Evaluation Toolkit]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[World Digital Library]]></category>

		<guid isPermaLink="false">http://lackoftalent.org/michael/blog/?p=430</guid>
		<description><![CDATA[
Context
Early on in the effort to develop the first public version of the World Digital Library web application, we developed a (non-public) Django-based cataloging application where Library of Congress catalogers could manage metadata for WDL items.  Management in this sense includes creation of records, editing of records, versioning of edits, mapping of source records, [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="oai:lackoftalent.org:technosophia:430"><!-- &nbsp; --></abbr>
<h2>Context</h2>
<p>Early on in the effort to develop the first public version of the World Digital Library <a href="http://www.wdl.org/">web application</a>, we developed a (non-public) Django-based cataloging application where Library of Congress catalogers could manage metadata for WDL items.  Management in this sense includes creation of records, editing of records, versioning of edits, mapping of source records, and some light workflow for assignment of records to individual catalogers and for hooking into translation processes[1].  </p>
<p>I worked primarily on the source record mapping tools.  They take a number of formats as input and are called by the cataloging application to map metadata from these formats into the WDL domain model.  Several though not all of which are XML-based, and thus easily dealt with in Python, via the <a href="http://codespeak.net/lxml/api.html">etree module in the lxml package</a>.  </p>
<p><a href="http://onebiglibrary.net/">Dan</a> recently kicked off a new R&#038;D project for evaluating (any) metadata against any number of metadata profiles, mapping into a generic data dictionary, the goal being to determine how feasible it would be to develop a toolset for aiding remediation of metadata across any number of digital collections.  I have been working on this project with Dan, and got started by seeing how generalizable the WDL metadata mapping tools are.  Turns out they&#039;re fairly generalizable once you tweak the various format-specific mapping rules to map into the generic data dictionary model rather than the WDL model (around 15 elements, and somewhere between Dublin Core and MODS in terms of specificity but flatly structured like DC).</p>
<p>Some of the test data I am working with now, that has nothing to do with WDL, is SGML-based <a href="http://quod.lib.umich.edu/t/tei/">TEI 2</a> markup.  The closest I worked with on WDL was <a href="http://www.tei-c.org/release/doc/tei-p5-doc/html/MS.html">TEI P5 for manuscript description</a> which is serialized in XML.  Turns out my TEI mapping rules from before blew up on this TEI 2 stuff, as lxml.etree (naturally) wasn&#039;t digging the non-XML input.  I googled around a bit for how best to parse TEI (or any SGML) in Python and then discovered it&#039;s actually simple as pie.</p>
<h2>Code</h2>
<p>If you&#039;ve got the <a href="http://www.crummy.com/software/BeautifulSoup/">BeautifulSoup</a> module installed[2]:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">from</span> BeautifulSoup <span style="color: #ff7700;font-weight:bold;">import</span> BeautifulSoup
<span style="color: #66cc66;">&gt;&gt;&gt;</span> tei = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'foo.sgm'</span><span style="color: black;">&#41;</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> BeautifulSoup<span style="color: black;">&#40;</span>tei<span style="color: black;">&#41;</span>.<span style="color: black;">findAll</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'title'</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>.<span style="color: #dc143c;">string</span>
u<span style="color: #483d8b;">'[Memorandum to Dr. Botkin]: a machine readable transcription.'</span></pre></div></div>

<p>If not, the <a href="http://codespeak.net/lxml/lxmlhtml.html">lxml.html</a> module works too:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">from</span> lxml <span style="color: #ff7700;font-weight:bold;">import</span> html
<span style="color: #66cc66;">&gt;&gt;&gt;</span> h = html.<span style="color: black;">parse</span><span style="color: black;">&#40;</span><span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'foo.sgm'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> h.<span style="color: black;">xpath</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'//title'</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>.<span style="color: black;">text</span>
<span style="color: #483d8b;">'[Memorandum to Dr. Botkin]: a machine readable transcription.'</span></pre></div></div>

<h2>Data</h2>
<p>And here&#039;s what the sample data looks like:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;">&lt;!doctype tei2 public <span style="color: #ff0000;">&quot;-//Library of Congress - Historical Collections (American Memory)//DTD ammem.dtd//EN&quot;</span> </span>
<span style="color: #009900;"><span style="color: #66cc66;">&#91;</span></span>
<span style="color: #009900;">&lt;!entity % images system <span style="color: #ff0000;">&quot;07010101.ent&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span> %images;
]&gt;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tei2<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;teiheader</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">date.created</span>=<span style="color: #ff0000;">&quot;1994/03/15&quot;</span> <span style="color: #000066;">date.updated</span>=<span style="color: #ff0000;">&quot;2002/04/05&quot;</span> <span style="color: #000066;">status</span>=<span style="color: #ff0000;">&quot;updated&quot;</span> <span style="color: #000066;">creator</span>=<span style="color: #ff0000;">&quot;National Digital Library Program</span>
<span style="color: #009900;">, Library of Congress&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filedesc<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;titlestmt<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;amid</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;aggitemid&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>wpa0-07010101<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/amid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>[Memorandum to Dr. Botkin]: a machine readable transcription.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;amcol<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;amcolname<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Life Histories from the Folklore Project, WPA Federal Writers<span style="color: #ddbb00;">&amp;apos;</span> Project, 1936-1940; American Memory, Library of Congress.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/amcolname<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;amcolid</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;aggid&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/amcolid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/amcol<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;respstmt<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;resp<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Selected and converted.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/resp<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>American Memory, Library of Congress.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/respstmt<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/titlestmt<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;publicationstmt<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Washington, DC, 1994.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Preceding element provides place and date of transcription only.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>For more information about this text and this American Memory collection, refer to accompanying matter.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/publicationstmt<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sourcedesc<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;lccn<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/lccn<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sourcecol<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>U.S. Work Projects Administration, Federal Writers<span style="color: #ddbb00;">&amp;apos;</span> Project (Folklore Project, Life Histories, 1936-39); Manuscript Division, Library of Congress.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/sourcecol<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;copyright<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Copyright status not determined; refer to accompanying matter.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/copyright<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/sourcedesc<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filedesc<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;encodingdesc<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;projectdesc<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>The National Digital Library Program at the Library of Congress makes digitized historical materials available for education and scholarship.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/projectdesc<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;editorialdecl<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>This transcription is intended to have an accuracy of 99.95 percent or greater and is not intended to reproduce the appearance of the original work.  The accompanying images provide a facsimile of this work and represent the appearance of the original.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/editorialdecl<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;encodingdate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1994/03/15<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/encodingdate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;revdate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2002/04/05<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/revdate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/encodingdesc<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/teiheader<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;text</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;manuscript&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;body<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pageinfo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;controlpgno</span> <span style="color: #000066;">entity</span>=<span style="color: #ff0000;">&quot;I07010101&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>0001<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/controlpgno<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;printpgno<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/printpgno<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/pageinfo<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Memorandum to Dr. Botkin from G. B. Roberts, May 26, 1941<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Subject:  Alabama Material<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>This material has not yet been accessioned and has only 
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;del</span> <span style="color: #000066;">rend</span>=<span style="color: #ff0000;">&quot;overstrike&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>beeen<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/del<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> been roughly classified as life histories, folklore, and miscellaneous data and copy save in the case of the 2 ex-slave items and the essay on Jesse Owens, each of which was recommended.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Total no. of items recommended:  3 (14 pp.) 
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;handwritten<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>In progress<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/handwritten<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/body<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/text<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/tei2<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<h5>Notes</h5><ol class="footnotes"><li id="footnote_0_430" class="footnote">Catalogers cataloged stuff in the English language, but every metadata record needed to be translated into the other six U.N. languages: Spanish, Russian, French, Arabic, Chinese, and Portuguese.</li><li id="footnote_1_430" class="footnote">And you are but one <code>sudo easy_install BeautifulSoup</code> away from that.</li></ol><br/>
<hr/>]]></content:encoded>
			<wfw:commentRss>http://lackoftalent.org/michael/blog/2009/07/13/wdl-metadata-mapping-and-parsing-tei-in-python/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JSONovich update</title>
		<link>http://lackoftalent.org/michael/blog/2008/12/29/jsonovich-update/</link>
		<comments>http://lackoftalent.org/michael/blog/2008/12/29/jsonovich-update/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 01:00:32 +0000</pubDate>
		<dc:creator>Michael Giarlo</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[JSONovich]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://lackoftalent.org/michael/blog/?p=251</guid>
		<description><![CDATA[
JSONovich is now up to version 0.6.  Recent revisions have added the following functionality:

Reads in JSON and converts to UTF-8 for some naive Unicode handling
Wraps long lines at the right edge of the window
Adds a check to see if a native JSON parsing library is already loaded (as will be the case in Firefox [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="oai:lackoftalent.org:technosophia:251"><!-- &nbsp; --></abbr>
<p><a href="/michael/blog/json-in-firefox">JSONovich</a> is now up to version 0.6.  Recent revisions have added the following functionality:</p>
<ul>
<li>Reads in JSON and converts to UTF-8 for some naive Unicode handling</li>
<li>Wraps long lines at the right edge of the window</li>
<li>Adds a check to see if a native JSON parsing library is already loaded (as will be the case in Firefox 3.1). Uses that library if so, otherwise loads the module included in JSONovich.</li>
<li>Handles JSON syntax errors more gracefully. Used to eat bad data and display nothing, but syntax errors (from the JSON parser) are now surfaced.</li>
</ul>
<p>I&#039;ve also tossed the source up on <a href="http://code.google.com/p/jsonovich/" target="_blank">code.google.com</a> for version control.</p>
<p>In the meantime, those of you who are using JSONovich can help increase its exposure by heading over to its entry at <a href="https://addons.mozilla.org/en-US/firefox/addon/10122" target="_blank">addons.mozilla.org</a>, logging in, downloading, rating, and reviewing the extension.  Reviews and ratings help get extensions &#034;promoted&#034; from the sandbox to the public site, which provides the ability for automatic updates when new versions of the extension are released.</p>
]]></content:encoded>
			<wfw:commentRss>http://lackoftalent.org/michael/blog/2008/12/29/jsonovich-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Molotovs away!</title>
		<link>http://lackoftalent.org/michael/blog/2008/12/23/molotovs-away/</link>
		<comments>http://lackoftalent.org/michael/blog/2008/12/23/molotovs-away/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 03:29:50 +0000</pubDate>
		<dc:creator>Michael Giarlo</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Digital Libraries and Archives]]></category>
		<category><![CDATA[Libraries]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Repositories]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://lackoftalent.org/michael/blog/?p=243</guid>
		<description><![CDATA[
Lest I be criticized for unfairly calling out former employers in my recent Burn the Walled Gardens rant, I share news that the Rutgers University Libraries have boldly ventured into the world of open source software: RUcore Open Source Development.  Huzzah!  Thanks to the molotov-hurling Shaun Ellis, a peacenik/code monkey/musician extraordinaire, for all [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="oai:lackoftalent.org:technosophia:243"><!-- &nbsp; --></abbr>
<p>Lest I be criticized for unfairly calling out former employers in my recent <a href="/michael/blog/2008/12/15/burn-the-walled-gardens/">Burn the Walled Gardens rant</a>, I share news that the Rutgers University Libraries have boldly ventured into the world of open source software: <a href="http://rucore.libraries.rutgers.edu/open/" target="_blank">RUcore Open Source Development</a>.  Huzzah!  Thanks to the molotov-hurling <a href="http://www.sdellis.com/" target="_blank">Shaun Ellis</a>, a peacenik/code monkey/musician extraordinaire, for all of his work and for bringing this to my attention.</p>
<p>On the RUcore open source page you can get a list of ongoing projects, a release schedule, and a rationale for their licensing decisions (i.e., choosing <a href="http://www.gnu.org/licenses/gpl-3.0.html" target="_blank">GPL 3</a>).</p>
<p>The first project to be released (as of 2008/12/19) is the METS-based bibliographic utility, <a href="http://rucore.libraries.rutgers.edu/open/projects/openmic/" target="_blank">OpenMIC</a>:<br />
<blockquote>
OpenMIC is an open source, web-based cataloging tool that can be used as a standalone application or integrated with other repository architectures by a wide range of organizations. It provides a complete metadata creation system for analog and digital materials, with services to export these metadata in standard formats.</p>
<ul>
<li> Low overhead and infrastructure requirements </li>
<li> Events-based model for management and rights documentation </li>
<li> Mapping and import from standard and in-house formats </li>
<li> Unicode and CJK vernacular character support </li>
</ul>
<p>OpenMIC is a core application for the Moving Image Collections (MIC) initiative developed at the Rutgers University Libraries with funding from the Library of Congress. </p></blockquote>
<p>I look forward to following along as Rutgers releases yet more of the tools they have developed as part of their impressive digital library infrastructure.  It will be even more interesting to hear what their model will be for taking patches / commits from the broader open source community.  These things do take time, even though I failed to show an appreciation for that in my original rant, but I am reminded (by <a href="http://bibwild.wordpress.com/2008/12/23/more-on-doing-open-source-right/" target="_blank">Jonathan Rochkind</a>) that it&#039;s better to take the time and get it right.  I cringe a bit to say that, knowing full well how things tend to languish in committees and fall victim to analysis paralysis in academia; surely there is some middle ground?  There are some very talented and experienced folks at Rutgers, so I will be excited to see them take a leadership role in this space.</p>
<p>Go, Scarlet Knights!</p>
]]></content:encoded>
			<wfw:commentRss>http://lackoftalent.org/michael/blog/2008/12/23/molotovs-away/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JSONovich in the sandbox</title>
		<link>http://lackoftalent.org/michael/blog/2008/12/23/jsonovich-in-the-sandbox/</link>
		<comments>http://lackoftalent.org/michael/blog/2008/12/23/jsonovich-in-the-sandbox/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 15:22:58 +0000</pubDate>
		<dc:creator>Michael Giarlo</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[JSONovich]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://lackoftalent.org/michael/blog/?p=234</guid>
		<description><![CDATA[
JSONovich is now in the &#034;sandbox&#034; over at addons.mozilla.org, where it will remain until it&#039;s been tested a bit more, and rated and reviewed by users.  Until that point, it will be marked as &#034;experimental&#034; and will require users to login before they can download it.  If any of you would like to [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="oai:lackoftalent.org:technosophia:234"><!-- &nbsp; --></abbr>
<p><a href="/michael/blog/json-in-firefox">JSONovich</a> is now in the &#034;sandbox&#034; over at addons.mozilla.org, where it will remain until it&#039;s been tested a bit more, and rated and reviewed by users.  Until that point, it will be marked as &#034;experimental&#034; and will require users to login before they can download it.  If any of you would like to give JSONovich a quick spin and rate/review it over at the Mozilla add-ons site, that would be solid.  Once it&#039;s gotten a few reviews and I&#039;m more comfortable about it working cross-platform and cross-version, I&#039;ll nominate it to be promoted.</p>
<p>Here&#039;s where it lives: <a href="http://addons.mozilla.org/en-US/firefox/addon/10122" target="_blank">https://addons.mozilla.org/en-US/firefox/addon/10122</a></p>
<p>Much obliged, folks.  And thanks to those of you who have already downloaded it, installed it, tested it, left comments, or some combination thereof.</p>
]]></content:encoded>
			<wfw:commentRss>http://lackoftalent.org/michael/blog/2008/12/23/jsonovich-in-the-sandbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Burn the Walled Gardens</title>
		<link>http://lackoftalent.org/michael/blog/2008/12/15/burn-the-walled-gardens/</link>
		<comments>http://lackoftalent.org/michael/blog/2008/12/15/burn-the-walled-gardens/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 23:18:03 +0000</pubDate>
		<dc:creator>Michael Giarlo</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Libraries]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://lackoftalent.org/michael/blog/?p=216</guid>
		<description><![CDATA[
Issue five of the code4lib journal is out.  This issue looks to be just as good as the past four issues, but I&#039;d like to highlight one article in particular: the column by Kansas State&#039;s Web Development Librarian, Dale Askey: We Love Open Source Software.  No, You Can&#039;t Have Our Code.

Librarians are among [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="oai:lackoftalent.org:technosophia:216"><!-- &nbsp; --></abbr>
<p><a href="http://journal.code4lib.org/articles/527">Issue five</a> of the code4lib journal is out.  This issue looks to be just as good as the past four issues, but I&#039;d like to highlight one article in particular: the column by Kansas State&#039;s Web Development Librarian, <a href="http://www.lib.k-state.edu/dsa/personal/">Dale Askey</a>: <a href="http://journal.code4lib.org/articles/527">We Love Open Source Software.  No, You Can&#039;t Have Our Code</a>.</p>
<blockquote><p>
Librarians are among the strongest proponents of open source software. Paradoxically, libraries are also among the least likely to actively contribute their code to open source projects. This article identifies and discusses six main reasons this dichotomy exists and offers ways to get around them.
</p></blockquote>
<p>If you&#039;re at a library doing open source software, or if you <em>think</em> you&#039;re doing open source software, or if you&#039;re considering jumping into the fray, you would do yourself, your institution, your users, and the open source community (whatever the heck that is) a great, great service by reading this column.  Srsly.</p>
<p>I&#039;ve worked in academic libraries where open source was given lip service the likes of which Jimmie Walker would envy and yet, well, show me the code already!  </p>
<p>See, here&#039;s the thing, if you&#039;re doing open source, or <em>think</em> you&#039;re doing open source, it is necessary that you release code to the public under an <a href="http://www.opensource.org/licenses">open source license</a>.  The public includes your institution, your partner institutions, all of academia, random hackers in East Kaboomistan, and everyone else; if you make code available to partners only, that&#039;s not open source; that&#039;s multi-institutional closed source.  It&#039;s a walled garden with teleportation devices leading to other walled gardens.  And we&#039;re tired of hearing about your damned azaleas.  We want to see them, and take cuts from them, and grow our own, and contribute some back to you.  </p>
<p>Releasing code is necessary to claim you&#039;re doing open source, yes, but it is not sufficient.  There is some value in just throwing code over the wall.  Sure, once the code is out there you&#039;ve satisfied a definition or two and you can go off and pat yourself on the back and do the happy Ewok dance and maybe some more grant funds will come your way.  But if you want to add value to your involvement in open source, and add value to user-facing services built upon open source software, and add value for the vast community of open source developers champing at the bit to get at your code and make it better and work with you towards crafting a shiny, happy world, for goodness&#039; sake, Mr. Gorbachev, tear down that wall.  Stop the madness; no more &#034;just fork it because it wasn&#039;t invented here.&#034;  Take commits from the world.  There&#039;s the value in open source.</p>
<p>Do we get this?  I hope we get this.  None of this is new.  Some of us in libraries have been banging the open source drum for nearly a decade, some even longer.  The rhythm is a well known one, but the drum quite apparently needs yet more beating.  And louder beating.  Thank you, Dale, for keeping the beat.  Now, if only this rhythm section had a bassist.</p>
]]></content:encoded>
			<wfw:commentRss>http://lackoftalent.org/michael/blog/2008/12/15/burn-the-walled-gardens/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Introducing JSONovich</title>
		<link>http://lackoftalent.org/michael/blog/2008/12/12/introducing-jsonovich/</link>
		<comments>http://lackoftalent.org/michael/blog/2008/12/12/introducing-jsonovich/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 20:33:21 +0000</pubDate>
		<dc:creator>Michael Giarlo</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[JSONovich]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://lackoftalent.org/michael/blog/?p=208</guid>
		<description><![CDATA[
JSONovich is a Firefox extension that pretty-prints and colorizes JSON.
Feedback is welcome.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="oai:lackoftalent.org:technosophia:208"><!-- &nbsp; --></abbr>
<p><a href="http://lackoftalent.org/michael/blog/json-in-firefox/">JSONovich</a> is a Firefox extension that pretty-prints and colorizes JSON.</p>
<p>Feedback is welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://lackoftalent.org/michael/blog/2008/12/12/introducing-jsonovich/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
