<?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 &#187; hacks</title>
	<atom:link href="http://discontents.com.au/sections/shed/hacks/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>Tue, 24 Jan 2012 20:57:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>QueryPic</title>
		<link>http://discontents.com.au/shed/hacks/querypic</link>
		<comments>http://discontents.com.au/shed/hacks/querypic#comments</comments>
		<pubDate>Sat, 31 Dec 2011 15:08:12 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[text mining]]></category>
		<category><![CDATA[Trove]]></category>
		<category><![CDATA[visualisation]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=1546</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=QueryPic&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=digital+humanities&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2012-01-01&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/hacks/querypic&amp;rft.language=English"></span>
Back when I was looking at &#8216;When did the Great War become the First World War?&#8216; I promised a detailed post on how I constructed the graphs. But of course I got distracted. Then I started adding new features to the script and redesigning the graphs, so&#8230; Anyway, the result is a rather neat little [...]]]></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=QueryPic&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=digital+humanities&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2012-01-01&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/hacks/querypic&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=1546"><!-- &nbsp; --></abbr>
<p>Back when I was looking at &#8216;<a title="When did the ‘Great War’ become the ‘First World War’?" href="http://discontents.com.au/shed/experiments/when-did-the-great-war-become-the-first-world-war">When did the Great War become the First World War?</a>&#8216; I promised a detailed post on how I constructed the graphs. But of course I got distracted. Then I started adding new features to the script and redesigning the graphs, so&#8230;</p>
<p>Anyway, the result is a rather neat little gizmo henceforth named <a href="http://wraggelabs.com/emporium/trove-tools/newspaper-search-summariser/">QueryPic</a> (I got a bit sick of &#8216;search summariser&#8217; and &#8216;graph-maker thing&#8217;). <a title="Mining the treasures of Trove (part 2)" href="http://discontents.com.au/shed/experiments/mining-the-treasures-of-trove-part-2">The first version</a> just harvested data and left all the graph-making to you. But QueryPic does it all! It harvests the data <em>and</em> makes the graph. Woohoo.</p>
<p>Here&#8217;s an example showing &#8216;drought&#8217; versus &#8216;flood&#8217;:</p>
<p><a href="http://wraggelabs.com/shed/trove/newgraphs/flood_drought.html"><img class="aligncenter size-medium wp-image-1551" title="Screen Shot 2012-01-01 at 1.53.28 AM" src="http://discontents.com.au/wp-content/uploads/2012/01/Screen-Shot-2012-01-01-at-1.53.28-AM-250x166.png" alt="" width="250" height="166" /></a></p>
<h4>QueryPic features</h4>
<ul>
<li>Explore your Trove newspaper query over time in the form of a simple line graph.</li>
<li>Interactive &#8212; click on a point to retrieve sample articles from that date.</li>
<li>Combine data sources to compare queries.</li>
<li>Choose your interval &#8212; plot by year or month.</li>
<li>Switch views between total results and the proportion of all articles.</li>
</ul>
<h4>Running QueryPic</h4>
<p>Yes, it&#8217;s a Python script and yes it runs on the command line. Let&#8217;s get that out of the way now. I don&#8217;t think I have the time and energy to develop cross-platform gui versions of all my tools. I&#8217;d rather spend the time adding new features or exploring new possibilities. Sorry, but until I have a wealthy benefactor or a technical support team, I think that&#8217;s the way it has to be. In any case, <a href="https://github.com/wragge/Trove-newspapers">the code is all there </a>&#8211; so build your own gui!</p>
<p>Actually, if I did have the time and energy I don&#8217;t think I&#8217;d build a standalone gui anyway. What would be much cooler would be a web service, where people could run, share and combine their queries. Social graph-making! A celebration of serendipity! A historical playground! Hmmm&#8230;</p>
<p>But for now there&#8217;s this python script. It&#8217;s dead easy to use. Starting from the beginning&#8230;</p>
<ol>
<li>Do you have Python installed? If you have a Mac or Linux the answer is yes. Fire up a terminal and type &#8216;python -V&#8217; &#8212; see, I told you. If you have Windows you can get a <a href="http://www.python.org/getit/windows/">handy installer</a>. Do it.</li>
<li>Get the source code. Just <a href="https://github.com/wragge/Trove-newspapers/zipball/master">download this zip file</a> and open it into a new folder.</li>
<li>Open a terminal and cd into the new folder.</li>
<li>Run &#8216;python do_totals.py [your Trove query]&#8216;.</li>
<li>Watch in excitement as the script chugs away retrieving data from Trove.</li>
<li>Once the script is finished, go to the &#8216;graphs&#8217; directory, where you&#8217;ll find your newly-created html page complete with fancy interactive graph.</li>
<li>Open the html page in the web browser of your choice.</li>
<li>Enjoy! Celebrate! Drink a toast in my honour!</li>
</ol>
<h4>Customising QueryPic</h4>
<p>There are a number of optional arguments that you add to the command line to customise your results:</p>
<p><strong>-n (or &#8211;name) [a query name]<br />
</strong>Give a name to your query. The name is used to create filenames for the html and data files, it is also used in the legend of the graph. The default is to use the search keywords as the name.</p>
<p><strong>-d (or &#8211;directory) [a directory path]</strong><br />
The full pathname of the directory/folder for your results. The default is a &#8216;graphs&#8217; sub-directory in the current directory.</p>
<p><strong>-g (or &#8211;graph) [a graph name]</strong><br />
Specify the name of the html file that&#8217;s created. This is useful for displaying multiple queries on a single graph. Just run QueryPic for each query, using the same graph name each time. The default is either the value specified by the -n parameter or a name derived from the search keywords.</p>
<p><strong>-m (or &#8211;monthly)</strong><br />
Plot the query at monthly intervals. The default interval is a year.</p>
<h4>What QueryPic actually does</h4>
<p>QueryPic builds a simple visualisation of your search query in the Trove newspaper database. A list of search results is difficult to interpret and offers little context. QueryPic shows you the number of articles matching your query over time, enabling you reframe your questions, pursue hunches, or simply play around.</p>
<p>QueryPic takes your Trove newspaper query and looks for a date range. If it doesn&#8217;t find one, it assumes you want your graph to go from 1803 to 1954 (the complete contents of the newspaper database &#8212; except for the Women&#8217;s Weekly). QueryPic then strips out any date parameters from the query, so it can fire off the query within the start and end dates, at the specified date interval.</p>
<p>Date interval? In the previous version of this script you could only plot points at yearly intervals, so it was impossible to zoom in an see what might be happening over the span of a single year or two. But amazing advances in QueryPic technology mean you can now plot changes <em>by month</em>. Here for example is a new version of my Great War/First World War graph, focused on 1938&#8211;1946 and plotted at monthly intervals.</p>
<p><a href="http://wraggelabs.com/shed/trove/newgraphs/great_war_1938_46.html"><img class="aligncenter size-medium wp-image-1552" title="Screen Shot 2012-01-01 at 1.55.22 AM" src="http://discontents.com.au/wp-content/uploads/2012/01/Screen-Shot-2012-01-01-at-1.55.22-AM-250x166.png" alt="" width="250" height="166" /></a></p>
<p>So for each interval within the date range QueryPic fires off a request to Trove. From the response it scrapes out the total number of results for that date. If the total is greater than zero, it then fires off a second request to find the total number of newspaper articles for that year. Your query results divided by the total number of articles gives the proportion of articles for that date matching your search query.</p>
<p>The number of results and the proportion are written to a javascript file, together with some other important information including the original query and the date the harvest was performed. Remember, the Trove newspapers database is always changing! QueryPic then grabs a copy of it&#8217;s own special html template and inserts a reference to this javascript file. For good measure, it also inserts a link to your original query. The file is saved under a new name, ready for you to open and explore.</p>
<p>The html file contains everything necessary to take your data and turn it into a graph. It does this using the HighCharts javascript library. Please note, that while licence conditions allow HighCharts to be redistributed as part of a non-commercial package, it is not free for commercial use. Check the <a href="http://www.highcharts.com/">HighCharts website</a> for details.</p>
<h4>Some examples</h4>
<p>Plot &#8216;cat&#8217; against &#8216;dog&#8217; in a graph called &#8216;animals&#8217;:</p>
<pre class="brush: bash; gutter: false">python do_totals.py &quot;http://trove.nla.gov.au/newspaper/result?q=cat&quot; -g &quot;animals&quot;
python do_totals.py &quot;http://trove.nla.gov.au/newspaper/result?q=cat&quot; -g &quot;animals&quot;</pre>
<p>Specify a directory for your results:</p>
<pre class="brush: bash; gutter: false">python do_totals.py &quot;http://trove.nla.gov.au/newspaper/result?q=cat&quot; -d &quot;/User/bill/Documents/graphs&quot;</pre>
<p>Plot results at monthly intervals:</p>
<pre class="brush: bash; gutter: false">python do_totals.py &quot;http://trove.nla.gov.au/newspaper/result?q=cat&amp;fromyyyy=1920&amp;toyyyy=1921&quot; -m</pre>
<p>Specify a name:</p>
<pre class="brush: bash; gutter: false">python do_totals.py &quot;http://trove.nla.gov.au/newspaper/result?q=cat&quot; -n &quot;Felines&quot;</pre>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shed/hacks/querypic/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extracting editorials #2</title>
		<link>http://discontents.com.au/shed/hacks/extracting-editorials-2</link>
		<comments>http://discontents.com.au/shed/hacks/extracting-editorials-2#comments</comments>
		<pubDate>Mon, 19 Dec 2011 13:18:49 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[experiments]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[1913editorials]]></category>
		<category><![CDATA[text mining]]></category>
		<category><![CDATA[Trove]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=1515</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=Extracting+editorials+%232&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=digital+humanities&amp;rft.subject=experiments&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2011-12-19&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/hacks/extracting-editorials-2&amp;rft.language=English"></span>
As I explained in the first of this series, I&#8217;m documenting my efforts to extract every editorial published in the Sydney Morning Herald in 1913 from the Trove newspaper database. It&#8217;s an experiment both in text mining and historical writing &#8212; an attempt to put the method up front. While I didn&#8217;t think there was anything [...]]]></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=Extracting+editorials+%232&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=digital+humanities&amp;rft.subject=experiments&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2011-12-19&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/hacks/extracting-editorials-2&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=1515"><!-- &nbsp; --></abbr>
<p>As I explained in <a title="Extracting editorials #1" href="http://discontents.com.au/shoebox/digital-humanities/extracting-editorials-1">the first of this series</a>, I&#8217;m documenting my efforts to extract every editorial published in the <em>Sydney Morning Herald</em> in 1913 from the Trove newspaper database. It&#8217;s an experiment both in text mining and historical writing &#8212; an attempt to put the method up front.</p>
<p>While I didn&#8217;t think there was anything very thrilling in the first instalment, recording my thoughts and assumptions in this way has already proved useful. In a comment, <a href="http://discontents.com.au/shoebox/digital-humanities/extracting-editorials-1#comment-2371">Owen Stephens noted</a> that his attempt to reproduce my search query produced fewer results. After a little bit of poking around I realised that the fulltext modifier, which I often use to switch off fuzzy matching, counteracts the &#8216;search headings only&#8217; flag. So my query was returning results that had the string &#8216;The Sydney Morning Herald&#8217; anywhere in the article.</p>
<p>Try it for yourself.</p>
<p><a href="http://trove.nla.gov.au/newspaper/result?l-textSearchScope=headings+only%7Cscope%3Aheadings&amp;l-title=The+Sydney+Morning+Herald...%7Ctitleid%3A35&amp;l-word=*ignore*%7C*ignore*&amp;fromyyyy=1913&amp;toyyyy=1913&amp;sortby=dateAsc&amp;q=fulltext%3A%22The+Sydney+Morning+Herald%22&amp;l-category=Article%7Ccategory%3AArticle&amp;s=0">Here&#8217;s my original query</a> &#8212; searching for fulltext:&#8221;The Sydney Morning Herald&#8221; in headings only (supposedly). You&#8217;ll notice that it returns 335 results and it&#8217;s clear from a quick scan that a number are false positives (they don&#8217;t follow the pattern for editorials).</p>
<p><a href="http://trove.nla.gov.au/newspaper/result?l-textSearchScope=headings+only%7Cscope%3Aheadings&amp;l-title=The+Sydney+Morning+Herald...%7Ctitleid%3A35&amp;l-word=*ignore*%7C*ignore*&amp;fromyyyy=1913&amp;toyyyy=1913&amp;sortby=dateAsc&amp;l-category=Article%7Ccategory%3AArticle&amp;q=%22The+Sydney+Morning+Herald%22">Here&#8217;s Owen&#8217;s query</a> &#8212; searching for &#8220;The Sydney Morning Herald&#8221; in headings only. It returns 294 results, without any obvious false positives.</p>
<p>So my attempt to disable fuzzy matching actually produced a less accurate result! Weird.</p>
<p>Actually, I think one important benefit of this sort of text mining is that it helps you understand how the search engines you&#8217;re using actually work. Once you start poking and prodding, the idiosyncrasies start to emerge.</p>
<p>Anyway, I harvested Owen&#8217;s cleaner result set and opened up the resulting csv file. As it seemed in Trove, there we&#8217;re very few false positives. Indeed there were only two articles that didn&#8217;t seem to follow the standard editorial format, and these were notes added to the editorial page. On the other hand, there were obviously about 20 editorials missing. I could have manually worked through the csv file to identify the missing dates, but I thought I&#8217;d try to create some tools that would do the work for me.</p>
<p>What I wanted was the details of the first editorial in every edition of the newspaper in 1913 &#8212; so there should be one, and only one, article for each day on which the newspaper was published. I needed a tool that would analyse the csv file and do two things:</p>
<ul>
<li>identify dates that occur multiple times (false positive alert!)</li>
<li>identify dates that are absent from the result set (missing in action!)</li>
</ul>
<p>The resulting code is <a href="https://github.com/wragge/Trove-newspapers">all on GitHub</a> if you want follow along. I wrote a Python script that opens up the csv file, extracts all the date strings, converts them to datetime objects and then saves them to a list. Once that&#8217;s done it&#8217;s pretty easy to loop through and find duplicates:</p>
<pre class="brush: python">
def find_duplicates(list):
    &#039;&#039;&#039;
    Check a list for suplicate values.
    Returns a list of the duplicates.
    &#039;&#039;&#039;
    seen = set()
    duplicates = []
    for item in list:
        if item in seen:
            duplicates.append(item)
        seen.add(item)
    return duplicates
</pre>
<p>Finding missing dates was a little more complicated, but Google came to the rescue with some handy code samples. All I had to do was set a start and end date (in this case 1 January 1913 and 31 December 1913) and create a timedelta object equal to a day. Then it&#8217;s just a matter of adding the timedelta to the start date, comparing the new date to the dates extracted from the csv file, and continuing on until you hit the end. If the new date isn&#8217;t in the csv file, then it gets added to the missing list.</p>
<pre class="brush: python">
if year:
        start_date = datetime.date(year, 1, 1)
        end_date = datetime.date(year, 12, 31)
    else:
        start_date = article_dates[0]
        end_date = article_dates[-1]
    one_day = datetime.timedelta(days=1)
    this_day = start_date
    # Loop through each day in specified period to see if there&#039;s an article
    # If not, add to the missing_dates list.
    while this_day &lt;= end_date:
        if this_day.weekday() not in exclude: #exclude Sunday
            if this_day not in article_dates:
                missing_dates.append(this_day)
        this_day += one_day
</pre>
<p>I&#8217;ve tried to make the code as reusable as possible, so you can either supply a year, or the script will read start and end dates from the csv file itself.</p>
<p>All that left me with two more lists of dates: &#8216;duplicates&#8217; and &#8216;missing&#8217;. At first I just wrote these out to a text file, but then I decided it would be useful to write the results to an html page. That way I could add links that would take me to the actual issue within Trove, helping me to quickly find the missing editorial.</p>
<p>Unfortunately there&#8217;s no direct way to go from a date to an issue &#8212; you first need to find the issue identifier. How do you do this? If you dig around in the code beneath <a href="http://trove.nla.gov.au/ndp/del/title/35">the page for each newspaper title</a>, you&#8217;ll find that the ajax interface pulls in a json file with issue information. You can access this through a url like: http://trove.nla.gov.au/ndp/del/titlesOverDates/[year]/[month]. Here&#8217;s an example for <a href="http://trove.nla.gov.au/ndp/del/titlesOverDates/1913/01">January 1913</a>.</p>
<p>The json includes all issues for all titles in the specified month. So you then have to loop through to find a specific title and day. Once you have the issue identifier you can just attach it to a url:</p>
<pre class="brush: python">
def get_issue_url(date, title_id):
    &#039;&#039;&#039;
    Gets the issue url given a title and date.
    &#039;&#039;&#039;
    year, month, day = date.timetuple()[:3]
    url = &#039;http://trove.nla.gov.au/ndp/del/titlesOverDates/%s/%02d&#039; % (year, month)
    issues = json.load(urllib2.urlopen(url))
    for issue in issues:
        if issue[&#039;t&#039;] == title_id and int(issue[&#039;p&#039;]) == day:
            issue_id = issue[&#039;iss&#039;]
    return &#039;http://trove.nla.gov.au/ndp/del/issue/%s&#039; % issue_id
</pre>
<div id="attachment_1533" class="wp-caption alignright" style="width: 260px"><a href="http://discontents.com.au/wp-content/uploads/2011/12/Screen-Shot-2011-12-19-at-4.43.15-PM1.png"><img src="http://discontents.com.au/wp-content/uploads/2011/12/Screen-Shot-2011-12-19-at-4.43.15-PM1-250x469.png" alt="" title="Screen Shot 2011-12-19 at 4.43.15 PM" width="250" height="469" class="size-medium wp-image-1533" /></a><p class="wp-caption-text">My results file with links to Trove</p></div>
<p>Finally, to save myself having to cut and paste the missing dates back into the csv file, I added a few lines to write them in automatically.</p>
<p>So now I have a handy little html page, complete with dates and links, that I&#8217;m working through to find all the missing editorials. All I need for the next stage are the urls for the editorial and the page on which it&#8217;s published. I&#8217;m just cutting and pasting these from the citation box in Trove into the csv file. Once this is done I can start trying to find <strong>all</strong> the editorials.</p>
<p>PS: I noted in my first post that one benefit in finding the editorials was that the main news articles usually appeared on the page after the editorials. I&#8217;ve been thinking some more about ways to identify &#8216;major&#8217; news stories. Word length perhaps? But not always. Hmmm, but major stories do seem to be published at the top of the page. After a bit more poking around in the code I found that there&#8217;s a &#8216;y value&#8217; assigned to each article that indicates its position on the page. So if I harvest all the articles on the page after the editorials and then rank them by their y values? Interesting&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shed/hacks/extracting-editorials-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Embedded archives</title>
		<link>http://discontents.com.au/shed/hacks/embedded-archives</link>
		<comments>http://discontents.com.au/shed/hacks/embedded-archives#comments</comments>
		<pubDate>Sun, 27 Jun 2010 12:00:17 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[hacks]]></category>
		<category><![CDATA[archives]]></category>
		<category><![CDATA[Cooliris]]></category>
		<category><![CDATA[recordsearch]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=932</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=Embedded+archives&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2010-06-27&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/hacks/embedded-archives&amp;rft.language=English"></span>
Some of you may have noticed that my Hacking a research project post featured a file from the National Archives of Australia embedded as a Cooliris widget. Huh? To jog your memory, here it is again: No, it&#8217;s not just an image, it&#8217;s a little 3D wall. You can pan and zoom to your heart&#8217;s [...]]]></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=Embedded+archives&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2010-06-27&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shed/hacks/embedded-archives&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=932"><!-- &nbsp; --></abbr>
<p>Some of you may have noticed that my <a href="http://discontents.com.au/shed/experiments/hacking-a-research-project">Hacking a research project</a> post featured a file from the <a href="http://naa.gov.au/">National Archives of Australia</a> embedded as a <a href="http://cooliris.com/">Cooliris</a> widget. Huh? To jog your memory, here it is again:</p>
<div class="wp-caption aligncenter" style="width: 470px">
<img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.11NXC/bT*xJmx*PTEyNzY3NzEwMDA5MjQmcHQ9MTI3Njc3MTAwNTYyOSZwPTkwMjA1MSZkPSZnPTEmb2Y9MA==.gif" /><object id="ci_10145_o" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="460" height="300"><param name="movie" value="http://apps.cooliris.com/embed/cooliris.swf"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="bgColor" value="#121212" /><param name="flashvars" value="feed=http%3A%2F%2Fwraggelabs.com%2Frecordsearch%2Frss%2F7473965%2F%3Fpages%3D70%26ref%3DST84%2F1%2C%25201906%2F221-230&numrows=2" /><param name="wmode" value="opaque" /><embed id="ci_10145_e" type="application/x-shockwave-flash" src="http://apps.cooliris.com/embed/cooliris.swf" width="460" height="300" allowFullScreen="true" allowScriptAccess="always" bgColor="#121212" flashvars="feed=http%3A%2F%2Fwraggelabs.com%2Frecordsearch%2Frss%2F7473965%2F%3Fpages%3D70%26ref%3DST84%2F1%2C%25201906%2F221-230&numrows=2" wmode="opaque"></embed></object>
<p class="wp-caption-text">These certificates allowed non-white Australians travelling overseas to re-enter the country. NAA: ST84/1, 1906/21-30</p></div>
<p>No, it&#8217;s not just an image, it&#8217;s a little 3D wall. You can pan and zoom to your heart&#8217;s content. You can enlarge an image, view fullscreen &#8212; you can even share an image via Twitter. Fun for all the family!</p>
<p>Regular viewers will recall my previous encounters with CoolIris &#8212; <a href="http://discontents.com.au/shoebox/archives-shoebox/archives-in-3d">Archives in 3D</a> and <a href="http://discontents.com.au/shed/hacks/cooliris-enabled-scrapbook">CoolIris enabled scrapbook</a> &#8212; but these relied on having the CoolIris plugin installed. The embeddable Flash version wouldn&#8217;t work when the images were coming from the NAA because it upset Flash&#8217;s cross-domain settings.</p>
<p>So how did I get it to work? For various other projects I&#8217;ve been playing with simple image proxies using Python and Django, so I just applied the same principles. The image proxy makes it seem as if the images are coming from a local source, thus keeping Flash happy. Hurrah!</p>
<p>I&#8217;ve added a few little tweaks, so you can now view any digitised file in the National Archives of Australia in a CoolIris wall. Just go the the <a href="http://wraggelabs.com/recordsearch/wall/">file browser page</a> and enter a barcode. Even better you can install a bookmarklet. Just drag this link to your bookmarks bar (or save as a favourite) &#8212; <a href="javascript:(function(){window.location='http://wraggelabs.com/recordsearch/wall/'+document.evaluate('//td[b=&quot;Barcode&quot;]',document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue.lastChild.textContent})();">View on wall</a>. Then go to an item page in <a href="http://naa.gov.au/collection/recordsearch/index.aspx">RecordSearch</a> and click on the bookmarklet for 3D magic.</p>
<p>If you want to share a link to a file displayed in the 3D file browser, just use a url of the form:</p>
<p><code>http://wraggelabs.com/recordsearch/wall/[barcode]</code></p>
<p> &#8212; where [barcode] is fairly obviously the barcode of the file you want to view. For example:</p>
<ul>
<li><a href="http://wraggelabs.com/recordsearch/wall/3445411/">http://wraggelabs.com/recordsearch/wall/3445411/</a></li>
</ul>
<p>If you want to embed one of the mini-walls in your blog post it&#8217;s easy. Just go to the <a href="http://www.cooliris.com/yoursite/express/">CoolIris Express</a> site and create your own wall. When it asks you for content source, click on &#8216;Media RSS&#8217; and then in the &#8216;Feed URL&#8217; box put:</p>
<p><code>http://wraggelabs.com/recordsearch/rss/[barcode]</code></p>
<p>&#8211; where [barcode] is&#8230; well, you know&#8230;</p>
<p>I think this a pretty interesting way to view, browse and navigate digitised files. Using Flash, rather than a browser plugin makes it more accessible, but I&#8217;d still rather have something based on open software and standards. I think it won&#8217;t be too long before we see something similar using Canvas and Javascript. That&#8217;ll be really exciting.</p>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shed/hacks/embedded-archives/feed</wfw:commentRss>
		<slash:comments>0</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 [...]]]></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; [...]]]></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>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 a [...]]]></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>4</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&#8216;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 [...]]]></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>&#8216;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 [...]]]></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>
		<item>
		<title>Archives in 3D</title>
		<link>http://discontents.com.au/shoebox/archives-shoebox/archives-in-3d</link>
		<comments>http://discontents.com.au/shoebox/archives-shoebox/archives-in-3d#comments</comments>
		<pubDate>Wed, 17 Dec 2008 03:01:43 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[archives]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[Cooliris]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[recordsearch]]></category>
		<category><![CDATA[visualisation]]></category>

		<guid isPermaLink="false">http://discontents.com.au/?p=376</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=Archives+in+3D&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2008-12-17&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shoebox/archives-shoebox/archives-in-3d&amp;rft.language=English"></span>
The new version of my Greasemonkey userscript, RecordSearch Image Tools, gives RecordSearch&#8217;s digital image pages a rather new look. My previous version had done away with the tired ol &#8216;lemon-chiffon&#8217; background colour, but I decided it was time to get a bit more adventurous, so I blitzed the old design and rebuilt the page from [...]]]></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=Archives+in+3D&amp;rft.aulast=Sherratt&amp;rft.aufirst=Tim&amp;rft.subject=archives&amp;rft.subject=hacks&amp;rft.source=discontents&amp;rft.date=2008-12-17&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://discontents.com.au/shoebox/archives-shoebox/archives-in-3d&amp;rft.language=English"></span>
<abbr class="unapi-id" title="http://discontents.com.au/?p=376"><!-- &nbsp; --></abbr>
<div id="attachment_377" class="wp-caption alignright" style="width: 310px"><a href="http://discontents.com.au/wp-content/uploads/2008/12/userscript-screenshot1.jpg"><img class="size-medium wp-image-377" title="userscript-screenshot1" src="http://discontents.com.au/wp-content/uploads/2008/12/userscript-screenshot1-300x288.jpg" alt="All dressed up – RecordSearch has a new look" width="300" height="288" /></a><p class="wp-caption-text">All dressed up – RecordSearch has a new look</p></div>
<p>The new version of my Greasemonkey userscript, <a href="http://userscripts.org/scripts/show/33485">RecordSearch Image Tools</a>, gives RecordSearch&#8217;s digital image pages a rather new look. My previous version had done away with the tired ol &#8216;lemon-chiffon&#8217; background colour, but I decided it was time to get a bit more adventurous, so I blitzed the old design and rebuilt the page from the beginning.</p>
<p>As you can see from the screenshot, I&#8217;ve tried to give the images as much as the screen as possible. I&#8217;ve also created a consistent set of navigation buttons, and improved the functionality in various ways.<span id="more-376"></span></p>
<div id="attachment_379" class="wp-caption alignright" style="width: 310px"><a href="http://discontents.com.au/wp-content/uploads/2008/12/3dwall-screenshot1.jpg"><img class="size-medium wp-image-379" title="3dwall-screenshot1" src="http://discontents.com.au/wp-content/uploads/2008/12/3dwall-screenshot1-300x187.jpg" alt="Archives in 3D – CEDTs from NAA: ST84/1, 1906/21-30" width="300" height="187" /></a><p class="wp-caption-text">Archives in 3D – CEDTs from NAA: ST84/1, 1906/21-30</p></div>
<p>But the most exciting thing is that I&#8217;ve worked out how to feed the images to the fabulous CoolIris 3D wall. My previous version used the javascript version of CoolIris, which displayed the images as a flat (but still very nice) slideshow. But now, if you have the CoolIris plugin installed you can zoom, pan, fly through the file, dipping in and out as you so desire. It&#8217;s a new way of looking at archives.</p>
<div id="attachment_380" class="wp-caption alignright" style="width: 310px"><a href="http://discontents.com.au/wp-content/uploads/2008/12/3dwall-screenshot2.jpg"><img class="size-medium wp-image-380" title="3dwall-screenshot2" src="http://discontents.com.au/wp-content/uploads/2008/12/3dwall-screenshot2-300x187.jpg" alt="You can zoom in and out, even see a complete file on a single screen – B2455, WRAGGE C L E" width="300" height="187" /></a><p class="wp-caption-text">You can zoom in and out, even see a complete file on a single screen – NAA: B2455, WRAGGE C L E</p></div>
<p>To try for yourself you need to have <a href="http://www.mozilla.com/firefox/">Firefox</a> with the <a href="http://cooliris.com/">Cooliris plugin</a> installed. Then you need to get the <a href="https://addons.mozilla.org/firefox/addon/748">Greasemonkey extension</a> and, finally, install <a href="http://userscripts.org/scripts/show/33485">my userscript</a>. Then just dive into RecordSearch, find a digitised file and enjoy!</p>
<p><em>File links:</em></p>
<ul>
<li><a href="http://www.aa.gov.au/cgi-bin/Search?O=I&amp;Number=7473965">NAA: ST84/1, 1906/21-30</a></li>
<li><a href="http://www.aa.gov.au/cgi-bin/Search?O=I&amp;Number=3445411">NAA: B2455, WRAGGE C L E</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://discontents.com.au/shoebox/archives-shoebox/archives-in-3d/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

