<?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>blog.humaneguitarist.org &#187; technophilia</title>
	<atom:link href="http://blog.humaneguitarist.org/category/technophilia/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.humaneguitarist.org</link>
	<description>discoveries in digital audio, music notation, and information encoding</description>
	<lastBuildDate>Tue, 07 Feb 2012 03:33:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>audio transcription and the undead</title>
		<link>http://blog.humaneguitarist.org/2012/01/31/audio-transcription-and-the-undead/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/31/audio-transcription-and-the-undead/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 04:22:28 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[literature]]></category>
		<category><![CDATA[technophilia]]></category>
		<category><![CDATA[Dracula]]></category>
		<category><![CDATA[phonograph]]></category>
		<category><![CDATA[recording]]></category>
		<category><![CDATA[vampires]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=4083</guid>
		<description><![CDATA[Let&#39;s forget the fact I&#39;ve blogged more this month than I intend to in a whole year &#8230; What I really want to mention is that I&#39;m reading Dracula by Bram Stoker and noticed these very interesting bits (or should I say &#39;bites&#39;?) in Chapter 17. In this chapter the character of Mina Harker is [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#39;s forget the fact I&#39;ve blogged more this month than I intend to in a whole year &#8230;</p>
<p>What I really want to mention is that I&#39;m reading <u>Dracula</u> by Bram Stoker and noticed these very interesting bits (or should I say &#39;bites&#39;?) in <a href="http://www.gutenberg.org/files/345/345-h/345-h.htm#chap17">Chapter 17</a>.</p>
<p>In this chapter the character of Mina Harker is becoming acquainted with a friend of her now dead friend, Lucy. This friend, Dr. Seward, uses a phonograph to record his patient notes, much as my dad used to use a micro-cassette back in the late 1970&#39;s and 1980&#39;s. Mina, on the other hand, uses her cutting edge writing tool, the typewriter, to make her diary entries easily readable.</p>
<p>The funny thing is that Seward confesses to Mina that he doesn&#39;t have a way to get to specific points within each recording, i.e. he doesn&#39;t have a way to denote and retrieve audio at a specific time with advanced knowledge of what passages exist at those points. Um, <em>sound</em> familiar?</p>
<p><img alt=":P" src="http://blog.humaneguitarist.org/wp-content/plugins/fckeditor-for-wordpress-plugin/ckeditor/plugins/smiley/images/tounge_smile.gif" title=":P" /></p>
<blockquote>
<p><span style="font-size:10px;">MINA HARKER&#39;S JOURNAL</p>
<p>		29 September.<br />
		</span></p>
<p><span style="font-size:10px;">Again he paused, and I could see that he was trying to invent an excuse. At length, he stammered out, &quot;You see, I do not know how to pick out any particular part of the diary.&quot;</p>
<p>		&#8230;</span></p>
<p><span style="font-size: 10px;">I could not but smile, at which he grimaced. &quot;I gave myself away that time!&quot; he said. &quot;But do you know that, although I have kept the diary for months past, it never once struck me how I was going to find any particular part of it in case I wanted to look it up?&quot; </p>
<p>		</span></p>
</blockquote>
<p>Mina goes on to transcribe his recordings so that the text can be compared with other diary entries by principal characters as they try to formulate the totality of Dracula&#39;s agenda.</p>
<blockquote>
<p><span style="font-size:10px;">DR. SEWARD&#39;S DIARY</p>
<p>		30 September.</span></p>
<p><span style="font-size: 10px;">Harker has gone back, and is again collecting material. He says that by dinner time they will be able to show a whole connected narrative. He thinks that in the meantime I should see Renfield, as hitherto he has been a sort of index to the coming and going of the Count. I hardly see this yet, but when I get at the dates I suppose I shall. What a good thing that Mrs. Harker put my cylinders into type! We never could have found the dates otherwise. </span></p>
</blockquote>
<p><strong>Update (or &quot;later&quot; as in the novel):</strong> It might be a nice homage to sync the <a href="http://www.genericradio.com/show.php?id=0cd6ca7e1d5e4e1c">transcript</a> to the <a href="http://www.archive.org/download/OrsonWelles-MercuryTheater-1938Recordings/MercuryTheater38-07-11Dracula.mp3">audio</a> of Orson Welles&#39; radio play based on the book.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/31/audio-transcription-and-the-undead/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.archive.org/download/OrsonWelles-MercuryTheater-1938Recordings/MercuryTheater38-07-11Dracula.mp3" length="0" type="audio/mpeg" />
		</item>
		<item>
		<title>geo this, geo that: easy acquisition of KML files with BatchGeo</title>
		<link>http://blog.humaneguitarist.org/2012/01/28/geo-this-geo-that-easy-acquisition-of-kml-files-with-batchgeo/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/28/geo-this-geo-that-easy-acquisition-of-kml-files-with-batchgeo/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 14:52:44 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[technophilia]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[BatchGeo]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[KML]]></category>
		<category><![CDATA[laziness]]></category>
		<category><![CDATA[maps]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=4072</guid>
		<description><![CDATA[Geolocation/geocoding is so &#34;hip&#34; these days. Everyone&#39;s so obsessed where where they and other things are. There&#39;s almost a comparison with 3-D filmmaking &#8230; Funny. Not too many folks seem all that concerned with when things are. Anyway &#8230; At work, we have a database with all the libraries we serve and their addresses. And [...]]]></description>
			<content:encoded><![CDATA[<p>Geolocation/geocoding is so &quot;hip&quot; these days. Everyone&#39;s so obsessed where where they and other things are. There&#39;s almost a comparison with 3-D filmmaking &#8230;</p>
<p>Funny. Not too many folks seem all that concerned with <em>when</em> things are.</p>
<p>Anyway &#8230;</p>
<p>At work, we have a database with all the libraries we serve and their addresses. And the other week we needed to quickly make a map with all their locations.</p>
<p>If necessity if the mother of invention, laziness is it&#39;s favorite uncle.</p>
<p>Enter <a href="http://batchgeo.com/">BatchGeo</a>. We were able to take those values from our database and get a map generated in minutes. But it gets better.</p>
<p>One of the nice things about this process is that in addition to a map, you also get a <a href="http://code.google.com/apis/kml/">KML</a> file download option. Taking this little XML file, it&#39;s a simple process (via XSL or other) to make a delimited file containing the inputted names of institutions and their latitude and longitude (altitude is also available).</p>
<p>From there, it&#39;s not brain surgery to get those coordinates into a database and using an SQL JOIN to be able to push out an institution&#39;s name and now its coordinates, too, whenever.</p>
<p>Just in case someone wants/needs to do something similar with an address book or a list of businesses, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/28/geo-this-geo-that-easy-acquisition-of-kml-files-with-batchgeo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>installing lxml on my Amazon Linux instance</title>
		<link>http://blog.humaneguitarist.org/2012/01/16/installing-lxml-on-my-amazon-linux-instance/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/16/installing-lxml-on-my-amazon-linux-instance/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 15:39:57 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[technophilia]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[lxml]]></category>
		<category><![CDATA[witches]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=4024</guid>
		<description><![CDATA[Last night I installed lxml on my Amazon Linux AMI (ami-31814f58) and it was just as not-straightforward as when my co-worker and I put it on our CentOS server a few weeks ago. So by referring to the yum log, I think the following covers what I needed to install with yum: gcc-4.4.5-6.35.amzn1.i686 #for building [...]]]></description>
			<content:encoded><![CDATA[<p>Last night I installed lxml on my Amazon Linux AMI (ami-31814f58) and it was just as not-straightforward as when my co-worker and I put it on our CentOS server a few weeks ago.</p>
<p>	So by referring to the yum log, I think the following covers what I needed to install with yum:</p>
<p>	<samp>gcc-4.4.5-6.35.amzn1.i686 #for building lxml<br />
	python26-devel-2.6.7-1.36.amzn1.i686<br />
	libxslt-1.1.26-2.6.amzn1.i686 #this can&#39;t be necessary given the line below, right?<br />
	libxslt-devel-1.1.26-2.6.amzn1.i686<br />
	libxml2-devel-2.7.6-1.9.amzn1.i686</samp></p>
<p>	&#8230; and then I used easy_install (which already was on the system &#39;far as I know) to install lxml a la: <code>easy_install lxml</code>.</p>
<p>	For whatever reason, the easy_install part took several, several minutes. But I was watching &quot;<a href="http://www.imdb.com/title/tt0479997/">Season of the Witch</a>&quot; so I didn&#39;t mind.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/16/installing-lxml-on-my-amazon-linux-instance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>syntax highlighting on WordPress: you can quote me on this</title>
		<link>http://blog.humaneguitarist.org/2012/01/14/syntax-highlighting-on-wordpress-you-can-quote-me-on-this/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/14/syntax-highlighting-on-wordpress-you-can-quote-me-on-this/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 16:46:32 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[technophilia]]></category>
		<category><![CDATA[quotation marks]]></category>
		<category><![CDATA[syntax highlighting]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=3975</guid>
		<description><![CDATA[I&#39;ve totally over-blogged this month, but just as a note to self &#8230; I&#39;ve noticed that when using a syntax highlighter with WordPress &#8211; I&#39;m using Syntax Highlighter Compress &#8211; that using single quotes can sometimes cause the highlighting to break down. In the example below I have identical code written twice. Well, almost identical. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#39;ve totally over-blogged this month, but just as a note to self &#8230;</p>
<p>I&#39;ve noticed that when using a syntax highlighter with WordPress &#8211; I&#39;m using <a href="http://wordpress.org/extend/plugins/syntax-highlighter-compress/">Syntax Highlighter Compress</a> &#8211; that using single quotes can sometimes cause the highlighting to break down.</p>
<p>In the example below I have identical code written twice. Well, almost identical. In the first, I&#39;m surrounding &quot;data-startTime&quot; with single quotes and in the second I&#39;m using doubles. The first has some highlighting problems where single quotes are.</p>
<p>Oh well, I guess I&#39;ll just have to keep an eye on that.</p>
<pre class="brush:javascript">function jAUs_3(this_currentTime,thisAudioTag_stopTime,i){

  if (thisAudioTag_stopTime){
    //if there&#39;s a data-stopTime attribute then ...
    if (this_currentTime &gt; thisAudioTag_stopTime){
      //... reset audio to data-startTime when data-stopTime is reached.
      audioTagArray[i].currentTime = audioTagArray[i].getAttribute(&#39;data-startTime&#39;);
      audioTagArray[i].pause();
    }
  }
  else if (audioTagArray[i].ended == true){
    //if there&#39;s no data-stopTime, move back to data-startTime when playback has ended.
    audioTagArray[i].currentTime = audioTagArray[i].getAttribute(&#39;data-startTime&#39;);
    audioTagArray[i].pause();
  }
}
</pre>
<pre class="brush:javascript">function jAUs_3(this_currentTime,thisAudioTag_stopTime,i){

  if (thisAudioTag_stopTime){
    //if there&#39;s a data-stopTime attribute then ...
    if (this_currentTime &gt; thisAudioTag_stopTime){
      //... reset audio to data-startTime when data-stopTime is reached.
      audioTagArray[i].currentTime = audioTagArray[i].getAttribute(&quot;data-startTime&quot;);
      audioTagArray[i].pause();
    }
  }
  else if (audioTagArray[i].ended == true){
    //if there&#39;s no data-stopTime, move back to data-startTime when playback has ended.
    audioTagArray[i].currentTime = audioTagArray[i].getAttribute(&quot;data-startTime&quot;);
    audioTagArray[i].pause();
  }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/14/syntax-highlighting-on-wordpress-you-can-quote-me-on-this/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>simple point and search with a maps API</title>
		<link>http://blog.humaneguitarist.org/2012/01/07/simple-point-and-search-with-a-maps-api/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/07/simple-point-and-search-with-a-maps-api/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 16:29:10 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[information retrieval]]></category>
		<category><![CDATA[technophilia]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[graphical searching]]></category>
		<category><![CDATA[maps]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=3836</guid>
		<description><![CDATA[I&#39;m currently working with some folks on a pilot project to build a shared index of digital collection metadata from libraries in North Carolina. My part entails harvesting the metadata and indexing it with Solr. Since most of the stuff is North Carolina centric, I thought it might be neat to use the API that [...]]]></description>
			<content:encoded><![CDATA[<p>I&#39;m currently working with some folks on a pilot project to build a shared index of digital collection metadata from libraries in North Carolina. My part entails harvesting the metadata and indexing it with Solr.</p>
<p>Since most of the stuff is North Carolina centric, I thought it might be neat to use the API that the index will have to drag a marker on a map and then use the marker location to send a search to the index. My co-worker also wants to do something similar so people can search using a map marker for a project of hers. So, I thought I&#39;d investigate.</p>
<p>I wanted to see how easy it was to do this with the Google Maps API and, well, it is pretty easy. Especially, since I found <a href="http://gmaps-samples-v3.googlecode.com/svn/trunk/draggable-markers/draggable-markers.html">this</a> marker dragging example.</p>
<p>There&#39;s lot of stuff that can be done, like dynamically populating the page with a set of results via AJAX but for now I&#39;m just using the city name plus a pre-written string to create a search string that the user has to manually click.</p>
<p>In the little <a href="http://blog.humaneguitarist.org/uploads/SC_restaurantSearchViaMap.html">example I made</a> (below), I&#39;m using my home state of South Carolina. If you move the marker within SC and drop it, a simple search string is created for sending a search, ironically, to Bing Maps for the term &quot;restaurants&quot; and that city.</p>
<p>I think a search like this is really for fun, but it might be a nice way to search and learn a little geography along the way. I&#39;ve also got an idea for a game using this kind of search that&#39;s sort of a spin on Concentration for digital collections, but I&#39;ll write that up later. I&#39;m hungry and need to start enjoying my Saturday. Looking at these restaurants searches is making me even hungrier.</p>
<p><img alt=":/" src="http://blog.humaneguitarist.org/wp-content/plugins/fckeditor-for-wordpress-plugin/ckeditor/plugins/smiley/images/confused_smile.gif" title=":/" /></p>
<p><iframe height="530px" src="http://blog.humaneguitarist.org/uploads/SC_restaurantSearchViaMap.html" width="100%"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/07/simple-point-and-search-with-a-maps-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>the serpent, the apple, and Joe</title>
		<link>http://blog.humaneguitarist.org/2012/01/07/the-serpent-the-apple-and-joe/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/07/the-serpent-the-apple-and-joe/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 15:22:41 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[scripts]]></category>
		<category><![CDATA[technophilia]]></category>
		<category><![CDATA[cross-platform]]></category>
		<category><![CDATA[Jython]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[PubMed2XL]]></category>
		<category><![CDATA[PyQT]]></category>
		<category><![CDATA[Swing]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=3775</guid>
		<description><![CDATA[For better or worse, the one application of mine that people actually use is the one I wrote pretty casually with Python over a couple weekends from bed because I was too lazy or hungover to get moving on those days. That software, PubMed2XL, lets people do a few things with downloaded citations from PubMed.gov [...]]]></description>
			<content:encoded><![CDATA[<p>For better or worse, the one application of mine that people actually use is the one I wrote pretty casually with Python over a couple weekends from bed because I was too lazy or hungover to get moving on those days.</p>
<p>That software, <a href="http://blog.humaneguitarist.org/projects/pubmed2xl">PubMed2XL</a>, lets people do a few things with downloaded citations from PubMed.gov that isn&#39;t currently offered directly from the site. I&#39;ve gotten some nice feedback from librarians, researchers, and information-y people at companies that have found it useful.</p>
<p>This post isn&#39;t a plug though; it&#39;s more an acknowledgement of something that I didn&#39;t really realize in full at the time. And that is when one writes software that people go on to actually use, one better be prepared to support it. Now, the software&#39;s simple enough that there haven&#39;t been real bugs <a href="http://blog.humaneguitarist.org/2011/03/16/dealing-with-a-pubmed2xl-bug/">save one</a>, but it does eat at me that I can&#39;t offer a simple way for it to work on multiple platforms.</p>
<p>While the Windows version is really easy to setup &#8211; thanks to <a href="http://www.py2exe.org/">py2exe</a> and <a href="http://www.youtube.com/watch?v=wP9HcD4oPDw">Inno Setup</a> &#8211; getting it running on Linux is a bit more work, given all the distro variations and dependency installation. But getting it running on a Mac &#8211; particularly with an easy to use installer &#8211; isn&#39;t going to be possible unless I can find someone to compile it for a Mac who will also test it and compile future versions. Sure, there&#39;s the possibility of using <a href="http://www.winehq.org/">Wine</a>, but that&#39;s still asking a lot from end users.</p>
<p>Normally, I wouldn&#39;t care. Apple doesn&#39;t make it easy for people to develop for Macs unless you fork over the change for a Mac &#8211; and I ain&#39;t buying a copy of OSX and doing the Hackintosh bit. But, since the software is ultimately about health-related research, I do care.</p>
<p>Unfortunately I made &#8211; with the advantage of hindsight &#8211; two coding decisions that create problems.</p>
<p>First, I chose <a href="http://www.riverbankcomputing.co.uk/software/pyqt/intro">PyQT</a> as the GUI toolkit for the software simply because it looks prettier than Python&#39;s native Tkinter. My reasoning at the time was the people were more likely to trust better looking software even though it&#39;s just a small window with some basic menu options. Eventually, I added a progress bar, too, so downgrading to Tkinter has become less of an option.</p>
<p>Second (and this is the big one), I used <a href="http://lxml.de/">lxml</a> since the <a href="http://blog.humaneguitarist.org/projects/pubmed2xl/#Changing">PubMed2XL setup files</a> employ XSL to tell the software what data to put in a spreadsheet cell. Granted, lxml is freakin&#39; fantastic, but since it&#39;s not a pure Python module I can&#39;t just distribute it in a folder and import the module locally. Not that I had much of a choice: there&#39;s no built in XSLT-capable module that ships with Python &#39;far as I know.</p>
<p>So I&#39;ve been asking myself how to make the serpent (Python) and the apple (OSX) get along.</p>
<p>I&#39;ve consider just making PubMed2XL a web-app, but that will entail expenses for me that simply offering people a desktop app doesn&#39;t entail.</p>
<p>So, I think the solution lies in a cup of <a href="http://h2g2.com/dna/h2g2/A1300410">Joe</a>. That&#39;s to say that a Java app is the obvious solution, specifically using <a href="http://www.jython.org/">Jython</a>.</p>
<p>That would leave me to replace PyQT with Swing. I&#39;m fine with that. It&#39;s not like PyQT is all that <a href="http://www.python.org/dev/peps/pep-0020/">Pythonic</a> in the first place. There&#39;s a nice Jython/Swing tutorial <a href="http://zetcode.com/tutorials/jythonswingtutorial/">here</a>.</p>
<p>And as for the XSLT component, <a href="http://jython.xhaus.com/transforming-with-xslt-on-google-appengine-and-jython/">this</a> tutorial on XSLT with Jython and native Java libraries should help immensely.</p>
<p>So, I <em>should</em> be able to use Jython to make a cross-platform version of PubMed2XL. I don&#39;t necessarily want to, but given the type of research I&#39;d like to help facilitate (in a very small way, I know), I think I probably should.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/07/the-serpent-the-apple-and-joe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>choose your own toppings: whatever code inside CDATA</title>
		<link>http://blog.humaneguitarist.org/2011/12/21/choose-your-own-toppings-whatever-code-inside-cdata/</link>
		<comments>http://blog.humaneguitarist.org/2011/12/21/choose-your-own-toppings-whatever-code-inside-cdata/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 04:03:52 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[information retrieval]]></category>
		<category><![CDATA[technophilia]]></category>
		<category><![CDATA[ghosts]]></category>
		<category><![CDATA[PhantomJS]]></category>
		<category><![CDATA[pOAIndexter]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=3758</guid>
		<description><![CDATA[I really should be packing for an overseas vacation that begins tomorrow, but I wanted to jot some stuff down before I forget &#8211; and I intend to forget a lot! Anywho, in a previous post I wrote about putting XSL inside a CDATA block inside an XML config file. I had the following example: [...]]]></description>
			<content:encoded><![CDATA[<p>I really should be packing for an overseas vacation that begins tomorrow, but I wanted to jot some stuff down before I forget &#8211; and I intend to forget a lot!</p>
<p>Anywho, in a previous <a href="http://blog.humaneguitarist.org/2011/11/12/layer-cake-xml-config-files-with-xsl-inside-cdata/">post</a> I wrote about putting XSL inside a CDATA block inside an XML config file. I had the following example:</p>
<pre class="brush:xml">&lt;map name=&quot;LibriVox&quot;&gt;
  &lt;XSLT&gt;./XSLT/LibriVox_to_Solr.xsl&lt;/XSLT&gt;
  &lt;nextXSL&gt;
  &lt;![CDATA[
  &lt;xsl:stylesheet version=&quot;1.0&quot; xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;
    &lt;xsl:output method=&quot;text&quot;/&gt;
    &lt;xsl:template match=&quot;/&quot;&gt;
      &lt;xsl:variable name=&quot;baseURL&quot; select=&quot;&#39;%s&#39;&quot; /&gt;
      &lt;xsl:variable name=&quot;URL_params&quot; select=&quot;&#39;%s&#39;&quot; /&gt;
      &lt;xsl:variable name=&quot;offset_&quot; select=&quot;substring-after($URL_params,&#39;=&#39;)&quot; /&gt;
      &lt;xsl:variable name=&quot;offset&quot; select=&quot;substring-before($offset_,&#39;&amp;amp;&#39;)&quot; /&gt;
      &lt;xsl:variable name=&quot;limit_&quot; select=&quot;substring-after($URL_params,&#39;&amp;amp;&#39;)&quot; /&gt;
      &lt;xsl:variable name=&quot;limit&quot; select=&quot;substring-after($limit_,&#39;=&#39;)&quot; /&gt;
      &lt;xsl:variable name=&quot;output&quot;&gt;
        &lt;xsl:value-of select=&quot;$baseURL&quot; /&gt;
        &lt;xsl:text&gt;?offset=&lt;/xsl:text&gt;
        &lt;xsl:value-of select=&quot;$offset+50&quot; /&gt;
        &lt;xsl:text&gt;&amp;amp;limit=&lt;/xsl:text&gt;
        &lt;xsl:value-of select=&quot;50&quot; /&gt;
      &lt;/xsl:variable&gt;
      &lt;xsl:value-of select=&quot;$output&quot; /&gt;
    &lt;/xsl:template&gt;
  &lt;/xsl:stylesheet&gt;
  ]]&gt;
  &lt;/nextXSL&gt;
&lt;/map&gt;
</pre>
<p>This is part of this <a href="http://blog.humaneguitarist.org/tag/poaindexter/">pOAIndexter</a> script I&#39;m working on for, well, work.</p>
<p>The XML code above is from one of the config files where the &lt;XSLT&gt; element points to an XSL file used to process metadata retrieved from a website. In this case, the point is to make a Solr-compatible XML document that can be used for indexing purposes. The second element, &lt;nextXSL&gt;, is used to return to pOAIndexter the URL for the next batch of metadata for a given feed, i.e. the next page or the next set within a collection, etc.</p>
<p>And as you can see there are two weird looking variables at the top:</p>
<pre class="brush:xml">      &lt;xsl:variable name=&quot;baseURL&quot; select=&quot;&#39;%s&#39;&quot; /&gt;
      &lt;xsl:variable name=&quot;URL_params&quot; select=&quot;&#39;%s&#39;&quot; /&gt;</pre>
<p>The reason being that the pOAIndexter script actually populates these with the actual base URL for the batch just retrieved and the parameters, respectively, before the XSL within the &lt;nextXSL&gt; element is run, returning the string of the next URL.</p>
<p>I chose XSL because I think, as a librarian, it seems to be common to a lot of metadata and digital library folk and such people could extend the capabilities of pOAIndexter without having to know Python. But all along I wanted people to be able to process the metadata and return the next URL with whatever scripting language they want, provided the interpreter exists on their system.</p>
<p>So, say for example you like PHP instead. Instead of the using XSL you could use something like this:</p>
<pre class="brush:xml">&lt;map name=&quot;LibriVox&quot;&gt;
  &lt;PHP&gt;./PHP/LibriVox_to_Solr.php&lt;/PHP&gt;
  &lt;nextPHP&gt;
  &lt;![CDATA[
  &lt;?php
  $baseURL=%s;
  $URL_params=%s;

  //some PHP code here

  echo $output; //where $output is the next URL ...
  ?&gt;
  ]]&gt;
  &lt;/nextPHP&gt;
&lt;/map&gt;</pre>
<p>That way PHP could be used to make the Solr-XML file and to return to pOAIndexter the next URL string so that the next batch of metadata from a feed could be processed/transformed. Of course, you could mix and match, too &#8211; XSLT for making the Solr-XML file and PHP just for getting the next URL.</p>
<p>That&#39;s actually pretty simply to do with the common scripting languages like Python, PHP, Perl, Ruby, etc. But what I really wanted to support was JavaScript because, well, it would just be cool, but also because that&#39;s another one of those common languages that a lot of people might know even though there might be great variation amongst the other scripting languages they know when compared to a lot of their colleagues.</p>
<p>But I didn&#39;t know how to execute Javascript via the command line so that pOAIndexter can capture the next URL via the standard output stream.</p>
<p>Well, enter <a href="http://www.phantomjs.org/">PhantomJS</a>.</p>
<p>That is all. Time to pack.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2011/12/21/choose-your-own-toppings-whatever-code-inside-cdata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>git this: fossil rocks</title>
		<link>http://blog.humaneguitarist.org/2011/11/03/git-this-fossil-rocks/</link>
		<comments>http://blog.humaneguitarist.org/2011/11/03/git-this-fossil-rocks/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 02:19:53 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[technophilia]]></category>
		<category><![CDATA[fossil]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=3570</guid>
		<description><![CDATA[I&#39;ll keep this short. For me version control is just zipping up files after I make a change and then versioning the ZIP files via filename. But I probably should look into version control of some sort. But I want something easy to learn. Git seems all the rage these days, but honestly I&#39;d have [...]]]></description>
			<content:encoded><![CDATA[<p>I&#39;ll keep this short.</p>
<p>For me version control is just zipping up files after I make a change and then versioning the ZIP files via filename.</p>
<p>But I probably should look into version control of some sort. But I want something easy to learn.</p>
<p><a href="http://git-scm.com/">Git</a> seems all the rage these days, but honestly I&#39;d have to read the documentation a few times to learn it properly &#8230; and that ain&#39;t happening. Also, it&#39;s more than I need given that what I&#39;ll be working on are very small projects.</p>
<p>But I really think <a href="http://fossil-scm.org">Fossil</a> is very promising. It&#39;s super easy to learn and the built in <a href="http://fossil-scm.org/index.html/doc/trunk/www/webui.wiki">web interface</a> &#8211; replete with a Wiki and ticketing system &#8211; is pretty sweet.</p>
<p>I&#39;ll still be zipping up my files, but I think they&#39;ll probably be making their way into Fossil repositories from now on, too.</p>
<p>&#8230; and as for the blog title, it&#39;s a bit of a play on words of course. Did you &quot;Git&quot; it? Do you &quot;dig&quot; Fossil like I do?</p>
<p><img alt=":P" src="http://blog.humaneguitarist.org/wp-content/plugins/fckeditor-for-wordpress-plugin/ckeditor/plugins/smiley/images/tounge_smile.gif" title=":P" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2011/11/03/git-this-fossil-rocks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>here ye, here ye, get your free AWS account today</title>
		<link>http://blog.humaneguitarist.org/2011/10/30/here-ye-here-ye-get-your-free-aws-account-today/</link>
		<comments>http://blog.humaneguitarist.org/2011/10/30/here-ye-here-ye-get-your-free-aws-account-today/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 15:22:39 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[technophilia]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[hosting]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=3514</guid>
		<description><![CDATA[Update, November 3, 2011: In my excitement and haste, it seems I didn&#39;t read carefully enough. The free year only applies to &#34;micro&#34; instances and may even only apply applies to Amazon&#39;s own Linux distro at that. Please read the terms more carefully than I did before you proceed. My apologies. If it makes anyone [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update, November 3, 2011: </strong>In my excitement and haste, it seems I didn&#39;t read carefully enough. The free year only applies to &quot;micro&quot; instances and <strike>may even</strike> only <strike>apply</strike> applies to Amazon&#39;s own Linux distro <strike>at that</strike>. Please read the terms more carefully than I did before you proceed. My apologies. If it makes anyone feel better, my penance is a $10.00 bill from Amazon.</p>
<p><img alt=";(" src="http://blog.humaneguitarist.org/wp-content/plugins/fckeditor-for-wordpress-plugin/ckeditor/plugins/smiley/images/cry_smile.gif" title=";(" /></p>
<p><strong>Update, November 3, 2011: </strong>Thanks to Eileen of Amazon for removing the charge upon learning that I&#39;m an idiot who doesn&#39;t read carefully!</p>
<p>&#8230;</p>
<p>Yesterday I stumbled upon the news that Amazon is offering one year free of use &#8211; for new users &#8211; of it&#39;s <a href="http://aws.amazon.com/ec2/">Elastic Computer Cloud</a> (EC2):</p>
<blockquote>
<div style="background-color:#FDFDEF; border:solid 1px #C9CDD0; padding:12px 14px 12px 14px;">
<p style="color:#E47911; font-weight:bold; font-size:125%">Free Tier*</p>
<p>As part of <a href="http://aws.amazon.com/free/">AWS&rsquo;s Free Usage Tier</a>, new AWS customers can get started with Amazon EC2 for free. Upon sign-up, new AWS customers receive the following EC2 services each month for one year:</p>
<ul>
<li>750 hours of EC2 running Linux/Unix Micro instance usage</li>
<li>750 hours of Elastic Load Balancing plus 15 GB data processing</li>
<li>10 GB of Amazon Elastic Block Storage (EBS) plus 1 million IOs and 1 GB snapshot storage</li>
<li>15 GB of bandwidth out aggregated across all AWS services</li>
<li>1 GB of Regional Data Transfer</li>
</ul></div>
</blockquote>
<p style="padding-top:10px;">That&#39;s pretty cool because I could really use something that allowed me to demo stuff that my five-bucks-a-month GoDaddy hosting account won&#39;t allow me to do.</p>
<p>Truth be told, I already have a Windows VPS with <a href="http://www.kickassvps.com/">KickAssVPS.com</a> but at $20.00 per month I always remind myself that in the course of a year I could have paid for a small laptop/netbook and used that as a server for special projects, but I really don&#39;t want to do that because I don&#39;t want to be thinking along the lines of &quot;Man, this storm is really bad. I should unplug everything even if it kills the server&quot; or &quot;Man, this day is really beautiful. I think I&#39;ll take the netbook to the local coffee shop&quot;, etc. I just don&#39;t want to have to think about that kind of stuff.</p>
<p>Anyway, KickAssVPS has totally lived up to their name over the last year and half I&#39;ve used them. Their service and response time is great but I need it for so very little that I can&#39;t justify the expense. Especially not for a year now that I&#39;ve got a Windows Server 2003 and Ubuntu AMI (Amazon Machine Image) up and running through Amazon.</p>
<p>I&#39;m not hosting anything live at the moment through AWS/EC2 but I will be. I&#39;ll be moving the <a href="http://blog.humaneguitarist.org/projects/mxmliszt">MXMLiszt</a> demo over to the Windows AMI though I think I can get it successfully ported over to Ubuntu. But what this also allows me to do is offer web services, applications, and demos that I simply can&#39;t run on the Godaddy account but that I&#39;ve been playing around with lately &#8211; things like <a href="http://blog.humaneguitarist.org/tag/poaindexter/">pOAIndexter</a>. Also, the Ubuntu AMI I installed has Python 2.6 and I can install my favorite Python modules like libxml. In fact, I&#39;ve got root access so I can install whatever I need to. Can&#39;t do that with my current GoDaddy plan.</p>
<p>So why am I writing this other than to be an unpaid fanboy?</p>
<p>Well, I wanted to share a few things that made the process easier for me such as:</p>
<ul>
<li><a href="http://youtu.be/9QKnORsJKt4">this</a> YouTube video on the basic, first-time stuff with EC2. It&#39;s a little out-of-date but it&#39;s still useful. Ignore the stuff about a FireFox plugin because AWS now has a web-based management panel.</li>
<li><a href="http://codingthis.com/applications/uploading-files-to-your-amazon-ec2-server-using-winscp/">this</a> post on using <a href="http://winscp.net">WinSCP</a> for connecting, via SSH, to an AMI.
<ul>
<li>see <a href="http://codingthis.com/platforms/ec2/getting-started-for-free-with-amazon-elastic-cloud-computing-ec2/">this</a> related post, too.</li>
</ul>
</li>
<li>and these particular 32-bit AMI identifiers that are working for me:
<ul>
<li>ami-f11ff098 (Windows 2003)</li>
<li><a href="http://aws.amazon.com/amis/4349?_encoding=UTF8&amp;jiveRedirect=1">ami-1a837773</a> (Ubuntu 10.10)</li>
</ul>
</li>
</ul>
<p>I had trouble getting some of the other AMIs to work and those two are working just fine it seems. Note that as reported per the Ubuntu AMI link, a reboot does seem necessary before connecting via SSH is possible. For the Windows one, I just use Remote Desktop.</p>
<p>By the way, if you don&#39;t need or want Ubuntu, Amazon offers their own Amazon Linux, Suse, and Red Hat AMIs. I found the AMIs made by Amazon seem to work without any hassle.</p>
<p>I should also point out a few things with using WinSCP with that particular Ubuntu AMI. The easiest way for me to do this is show a screen shot of my WinSCP login settings:</p>
<p><a href="http://blog.humaneguitarist.org/uploads/winscpAWS.png"><img alt="WinSCP settings for AWS/EC2" class="alignnone size-full wp-image-3528" height="361" src="http://blog.humaneguitarist.org/uploads/winscpAWS.png" title="winscpAWS" width="518" /></a></p>
<p>Note the user name of &quot;ubuntu&quot;. The default user for AMI accounts is &quot;root&quot; but not for this one.</p>
<p>Also, I manually seemed to have to set the File Protocol to &quot;SCP&quot; otherwise I was running into error messages like &quot;Received too large &#8230; SFTP packet. Max supported packet size is 102400 B&quot; and &quot;Error skipping startup message. Your shell is probably incompatible with the application (BASH is recommended)&quot;.</p>
<p>I should mention I just like WinSCP for the GUI file/folder viewer and the drag-and-drop stuff. I don&#39;t like the terminal that&#39;s built into WinSCP at all so I use <a href="http://www.putty.org/">Putty</a> for the terminal. Luckily, WinSCP let&#39;s you select &quot;Open in Putty&quot; from the &quot;Commands&quot; menu.</p>
<p>Well, that&#39;s it for now. I guess I really wrote this as a note-to-self but I also thought that it might be useful news for any of my librarian-programmer friends who might also benefit from a having a free year to host more advanced applications and demos.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2011/10/30/here-ye-here-ye-get-your-free-aws-account-today/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PivotViewer: oh, the possibilities</title>
		<link>http://blog.humaneguitarist.org/2011/10/17/pivotviewer-oh-the-possibilities/</link>
		<comments>http://blog.humaneguitarist.org/2011/10/17/pivotviewer-oh-the-possibilities/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 16:16:26 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[information retrieval]]></category>
		<category><![CDATA[technophilia]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Netflix]]></category>
		<category><![CDATA[OData]]></category>
		<category><![CDATA[PivotViewer]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=3479</guid>
		<description><![CDATA[I&#39;ve been casually learning Solr in order to easily create a faceted search/retrieval interface for some digital collections with OAI feeds but now I kinda wish I was learning to do that with Microsoft&#39;s PivotViewer instead. I won&#39;t do that, at least for now, but I probably won&#39;t be able to resist in the near [...]]]></description>
			<content:encoded><![CDATA[<p>I&#39;ve been casually learning Solr in order to easily create a faceted search/retrieval interface for some digital collections with OAI feeds but now I kinda wish I was learning to do that with Microsoft&#39;s <a href="http://www.silverlight.net/learn/data-networking/pivot-viewer/pivotviewer-control">PivotViewer</a> instead.</p>
<p>I won&#39;t do that, at least for now, but I probably won&#39;t be able to resist in the near future.</p>
<p><a href="http://netflixpivot.cloudapp.net/">Here</a>&#39;s a cool demo of it with some Netflix OData.</p>
<p><img alt="Pivot View of Netflix Instant Watch Movies" class="alignnone" height="260" src="http://cdn.blog.smarx.com/images/netflixpivot_screenshot%5B6%5D" title="Netflix/PivotViewer" width="341" /></p>
<p>For a description of how it&#39;s done, check out this post: <a href="http://blog.smarx.com/posts/pivot-odata-and-windows-azure-visual-netflix-browsing">Pivot, OData, and Windows Azure: Visual Netflix Browsing</a>.</p>
<p><em>Adding this follow-up thought the next day: </em>Actually, Pivot would be a really good way to make eBooks and eAudio titles discoverable &#8230; all those book covers. Sheet music (first page) would be cool, too.</p>
<p>Oh, the possibilities.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2011/10/17/pivotviewer-oh-the-possibilities/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

