<?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"
	>

<channel>
	<title>Adam Franco.com &#187; Computers and Technology</title>
	<atom:link href="http://www.adamfranco.com/archives/category/computers-and-technology/feed" rel="self" type="application/rss+xml" />
	<link>http://www.adamfranco.com</link>
	<description>Musings, projects, and photography.</description>
	<pubDate>Mon, 13 Oct 2008 16:02:04 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Twitter Export Script</title>
		<link>http://www.adamfranco.com/archives/88</link>
		<comments>http://www.adamfranco.com/archives/88#comments</comments>
		<pubDate>Mon, 13 Oct 2008 15:47:35 +0000</pubDate>
		<dc:creator>Adam Franco</dc:creator>
		
		<category><![CDATA[Computers and Technology]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.adamfranco.com/?p=88</guid>
		<description><![CDATA[I have been using Twitter as a log of my daily doings and wished to export my time-line for reformatting into a calender format. Unfortunately TweetDumpr just retrieves the list of Tweets using a single fetch request which is limited by the Twitter API to a maximum of 200 Tweets. (Update: apparently TweetDumpr can get [...]]]></description>
			<content:encoded><![CDATA[<p>I have been using <a href="http://twitter.com">Twitter</a> as a <a href="http://twitter.com/afranco_work">log of my daily doings</a> and wished to export my time-line for reformatting into a calender format. Unfortunately <a href="http://pantsland.com/2008/04/14/released-twitter-timeline-export-tweetdumpr/">TweetDumpr</a> just retrieves the list of Tweets using a single fetch request which is limited by the Twitter API to a maximum of 200 Tweets. (Update: apparently TweetDumpr <em>can</em> get more than 200 Tweets. It just didn&#8217;t say so in its description.)</p>
<p>I wanted to export all 600+ of my tweets, so I wrote the following little php script to accomplish this. I have not yet tested it with many concurrent users or added a form to select which user to update. Until I do so, I won&#8217;t be providing it as an end-user service. You are free to put it on your own machine and use it though.</p>
<p><strong>TwitterExport.php</strong></p>
<pre>&lt;?php
/**
 * This script will allow the export of complete user time-lines from the twitter
 * service. It joins together all pages of status updates into one large XML block
 * that can then be reformatted/processed with other tools.
 *
 * @since 10/13/08
 *
 * @copyright Copyright &copy; 2008, Adam Franco
 * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License (GPL)
 */

$user = 'afranco_work';	// Replace this with your user name.

header('Content-type: text/plain');

$allDoc = new DOMDocument;
$root = $allDoc-&gt;appendChild($allDoc-&gt;createElement('statuses'));
$root-&gt;setAttribute('type', 'array');

$page = 1;
do {
	$numStatus = 0;

	$pageDoc = new DOMDocument;
	$res = @$pageDoc-&gt;load('http://twitter.com/statuses/user_timeline/'.$user.'.xml?page='.$page);
	if (!$res) {
		print "\n\n**** Error loading page $page ****";
		exit;
	}
	foreach ($pageDoc-&gt;getElementsByTagName('status') as $status) {
		$root-&gt;appendChild($allDoc-&gt;createTextNode("\n"));
		$root-&gt;appendChild($allDoc-&gt;importNode($status, true));
		$numStatus++;
	}

	print "\nLoaded page $page with $numStatus status updates.";
	flush();

	$page ++;
	sleep(1);

} while ($numStatus);

print "\nDone loading timeline.";
print "\n\n\n";

$root-&gt;appendChild($allDoc-&gt;createTextNode("\n"));
print $allDoc-&gt;saveXml();
</pre>
<p><br/><br />
<strong>Usage (assuming <a href="http://www.php.net">PHP</a> is installed)</strong></p>
<ol>
<li>Save the code above on your machine as twitter_export.php</li>
<li>Edit the code to change the <code>$user</code> variable to be your own Twitter username</li>
<li>From the command line run <code>php twitter_export.php</code></li>
<li>Copy/paste the XML output into a file for safe keeping and further processing</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfranco.com/archives/88/feed</wfw:commentRss>
		</item>
		<item>
		<title>Getting Rid of the Translucent Menu Bar in Leopard</title>
		<link>http://www.adamfranco.com/archives/70</link>
		<comments>http://www.adamfranco.com/archives/70#comments</comments>
		<pubDate>Wed, 20 Feb 2008 14:47:53 +0000</pubDate>
		<dc:creator>Adam Franco</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Computers and Technology]]></category>

		<guid isPermaLink="false">http://www.adamfranco.com/archives/70</guid>
		<description><![CDATA[With the latest OS X Leopard update (10.5.2) Apple finally added an option to turn off menu bar translucency. I much prefer an opaque menu bar as I find it much more legible. There is only one problem with this fix: Apple, in their infinite wisdom, decided to hide this option on computers that &#8220;don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>With the latest OS X Leopard update (10.5.2) Apple finally added an option to turn off menu bar translucency. I much prefer an opaque menu bar as I find it much more legible. There is only one problem with this fix: Apple, in their infinite wisdom, decided to hide this option on computers that &#8220;don&#8217;t support transparency&#8221; due to having lower-end graphics hardware. After upgrading to 10.5.2 my MacBookPro laptop has the option to turn of menu bar transparency, but my newer and more powerful MacPro Desktop does not. After much searching and forum-reading I found that most of the people with this problem (menu bar is translucent, but the option to make it opaque is missing) had MacPro desktops with multiple monitors and video cards.</p>
<p>The problem it turns out, is that while one of my video cards (that drives my two primary monitors ) is a high-end ATI Radeon X1900XT that supports transparent menu bars, the second  (that drives my two outer monitors used mostly for notes and email) is a cheaper NVIDIA GeForce 7300 GT. The presence of the lower-end card in the system was causing the &#8220;Translucent Menu Bar&#8221; option to be hidden, even though it was supported by my other card.</p>
<p>Steps to fix:</p>
<ol>
<li>Turn off computer</li>
<li>Remove low-end video card</li>
<li>Start computer</li>
<li>Go to System Preferences &#8211;&gt; Desktop &amp; Screen Saver and un-check the &#8220;Translucent Menu Bar&#8221; option</li>
<li>Turn off computer</li>
<li>Replace low-end video card</li>
<li>Start computer</li>
</ol>
<p>It is a pain in the butt, but it works to get the damn translucency turned off.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfranco.com/archives/70/feed</wfw:commentRss>
		</item>
		<item>
		<title>River Levels Widget v1.2.1</title>
		<link>http://www.adamfranco.com/archives/69</link>
		<comments>http://www.adamfranco.com/archives/69#comments</comments>
		<pubDate>Sun, 10 Feb 2008 23:21:29 +0000</pubDate>
		<dc:creator>Adam Franco</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Computers and Technology]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.adamfranco.com/?p=69</guid>
		<description><![CDATA[This version is a re-release of version 1.2 which had a corrupted archive missing some necessary files.

The RiverLevels widget provides an easy way to monitor the amount of water flowing in your favorite streams and rivers right from your Dashboard. The RiverLevels widget is of particular interest to whitewater kayakers and canoeists.
Once any United States [...]]]></description>
			<content:encoded><![CDATA[<p><em>This version is a re-release of <a href="http://www.adamfranco.com/?p=68">version 1.2</a> which had a corrupted archive missing some necessary files.</em></p>
<p><a href="http://downloads.sourceforge.net/waterwidgets/RiverLevels.wdgt-1.2.zip"><img src="http://www.adamfranco.com/wp-content/uploads/2008/02/screen-shot.jpg" title="RiverLevels 1.0 Screen Shot" alt="RiverLevels 1.0 Screen Shot" style="width: 100%; max-width: 817px" align="middle" border="0" /></a></p>
<p>The <span class="title">RiverLevels</span> widget provides an easy way to monitor the amount of water flowing in your favorite streams and rivers right from your Dashboard. The <span class="title">RiverLevels</span> widget is of particular interest to whitewater kayakers and canoeists.</p>
<p>Once any United States Geological Survey (USGS) stream-gauge station is selected, it is automatically refreshed to always provide you with the latest graph of the water-level. As of version 1.2 you can choose between two graph styles: discharge in cubic feet per second (CFS) and water-height in feet.</p>
<p>This widget is Free software, licensed under the GNU General Public License (GPL) version 3 or later.</p>
<ul>
<li><strong><a href="http://downloads.sourceforge.net/waterwidgets/RiverLevels.wdgt-1.2.1.zip">Download</a></strong></li>
</ul>
<ul>
<li><a href="http://waterwidgets.sourceforge.net/">More Info</a></li>
<li><a href="http://www.apple.com/downloads/dashboard/information/riverlevels.html">Apple&#8217;s Download page for RiverLevels.wdgt</a></li>
<li><a href="http://sourceforge.net/tracker/?group_id=149897&amp;atid=776122">Bug Tracker</a></li>
</ul>
<p><strong> Requirements:</strong></p>
<ul>
<li>OS X - 10.4 &#8220;Tiger&#8221; or later</li>
</ul>
<p><strong>Change Log:</strong></p>
<p>1.2.1 (2008-02-10)</p>
<ul>
<li>New zip archive includes the &#8216;library&#8217; directory missing in the 1.2 release.</li>
</ul>
<p>1.2 (2008-02-06)</p>
<ul>
<li>Fixed Leopard (10.5) compatability bug.</li>
<li> Added the ability to choose Gauge Height (ft) in addition to discharge (CFS).</li>
</ul>
<p>1.1 (2007-01-08)</p>
<ul>
<li>Fixed graphs extending off bottom of widget</li>
<li>Fixed invisibility of front refresh icon</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfranco.com/archives/69/feed</wfw:commentRss>
		</item>
		<item>
		<title>River Levels Widget v1.2</title>
		<link>http://www.adamfranco.com/archives/68</link>
		<comments>http://www.adamfranco.com/archives/68#comments</comments>
		<pubDate>Thu, 07 Feb 2008 15:42:53 +0000</pubDate>
		<dc:creator>Adam Franco</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Computers and Technology]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.adamfranco.com/?p=68</guid>
		<description><![CDATA[Update:  A new version is available that fixes a corrupted archive in version 1.2.

The RiverLevels widget provides an easy way to monitor the amount of water flowing in your favorite streams and rivers right from your Dashboard. The RiverLevels widget is of particular interest to whitewater kayakers and canoeists.
Once any United States Geological Survey [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong>  <em>A <a href="http://www.adamfranco.com/?p=69">new version is available</a> that fixes a corrupted archive in version 1.2.</em><br />
<a href="http://downloads.sourceforge.net/waterwidgets/RiverLevels.wdgt-1.2.zip"><img src="http://www.adamfranco.com/wp-content/uploads/2008/02/screen-shot.jpg" title="RiverLevels 1.0 Screen Shot" alt="RiverLevels 1.0 Screen Shot" style="width: 100%; max-width: 817px" align="middle" border="0" /></a></p>
<p>The <span class="title">RiverLevels</span> widget provides an easy way to monitor the amount of water flowing in your favorite streams and rivers right from your Dashboard. The <span class="title">RiverLevels</span> widget is of particular interest to whitewater kayakers and canoeists.</p>
<p>Once any United States Geological Survey (USGS) stream-gauge station is selected, it is automatically refreshed to always provide you with the latest graph of the water-level. As of version 1.2 you can choose between two graph styles: discharge in cubic feet per second (CFS) and water-height in feet.</p>
<p>This widget is Free software, licensed under the GNU General Public License (GPL) version 3 or later.</p>
<ul>
<li><strong><a href="http://downloads.sourceforge.net/waterwidgets/RiverLevels.wdgt-1.2.1.zip">Download</a></strong></li>
</ul>
<ul>
<li><a href="http://waterwidgets.sourceforge.net/">More Info</a></li>
<li><a href="http://www.apple.com/downloads/dashboard/information/riverlevels.html">Apple&#8217;s Download page for RiverLevels.wdgt</a></li>
<li><a href="http://sourceforge.net/tracker/?group_id=149897&amp;atid=776122">Bug Tracker</a></li>
</ul>
<p><strong> Requirements:</strong></p>
<ul>
<li>OS X - 10.4 &#8220;Tiger&#8221; or later</li>
</ul>
<p><strong>Change Log:</strong></p>
<p>1.2 (2008-02-06)</p>
<ul>
<li>Fixed Leopard (10.5) compatability bug.</li>
<li> Added the ability to choose Gauge Height (ft) in addition to discharge (CFS).</li>
</ul>
<p>1.1 (2007-01-08)</p>
<ul>
<li>Fixed graphs extending off bottom of widget</li>
<li>Fixed invisibility of front refresh icon</li>
</ul>
<p><strong>Update:</strong>  <em>A <a href="http://www.adamfranco.com/?p=69">new version is available</a> that fixes a corrupted archive in version 1.2.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfranco.com/archives/68/feed</wfw:commentRss>
		</item>
		<item>
		<title>&#8216;Birthdays&#8217; calendar breaks sycing in OS X 10.5 (Leopard)</title>
		<link>http://www.adamfranco.com/archives/66</link>
		<comments>http://www.adamfranco.com/archives/66#comments</comments>
		<pubDate>Thu, 31 Jan 2008 22:37:25 +0000</pubDate>
		<dc:creator>Adam Franco</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Computers and Technology]]></category>

		<guid isPermaLink="false">http://www.adamfranco.com/?p=66</guid>
		<description><![CDATA[After upgrading my laptop to Apple&#8217;s latest operating system, OS X 10.5 &#8216;Leopard&#8217;, I ran into a few issues here and there but for the most part I thought everything worked. After about a month using Leopard though, I noticed that my meetings were not syncing properly to my in-phone calendar. Several hours of frustration [...]]]></description>
			<content:encoded><![CDATA[<p>After upgrading my laptop to Apple&#8217;s latest operating system, OS X 10.5 &#8216;Leopard&#8217;, I ran into a few issues here and there but for the most part I thought everything worked. After about a month using Leopard though, I noticed that my meetings were not syncing properly to my in-phone calendar. Several hours of frustration later my events are finally getting into my phone. The problem: the &#8216;Birthdays&#8217; calendar generated from the Address Book application <a href="http://blog.spanningsync.com/2008/01/update-on-the-l.html">breaks the sync process</a>. I&#8217;m glad that once I found the issue the fix was easy (disabling the Birthdays calendar), but holy dog-poo that was hard to find.</p>
<p>If you think you may have this error, open the Console application while running iSync. If you will see an error appear that contains the text</p>
<blockquote><p>ISyncInvalidRecordException you referenced the following records (in a relationship) but did not actually push them</p></blockquote>
<p>and then another message mentioning &#8216;birthdays&#8217;, disable the Birthdays calendar (iCal &#8211;&gt; Preferences &#8211;&gt; &#8216;Show Birthdays Calendar&#8217;) and try syncing again.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfranco.com/archives/66/feed</wfw:commentRss>
		</item>
		<item>
		<title>Middle Road Development</title>
		<link>http://www.adamfranco.com/archives/64</link>
		<comments>http://www.adamfranco.com/archives/64#comments</comments>
		<pubDate>Tue, 04 Dec 2007 03:11:58 +0000</pubDate>
		<dc:creator>Adam Franco</dc:creator>
		
		<category><![CDATA[GIS/GPS]]></category>

		<category><![CDATA[KML]]></category>

		<category><![CDATA[Musings]]></category>

		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.adamfranco.com/?p=64</guid>
		<description><![CDATA[Just over the hill from me are two new development projects in Middlebury, the &#8220;Lodge at Otter Creek&#8221; retirement community and the other is an upscale residential neighborhood.
For those who are interested in the extent of the development, I&#8217;ve biked the new roads and recorded their positions via GPS:

View Larger Map
Middle Road KML
]]></description>
			<content:encoded><![CDATA[<p>Just over the hill from me are two new development projects in Middlebury, the &#8220;Lodge at Otter Creek&#8221; retirement community and the other is an upscale residential neighborhood.</p>
<p>For those who are interested in the extent of the development, I&#8217;ve biked the new roads and recorded their positions via GPS:</p>
<p><iframe src="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;time=&amp;date=&amp;ttype=&amp;q=http:%2F%2Fwww.adamfranco.com%2Fwp-content%2Fuploads%2F2007%2F12%2Fmiddle-road.kml&amp;ie=UTF8&amp;t=h&amp;om=1&amp;s=AARTsJq4SeVn4ZmIUhfKmEbiULQVbIXkWg&amp;ll=43.996581,-73.151436&amp;spn=0.021611,0.036478&amp;z=14&amp;output=embed" marginheight="0" marginwidth="0" frameborder="0" height="350" scrolling="no" width="425"></iframe><br />
<small><a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;time=&amp;date=&amp;ttype=&amp;q=http:%2F%2Fwww.adamfranco.com%2Fwp-content%2Fuploads%2F2007%2F12%2Fmiddle-road.kml&amp;ie=UTF8&amp;t=h&amp;om=1&amp;ll=43.996581,-73.151436&amp;spn=0.021611,0.036478&amp;z=14&amp;source=embed" style="color: #0000ff; text-align: left">View Larger Map</a></small></p>
<p><a href="http://www.adamfranco.com/wp-content/uploads/2007/12/middle-road.kml" title="Middle Road KML">Middle Road KML</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfranco.com/archives/64/feed</wfw:commentRss>
		</item>
		<item>
		<title>Wordpress Enclosure Adder</title>
		<link>http://www.adamfranco.com/archives/62</link>
		<comments>http://www.adamfranco.com/archives/62#comments</comments>
		<pubDate>Thu, 06 Sep 2007 15:02:05 +0000</pubDate>
		<dc:creator>Adam Franco</dc:creator>
		
		<category><![CDATA[Computers and Technology]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.adamfranco.com/?p=62</guid>
		<description><![CDATA[I&#8217;ve recently developed a small PHP script, the WPEnclosureAdder (source &#124; try) that goes through each item in an RSS feed, looks for links to YouTube videos or GoogleVideo videos, and then adds an enclosure tags for the videos. If multiple videos are found embedded in a post, then that post is duplicated in the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently developed a small PHP script, the WPEnclosureAdder (<a href="http://www2.adamfranco.com/WPEnclosureAdder/WPEnclosureAdder.phps">source</a> | <a href="http://www2.adamfranco.com/WPEnclosureAdder/WPEnclosureAdder.phps">try</a>) that goes through each item in an RSS feed, looks for links to <a href="http://www.youtube.com">YouTube</a> videos or <a href="http://video.google.com/">GoogleVideo</a> videos, and then adds an enclosure tags for the videos. If multiple videos are found embedded in a post, then that post is duplicated in the feed for each additional URL to provide compatibility with the many RSS readers/video-podcast viewers that expect a single enclosure per post.</p>
<p>I wrote this script because I have been recently making heavy use of <a href="http://www.getmiro.com/">Miro</a> (formerly known as &#8220;<a href="http://en.wikipedia.org/wiki/Miro_Media_Player" title="About Miro on Wikipedia">The Democracy Player</a>&#8220;) to download videos from YouTube in order to watch them off-line. Miro also provides a nice UI for aggregating videos and remembers my spot when I go back to watching later (nice for long documentaries). Miro however, expects links to videos in RSS enclosure tags, something that Wordpress (and probably other blogging software) doesn&#8217;t do for embeded videos.</p>
<p><a href="http://throwawayyourtelescreen.wordpress.com/">Throw Away Your Telescreen</a> is a video blog done by one of my favorite geo-political bloggers, <a href="http://complexsystemofpipes.wordpress.com/" title="Complex System of Pipes">Dave on Fire</a>, and a few others. In it they link out to the most interesting &#8220;documentaries, lectures, and interviews that follow a different editorial line&#8221; from the corporate press.  I highly recommend all of the videos on it that I <a href="http://www.adamfranco.com/?p=41" title="Confessions of an Economic Hit Man">have</a> <a href="http://www.adamfranco.com/?p=37" title="Money as Debt">seen</a>.</p>
<p>Throw Away Your Telescreen has all the makings of an indie-news channel, perfect for Miro which was developed to encourage <a href="http://participatoryculture.org/">participatory media and culture</a>. The only thing missing was to get the videos embedded in Throw Away Your Telescreen&#8217;s posts in such a way that Miro can find them. With the WPEnclosureAdder, this has now been done. Use <a href="http://www2.adamfranco.com/ThrowAwayYourTelescreenRSS.php" title="Copy this URL and add it as a channel in Miro.">this feed</a> to view Throw Away Your Telescreen in Miro.</p>
<hr /><strong>More about the WPEnclosureAdder:</strong></p>
<ul>
<li>View the <a href="http://www2.adamfranco.com/WPEnclosureAdder/WPEnclosureAdder.phps">source-code</a> of the latest version. (save-as to download)</li>
<li>License: <a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a> (GPL) version 3 or later</li>
<li>Requirements (for hosting it yourself): <a href="http://www.php.net">PHP</a> version 5.2 or later</li>
<li><a href="http://git.or.cz/">Git</a> Repository: http://www2.adamfranco.com/WPEnclosureAdder.git</li>
</ul>
<p>I wrote this script with Throw Away Your Telescreen in mind, but it should work with any other Wordpress blog, and probably with RSS feeds generated from other blogging tools. To point it at another blog&#8217;s RSS feed, enter the feed url in the form below:</p>
<form action="http://www2.adamfranco.com/WPEnclosureAdder/WPEnclosureAdder.php" method="get">
<input name="source" value="http://" type="text" />
<input value="submit" type="submit" /> </form>
<p>Using my version will use my default search strings for YouTube and GoogleVideo videos. If you would like to change what is being searched for, please download the script, change the configuration, and host it on your own website. I have licensed the WPEnclosureAdder under the <a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a> (GPL) version 3 or later, so you are free to copy and modify this script as per the terms of that license.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfranco.com/archives/62/feed</wfw:commentRss>
		</item>
		<item>
		<title>KML Joiner</title>
		<link>http://www.adamfranco.com/archives/60</link>
		<comments>http://www.adamfranco.com/archives/60#comments</comments>
		<pubDate>Wed, 29 Aug 2007 05:11:07 +0000</pubDate>
		<dc:creator>Adam Franco</dc:creator>
		
		<category><![CDATA[Computers and Technology]]></category>

		<category><![CDATA[GIS/GPS]]></category>

		<category><![CDATA[KML]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.adamfranco.com/?p=60</guid>
		<description><![CDATA[As of a few days ago, I am now able to generate KML versions of Flickr photosets for viewing in Google Earth/Maps. With that taken care of, I also want to easily combine these KML documents of images together with other KML files that show additional information, such as paths traveled, points of interest, etc. [...]]]></description>
			<content:encoded><![CDATA[<p>As of a few days ago, I am now able to <a href="http://www.adamfranco.com/?p=43">generate KML versions</a> of Flickr photosets for viewing in Google Earth/Maps. With that taken care of, I also want to easily combine these KML documents of images together with other KML files that show additional information, such as paths traveled, points of interest, etc. </p>
<p>To accomplish this task, I have written a new script, the <a href="http://www2.adamfranco.com/kml_joiner.php"><strong>KML Joiner</strong></a>  that will combine any KML documents on the web together into a single (referenced) KML document. (<a href="http://www2.adamfranco.com/kml_joiner.php">try it out</a>)</p>
<p><strong>More Detail:</strong> <em>for those interested in KML</em><br />
The resulting document is a collection of network links, each of which points to one of the KML URLs specified. Doing this rather than combining their text together into a static KML document prevents style collisions as well as allows changes in the source data to propagate to the combined document.</p>
<p>Refresh intervals can optionally be specified for every source document allowing for a server-friendly combination of static data with rapidly changing data. By default, no refresh interval is specified, making the linked documents load only once when first accessed.</p>
<p><strong>Example:</strong></p>
<p>View the <a href='http://www2.adamfranco.com/kml_joiner.php?&#038;title=Conodoguinet+Conoe+Trip&#038;description=This+is+the+trip+mentioned+in+a+previous+%3Ca+href%3D%27http%3A%2F%2Fwww.adamfranco.com%2F%3Fp%3D59%27%3Eblog+post%3C%2Fa%3E%2C+but+this+time+the+data+sources+%281.+a+static+KML+file+with+the+path+and+house++placemark%2C+2.+a+dynamic+KML+document+generated+with+my+%3Ca+href%3D%27http%3A%2F%2Fwww2.adamfranco.com%2FphotosetToKML.php%27%3EPhoto+set+to+KML%3C%2Fa%3E+script%29+joined+together+with+the+%3Ca+href%3D%27http%3A%2F%2Fwww2.adamfranco.com%2Fkml_joiner.php%27%3EKML+Joiner+script%3C%2Fa%3E.&#038;urls%5B%5D=http%3A%2F%2Fwww2.adamfranco.com%2Fkml%2FConodoguinetPath.kml&#038;titles%5B%5D=Path&#038;refresh%5B%5D=&#038;urls%5B%5D=http%3A%2F%2Fwww2.adamfranco.com%2FphotosetToKML.php%3Fset%3D72157601703568728%26size%3Dsmall&#038;titles%5B%5D=Photos&#038;refresh%5B%5D='>KML Joiner  with fields filled in</a> that generates the map below.</p>
<p><iframe width="425" height="350" frameborder="no" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&#038;hl=en&#038;ie=UTF8&#038;om=1&#038;q=http:%2F%2Fwww2.adamfranco.com%2Fkml_joiner.php%3F%26title%3DConodoguinet%2BConoe%2BTrip%26description%3DThis%2Bis%2Bthe%2Btrip%2Bmentioned%2Bin%2Ba%2Bprevious%2B%253Ca%2Bhref%253D%2527http%253A%252F%252Fwww.adamfranco.com%252F%253Fp%253D59%2527%253Eblog%2Bpost%253C%252Fa%253E%252C%2Bbut%2Bthis%2Btime%2Bthe%2Bdata%2Bsources%2B%25281.%2Ba%2Bstatic%2BKML%2Bfile%2Bwith%2Bthe%2Bpath%2Band%2Bhouse%2B%2Bplacemark%252C%2B2.%2Ba%2Bdynamic%2BKML%2Bdocument%2Bgenerated%2Bwith%2Bmy%2B%253Ca%2Bhref%253D%2527http%253A%252F%252Fwww2.adamfranco.com%252FphotosetToKML.php%2527%253EPhoto%2Bset%2Bto%2BKML%253C%252Fa%253E%2Bscript%2529%2Bjoined%2Btogether%2Bwith%2Bthe%2B%253Ca%2Bhref%253D%2527http%253A%252F%252Fwww2.adamfranco.com%252Fkml_joiner.php%2527%253EKML%2BJoiner%2Bscript%253C%252Fa%253E.%26urls%255B%255D%3Dhttp%253A%252F%252Fwww2.adamfranco.com%252Fkml%252FConodoguinetPath.kml%26titles%255B%255D%3DPath%26refresh%255B%255D%3D%26urls%255B%255D%3Dhttp%253A%252F%252Fwww2.adamfranco.com%252FphotosetToKML.php%253Fset%253D72157601703568728%2526size%253Dsmall%26titles%255B%255D%3DPhotos%26refresh%255B%255D%3D&#038;ll=40.220497,-77.243939&#038;spn=0.0212,0.057612&#038;output=embed&#038;s=AARTsJqZXZ5mh9brNetd7bmO_tBkz1S9oQ"></iframe><br/><a href="http://maps.google.com/maps?f=q&#038;hl=en&#038;ie=UTF8&#038;om=1&#038;q=http:%2F%2Fwww2.adamfranco.com%2Fkml_joiner.php%3F%26title%3DConodoguinet%2BConoe%2BTrip%26description%3DThis%2Bis%2Bthe%2Btrip%2Bmentioned%2Bin%2Ba%2Bprevious%2B%253Ca%2Bhref%253D%2527http%253A%252F%252Fwww.adamfranco.com%252F%253Fp%253D59%2527%253Eblog%2Bpost%253C%252Fa%253E%252C%2Bbut%2Bthis%2Btime%2Bthe%2Bdata%2Bsources%2B%25281.%2Ba%2Bstatic%2BKML%2Bfile%2Bwith%2Bthe%2Bpath%2Band%2Bhouse%2B%2Bplacemark%252C%2B2.%2Ba%2Bdynamic%2BKML%2Bdocument%2Bgenerated%2Bwith%2Bmy%2B%253Ca%2Bhref%253D%2527http%253A%252F%252Fwww2.adamfranco.com%252FphotosetToKML.php%2527%253EPhoto%2Bset%2Bto%2BKML%253C%252Fa%253E%2Bscript%2529%2Bjoined%2Btogether%2Bwith%2Bthe%2B%253Ca%2Bhref%253D%2527http%253A%252F%252Fwww2.adamfranco.com%252Fkml_joiner.php%2527%253EKML%2BJoiner%2Bscript%253C%252Fa%253E.%26urls%255B%255D%3Dhttp%253A%252F%252Fwww2.adamfranco.com%252Fkml%252FConodoguinetPath.kml%26titles%255B%255D%3DPath%26refresh%255B%255D%3D%26urls%255B%255D%3Dhttp%253A%252F%252Fwww2.adamfranco.com%252FphotosetToKML.php%253Fset%253D72157601703568728%2526size%253Dsmall%26titles%255B%255D%3DPhotos%26refresh%255B%255D%3D&#038;ll=40.220497,-77.243939&#038;spn=0.0212,0.057612&#038;source=embed" style="color:#0000FF;text-align:left;font-size:small">View Larger Map</a></p>
<p>The map above is of the trip mentioned in a previous <a href='http://www.adamfranco.com/?p=59'>blog post</a>, but this time the data sources (1. a static KML file with the path and house placemark, 2. a dynamic KML document generated with my <a href='http://www2.adamfranco.com/photosetToKML.php'>Photo set to KML</a> script) joined together with the <a href='http://www2.adamfranco.com/kml_joiner.php'>KML Joiner script</a> instead of manually put together with a text editor.</p>
<p><strong>Usage:</strong><br />
You are welcome to use this script <a href="http://www2.adamfranco.com/kml_joiner.php">hosted on my site</a>, or you can <a href="http://www2.adamfranco.com/kml_joiner.phps" title="Right-click and 'save as' to download.">download it</a> and run it on your own computer/webserver.</p>
<p>This script is available under the <a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License (GPL)</a> version 3 or later. (<a href="http://www2.adamfranco.com/kml_joiner.phps" title="View the sourcecode.">Source Code</a>)</p>
<p>Please post any suggestions for fixes or changes. Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfranco.com/archives/60/feed</wfw:commentRss>
		</item>
		<item>
		<title>Conodoguinet Creek Canoe Trip</title>
		<link>http://www.adamfranco.com/archives/59</link>
		<comments>http://www.adamfranco.com/archives/59#comments</comments>
		<pubDate>Tue, 28 Aug 2007 20:00:37 +0000</pubDate>
		<dc:creator>Adam Franco</dc:creator>
		
		<category><![CDATA[GIS/GPS]]></category>

		<category><![CDATA[Musings]]></category>

		<category><![CDATA[Outdoors]]></category>

		<guid isPermaLink="false">http://www.adamfranco.com/?p=59</guid>
		<description><![CDATA[Sarah and I took a 6-mile canoe trip down the Conodoguinet Creek near my parents&#8217; house on a beautiful August afternoon.
View Larger Map
The map above was generated with a GPS track of our path (the blue line) and the photo output from my new photosetToKML.php script
]]></description>
			<content:encoded><![CDATA[<p>Sarah and I took a 6-mile canoe trip down the Conodoguinet Creek near my parents&#8217; house on a beautiful August afternoon.</p>
<p><iframe width="600" height="500" frameborder="no" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&#038;hl=en&#038;geocode=&#038;q=http:%2F%2Fwww2.adamfranco.com%2Fkml%2FConodoguinetTrip.kml&#038;ie=UTF8&#038;om=1&#038;s=AARTsJqYSvajbOdDWpCUbVizG70EYPcoTQ&#038;ll=40.220437,-77.244015&#038;spn=0.039322,0.072956&#038;z=13&#038;output=embed"></iframe><br/><a href="http://maps.google.com/maps?f=q&#038;hl=en&#038;geocode=&#038;q=http:%2F%2Fwww2.adamfranco.com%2Fkml%2FConodoguinetTrip.kml&#038;ie=UTF8&#038;om=1&#038;ll=40.220437,-77.244015&#038;spn=0.039322,0.072956&#038;z=13&#038;source=embed" style="color:#0000FF;text-align:left;font-size:small">View Larger Map</a></p>
<p>The map above was generated with a GPS track of our path (the blue line) and the photo output from my new <a href="http://www.adamfranco.com/?p=43">photosetToKML.php</a> script</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfranco.com/archives/59/feed</wfw:commentRss>
		</item>
		<item>
		<title>Flickr Photo Set to KML</title>
		<link>http://www.adamfranco.com/archives/43</link>
		<comments>http://www.adamfranco.com/archives/43#comments</comments>
		<pubDate>Fri, 24 Aug 2007 00:03:15 +0000</pubDate>
		<dc:creator>Adam Franco</dc:creator>
		
		<category><![CDATA[Computers and Technology]]></category>

		<category><![CDATA[GIS/GPS]]></category>

		<category><![CDATA[KML]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Photography]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.adamfranco.com/?p=43</guid>
		<description><![CDATA[One of the things I (and others) have found lacking when working with geotagged images on Flickr, is the inability to retrieve a &#8220;photo set&#8221; (Flickr&#8217;s take on a slideshow) as a KML document that can then be displayed in GoogleEarth, GoogleMaps, or other geo-browsers. Flickr provides some KML links and GeoRSS feeds, but these [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things I (<a href="http://www.ogleearth.com/2007/08/flickr_to_googl.html" title="Ogle Earth">and others</a>) have found lacking when working with <a href="http://en.wikipedia.org/wiki/Geotagging" title="Definition on Wikipedia">geotagged</a> images on <a href="http://www.flickr.com" title="Flickr.com">Flickr</a>, is the inability to retrieve a &#8220;photo set&#8221; (Flickr&#8217;s take on a slideshow) as a KML document that can then be displayed in GoogleEarth, GoogleMaps, or other geo-browsers. Flickr provides some KML links and GeoRSS feeds, but these are either limited to 20 items or can only be pointed at tags or users&#8217; photo-streams, not a particular photo set.</p>
<p>To fill this niche, I present a small script I wrote to generate a KML file from the geotagged photos in a set:</p>
<hr /><a href="http://www2.adamfranco.com/photosetToKML.php" title="Photo Set to KML" style='font-size: large; font-weight: bold;'>Photo Set to KML</a> &nbsp; &nbsp; (<a href="http://www2.adamfranco.com/photosetToKML.php" title="Photo Set to KML">try it out</a>)</p>
<p><br/><strong>Features:</strong></p>
<ul>
<li>Generate a KML file from a Flickr photo set</li>
<li>Directly open the KML file in Google Maps</li>
<li>Choose what size image to include in the placemark description for each photo.</li>
<li> Optionaly draw a path (line) from photo to photo ordered in one of several ways: by date taken, by date uploaded, by set order. Useful for making a quick and dirty map of a trip.</li>
</ul>
<p><strong>Examples:</strong></p>
<ul>
<li><a href="http://www2.adamfranco.com/photosetToKML.php?set=72157594417350372&amp;size=medium">KML</a> / <a href="http://www2.adamfranco.com/photosetToKML.php?set=72157594417350372&amp;size=small&amp;format=open_google_maps">GoogleMaps</a> - A nice set of graphitti in Toronto.<br />
<iframe src="http://maps.google.com/maps?f=q&amp;hl=en&amp;ie=UTF8&amp;om=1&amp;t=h&amp;q=http:%2F%2Fwww2.adamfranco.com%2FphotosetToKML.php%3Fset%3D72157594417350372%26size%3Dsmall&amp;s=AARTsJrYvMT49CEHxKMEuMDUEaimkiTsHQ&amp;ll=43.654957,-79.402136&amp;spn=0.086939,0.145912&amp;z=12&amp;output=embed" marginheight="0" marginwidth="0" frameborder="no" height="350" scrolling="no" width="425"></iframe><br />
<a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;ie=UTF8&amp;om=1&amp;t=h&amp;q=http:%2F%2Fwww2.adamfranco.com%2FphotosetToKML.php%3Fset%3D72157594417350372%26size%3Dsmall&amp;ll=43.654957,-79.402136&amp;spn=0.086939,0.145912&amp;z=12&amp;source=embed" style="color: #0000ff; text-align: left; font-size: small">View Larger Map</a><br />
&nbsp;</li>
<li><a href="http://www.adamfranco.com/wp-content/uploads/2007/08/turkey-2005-best.kml" title="Turkey Best.kml">KML</a> / <a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;q=http:%2F%2Fwww.adamfranco.com%2Fwp-content%2Fuploads%2F2007%2F08%2Fturkey-2005-best.kml&amp;ie=UTF8&amp;z=6&amp;om=1">GoogleMaps</a> -  A set of photos from a trip I took around Turkey, with lines drawn chronologically. Since this is a large set that causes GoogleMaps to time-out, I&#8217;ve downloaded the KML file and then re-uploaded it to my website. This is the method I recommend for large photo sets.<br />
<iframe src="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;q=http:%2F%2Fwww.adamfranco.com%2Fwp-content%2Fuploads%2F2007%2F08%2Fturkey-2005-best.kml&amp;ie=UTF8&amp;om=1&amp;s=AARTsJrgP9DYat4aFUkI62xSDNmbgvcQFw&amp;ll=38.634036,31.003418&amp;spn=6.006381,9.338379&amp;z=6&amp;output=embed" marginheight="0" marginwidth="0" frameborder="no" height="350" scrolling="no" width="425"></iframe><br />
<a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;q=http:%2F%2Fwww.adamfranco.com%2Fwp-content%2Fuploads%2F2007%2F08%2Fturkey-2005-best.kml&amp;ie=UTF8&amp;om=1&amp;ll=38.634036,31.003418&amp;spn=6.006381,9.338379&amp;z=6&amp;source=embed" style="color: #0000ff; text-align: left; font-size: small">View Larger Map</a><br />
&nbsp;</li>
</ul>
<p>You are welcome to use this script <a href="http://www2.adamfranco.com/photosetToKML.php">hosted on my site</a>, or you can <a href="http://www2.adamfranco.com/photosetToKML.phps" title="Right-click and 'save as' to download.">download it</a> and run it on your own computer/webserver. If you would like to run it yourself, please be aware of the following&#8230;</p>
<p><strong>System Requirements</strong>:</p>
<ul>
<li><a href="http://www.php.net">PHP</a> 5.2 or greater.</li>
<li>The <a href="http://code.iamcal.com/php/flickr/readme.htm">PEAR Flickr API</a></li>
</ul>
<p>This script is available under the <a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License (GPL)</a> version 3 or later. (<a href="http://www2.adamfranco.com/photosetToKML.phps" title="View the sourcecode.">Source Code</a>)</p>
<p><strong>Updates:</strong>:</p>
<ul>
<li><strong>2007-08-27</strong>
<ul>
<li>Now uses htmlspecialchars() to clean titles instead of htmlentities(), the latter of which was causing excessive translation of German characters. Thanks <a href='http://www.ogleearth.com/'>Stefan Geens</a>, for pointing this out.</li>
<li>Form now generates valid XHTML 1.0 strict.</li>
<li>Now can use image thumbnails instead of camera icons. Thanks for the idea Nicolas Hoizey.</li>
</ul>
</li>
<li><strong>2007-08-24</strong>
<ul>
<li>Now escapes ampersands in titles and descriptions. Thanks Jesse for pointing this out.</li
		</ul>
</li>
</ul>
<p><strong>Future Improvement Ideas:</strong>:</p>
<ul>
<li>Add an option for icon size.</li>
<li>Add options for custom icon/path styles. I&#8217;m not sure whether to give several options, or just provide a field for a block of arbitrary KML style-markup.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfranco.com/archives/43/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
