<?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>discontents</title>
	<atom:link href="http://discontents.com.au/feed" rel="self" type="application/rss+xml" />
	<link>http://discontents.com.au</link>
	<description>working for the triumph of content over form, ideas over control, people over systems</description>
	<lastBuildDate>Fri, 26 Feb 2010 06:12:03 +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>Out of the cube</title>
		<link>http://discontents.com.au/shed/experiments/out-of-the-cube</link>
		<comments>http://discontents.com.au/shed/experiments/out-of-the-cube#comments</comments>
		<pubDate>Fri, 26 Feb 2010 05:57:44 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[experiments]]></category>
		<category><![CDATA[APIs]]></category>
		<category><![CDATA[datacubes]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Piston]]></category>
		<category><![CDATA[population]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[spreadsheets]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=823</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Out+of+the+cube&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=experiments&amp;rft.source=discontents&amp;rft.date=2010-02-26&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/experiments/out-of-the-cube&amp;rft.language=English"></span>

For a project that I&#8217;m working on at the National Museum of Australia, I&#8217;ve started collecting various sources of date-identified data. Most recently I had a go at extracting historical population data from the Australian Bureau of Statistics.
The data can all be downloaded as .xls files, but they&#8217;re not simple, flat spreadsheets – they&#8217;re data [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Out+of+the+cube&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=experiments&amp;rft.source=discontents&amp;rft.date=2010-02-26&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/experiments/out-of-the-cube&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=823"><!-- &nbsp; --></abbr>
<p>For a project that I&#8217;m working on at the National Museum of Australia, I&#8217;ve started collecting various sources of date-identified data. Most recently I had a go at extracting <a href="http://www.abs.gov.au/AUSSTATS/abs@.nsf/mf/3105.0.65.001">historical population data</a> from the Australian Bureau of Statistics.</p>
<p>The data can all be downloaded as .xls files, but they&#8217;re not simple, flat spreadsheets – they&#8217;re data cubes. As the name suggests, data cubes are organised along a number of dimensions. In the case of the population data it&#8217;s year, state and gender.</p>
<p>This means that you can&#8217;t just export the data to CSV and suck it into your database – first you&#8217;ve got to flatten the cube. No doubt there are other ways to do this, but I just wrote a simple python script. It uses <a href="http://pypi.python.org/pypi/xlrd">xlrd</a> to read from the spreadsheet, does a bit or reorganisation, then writes the output to a CSV file. The code, for what it&#8217;s worth, is <a href="http://bitbucket.org/wragge/abs-data-cube-processor/">available at Bitbucket</a>.</p>
<p>Once I had the CSV file I just imported it into MySQL and used Django and <a href="http://bitbucket.org/jespern/django-piston/wiki/Home">Piston</a> to build a basic API. So if you want to know the population of NSW in 1856, you just go to:</p>
<p><a href="http://wraggelabs.com/api/json/population/nsw/1856/">http://wraggelabs.com/api/json/population/nsw/1856/</a></p>
<p>The number of infant deaths in Tasmania in 1932:</p>
<p><a href="http://wraggelabs.com/api/json/infantdeaths/tas/1932/">http://wraggelabs.com/api/json/infantdeaths/tas/1932/</a></p>
<p>The number of female births in Australia in 1959:</p>
<p><a href="http://wraggelabs.com/api/json/births/australia/females/1959/">http://wraggelabs.com/api/json/births/australia/females/1959/</a></p>
<p>I&#8217;m sure you get the picture. You can change the &#8216;json&#8217; to &#8216;xml&#8217; if you&#8217;d like another flavour of data.</p>
<div id="attachment_830" class="wp-caption aligncenter" style="width: 310px"><a href="http://wraggelabs.com/abs/"><img class="size-medium wp-image-830" title="pop_browser" src="http://discontents.com.au/wp-content/uploads/2010/02/pop_browser-300x140.png" alt="Screenshot of population browser" width="300" height="140" /></a><p class="wp-caption-text">The API in action - a simple population browser</p></div>
<p>With an API delivering JSON you can start playing around with all sorts of fun AJAX-y stuff. To demonstrate I built a <a href="http://wraggelabs.com/abs/">simple population browser</a> using JQuery. Just drag the slider!</p>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shed/experiments/out-of-the-cube/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emerging technologies and the need to experiment</title>
		<link>http://discontents.com.au/shoebox/archives-shoebox/emerging-technologies-and-the-need-to-experiment</link>
		<comments>http://discontents.com.au/shoebox/archives-shoebox/emerging-technologies-and-the-need-to-experiment#comments</comments>
		<pubDate>Wed, 03 Feb 2010 06:30:23 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[archives]]></category>
		<category><![CDATA[drafts]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=814</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Emerging+technologies+and+the+need+to+experiment&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=drafts&amp;rft.source=discontents&amp;rft.date=2010-02-03&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shoebox/archives-shoebox/emerging-technologies-and-the-need-to-experiment&amp;rft.language=English"></span>

About a month ago I posted a copy of my report Emerging technologies for the provision of access to archives on Scribd. It&#8217;s already edging up towards a thousand reads, so I thought it was time I put a link in from here. 
The basic message is we need to experiment and find the spaces [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Emerging+technologies+and+the+need+to+experiment&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=drafts&amp;rft.source=discontents&amp;rft.date=2010-02-03&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shoebox/archives-shoebox/emerging-technologies-and-the-need-to-experiment&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=814"><!-- &nbsp; --></abbr>
<p>About a month ago I posted a copy of my report <a href="http://www.scribd.com/doc/24402148/Emerging-technologies-for-the-provision-of-access-to-archives-issues-challenges-and-ideas">Emerging technologies for the provision of access to archives</a> on Scribd. It&#8217;s already edging up towards a thousand reads, so I thought it was time I put a link in from here. </p>
<p>The basic message is we need to experiment and find the spaces both within and between our institutions to foster such experimentation. Is that asking too much? Anyway&#8230; read, enjoy, use!</p>
<p><object id="doc_178960182596690" name="doc_178960182596690" height="600" width="100%" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline:none;" ><param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"><param name="wmode" value="opaque"><param name="bgcolor" value="#ffffff"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><param name="FlashVars" value="document_id=24402148&#038;access_key=key-yzpzm303w8owl3o60ef&#038;page=1&#038;viewMode=list"></object></p>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shoebox/archives-shoebox/emerging-technologies-and-the-need-to-experiment/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>I link therefore I am</title>
		<link>http://discontents.com.au/shed/experiments/i-link-therefore-i-am</link>
		<comments>http://discontents.com.au/shed/experiments/i-link-therefore-i-am#comments</comments>
		<pubDate>Wed, 20 Jan 2010 00:25:03 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[experiments]]></category>
		<category><![CDATA[identites]]></category>
		<category><![CDATA[name authorities]]></category>
		<category><![CDATA[People Australia]]></category>
		<category><![CDATA[RDFa]]></category>
		<category><![CDATA[semantic web]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=761</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=I+link+therefore+I+am&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=experiments&amp;rft.source=discontents&amp;rft.date=2010-01-20&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/experiments/i-link-therefore-i-am&amp;rft.language=English"></span>

Let me be clear. I am not Tim Sherratt the sound engineer. Nor, indeed, am I Timothy Sherratt, author of Saints as Citizens: A Guide to Public Responsibilities for Christians. We are three different people, spread across three continents, locked in a deadly battle for global supremacy via Google search rankings. There can be only [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=I+link+therefore+I+am&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=experiments&amp;rft.source=discontents&amp;rft.date=2010-01-20&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/experiments/i-link-therefore-i-am&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=761"><!-- &nbsp; --></abbr>
<p>Let me be clear. I am not Tim Sherratt the sound engineer. Nor, indeed, am I Timothy Sherratt, author of <em>Saints as Citizens: A Guide to Public Responsibilities for Christians</em>. We are three different people, spread across three continents, locked in a deadly battle for global supremacy via <a href="http://www.google.com/#hl=en&#038;source=hp&#038;q=tim+sherratt&#038;btnG=Google+Search&#038;aq=f&#038;aql=&#038;aqi=&#038;oq=tim+sherratt">Google search rankings</a>. There can be only one&#8230;</p>
<p>Of course you probably knew I wasn&#8217;t a British sound engineer or an American politics professor. There are plenty of contextual clues within this website, even on this page, to indicate that my interests lie elsewhere. But while we humans are pretty good at picking up such clues, it&#8217;s much harder for computers. When Google comes to index my site, how does it know I&#8217;m not a sound engineer who likes to dabble in history? Indeed, how does Google, or any computer know that the words &#8216;Tim Sherratt&#8217; are actually a person&#8217;s name? These are questions of both identity and semantics.</p>
<p>Librarians have been dealing with questions of identity for many, many years developing detailed name authority records. Such records allow name variations to be cross-referenced and individuals to be uniquely identified. For example I have a control number of &#8216;n 2005043272&#8242; in the <a href="http://authorities.loc.gov/">Library of Congress authorities database</a>, while Timothy R Sherratt, the politics professor has been assigned &#8216;n  94106739&#8242;.</p>
<p>The National Library of Australia has developed its own name authority file. However, the NLA has realised that reliable identity data has a much broader application that simply cataloguing, and is using its name authority data as the foundation of an exciting new resource – <a href="http://www.nla.gov.au/initiatives/peopleaustralia/">People Australia</a>. People Australia will mesh its own records with biographical data from a variety of outside sources, creating a rich collection of interlinked identities. Already entries from the Australian Dictionary of Biography have been ingested.</p>
<p>So now, thanks to People Australia, if I ever get confused about who I am I just have to remember one little url – my very own persistent identifier – <a href="http://nla.gov.au/nla.party-479364">http://nla.gov.au/nla.party-479364</a>. I&#8217;m going to get a t-shirt made up.</p>
<p>But that doesn&#8217;t help our new machine overlords very much. How can a computer tell that the words &#8216;Tim Sherratt&#8217; describe a person and that more information about that person can be found at http://nla.gov.au/nla.party-479364? This is the sort of problem that the semantic web hopes to solve. The semantic web aims to expose the structures that are buried in our documents and databases, to make explicit the contextual clues that humans pick up, but computers ignore. As the slogan goes, it represents a change from a &#8216;web of documents to a web of data&#8217;.</p>
<p>The semantic web uses a variety of tools and standards to encode information in a form that means something to computers. <a href="http://www.foaf-project.org/">FOAF</a> (Friend of a Friend) is, for example, a machine-readable ontology that describes people and their relationships. A computer visiting this page can in fact find out a fair bit about me, including my NLA persistent identifier, because there is a link to a small XML file in which my details are <a href="http://discontents.com.au/foaf.rdf">expressed using FOAF</a>.</p>
<p>But if this seems a little daunting, the semantic web offers another technology which is really just as easy as marking up a page in HTML – it&#8217;s called RDFa. This link – <a typeof="foaf:Person" property="foaf:name" content="Sherratt, Tim" rel="foaf:isPrimaryTopicOf" href="http://nla.gov.au/nla.party-479364">Tim Sherratt</a> – is more than it seems. Here is what a computer sees:</p>
<p><code>&lt;a typeof="foaf:Person" property="foaf:name" content="Sherratt, Tim" rel="foaf:isPrimaryTopicOf" href="http://nla.gov.au/nla.party-479364"&gt;Tim Sherratt&lt;/a&gt;</code></p>
<p>This says that Tim Sherratt is a person whose name has the standard form &#8216;Sherratt, Tim&#8217; and who is the primary topic of the page to be found at http://nla.gov.au/nla.party-479364. There&#8217;s a fair bit of semantic goodness in that one little link. If the NLA page also expressed its data in a machine-readable form, this link could send search engines and browsers into a whole new world of associations and inferences.</p>
<p>But I suppose you&#8217;re thinking that the code still looks a bit complicated. Well never fear, this long post is really just an introduction to a new project I&#8217;ve been working on – something that will help you generate markup like this with just a couple of clicks.</p>
<h3>Introducing Wragge&#8217;s identity browser</h3>
<p>I&#8217;ve been interested in publishing biographical data way back from the early days of <a href="http://www.asap.unimelb.edu.au/bsparcs/">Bright Sparcs</a> and, sad as it may seem, I find the possibilities of People Australia pretty exciting. However, I don&#8217;t think we should expect the NLA to do all the work. People Australia provides a framework that we can all use to enrich our own documents, databases, finding aids, and applications.</p>
<p>You can easily access People Australia data through <a href="http://trove.nla.gov.au/">Trove</a>. But to get a better idea of what&#8217;s in the database, I&#8217;d suggest you spend some time playing with its <a href="http://www.nla.gov.au/apps/srw/search/peopleaustralia">SRU interface</a>. Using this you can query the database directly, retrieving results in XML – ready for your own application to suck up and use.</p>
<p>To make this even easier, I&#8217;ve written a <a href="http://bitbucket.org/wragge/people-australia-client/">People Australia client library</a> in Python. This enables you to quickly extract and use identity information. Using it, your own web application can talk to People Australia directly. I won&#8217;t go into the details here – the code is farily heavily commented – but I welcome any feedback, suggestions or contributions. Copy it, change it, use it!</p>
<p>To try out my library and to provide a tool that might be of use to the average punter I&#8217;ve also built:</p>
<p>&lt;TA-DA&gt;<a href="http://wraggelabs.com/people/"><strong>Wragge&#8217;s identity browser</strong></a>!&lt;/TA-DA&gt;</p>
<p>It&#8217;s pretty simple. Search for a surname, pick a name from the result list, and view their identity details. For example, here&#8217;s <a href="http://wraggelabs.com/people/612109/">Clement Wragge&#8217;s details</a>.</p>
<p>But there are a couple of extra features that I am rather smugly pleased with. First of all, there&#8217;s an <a href="javascript:(function(){var%20selText;if%20(window.getSelection){if%20(document.activeElement%20&&%20(document.activeElement.tagName.toLowerCase()=='textarea'%20||%20document.activeElement.tagName.toLowerCase()=='input')){var%20text=document.activeElement.value;selText=text.substring(document.activeElement.selectionStart,document.activeElement.selectionEnd);}else{var%20selRange=window.getSelection();selText=selRange.toString();}}else{if%20(document.selection.createRange){var%20range=document.selection.createRange();selText=range.text;}}if%20(selText!=''){var%20url='http://wraggelabs.com/people/?context='+escape(selText);window.open(url);}else{alert('Select%20some%20text%20first!');}})();">'Identify me!'</a> bookmarklet. Just drag the link to your browser&#8217;s bookmarks or favourites toolbar (see below for some further notes).</p>
<p>Once you have the bookmarklet installed all you have to do to find the identity record for someone is to highlight their name on a webpage and click &#8216;Identify me!&#8217;. You could then grab the People Australia ID to store in your own application, allowing you (with the help of my client library) to automatically include links to relevant entries in the <em>Australian Dictionary of Biography</em>, for example.</p>
<p>Even better, Wragge&#8217;s identity browser will automagically generate the RDFa markup you need to semantically enrich your document. Whether you&#8217;re writing a blog post, publishing an article, drafting a caption, creating a database entry, or preparing a finding aid you can quickly and easily find an individual and then cut and paste the code you need.</p>
<p>To show this in action I used the bookmarklet to help me mark up many of the people named in one of my articles. We humans see a <a href="http://discontents.com.au/words/magazines-articles/looking-at-the-sun">normal page with a few extra links</a>. Computers, however, can extract the embedded RDFa to get at the <a href="http://www.w3.org/2007/08/pyRdfa/extract?uri=http%3A%2F%2Fdiscontents.com.au%2Fwords%2Fmagazines-articles%2Flooking-at-the-sun&#038;format=pretty-xml&#038;warnings=false&#038;parser=lax&#038;space-preserve=true&#038;submit=Go!&#038;text=">structured information that&#8217;s hidden in the page</a>.</p>
<p>Now I&#8217;ve got to go and semantify the rest of my articles&#8230;</p>
<p>Go forth and identify! And in the process help build a better web.</p>
<h4>Notes on the bookmarklet</h4>
<ul>
<li>Internet Explorer has &#8216;Favorites&#8217;, Firefox has &#8216;Bookmarks&#8217; – whatever you&#8217;re using first make sure that your Bookmarks/Favourites toolbar is visible. Look under Tools->Toolbars in IE8, View->Toolbars in Firefox. </li>
<li>Try dragging the &#8216;Identify me!&#8217; link to your Bookmarks/Favourites toolbar. If it doesn&#8217;t work, try right clicking on the link and choose &#8216;Bookmark this link&#8217; or &#8216;Add to Favourites&#8217;. Make sure you add it to the toolbar folder. IE will probably give you various warnings – ignore them.</li>
<li>You should now have a working bookmarklet – highlight a name and click on it, a new window should open with results from Wragge&#8217;s identity browser. IE might complain about opening a pop-up – allow pop-ups and try again.</li>
<li>The bookmarklet is pretty clever about working out which part of the highlighted text is the surname, so you can highlight names in a number of formats including:
<ul>
<li>Surname</li>
<li>Surname&#8217;s</li>
<li>Surname, Othernames</li>
<li>Othernames Surname</li>
<li>Othernames Surname&#8217;s</li>
</ul>
</li>
<li><del datetime="2010-01-26T12:34:24+00:00">For the moment this only works with &#8217;straight&#8217;, ie non-curly, apostrophes – but I&#8217;ll fix this asap.</del> Fixed!</li>
</ul>
<h4>Notes on RDFa markup</h4>
<ul>
<li>You have a choice between visible (ie clickable) links or invisible ones. They look the same to computers, so it&#8217;s just a matter of whether you want your human visitors to see them. Click &#8216;change&#8217; to toggle between the two options.</li>
<li>You can just paste the RDFa markup straight into your document. If you&#8217;ve used the bookmarklet, the text you highlighted will be automatically inserted as the link text – so just copy and paste. If you haven&#8217;t used the bookmarklet you can insert the link text yourself.</li>
<li>Somewhere in your document you need to tell computers what the FOAF in your RDFa markup means. You do this by inserting the text:<br />
<code>xmlns:foaf="http://xmlns.com/foaf/0.1/"</code> inside a tag that contains your marked up text. If you can edit the raw html of your page, you can just insert it in the <code>&lt;html&gt;</code> tag itself, so it becomes <code>&lt;html xmlns:foaf="http://xmlns.com/foaf/0.1/" &gt;</code>. Otherwise you can wrap your marked up text in a <code>&lt;div&gt;</code> tag and put the extra code in there.
</li>
<li>If you&#8217;re using something like Wordpress that strips out or converts any markup that it doesn&#8217;t expect, you need to be able to enter the RDFa as &#8216;raw&#8217; html. In Wordpress you can do this using the <a href="http://wordpress.org/extend/plugins/raw-html/">Raw HTML plugin</a>.</li>
<li>For more on using RDFa have a look at: <a href="http://www.w3.org/MarkUp/2009/rdfa-for-html-authors">RDFa for HTML Authors</a>.
</ul>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shed/experiments/i-link-therefore-i-am/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Doing it yourself</title>
		<link>http://discontents.com.au/shoebox/archives-shoebox/doing-it-yourself</link>
		<comments>http://discontents.com.au/shoebox/archives-shoebox/doing-it-yourself#comments</comments>
		<pubDate>Tue, 22 Dec 2009 11:21:31 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[archives]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[recordsearch]]></category>
		<category><![CDATA[userscript]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=738</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Doing+it+yourself&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2009-12-22&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shoebox/archives-shoebox/doing-it-yourself&amp;rft.language=English"></span>

I was doing some research using the National Archives of Australia&#8217;s RecordSearch database the other day and became frustrated that there is no way of seeing how many pages are in a digitised file without clicking on the &#8216;Display digital copy&#8217; link. So I fixed it.
As a userscript it&#8217;s hardly worthy of a blog post. [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Doing+it+yourself&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2009-12-22&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shoebox/archives-shoebox/doing-it-yourself&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=738"><!-- &nbsp; --></abbr>
<p>I was doing some research using the National Archives of Australia&#8217;s <a href="http://naa.gov.au/collection/recordsearch/index.aspx">RecordSearch</a> database the other day and became frustrated that there is no way of seeing how many pages are in a digitised file without clicking on the &#8216;Display digital copy&#8217; link. So <a href="http://userscripts.org/scripts/show/64722">I fixed it</a>.</p>
<p>As a userscript it&#8217;s hardly worthy of a blog post. All it does it find out how many pages are in the file and insert the number in the link text. It&#8217;s very simple. But I think it&#8217;s also a useful illustration of the changing balance of power between archives and their users.</p>
<p>William E Landis argued that archivists were &#8216;guilty as a profession of fetishising the outputs of our descriptive systems&#8217;. The design of finding aids have often been determined not by the needs of users but by a desire to faithfully represent the underlying archival architecture. But now users don&#8217;t have to just take what they&#8217;re given.</p>
<p>Technologies such as <a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a> are useful for sketching out alternatives. For organisations with IT systems that inhibit experimentation, Greasemonkey (or <a href="https://jetpack.mozillalabs.com/">Mozilla&#8217;s Jetpack</a>) provides a way of playing with interfaces without touching any of the underlying code. My rewrite of the way RecordSearch <a href="http://discontents.com.au/shoebox/archives-shoebox/archives-in-3d">displays digitised files</a> is an example of this.</p>
<p>But no one interface is ever going to meet the needs of all archive users. Fortunately, there are a growing number of ways in which archives can work in partnership with their users to help <em>them</em> create the interfaces they want and need.</p>
<p>Archives are starting to expose their data directly using APIs and linked open data. This gives users the power to create whole new applications. But I still think there&#8217;ll be a place for the little tweak – a simple hack that meets some small but specific need. I can imagine communities of interest building and sharing a range of tools, hacks, applications and interfaces specifically tailored to their research habits.</p>
<p>So if you don&#8217;t like it, fix it.</p>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shoebox/archives-shoebox/doing-it-yourself/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some archives hacking</title>
		<link>http://discontents.com.au/shoebox/archives-shoebox/some-archives-hacking</link>
		<comments>http://discontents.com.au/shoebox/archives-shoebox/some-archives-hacking#comments</comments>
		<pubDate>Thu, 05 Nov 2009 00:31:07 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[archives]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[govhack]]></category>
		<category><![CDATA[mashup]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[recordsearch]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=727</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Some+archives+hacking&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2009-11-05&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shoebox/archives-shoebox/some-archives-hacking&amp;rft.language=English"></span>

It&#8217;s great to see that the National Archives of Australia has released a large swag of data through the new data.australia.gov.au site. In the Commonwealth Agencies zip file you can find xml dumps of all the publicly accessible agency and series data in RecordSearch, as well as item data for series A1. This is the [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Some+archives+hacking&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2009-11-05&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shoebox/archives-shoebox/some-archives-hacking&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=727"><!-- &nbsp; --></abbr>
<p>It&#8217;s great to see that the National Archives of Australia has released a large swag of data through the new <a href="http://data.australia.gov.au/">data.australia.gov.au</a> site. In the <a href="http://data.australia.gov.au/84">Commonwealth Agencies</a> zip file you can find xml dumps of all the publicly accessible agency and series data in RecordSearch, as well as item data for series A1. This is the same data that Mitchell Whitelaw visualised so brilliantly in his <a href="http://visiblearchive.blogspot.com/">Visible Archive</a> project. There&#8217;s also item data and images from series A3560 – the <a href="http://data.australia.gov.au/77">Mildenhall photographs of early Canberra</a>.</p>
<p>What&#8217;s even more exciting is that people are already using this data. At the recent GovHack event in Canberra the <a href="http://catherinestyles.com/2009/11/02/wtfgd-first-steps/">What The Federal Government Does</a> team worked on visualising the activities of government by using functions data pulled from the agencies file. Another group has generated a really nice <a href="http://mildenhall.creativepossums.net/">tag cloud and photo gallery</a> from the Mildenhall data. With further GovHack sessions to follow and the <a href="http://mashupaustralia.org/">MashupAustralia</a> contest open until 13 November, let&#8217;s hope for some more inspired archives hacking.</p>
<p>Seeing RecordSearch data out in the world like this reminded me of a little project I started a while back and then set aside. It was a simple PHP script that scraped data from RecordSearch and spat it out either as XML or JSON. Mitchell used a version of this script in his <a href="http://visiblearchive.blogspot.com/2009/08/exploring-a1-items-to-documents.html">A1 Explorer</a> in order to find out the number of pages in each digitised file.</p>
<p>I&#8217;ve now expanded and improved the script so that it provides data on items, series, agencies and persons. The output includes all the basic fields as well as links between entities – such as related series, controlling agencies etc. As an added bonus you also get some useful totals (where they&#8217;re available): items include the number of pages, series include the number of items described on RecordSearch, and agencies include the number of series recorded. I&#8217;ve also fiddled with mod_rewrite to provide a more rest-ful interface.</p>
<p>For XML output use the url <strong>http://discontents.com.au/shed/rs/xml/ </strong>followed by the appropriate identifier – a barcode for an item, a CA number for an agency, a CP number for a person or a series number.</p>
<p>Some examples:</p>
<ul>
<li> Series A1 – <a href="http://discontents.com.au/shed/rs/xml/a1">http://discontents.com.au/shed/rs/xml/a1</a></li>
<li>Item B2455, WRAGGE C L E – <a href="http://discontents.com.au/shed/rs/xml/3445411">http://discontents.com.au/shed/rs/xml/3445411</a></li>
<li>CSIR Head Office – <a href="http://discontents.com.au/shed/rs/xml/CA+486">http://discontents.com.au/shed/rs/xml/CA+486</a></li>
<li>Alfred Deakin – <a href="http://discontents.com.au/shed/rs/xml/CP+9">http://discontents.com.au/shed/rs/xml/CP+9</a></li>
</ul>
<p>As you might have guessed, to get JSON output you just substitute &#8216;json&#8217; for &#8216;xml&#8217; in the url.</p>
<p>Being dependent on screen scraping, it&#8217;s inherently a bit fragile, but I&#8217;m hoping it might be of some use. My intention was to use it to start exploring some new ways of using and interacting with the data. The code itself is <a href="http://bitbucket.org/wragge/rswrapper/">available at BitBucket</a>. It&#8217;s not very elegant, but I don&#8217;t want to spend much time cleaning it up at the moment. If it seems like it might be useful, I&#8217;ll probably rewrite the whole thing in python and publish it through Google&#8217;s AppEngine.</p>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shoebox/archives-shoebox/some-archives-hacking/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playing with pipes</title>
		<link>http://discontents.com.au/shed/playing-with-pipes</link>
		<comments>http://discontents.com.au/shed/playing-with-pipes#comments</comments>
		<pubDate>Thu, 10 Sep 2009 08:38:25 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[archives]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[the shed]]></category>
		<category><![CDATA[collections]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[Yahoo Pipes]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=699</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Playing+with+pipes&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=hacks&amp;rft.subject=the+shed&amp;rft.source=discontents&amp;rft.date=2009-09-10&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/playing-with-pipes&amp;rft.language=English"></span>

The ever-informative Twitter alerted me recently to the History Trust of South Australia&#8217;s object of the month. It made me think that it would be nice if there was some way of bringing together all those objects, photos and documents featured by our cultural institutions. Some sort of combined RSS feed perhaps?
Something like this&#8230;
{"pipe_id":"d9507f84ba0046394fb34a99de0709bf","_btype":"list"}
Well, yes&#8230; [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Playing+with+pipes&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=hacks&amp;rft.subject=the+shed&amp;rft.source=discontents&amp;rft.date=2009-09-10&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/playing-with-pipes&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=699"><!-- &nbsp; --></abbr>
<p>The ever-informative Twitter alerted me recently to the History Trust of South Australia&#8217;s <a href="http://www.history.sa.gov.au/history/object%20of%20the%20month.htm.html">object of the month</a>. It made me think that it would be nice if there was some way of bringing together all those objects, photos and documents featured by our cultural institutions. Some sort of combined RSS feed perhaps?</p>
<p>Something like this&#8230;</p>
<p><script src="http://pipes.yahoo.com/js/listbadge.js">{"pipe_id":"d9507f84ba0046394fb34a99de0709bf","_btype":"list"}</script></p>
<p>Well, yes&#8230; I couldn&#8217;t resist having a go. My tool of choice for this was <a href="http://pipes.yahoo.com/">Yahoo Pipes</a> which has various modules for manipulating and creating RSS feeds. Check out <a href="http://pipes.yahoo.com/wragge/featureditems">my script on the Yahoo Pipes site</a> to create a badge like this, play some more or inspect its innards. If you&#8217;re feeling adventurous you can even clone the script and tinker away yourself – it&#8217;s the best way to learn.<span id="more-699"></span></p>
<p>At the moment the script aggregrates content from the Flickr photostreams of:</p>
<ul>
<li>National Archives of Australia</li>
<li>State Records NSW</li>
<li>State Library of NSW</li>
<li>State Library of Queensland</li>
<li>State Library of South Australia</li>
<li>Australian War Memorial</li>
<li>Powerhouse Museum</li>
</ul>
<p>These are mixed up with the contents of the Powerhouse&#8217;s &#8216;<a href="http://www.powerhousemuseum.com/collection/blog/">Object of the week</a>&#8216; blog and the NAA&#8217;s &#8216;<a href="http://naa.gov.au/whats-on/online/find-of-the-month/index.aspx">Find of the Month</a>&#8216;. I&#8217;m happy to add more sources – leave your suggestions below.</p>
<p>Most of it was ridiculously easy. I just added the RSS feeds from Flickr and the Powerhouse blog, then fed them through a module to sort them into date order. &#8216;Find of the month&#8217; was trickier because there was no existing RSS feed – time for some screen-scraping! First I scraped a list of the urls for 2009, then for each month I pulled out the title and date, as well as the first paragraph to act as a description, and the first image. Then I turned all these bits and pieces into an RSS feed and joined it up with the rest.</p>
<p>Yahoo Pipes makes this sort of thing simple, even for non-coders. Interestingly, too, it&#8217;s not just a matter of creating an RSS feed – <a href="http://pipes.yahoo.com/wragge/featureditems">as you can see</a> Yahoo Pipes emits the data in a variety of formats. You can subscribe to the RSS feed, create a badge or slurp up the data in JSON to power some new application.</p>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shed/playing-with-pipes/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Harvesting context #1: Flickr comments</title>
		<link>http://discontents.com.au/shoebox/archives-shoebox/harvesting-context-1</link>
		<comments>http://discontents.com.au/shoebox/archives-shoebox/harvesting-context-1#comments</comments>
		<pubDate>Sun, 23 Aug 2009 23:57:52 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[archives]]></category>
		<category><![CDATA[experiments]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[finding aids]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[userscript]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=670</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Harvesting+context+%231%3A+Flickr+comments&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=experiments&amp;rft.source=discontents&amp;rft.date=2009-08-24&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shoebox/archives-shoebox/harvesting-context-1&amp;rft.language=English"></span>

Instead of idly waiting for visitors to stumble over their holdings on some lonely information by-way,  archives are starting to push their content out into the bustling metropolis of the social web. They are going where the people are. Photographic collections, in particular, are gaining new lives and new audiences thanks to Flickr.
But that&#8217;s only [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Harvesting+context+%231%3A+Flickr+comments&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=experiments&amp;rft.source=discontents&amp;rft.date=2009-08-24&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shoebox/archives-shoebox/harvesting-context-1&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=670"><!-- &nbsp; --></abbr>
<p>Instead of idly waiting for visitors to stumble over their holdings on some lonely information by-way,  archives are starting to push their content out into the bustling metropolis of the social web. They are going where the people are. Photographic collections, in particular, are gaining new lives and new audiences thanks to Flickr.</p>
<p>But that&#8217;s only part of the story. Released into the wild, these photos are slowly picking up the habits of the locals. They are making friends, building connections, even speaking with new accents and dialects. Commented, tagged, organised, linked – they are building new contexts for themselves outside of the cloying control of archival descriptive systems.</p>
<p>Unfortunately it seems there is often a chasm between the old lives of the photos, documented in databases and finding aids, and their new post-institutional careers. This is a pity because the new contexts they are gathering can help us both understand and find them. What can we do to overcome this divide? How could finding aids harvest and display the user-generated content that aggregates around collection items living in the outside world?</p>
<p>The good news is that the tools to start doing this already exist – Flickr has a <a href="http://www.flickr.com/services/api/">powerful API</a> that makes it easy to extract photo metadata. Time for a bit of experimenting&#8230;<span id="more-670"></span></p>
<p>The first result is a <a href="http://userscripts.org/scripts/show/56135">userscript that displays Flickr comments</a> in a number of collection databases. Just <a href="http://userscripts.org/about/installing">install it</a> and then try it out:</p>
<ul>
<li>National Archives of Australia Photosearch &#8211; <a href="http://naa12.naa.gov.au/scripts/SearchOld.asp?O=PSI&amp;Number=7802286">try it!</a></li>
<li>State Records NSW Photo Investigator &#8211; <a href="http://investigator.records.nsw.gov.au/asp/photosearch/photo.asp?4481_a026_000090">try it!</a></li>
<li>National Archives and Records Administration ARC &#8211; <a href="http://arcweb.archives.gov/arc/action/ExternalIdSearch?id=522882">try it!</a></li>
</ul>
<div id="attachment_697" class="wp-caption aligncenter" style="width: 310px"><a href="http://discontents.com.au/wp-content/uploads/2009/08/photosearch.png"><img class="size-medium wp-image-697" title="Flickr comments in PhotoSearch" src="http://discontents.com.au/wp-content/uploads/2009/08/photosearch-300x199.png" alt="Flickr comments in PhotoSearch" width="300" height="199" /></a><p class="wp-caption-text">Flickr comments in PhotoSearch</p></div>
<p>Gory details follow&#8230;</p>
<p>So to begin with I thought I&#8217;d just harvest comments from Flickr and display them within existing collection interfaces. As before (<a href="http://discontents.com.au/shoebox/archives-shoebox/archives-in-3d">here</a> and <a href="http://discontents.com.au/shoebox/archives-shoebox/moa-buttons-galore">here</a>), <a href="https://addons.mozilla.org/firefox/addon/748">Greasemonkey</a> was my tool of choice for hacking finding aids. The plan was to trigger a Greasemonkey script when you arrive at a photo in a collection database, the script would then:</p>
<ul>
<li>extract a unique identifier for the photo that could be used to find it in Flickr</li>
<li>send off a request through the Flickr API to see if the photo was there</li>
<li>if so, then fire off another request to retrieve any comments</li>
<li>format the comments and insert them at a suitable point in the DOM of the database page</li>
</ul>
<p>Easy! Obviously for the script to work there needed to be a way of connecting entries in the database with photos on Flickr. In practice this means that the photos need to be described at item level, and that a unique identifier needs to be used somewhere in the description of the photo both on Flickr and in the collection database.</p>
<p>Any archive that meets these criteria is a candidate for inclusion. Only three pieces of information are necessary:</p>
<ul>
<li>the institution&#8217;s Flickr id</li>
<li>an expression to extract the identifier from the database page</li>
<li>an expression to identify the point on the database page at which the comments should be inserted</li>
</ul>
<p>The expressions could use XPath or regular expressions – whatever it takes to find the desired elements. I&#8217;m using <a href="http://jquery.com/">JQuery</a>, so that makes selecting elements a lot easier. For example, NARA ARC includes the item identifier in a div with the class &#8216;arcID&#8217;, so I just select that element using JQuery and then use regex matching to pull out the number:</p>
<p><pre class="brush: javascript">this.identifier = $(&#039;.arcID&#039;).text().match(/ARC Identifier (\d+)/i)[1];</pre></p>
<p>To start with I&#8217;ve included the databases of three institutions:</p>
<ul>
<li>the National Archives of Australia&#8217;s <a href="http://naa.gov.au/collection/photosearch/index.aspx">PhotoSearch</a> database</li>
<li>State Records of NSW&#8217;s <a href="http://investigator.records.nsw.gov.au/asp/photosearch/introduction.htm">Photo Investigator</a></li>
<li>the US National Archives and Records Administration&#8217;s <a href="http://www.archives.gov/research/arc/">Archival Research Catalog</a></li>
</ul>
<p>This is the code to save the settings for each institution:</p>
<p><pre class="brush: javascript">&lt;br /&gt;
if (document.location.href.match(/naa.gov.au\/scripts\/PhotoSearchItemDetail.asp/i)) {&lt;br /&gt;
this.name = &#039;NAA&#039;;&lt;br /&gt;
this.identifier = document.location.href.match(/M=0&amp;#038;B=(\d+)/)[1];&lt;br /&gt;
this.flickrId = &#039;24849862@N08&#039;;&lt;br /&gt;
this.position = &#039;table:last&#039;;&lt;br /&gt;
} else if (document.location.href.match(/records.nsw.gov.au\/asp\/photosearch\/photo\.asp\?/i)) {&lt;br /&gt;
this.name = &#039;StateRecordsNSW&#039;;&lt;br /&gt;
this.identifier = document.location.href.match(/photo\.asp\?([\d\w_]+)/i)[1];&lt;br /&gt;
this.flickrId = &#039;27331537@N06&#039;;&lt;br /&gt;
this.position = &#039;table:first&#039;;&lt;br /&gt;
} else if (document.location.href.match(/arcweb.archives.gov\/arc\/action\/ShowFullRecord|arcweb.archives.gov\/arc\/action\/ExternalIdSearch/i)) {&lt;br /&gt;
this.name = &#039;NARA&#039;;&lt;br /&gt;
this.identifier = $(&#039;.arcID&#039;).text().match(/ARC Identifier (\d+)/i)[1];&lt;br /&gt;
this.flickrId = &#039;35740357@N03&#039;;&lt;br /&gt;
this.position = &#039;.genPad:first&#039;;&lt;br /&gt;
}&lt;br /&gt;
</pre></p>
<p>From there it&#8217;s just a matter of building the calls to the API using Greasemonkey&#8217;s built-in  GM_xmlhttpRequest method. Once the comments are retrieved, they&#8217;re given some basic formatting and inserted at the point in the DOM identified by the siteDetails.position property. Once again, JQuery greatly simplifies all the DOM manipulation. If there are no comments then a suitable message is inserted together with a link to the photo in Flickr. Finally some CSS is added to prettify it all a little bit.</p>
<p>You can <a href="http://userscripts.org/scripts/review/56135">view the full code</a> on the Userscripts site.</p>
<p>Of course, it would be good to have this sort of stuff happening on the server side. In fact, with a few small modifications, this script could just be dropped into the code of any of the collection databases I&#8217;ve used. But in the meantime, Greasemonkey gives us a chance to play around with some of the possibilities – to start thinking about what finding aids might be like.</p>
<p>So what&#8217;s next? I&#8217;d like to do some playing around with tags and locations, perhaps using them to suggest related photos. I&#8217;ve also just realised that Flickr machine tags allow semantic markup&#8230; hmmm&#8230;</p>
<p>If you have any suggestions for databases to add to this script – let me know!</p>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shoebox/archives-shoebox/harvesting-context-1/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Cooliris-enabled scrapbook</title>
		<link>http://discontents.com.au/shed/hacks/cooliris-enabled-scrapbook</link>
		<comments>http://discontents.com.au/shed/hacks/cooliris-enabled-scrapbook#comments</comments>
		<pubDate>Mon, 09 Feb 2009 12:08:08 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[hacks]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[Cooliris]]></category>
		<category><![CDATA[Mapping our Anzacs]]></category>
		<category><![CDATA[photos]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=659</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Cooliris-enabled+scrapbook&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2009-02-09&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/hacks/cooliris-enabled-scrapbook&amp;rft.language=English"></span>

There&#8217;s more 3D goodness for you to enjoy now that the  Mapping our Anzacs scrapbook is Cooliris-enabled. If you have Cooliris installed, you&#8217;ll notice that the Cooliris icon on your browser toolbar lights up when you visit the site. Just click on the icon to browse all the photos posted to the scrapbook on [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Cooliris-enabled+scrapbook&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2009-02-09&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/hacks/cooliris-enabled-scrapbook&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=659"><!-- &nbsp; --></abbr>
<p>There&#8217;s more 3D goodness for you to enjoy now that the  <a href="http://our-anzacs.tumblr.com">Mapping our Anzacs scrapbook</a> is Cooliris-enabled. If you have Cooliris installed, you&#8217;ll notice that the Cooliris icon on your browser toolbar lights up when you visit the site. Just click on the icon to browse all the photos posted to the scrapbook on a glorious 3D wall.</p>
<div id="attachment_660" class="wp-caption aligncenter" style="width: 310px"><a href="http://discontents.com.au/wp-content/uploads/2009/02/moa-3d.jpg"><img class="size-medium wp-image-660" title="moa-3d" src="http://discontents.com.au/wp-content/uploads/2009/02/moa-3d-300x187.jpg" alt="Scrapbook posts in 3D" width="300" height="187" /></a><p class="wp-caption-text">Scrapbook posts in 3D</p></div>
<p>(If you don&#8217;t have Cooliris then <a href="http://cooliris.com">go and get it</a>. It can be used both in Internet Explorer and Firefox, though you&#8217;ll probably need to have admin rights to install for IE.)</p>
<p>Having given the 3D treatment to <a href="http://discontents.com.au/shoebox/archives-shoebox/archives-in-3d">digitised files</a> from the National Archives of Australia and <a href="http://discontents.com.au/shed/experiments/cloudy-biographies-and-portrait-walls">portrait images</a> from the Australian Dictionary of Biography, it wasn&#8217;t too hard to do. The scrapbook is a Tumblr site and the api makes it easy to extract all the photos. So I created a php file to gather all the details and then write them to a media-rss file. Then it was just a matter of  inserting a link to it in the scrapbook.<span id="more-659"></span></p>
<p>Code follows:</p>
<p><pre class="brush: php">&lt;/p&gt;
&lt;p&gt;&lt;?php&lt;br /&gt;
if ($_GET[&#039;start&#039;]) {&lt;br /&gt;
$start = $_GET[&#039;start&#039;];&lt;br /&gt;
} else {&lt;br /&gt;
$start = 0;&lt;br /&gt;
}&lt;br /&gt;
$url = &quot;http://our-anzacs.tumblr.com/api/read?start=$start&amp;#038;num=50&amp;#038;type=photo&amp;#038;filter=text&quot;;&lt;br /&gt;
$ch = curl_init();&lt;br /&gt;
curl_setopt($ch, CURLOPT_URL, $url);&lt;br /&gt;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);&lt;br /&gt;
curl_setopt($ch, CURLOPT_FAILONERROR, true);&lt;br /&gt;
curl_setopt($ch, CURLOPT_TIMEOUT, 20);&lt;br /&gt;
$result = curl_exec($ch);&lt;br /&gt;
if (!$result) {&lt;br /&gt;
echo &quot;cURL error number:&quot; .curl_errno($ch);&lt;br /&gt;
echo &quot;cURL error:&quot; . curl_error($ch);&lt;br /&gt;
exit;&lt;br /&gt;
}&lt;br /&gt;
curl_close($ch);&lt;br /&gt;
$dom = new DOMDocument();&lt;br /&gt;
@$dom-&gt;loadHTML($result);&lt;br /&gt;
$xpath = new DOMXPath($dom);&lt;br /&gt;
$attrs = $xpath-&gt;evaluate(&quot;//posts/@total[1]&quot;);&lt;br /&gt;
foreach ($attrs as $attr) {&lt;br /&gt;
$total = $attr-&gt;nodeValue;&lt;br /&gt;
}&lt;br /&gt;
$num_pages = ceil($total/50);&lt;br /&gt;
$start_next = $start+50;&lt;br /&gt;
$start_previous = $start-50;&lt;/p&gt;
&lt;p&gt;echo &quot;&lt;?xml version=&#039;1.0&#039; encoding=&#039;utf-8&#039; standalone=&#039;yes&#039;?&gt;n&quot;;&lt;br /&gt;
echo &quot;&lt;rss version=&#039;2.0&#039; xmlns:media=&#039;http://search.yahoo.com/mrss/&#039; xmlns:atom=&#039;http://www.w3.org/2005/Atom&#039;&gt;n&quot;;&lt;br /&gt;
echo &quot;&lt;channel&gt;n&quot;;&lt;br /&gt;
echo &quot;n&quot;;&lt;br /&gt;
echo &quot;&lt;description&gt;Photos posted to the Mapping our Anzacs scrapbook&lt;/description&gt;n&quot;;&lt;br /&gt;
echo &quot;
&lt;link&gt;http://our-anzacs.tumblr.com&lt;/link&gt;n&quot;;&lt;br /&gt;
if ($start_previous &gt;= 0) {&lt;br /&gt;
echo &quot;&lt;atom:link rel=&#039;previous&#039; href=&#039;moa-media-rss.php?start=$start_previous&#039; /&gt;&quot;;&lt;br /&gt;
}&lt;br /&gt;
if ($start_next &lt;= $total) {&lt;br /&gt;
echo &quot;&lt;atom:link rel=&#039;next&#039; href=&#039;moa-media-rss.php?start=$start_next&#039; /&gt;&quot;;&lt;br /&gt;
}&lt;br /&gt;
$posts = $xpath-&gt;evaluate(&quot;//post/@id&quot;);&lt;br /&gt;
foreach ($posts as $post) {&lt;br /&gt;
$id = $post-&gt;nodeValue;&lt;br /&gt;
$url = &quot;http://our-anzacs.tumblr.com/post/$id&quot;;&lt;br /&gt;
$photos = $xpath-&gt;evaluate(&quot;//post[@id=&#039;$id&#039;]/photo-url[@max-width=&#039;500&#039;]/text()&quot;);&lt;br /&gt;
foreach ($photos as $photo) {&lt;br /&gt;
$photo_500 = $photo-&gt;nodeValue;&lt;br /&gt;
}&lt;br /&gt;
$photos = $xpath-&gt;evaluate(&quot;//post[@id=&#039;$id&#039;]/photo-url[@max-width=&#039;250&#039;]/text()&quot;);&lt;br /&gt;
foreach ($photos as $photo) {&lt;br /&gt;
$photo_250 = $photo-&gt;nodeValue;&lt;br /&gt;
}&lt;br /&gt;
$nodes = $xpath-&gt;evaluate(&quot;//post[@id=&#039;$id&#039;]/photo-caption/text()&quot;);&lt;br /&gt;
foreach ($nodes as $node) {&lt;br /&gt;
$caption = $node-&gt;nodeValue;&lt;br /&gt;
preg_match(&quot;/View details fors+([ws,-]*)/&quot;, $caption, $matches);&lt;br /&gt;
$names = explode(&quot;, &quot;, $matches[1]);&lt;br /&gt;
$name = &quot;$names[1] $names[0]&quot;;&lt;br /&gt;
}&lt;br /&gt;
echo &quot;&lt;item&gt;n&quot;;&lt;br /&gt;
echo &quot;&lt;guid isPermaLink=&#039;false&#039;&gt;$id&lt;/guid&gt;n&quot;;&lt;br /&gt;
echo &quot;n&quot;;&lt;br /&gt;
echo &quot;
&lt;link&gt;$url&lt;/link&gt;n&quot;;&lt;br /&gt;
echo &quot;&lt;media:thumbnail url=&#039;$photo_250&#039; /&gt;n&quot;;&lt;br /&gt;
echo &quot;&lt;media:content url=&#039;$photo_500&#039; type=&#039;image/jpeg&#039; /&gt;n&quot;;&lt;br /&gt;
echo &quot;&lt;/item&gt;n&quot;;&lt;br /&gt;
}&lt;br /&gt;
echo &quot;&lt;/channel&gt;n&quot;;&lt;br /&gt;
echo &quot;&lt;/rss&gt;n&quot;;&lt;br /&gt;
?&gt;&lt;/p&gt;
&lt;p&gt;</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shed/hacks/cooliris-enabled-scrapbook/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADB DIY RSS</title>
		<link>http://discontents.com.au/shed/hacks/adb-diy-rss</link>
		<comments>http://discontents.com.au/shed/hacks/adb-diy-rss#comments</comments>
		<pubDate>Wed, 04 Feb 2009 06:34:24 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[hacks]]></category>
		<category><![CDATA[ADB Online]]></category>
		<category><![CDATA[birthdays]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=653</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=ADB+DIY+RSS&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2009-02-04&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/hacks/adb-diy-rss&amp;rft.language=English"></span>

So I was thinking, wouldn&#8217;t it be nice if the Australian Dictionary of Biography&#8217;s &#8216;born on this day&#8216; feature could be made available as an RSS feed. Every morning you&#8217;d get a new list of biographies delivered direct to your feed reader. And so&#8230;
[sounds of xpath wrangling and PHP coding]
here it is.
It&#8217;s pretty simple – [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=ADB+DIY+RSS&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2009-02-04&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/hacks/adb-diy-rss&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=653"><!-- &nbsp; --></abbr>
<p>So I was thinking, wouldn&#8217;t it be nice if the <em>Australian Dictionary of Biography</em>&#8217;s &#8216;<a href="http://www.adb.online.anu.edu.au/scripts/adbp-births-deaths.php">born on this day</a>&#8216; feature could be made available as an RSS feed. Every morning you&#8217;d get a new list of biographies delivered direct to your feed reader. And so&#8230;</p>
<p>[sounds of xpath wrangling and PHP coding]</p>
<p><a href="http://discontents.com.au/shed/adb/born-rss.php">here it is</a>.</p>
<p>It&#8217;s pretty simple – it harvests all the links of people born on the current day, then loops through the links to gather the first paragraph of each biography. Then it&#8217;s just a matter of writing everything to an RSS file.<span id="more-653"></span></p>
<p>In case you missed it, I also created a <a href="http://discontents.com.au/shed/adb/portraits/adb-portraits-1.rss">Media RSS feed</a> for portrait images used in the ADB. This enables them to be <a href="http://discontents.com.au/shed/adb/portraits/adb-portrait-browser.html">viewed in CoolIris</a>.</p>
<p>Code follows&#8230;</p>
<pre><pre class="brush: php">
&lt;?php
function getPage($url, $ch) {
	curl_setopt($ch, CURLOPT_URL,$url);
	$html= curl_exec($ch);
	if (!$html) {
		echo &quot;cURL error number:&quot; .curl_errno($ch);
		echo &quot;cURL error:&quot; . curl_error($ch);
		exit;
	}
	return $html;
}
$url = &quot;http://www.adb.online.anu.edu.au/scripts/adbp-births-deaths.php&quot;;
$userAgent = &#039;Googlebot/2.1 (http://www.googlebot.com/bot.html)&#039;;

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$html = getPage($url, $ch);

$dom = new DOMDocument();
@$dom-&gt;loadHTML($html);

$xpath = new DOMXPath($dom);
$hrefs = $xpath-&gt;evaluate(&quot;//ul[@class=&#039;pb-results&#039;][1]/li/a&quot;);
$titles = $xpath-&gt;evaluate(&quot;//ul[@class=&#039;pb-results&#039;][1]/li/a/text()&quot;);

echo &quot;&lt;?xml version=&#039;1.0&#039;?&gt;\n&quot;;
echo &quot;&lt;rss version=&#039;2.0&#039;&gt;\n&quot;;
echo &quot;&lt;channel&gt;\n&quot;;
echo &quot;\n&quot;;
echo &quot;
&lt;link&gt;http://www.adb.online.anu.edu.au/scripts/adbp-births-deaths.php&lt;/link&gt;\n&quot;;
echo &quot;&lt;description&gt;A list of all those people in the Australian Dictionary of Biography who were born on this day.&lt;/description&gt;\n&quot;;
for ($i = 0; $i &lt; $hrefs-&gt;length; $i++) {
	$href = $hrefs-&gt;item($i);
	$title = $href-&gt;nodeValue;
	$bio = &quot;&quot;;
	$url = &quot;http://www.adb.online.anu.edu.au&quot; . substr($href-&gt;getAttribute(&#039;href&#039;),2);
	$html = getPage($url, $ch);
	$dom = new DOMDocument();
	@$dom-&gt;loadHTML($html);
	$xpath = new DOMXPath($dom);
	$paras = $xpath-&gt;evaluate(&quot;//div[@id=&#039;content&#039;]/p[1]/text()&quot;);
	foreach ($paras as $para) {
		$bio .= $para-&gt;nodeValue;
	}
	$bio .= &quot;...&quot;;
	$bio = htmlspecialchars($bio, ENT_QUOTES);
	$bio = str_replace(&#039;\n&#039;, &#039;&#039;, $bio);
	echo &quot;&lt;item&gt;\n&quot;;
	echo &quot;\n&quot;;
	echo &quot;
&lt;link&gt;$url&lt;/link&gt;\n&quot;;
	echo &quot;&lt;description&gt;$bio&lt;/description&gt;\n&quot;;
	echo &quot;&lt;/item&gt;\n&quot;;
}
echo &quot;&lt;/channel&gt;\n&quot;;
?&gt;
</pre></pre>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shed/hacks/adb-diy-rss/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MoA buttons galore</title>
		<link>http://discontents.com.au/shoebox/archives-shoebox/moa-buttons-galore</link>
		<comments>http://discontents.com.au/shoebox/archives-shoebox/moa-buttons-galore#comments</comments>
		<pubDate>Fri, 30 Jan 2009 06:41:40 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[archives]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[bookmarklet]]></category>
		<category><![CDATA[buttons]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[Mapping our Anzacs]]></category>
		<category><![CDATA[recordsearch]]></category>
		<category><![CDATA[userscript]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=626</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=MoA+buttons+galore&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2009-01-30&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shoebox/archives-shoebox/moa-buttons-galore&amp;rft.language=English"></span>

Mapping our Anzacs, in case you don&#8217;t know, provides a Google map interface to the 375,000+ WWI service records held by the National Archives of Australia. Amongst other other things, you can add scrapbook posts to individual entries and create tributes. It&#8217;s meant to encourage exploration, so go on&#8230; explore!
If you&#8217;ll do, you&#8217;ll notice that [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=MoA+buttons+galore&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2009-01-30&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shoebox/archives-shoebox/moa-buttons-galore&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=626"><!-- &nbsp; --></abbr>
<p><a href="http://mappingouranzacs.naa.gov.au/">Mapping our Anzacs</a>, in case you don&#8217;t know, provides a Google map interface to the 375,000+ WWI service records held by the National Archives of Australia. Amongst other other things, you can add <a href="http://our-anzacs.tumblr.com/">scrapbook posts</a> to individual entries and create tributes. It&#8217;s meant to encourage exploration, so go on&#8230; explore!</p>
<p>If you&#8217;ll do, you&#8217;ll notice that there are direct links into the National Archives&#8217; database <a href="http://naa.gov.au/collection/recordsearch/index.aspx">RecordSearch</a>. However, there are currently no links going to other way. Why does this matter? Well perhaps you&#8217;d like to use NameSearch to find an individual record, but then add a scrapbook post in Mapping our Anzacs. Up until now you had to find them all over again. But not any more&#8230;</p>
<p>Introducing our new range of &#8216;View in Mapping our Anzacs&#8217; buttons:</p>
<ul>
<li>For the discerning Firefox devotee we have a <a href="http://userscripts.org/scripts/show/41314">Greasemonkey userscript</a> which adds a button to the RecordSearch item details page.</li>
<li>For fashion-challenged IE user we have a bookmarklet. Just right click on this link – <a href="javascript:if%20(document.location.href.match(/ItemDetail.asp/i)){var%20matches=document.body.innerHTML.match(/SeriesDetail.asp\?M=0\&amp;amp;B=([\d\w\/]+)/i);series=matches[1];var%20matches=document.body.innerHTML.match(/Barcode\<\/B>\<BR\>(\d+)\</i);barcode=matches[1];if%20(series=='B2455'){window.location='http://mappingouranzacs.naa.gov.au/details-permalink.aspx?barcode_no='+barcode;}}">View in Mapping our Anzacs</a> – and save it as a favourite in your &#8216;Links&#8217; folder (you may need to enable the &#8216;Links&#8217; toolbar first by checking Tools > Toolbars > Links.)</li>
</ul>
<p>Yes, it&#8217;s true&#8230; you could use the Bookmarklet with Firefox (just drag it to your bookmarks toolbar), but Greasemonkey is so much more chic.</p>
<p>Once you&#8217;re fully button-enabled just head into RecordSearch, find an item in series B2455 (the WWI service records) and click! Hurrah! You will be instantly transported to Mapping our Anzacs.</p>
<p>You can test out your new button by heading here:</p>
<ul>
<li><a href="http://www.aa.gov.au/cgi-bin/Search?O=I&#038;Number=3445411">B2455, WRAGGE C L E</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shoebox/archives-shoebox/moa-buttons-galore/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
