<?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; Software</title>
	<atom:link href="http://lackoftalent.org/michael/blog/category/software/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>Lynx and HTTPS/SSL on Ubuntu (8.10)</title>
		<link>http://lackoftalent.org/michael/blog/2009/01/12/lynx-and-httpsssl-on-ubuntu-810/</link>
		<comments>http://lackoftalent.org/michael/blog/2009/01/12/lynx-and-httpsssl-on-ubuntu-810/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 17:46:15 +0000</pubDate>
		<dc:creator>Michael Giarlo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://lackoftalent.org/michael/blog/?p=269</guid>
		<description><![CDATA[
Dear Future Me,
It has been a while, hasn&#039;t it?  Yes, it has[1].
Did you try to view an HTTPS/SSL URL in Lynx[2] again, only to be met, most cruelly, with the following error message?

$ lynx https://example.org/resource/[3]

Alert!: This client does not contain support for HTTPS URLs.

Well, have no fear!  The lynx package, at least within [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="oai:lackoftalent.org:technosophia:269"><!-- &nbsp; --></abbr>
<p>Dear Future Me,</p>
<p>It has been a while, hasn&#039;t it?  Yes, it has[1].</p>
<p>Did you try to view an HTTPS/SSL URL in Lynx[2] again, only to be met, most cruelly, with the following error message?<br />
<blockquote>
$ lynx https://example.org/resource/[3]<br />
<br/><br />
Alert!: This client does not contain support for HTTPS URLs.
</p></blockquote>
<p>Well, have no fear!  The lynx package, at least within the aptitude repositories for Ubuntu 8.10 (Intrepid Ibex), has no SSL support as you have just witnessed.  The lynx-cur package, on the other hand[4], does!  Support SSL, that is.  Fix yourself thusly:<br />
<blockquote>
$ sudo apt-get install lynx-cur
</p></blockquote>
<p><em>N.B.</em> the new lynx looks for its configuration in a different place than the old lynx, so you may need to fiddle with things if you&#039;ve tricked out lynx with bells and whistles and racing stripes and nitrous boosts.  Otherwise, huzzah!</p>
<h5>Notes</h5><ol class="footnotes"><li id="footnote_0_269" class="footnote">In the future you will have evolved beyond answering your own questions, no doubt, but here in the past, in this quaint and backwards era, it is quite common to hold conversations with yourself.  Or myself.  But I (i.e., you) digress!  (We digress in the past as well!  Quite the confusing state of affairs, conversationally speaking!) </li><li id="footnote_1_269" class="footnote">Do they even have Lynx in that brave new world of the future?  Does the lynx <a href="http://en.wikipedia.org/wiki/Lynx" target="_blank">species</a> still exist?  Did the polar ice caps melt and wipe out all non-domesticated felines?  Inquiring, unevolved minds of the past want to know! </li><li id="footnote_2_269" class="footnote">I am assuming that in the future <a href="http://en.wikipedia.org/wiki/Example.com" target="_blank">example.org</a> remains a reserved dummy domain.</li><li id="footnote_3_269" class="footnote">I hear that in the future hands will be replaced by hooks and detachable chainsaws and the like?</li></ol><br/>
<hr/>]]></content:encoded>
			<wfw:commentRss>http://lackoftalent.org/michael/blog/2009/01/12/lynx-and-httpsssl-on-ubuntu-810/feed/</wfw:commentRss>
		<slash:comments>0</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>HOWTO: Get Twhirl 0.8.7 working on Ubuntu</title>
		<link>http://lackoftalent.org/michael/blog/2008/12/16/howto-get-twhirl-087-working-on-ubuntu/</link>
		<comments>http://lackoftalent.org/michael/blog/2008/12/16/howto-get-twhirl-087-working-on-ubuntu/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 19:22:49 +0000</pubDate>
		<dc:creator>Michael Giarlo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Systems]]></category>

		<guid isPermaLink="false">http://lackoftalent.org/michael/blog/?p=222</guid>
		<description><![CDATA[
I use the Adobe AIR-based Twhirl as a Twitter and identi.ca client on my Ubuntu box.  Twitter recently made some changes to their authentication API, apparently, which prevented Twhirl from connecting as of version 0.8.6.  The fine folks over at Twhirl pushed out 0.8.7 in a jiffy but it included some AIR 1.5 [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="oai:lackoftalent.org:technosophia:222"><!-- &nbsp; --></abbr>
<p>I use the Adobe AIR-based <a href="http://twhirl.org/">Twhirl</a> as a <a href="http://twitter.com/">Twitter</a> and <a href="http://identi.ca/">identi.ca</a> client on my Ubuntu box.  Twitter recently made some changes to their authentication API, apparently, which prevented Twhirl from connecting as of version 0.8.6.  The fine folks over at Twhirl pushed out 0.8.7 in a jiffy but it included some AIR 1.5 dependencies.  The problem was that Adobe AIR for Linux only comes in 1.0 and 1.1 versions.</p>
<p>I was a tad frustrated that such a seemingly minor Twitter API upgrade resulted in a fundamentally different (and broken) version of Twhirl, but I couldn&#039;t fault them for trying to respond quickly.  I followed the <a href="http://twitter.com/twhirl">twhirl</a> user on Twitter when this went down, and I was pleased to find out that they&#039;ve whipped up a special AIR 1.1 Twhirl client for us Linux users.</p>
<p>I ran into some problems trying to install the client.  The first problem I ran into was due to a corrupt download.  If the file is less than 997K or so, you should try to download it again.  If Firefox fails you, there&#039;s always wget.  Want to make sure you&#039;ve got a good file?  Run unzip against it (an .air file is a .zip file underneath its raincoat).  If it succeeds, you&#039;re golden.</p>
<p>The other problem was an old version of Adobe AIR.  You want adobeair_linux_b1_091508.bin installed, not adobeair_linux_a1_033108.bin.  Here&#039;s how you &#034;upgrade&#034; AIR from the alpha to the beta (1.1) and get Twhirl 0.8.7-air11 installed:</p>
<ol>
<li><code>sudo adobeair_linux_a1_033108.bin -uninstall</code></li>
<li><code>sudo apt-get remove adobeair-enu</code> (This step was not necessary on another box I tested.  It could be that the original box I tried these steps on was munted up.)</li>
<li><em>This may be optional</em>!  Clean out /opt/Adobe Air/, ~/.adobe/AIR/, and /root/.adobe/AIR/.  Note that this step will wipe your settings for all your AIR applications.
<li>Download the <a href="http://labs.adobe.com/downloads/air_linux.html">AIR 1.1 beta for Linux</a></li>
<li><code>adobeair_linux_b1_091508.bin</code>  (Some report that Firefox and other browsers must be closed during this step, but I couldn&#039;t reproduce that.)</li>
<li>Download the latest <a href="http://www.twhirl.org/files/twhirl-0.8.7-air11.air">AIR 1.1 Twhirl for Linux</a></li>
<li>Then navigate to the twhirl-0.8.7-air11.air via Nautilus and double-click it.</li>
</ol>
<p>Worked for me, at least.</p>
]]></content:encoded>
			<wfw:commentRss>http://lackoftalent.org/michael/blog/2008/12/16/howto-get-twhirl-087-working-on-ubuntu/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>
		<item>
		<title>JSON and the Blarghonauts, or, Firefox and Pretty-Printing FAIL</title>
		<link>http://lackoftalent.org/michael/blog/2008/12/02/json-and-the-blarghonauts-or-firefox-and-pretty-printing-fail/</link>
		<comments>http://lackoftalent.org/michael/blog/2008/12/02/json-and-the-blarghonauts-or-firefox-and-pretty-printing-fail/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 21:25:41 +0000</pubDate>
		<dc:creator>Michael Giarlo</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[JSONovich]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://lackoftalent.org/michael/blog/?p=196</guid>
		<description><![CDATA[
There must be a better way of viewing pretty-printed JSON from Firefox than this.  (EDIT: Hail, JSONovich!)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/env python
# ~/bin/jsonhandler.py 
# Take some JSON from a file or stdin, format it, output to a tempfile, 
# open in EDITOR
&#160;
from __future__ import with_statement
import os
import sys
import simplejson
import tempfile
&#160;
EDITOR = &#34;/usr/bin/gedit&#34;
&#160;
if __name__ == &#34;__main__&#34;:
    if [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="oai:lackoftalent.org:technosophia:196"><!-- &nbsp; --></abbr>
<p>There must be a better way of viewing pretty-printed JSON from Firefox than this.  (EDIT: Hail, <a href="http://lackoftalent.org/michael/blog/json-in-firefox/">JSONovich</a>!)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td 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;"># ~/bin/jsonhandler.py </span>
<span style="color: #808080; font-style: italic;"># Take some JSON from a file or stdin, format it, output to a tempfile, </span>
<span style="color: #808080; font-style: italic;"># open in EDITOR</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">__future__</span> <span style="color: #ff7700;font-weight:bold;">import</span> with_statement
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">import</span> simplejson
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">tempfile</span>
&nbsp;
EDITOR = <span style="color: #483d8b;">&quot;/usr/bin/gedit&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#41;</span> == <span style="color: #ff4500;">2</span>:
        <span style="color: #808080; font-style: italic;"># if invoked as jsonhandler.py {FILE}</span>
        json = <span style="color: #008000;">open</span><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: #ff7700;font-weight:bold;">else</span>:
        <span style="color: #808080; font-style: italic;"># if JSON is piped in (e.g., from Firefox, </span>
        <span style="color: #808080; font-style: italic;"># or cat {FILE} | jsonhandler.py)</span>
        json = <span style="color: #dc143c;">sys</span>.<span style="color: black;">stdin</span>
    json = simplejson.<span style="color: black;">load</span><span style="color: black;">&#40;</span>json<span style="color: black;">&#41;</span>
    <span style="color: #808080; font-style: italic;"># the with_statement is kind of gratuitous but I like it</span>
    <span style="color: #ff7700;font-weight:bold;">with</span> <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">tempfile</span>.<span style="color: black;">mktemp</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'.json'</span><span style="color: black;">&#41;</span>, <span style="color: #483d8b;">'w'</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">as</span> jsonfile:
        simplejson.<span style="color: black;">dump</span><span style="color: black;">&#40;</span>json, jsonfile, indent=<span style="color: #ff4500;">4</span><span style="color: black;">&#41;</span>
    <span style="color: #808080; font-style: italic;"># all of that and gedit doesn't even highlight JSON</span>
    <span style="color: #808080; font-style: italic;"># I have emacs highlighting JSON but this generates a &quot;stdin is not </span>
    <span style="color: #808080; font-style: italic;"># a tty&quot; error, so EDITOR is not set to emacs</span>
    <span style="color: #808080; font-style: italic;"># xemacs works a little better, but I need to click:</span>
    <span style="color: #808080; font-style: italic;"># &quot;Options &gt; Syntax Highlighting &gt; In this buffer&quot; every time, despite </span>
    <span style="color: #808080; font-style: italic;"># saving to custom.el, so EDITOR is not set to xemacs</span>
    <span style="color: #808080; font-style: italic;"># Very annoying!</span>
    <span style="color: #dc143c;">os</span>.<span style="color: black;">system</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;%s %s&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>EDITOR, jsonfile.<span style="color: black;">name</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>And then I set ~/bin/jsonhandler.py as the action for application/json in Edit | Preferences | Applications.</p>
<p>Yuck.  Help?</p>
]]></content:encoded>
			<wfw:commentRss>http://lackoftalent.org/michael/blog/2008/12/02/json-and-the-blarghonauts-or-firefox-and-pretty-printing-fail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
