<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Moving to Freedom</title>
	
	<link>http://www.movingtofreedom.org</link>
	<description>on moving to free/open source software; free society; assorted miscellany</description>
	<lastBuildDate>Tue, 07 Sep 2010 01:26:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<feedburner:info uri="movingtofreedom" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><image><link>http://www.movingtofreedom.org</link><url>http://www.movingtofreedom.org/wp-content/themes/mtf/images/truck.png</url><title>Moving to Freedom</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://www.movingtofreedom.org/feed/" /><feedburner:emailServiceId>MovingToFreedom</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:browserFriendly>Please make sure to always use the http://www.movingtofreedom.org/feed/ URL for your feeds! (Just in case FeedBurner goes bye-bye.)</feedburner:browserFriendly><item>
		<title>New Boxer Puppy!</title>
		<link>http://feedproxy.google.com/~r/MovingToFreedom/~3/tQHaqpmpCgQ/</link>
		<comments>http://www.movingtofreedom.org/2010/09/06/boxer-puppy-dog/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 01:26:26 +0000</pubDate>
		<dc:creator>Scott Carpenter</dc:creator>
				<category><![CDATA[photos]]></category>
		<category><![CDATA[dogs]]></category>
		<category><![CDATA[pets]]></category>

		<guid isPermaLink="false">http://www.movingtofreedom.org/?p=1163</guid>
		<description><![CDATA[Allie, fifteen weeks old. Look, she has a tail! Her mom was a rescue dog and they don&#8217;t dock tails in these cases, which is fine with us. Bigger: 2816 x 2112 Shot with: 6 mega-pixel Canon SD600 Shared with: Creative Commons Attribution-ShareAlike License]]></description>
			<content:encoded><![CDATA[<p>Allie, fifteen weeks old.</p>
<p class="center" ><a href="http://www.movingtofreedom.org/images/2010/09/100904_153609-boxer-puppy-dog-allie-2816x2112--by-scott-carpenter--cc-by-sa-30.jpg" ><img class="imgBorder"  src="http://www.movingtofreedom.org/images/2010/09/100904_153609-boxer-puppy-dog-allie-500x375--by-scott-carpenter--cc-by-sa-30.jpg"  width="500"  height="375"  alt="Boxer Puppy Dog Allie, 15 weeks" /></a></p>
<p> Look, she has a tail! Her mom was a rescue dog and they don&#8217;t dock tails in these cases, which is fine with us.</p>
<p class="rgt" >Bigger: <a href="http://www.movingtofreedom.org/images/2010/09/100904_153609-boxer-puppy-dog-allie-2816x2112--by-scott-carpenter--cc-by-sa-30.jpg" >2816 x 2112</a><br/>
Shot with: 6 mega-pixel Canon SD600<br/>
Shared with: <a href="http://creativecommons.org/licenses/by-sa/3.0/" >Creative Commons Attribution-ShareAlike License</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=tQHaqpmpCgQ:W2y_5c7jKls:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=tQHaqpmpCgQ:W2y_5c7jKls:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=tQHaqpmpCgQ:W2y_5c7jKls:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=tQHaqpmpCgQ:W2y_5c7jKls:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=tQHaqpmpCgQ:W2y_5c7jKls:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=tQHaqpmpCgQ:W2y_5c7jKls:2mJPEYqXBVI"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=2mJPEYqXBVI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MovingToFreedom/~4/tQHaqpmpCgQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.movingtofreedom.org/2010/09/06/boxer-puppy-dog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.movingtofreedom.org/2010/09/06/boxer-puppy-dog/</feedburner:origLink></item>
		<item>
		<title>Tettegouche arch falls into Lake Superior</title>
		<link>http://feedproxy.google.com/~r/MovingToFreedom/~3/59N3AJ5DJjg/</link>
		<comments>http://www.movingtofreedom.org/2010/08/22/tettegouche-arch-falls-into-lake-superior/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 01:38:08 +0000</pubDate>
		<dc:creator>Scott Carpenter</dc:creator>
				<category><![CDATA[photos]]></category>
		<category><![CDATA[minnesota]]></category>

		<guid isPermaLink="false">http://www.movingtofreedom.org/?p=1152</guid>
		<description><![CDATA[The StarTribune reports that the old arch along the Shovel Point Trail has fallen at Tettegouche State Park. They have a photo up from the DNR of the new &#8220;sea stack&#8221;: And here&#8217;s a photo I took in 2002 with my old Olympus two mega-pixel camera, not realizing I was seeing the end days of [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.startribune.com/local/101267639.html" >StarTribune reports</a> that the old arch along the Shovel Point Trail has fallen at <a href="http://en.wikipedia.org/wiki/Tettegouche_State_Park" >Tettegouche State Park</a>. They have a photo up from the <abbr title="Department of Natural Resources" >DNR</abbr> of the new &#8220;sea stack&#8221;:</p>
<p class="center" ><img class="imgBorder"  src="http://www.movingtofreedom.org/images/2010/08/tettegouche-sea-stack--by-minnesota-dnr.jpg"  width="500"  height="298"  alt="Tettegouche State Park Sea Stack on the Shovel Point Trail, Minnesota, 2010" /></p>
<p>And here&#8217;s a photo I took in 2002 with my old Olympus two mega-pixel camera, not realizing I was seeing the end days of a thousands-years-old formation:</p>
<p class="center" ><a href="http://www.movingtofreedom.org/images/2010/08/020715_124204-tettegouche-state-park-arch-shovel-point-trail--by-scott-carpenter--cc-by-sa-30.jpg" ><img class="imgBorder"  src="http://www.movingtofreedom.org/images/2010/08/020715_124204-tettegouche-state-park-arch-shovel-point-trail-500x365--by-scott-carpenter--cc-by-sa-30.jpg"  width="500"  height="365"  alt="Tettegouche State Park Arch on the Shovel Point Trail, Minnesota, 2002" /></a></p>
<p class="center" >Before the collapse. Bigger: <a href="http://www.movingtofreedom.org/images/2010/08/020715_124204-tettegouche-state-park-arch-shovel-point-trail--by-scott-carpenter--cc-by-sa-30.jpg" >1600 x 1200</a></p>
<p>I would <i>hope</i> that the DNR photo, being a government agency and supported by my tax dollars, is in the public domain and free. My photo is most certainly freely shared with the <a href="http://creativecommons.org/licenses/by-sa/3.0/" >Creative Commons Attribution-ShareAlike License</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=59N3AJ5DJjg:aHv12gabIfA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=59N3AJ5DJjg:aHv12gabIfA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=59N3AJ5DJjg:aHv12gabIfA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=59N3AJ5DJjg:aHv12gabIfA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=59N3AJ5DJjg:aHv12gabIfA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=59N3AJ5DJjg:aHv12gabIfA:2mJPEYqXBVI"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=2mJPEYqXBVI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MovingToFreedom/~4/59N3AJ5DJjg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.movingtofreedom.org/2010/08/22/tettegouche-arch-falls-into-lake-superior/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.movingtofreedom.org/2010/08/22/tettegouche-arch-falls-into-lake-superior/</feedburner:origLink></item>
		<item>
		<title>arranging windows from the gnu/linux command line with wmctrl</title>
		<link>http://feedproxy.google.com/~r/MovingToFreedom/~3/vgM-GEt1RPk/</link>
		<comments>http://www.movingtofreedom.org/2010/08/10/arranging-windows-from-the-gnulinux-command-line-with-wmctrl/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 00:51:19 +0000</pubDate>
		<dc:creator>Scott Carpenter</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[command line]]></category>

		<guid isPermaLink="false">http://www.movingtofreedom.org/?p=1144</guid>
		<description><![CDATA[A reboot of my computer recently caused me several hours of work. Nothing went wrong; the machine and Ubuntu started fine. No, I had to spend the time to save time. I was just trying to make things easier and more efficient, you see. I rarely restart my home computer. If an occasional software update [...]]]></description>
			<content:encoded><![CDATA[<p>A reboot of my computer recently caused me several hours of work. Nothing went wrong; the machine and Ubuntu started fine. No, I had to spend the time to save time.  I was just trying to make things easier and more efficient, you see.</p>
<p>I rarely restart my home computer. If an occasional software update wants me to do it, I mentally cringe because it will mean several minutes of starting and arranging windows.  I always have a collection of terminal, editor, and browser windows open and arranged just so. Things are coordinated between left and right monitor and a double-decker taskbar list. I can quickly move between windows and have everything lined up conveniently side by side and top and bottom, and all is well with the world. But then comes the reboot.</p>
<p>More frequently there is the need to restart Firefox. I like Firefox, but it leaks like a sieve on my machine.  Maybe it&#8217;s all the plugins that are to blame, but in any case, after running for two to three days it takes over a gigabyte of memory and grows progressively slower as it passes the 1.5 GB mark. Even if it only takes a couple of minutes to start and position new browser windows, the mental wind resistance is strong.</p>
<p>Clearly this is a situation that calls for a scripting diversion. There&#8217;s nothing quite like the satisfaction of scripting away the tedium of a repetitive task, even if the time to learn and write the script adds up to months or years of doing the task itself. The resulting diminishment of psychic drag is liberating.</p>
<p>So, I looked for ways to automate or programmatically set window positions in GNU/Linux. The first thing I found was <a href="http://burtonini.com/blog/computers/devilspie/" >Devil&#8217;s Pie</a>, which may have been suitable for the task, but later found and used <a href="http://en.wikipedia.org/wiki/Wmctrl" >wmctrl</a>. (Both were available via <code>apt-get</code> in Ubuntu 9.10.)</p>
<p><a href="http://tomas.styblo.name/wmctrl/" >Wmctrl</a> provides command line access to EWMH/NetWM compatible X window managers. EWMH is the <a href="http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html" >Extended Window Manager Hints specification</a>. That didn&#8217;t mean much to me at the time, but I learned that window managers implementing this specification include GNOME&#8217;s Metacity and KDE&#8217;s KWin, among many others. You can use this program to get a list of virtual desktops and open windows, resize and move windows, switch between desktops, and more, more, more.</p>
<p>The <a href="http://tomas.styblo.name/wmctrl/" >wmctrl home page</a> has useful information, and the man page is helpful, but I thought I&#8217;d throw a few examples and comments from my own experience out here, as always with the hope that I might contribute in some small way to the greater free software good.</p>
<p>You can get information about your virtual desktops (workspaces) with <code>wmctrl -d</code>:</p>
<pre>0  - DG: 2944x1280  VP: N/A  WA: 0,25 2944x1004  [First]
1  * DG: 2944x1280  VP: 0,0  WA: 0,25 2944x1004  [Second]
2  - DG: 2944x1280  VP: N/A  WA: 0,25 2944x1004  [Third]</pre>
<p>And list open windows with <code>wmctrl -l</code>. The <code>-G</code> option shows you the geometry of the windows:</p>
<pre class="op" >0x042000af  0 1988 71   956  978  bigbird Unsaved Document 2 - gedit
0x03e00a84  1 0    46   1024 1256 bigbird Moving to Freedom - Mozilla Firefox
0x018225e4  1 1031 71   956  469  bigbird scarpent@bigbird: ~</pre>
<p>Switch to a different virtual desktop with the <code>-s</code> option. For example, go to the first desktop with: <code>wmctrl -s 0</code>. I had some odd behavior at first when I used other methods of moving windows to different desktops. I&#8217;m not sure what that was all about, but using <code>-s</code> before starting and rearranging windows worked much better for me.</p>
<div class="box" >
<p><b>Note, 29 August 2010:</b> I recently discovered after upgrading to Ubuntu 10.04 (&#8220;Lucid Lynx&#8221;) that if visual effects are enabled (in System &raquo; Preferences &raquo; Appearance), multiple desktops/workspaces will appear to wmctrl as one big area, like so:</p>
<pre class="op" >0  * DG: 8832x1280  VP: 0,0  WA: 0,24 2944x1256  [First]</pre>
<p>And the <code>-s</code> action will have no effect or will cause an error if something other than 0 is given. wmctrl will still work for launching windows, but it seems you have to already be in the desired workspace when running it.</p>
</div>
<p>You can specify a window by referencing its title or partial title after <code>-r</code>. <code>-e</code> is for moving and resizing:</p>
<p><code>wmctrl -r "Mozilla Firefox" -e &lt;G&gt;,&lt;X&gt;,&lt;Y&gt;,&lt;W&gt;,&lt;H&gt;</code></p>
<p>From the wmctrl documentation:</p>
<pre>&lt;G&gt;: Gravity specified as a number. The numbers are defined in
     the EWMH specification. The value of zero is particularly
     useful, it means "use the default gravity of the window".
&lt;X&gt;,&lt;Y&gt;: Coordinates of new position of the window.
&lt;W&gt;,&lt;H&gt;: New width and height of the window.</pre>
<p>So, to move a window to the upper left corner and make it 1000 pixels wide by 700 tall, you&#8217;d use <code>0,0,0,1000,700</code>.</p>
<p>What if there is more than one window with the same title? For example, &#8220;Mozilla Firefox.&#8221; For that, I turned to the <code>-l</code> window list command. It seems that the list is in order with newly opened windows appearing at the bottom. I wrote a bash function to find the most recent one so that I could extract the unique numeric window ID:</p>
<pre class="code" >function get_window_id() {
    window_id=$(wmctrl -l | grep "$1" | tail -1 | cut -f1 -d" ")
}</pre>
<p>And then you can use the <code>-i</code> option to tell it to interpret the <code>-r</code> argument as a numeric window ID, like so:</p>
<pre class="code" >get_window_id "Mozilla Firefox"
wmctrl -i -r "$window_id" -e 0,1025,0,953,100</pre>
<p>In your script, you control when windows are created, so you can make assumptions about the most recent instance being the one you want to position.</p>
<p>On another Firefox note, I saw where people have struggled with it because Firefox will remember its window state from when it last closed. If it was maximized, it will start maximized, which can cause problems when you try to move/resize it. For that, I used the workaround of &#8220;unmaximizing&#8221; it first, using the <code>-b</code> option.</p>
<p><code>-b</code> can be used to change the state of a window.  There are <a href="http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html#id2507241" >many window state properties defined by the EWMH spec</a>, not all of which made sense to me, or for which I could find good explanations. But I eventually figured out that you can restore a window to a non-maximized state with this command:</p>
<p><code>wmctrl -r "Mozilla Firefox" -b remove,maximized_vert,maximized_horz</code></p>
<p>If it&#8217;s already not maximized, then that seems to be fine. It has no effect. Then you can move/resize the window, and then maximize it again if you so desire, with:</p>
<p><code>wmctrl -r "Mozilla Firefox" -b add,maximized_vert,maximized_horz</code></p>
<p>In addition to the <code>add</code> and <code>remove</code> actions, there is also <code>toggle</code>.</p>
<p>Note that sometimes you &#8220;don&#8217;t need no stinkin&#8217; helper programs.&#8221; For Gnome Terminal I used the built-in <code>--geometry &lt;width&gt;x&lt;height&gt;+&lt;x&gt;+&lt;y&gt;</code> option. In this case, width and height are given in terminal characters instead of pixels. To position a window on the upper left corner of my right monitor, I used <code>gnome-terminal --geometry 117x26+1025+0</code>.</p>
<p><code>sleep</code> statements are helpful to make sure things have time to start or be ready for &#8220;unmaximization.&#8221; Don&#8217;t fret over the delay. If it takes a few more seconds, that&#8217;s just more time to bask in the glory of your new automated process. Example:</p>
<pre class="code" >gedit --new-window &amp;
sleep 1
get_window_id gedit
wmctrl -i -r "$window_id" -e 0,1025,0,953,1000</pre>
<p>Don&#8217;t forget to use ampersands where necessary to background the process. With gedit, for example, I&#8217;m used to launching new windows in an existing process where it&#8217;s not necessary to background each one. But if you&#8217;re running a script and you launch the first instance, your script will halt if you don&#8217;t background it.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=vgM-GEt1RPk:37-lEdvSWSI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=vgM-GEt1RPk:37-lEdvSWSI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=vgM-GEt1RPk:37-lEdvSWSI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=vgM-GEt1RPk:37-lEdvSWSI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=vgM-GEt1RPk:37-lEdvSWSI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=vgM-GEt1RPk:37-lEdvSWSI:2mJPEYqXBVI"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=2mJPEYqXBVI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MovingToFreedom/~4/vgM-GEt1RPk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.movingtofreedom.org/2010/08/10/arranging-windows-from-the-gnulinux-command-line-with-wmctrl/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.movingtofreedom.org/2010/08/10/arranging-windows-from-the-gnulinux-command-line-with-wmctrl/</feedburner:origLink></item>
		<item>
		<title>WordPress Plugin: Post Revision Display</title>
		<link>http://feedproxy.google.com/~r/MovingToFreedom/~3/1LLzdOzYQck/</link>
		<comments>http://www.movingtofreedom.org/2010/07/30/wordpress-plugin-post-revision-and-diff-viewer/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 14:07:22 +0000</pubDate>
		<dc:creator>Scott Carpenter</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp plugins]]></category>

		<guid isPermaLink="false">http://www.movingtofreedom.org/?p=1128</guid>
		<description><![CDATA[I guess July is WordPress plugin month here at movingtofreedom.org, because here comes another one. This one was instigated by another Scott. Scott Rosenberg wrote last week about the &#8220;mutability of online content&#8221; and the challenges news organizations face in handling changes and corrections to stories, and concluded that versioning made sense in journalism as [...]]]></description>
			<content:encoded><![CDATA[<p>I guess <a href="http://www.movingtofreedom.org/2010/07/" >July is WordPress plugin month</a> here at movingtofreedom.org, because here comes another one. This one was <a href="http://www.wordyard.com/2010/07/23/help-with-a-wordpress-plugin-for-published-versions/" >instigated by another Scott</a>.</p>
<p>Scott Rosenberg wrote last week about the &#8220;<a href="http://www.wordyard.com/2010/07/21/politico-slate-and-story-versioning/" >mutability of online content</a>&#8221; and the challenges news organizations face in handling changes and corrections to stories, and concluded that versioning made sense in journalism as  a way to build trust. Readers can see all of the changes since publication so that there&#8217;s no sense of something being swept under the rug. The Drupal <abbr title="Content Management System" >CMS</abbr> has modules for making revisions publicly viewable, and of course this is a key feature of Wikipedia.</p>
<p>Scott noted that WordPress already stores revisions, and suggested a plugin could make old versions accessible to visitors. Looking to demo the idea on his blog, he later <a href="http://twitter.com/scottros/status/19115427624" >asked</a> if any WordPress developers were intrigued. At first I was only intrigued enough to dig up an existing plugin by D&#8217;Arcy Norman that did some of what he was looking for: &#8220;<a href="http://www.darcynorman.net/wordpress/post-revision-display/" >Post Revision Display</a>,&#8221; but gradually became invested in the challenge of making this thing happen. And here it is!</p>
<p>(And here is Scott&#8217;s post about the plugin: &#8220;<a href="http://www.wordyard.com/2010/08/03/change-is-good-but-show-your-work/" >Change is good, but show your work</a>.&#8221;)</p>
<h2>What It Does</h2>
<p>It&#8217;s pretty simple. Drop the post-revision-display.php file into your plugins dir and activate it, and you&#8217;ll see a list of post-publication revisions at the end of single post pages:</p>
<p class="center" ><img class="imgBorder"  src="http://www.movingtofreedom.org/images/2010/07/wordpress_revision_test__1.jpg"  width="500"  height="250"  alt="WordPress Plugin: Post Revision Display Example, Current Revision" /></p>
<p>Click on the link for a revision, and you&#8217;ll get a page showing that revision along with the &#8220;diffs&#8221; between the old revision and the current revision:</p>
<p class="center" ><img class="imgBorder"  src="http://www.movingtofreedom.org/images/2010/07/wordpress_revision_test__2.jpg"  width="500"  height="593"  alt="WordPress Plugin: Post Revision Display Example, Old Revision with Diffs" /></p>
<p>If you have the standard <code>&lt;?php wp_head() ?&gt;</code> hook in your theme&#8217;s header.php file, the plugin will add to the page header when an old revision is displayed:</p>
<p><code>&#0060;meta name=&#0034;robots&#0034; content=&#0034;noindex, nofollow&#0034; /&#0062;</code></p>
<p>To prevent indexing by search engines. (This is what Wikipedia does on its revision pages and I think is a good idea here as well.)</p>
<p>That&#8217;s all you have to do in the default &#8220;automatic&#8221; mode to start using the plugin, but you&#8217;ll likely want to add some <abbr title="Cascading Style Sheets" >CSS</abbr> to make the header note stand out and have the diffs look all spiffy as in the screenshot.</p>
<h2>CSS</h2>
<p>The diff styling is modeled after how the WordPress admin pages show comparisons. You may want to use similar styles as I did:</p>
<pre class="code" >table.diff { width: 100%; }
table.diff th { text-align: left; }
table.diff .diff-deletedline { background-color:#fdd;
                               width: 50%; }
table.diff .diff-deletedline del { background-color:#f99;
                                   text-decoration: none; }
table.diff .diff-addedline { background-color:#dfd;
                             width: 50%; }
table.diff .diff-addedline ins { background-color:#9f9;
                                 text-decoration: none; }
table.diff .diff-context { display: none; }</pre>
<p>This is entirely up to <i>you</i>, of course, but I&#8217;ll make a few comments about my choices:</p>
<ul>
<li><code>th</code> I like left-alignment for the headers here.</li>
<li><code>.diff-deletedline, .diff-addedline</code> These are the WordPress colors. I added 50% as the width. They are used for the column headers also, showing previous revision datetime and current revision.</li>
<li><code>.diff-deletedline del</code> WordPress color. Default text-decoration for <code>del</code> seems to be <span style="text-decoration: line-through" >strikethrough</span> (actually: &#8220;line-through&#8221;), which is probably better-suited for a print stylesheet.</li>
<li><code>.diff-addedline ins</code> WordPress color. Default text-decoration for <code>ins</code> is <span style="text-decoration: underline" >underline</span>, which again might lend itself better to print.</li>
<li><code>.diff-context</code> The WordPress admin diff shows all content for each post. Here, I&#8217;ve hidden the lines where there are no changes. Google, for one, frowns on hiding text, but since revision pages are marked as &#8220;noindex&#8221;, it shouldn&#8217;t hurt anything, other than wasting some bandwidth in sending down text that isn&#8217;t shown.</li>
</ul>
<h3>Other CSS</h3>
<p>The note at the top uses <code>&lt;div class="revision-header"&gt;&lt;p&gt;</code>. For example, I styled mine with:</p>
<pre class="code" >.revision-header {
	background-color: yellow;
	border: 1px solid #3a8b8c;
	padding: 10px; }

div.revision-header { padding: 0 10px; }</pre>
<p>The revision list uses:</p>
<pre class="code" >&#0060;div class=&#0034;post&#0045;revisions&#0034;&#0062;
&#0060;h4&#0062;Post Revisions:&#0060;/h4&#0062;
&#0060;ul class=&#0034;post&#0045;revisions&#0034;&#0062;</pre>
<p>And the changes section:</p>
<pre class="code" >&#0060;div id=&#0034;revision&#0045;diffs&#0034;&#0062;
&#0060;h4&#0062;Changes:&#0060;/h4&#0062;</pre>
<p>It uses an id instead of a class to allow the anchor jump &#8220;See below for differences.&#8221;</p>
<p>(The <code>h4</code> headers for the list and the diffs can be changed in &#8220;manual mode&#8221;. Keep reading&#8230;)</p>
<h2>Diffs / Changes</h2>
<p>The revision comparison shows the underlying HTML in a table, with columns for previous and current revisions.  With things like URLs, it&#8217;s likely you&#8217;ll have long strings that won&#8217;t wrap nicely in the table. The text will overflow to the right when this happens. In my theme, this means things will be hidden. Depending on how long your non-wrapping strings are, you can lose the entire right column. CSS will allow for a scrollbar in this situation:</p>
<p><code>#revision-diffs { overflow: auto; }</code></p>
<p>But to me, that&#8217;s not an ideal solution by itself. It doesn&#8217;t give you a nice side-by-side look at things. So what the plugin will do is try to break things up with spaces, inserting them in text that is at least 24 non-space characters long and has slashes, dashes, underscores, etcetera as breakpoints. This allows for better wrapping and doesn&#8217;t really change the gist of the comparison, <abbr title="In My Opinion" >IMO</abbr>. Previous and current revisions will tend to break at the same spots and not be highlighted. If a diff is somehow introduced, it should be clear that it&#8217;s nothing significant. The revision text shown as the content is still the original text.</p>
<p>It&#8217;s still a good idea to use overflow auto in case some long strings don&#8217;t have breakpoints. Maybe you have narrow columns and tend to use words like internationalization or supercalifragilisticexpialidocious.</p>
<p>(If this feature offends you, you can modify the plugin code, taking out the calls to the <code>prd_break_up_lines</code> function.)</p>
<h2>Automatic vs Manual Mode</h2>
<p>In &#8220;automatic mode,&#8221; once you activate the plugin, revision information will show up on single post views (e.g. <code>single.php</code>) as shown in the screenshots. There is no need to modify theme files. (Other than your CSS, as discussed above!)</p>
<p>With &#8220;manual mode,&#8221; you can specify where in your theme you want revision info to be displayed. Most commonly, you&#8217;ll make calls from <code>single.php</code> to:</p>
<pre class="code" >&lt;?php the_revision_note_prd() ?&gt;
&lt;?php the_revision_list_prd() ?&gt;
&lt;?php the_revision_diffs_prd() ?&gt;</pre>
<p>Which I think are pretty self-explanatory. One of these will have to come before <code>the_content</code> so that when filters are applied on post content, the plugin will know it is in manual mode and won&#8217;t do the automatic stuff. To me it makes the most sense to have the note at the top as a warning for when a previous revision is displayed, which  will take care of this requirement. (Even on current revision posts where there is no note, it will still set the manual flag.)</p>
<p>If you insist on putting all the function calls after the post content, you can place <code>&lt;?php prd_set_manual_mode() ?&gt;</code> before <code>the_content</code> is called in your theme.</p>
<p>Manual mode allows you to show revision info on &#8220;pages&#8221; (likely: <code>page.php</code>) in addition to single post views. (Or, if you want to do this in automatic mode and you&#8217;re willing to make a code change to the plugin, you can look for this line in the <code>prd_display_post_revisions</code> function: <code>if (!is_single()) {</code>, and change to: <code>if (!is_single() &amp;&amp; !is_page()) {</code>.)</p>
<p>You can also put revision info on pages with multiple posts (e.g. the main <code>index.php</code> page or archive pages), although in those cases it only makes sense to show the revision list. When calling <code>the_revision_list_prd()</code> from within &#8220;the loop,&#8221; you&#8217;ll need to force an update of the revision info for each post by using the first optional parameter, <code>$refreshGlobals</code>:</p>
<p><code>the_revision_list_prd(true)</code></p>
<p>(When you call the three <code>_prd</code> functions, the first call will load all the revision info into a set of global variables. Without forcing the update with <code>$refreshGlobals=true</code>, you&#8217;d see the revision list for the first post for every following post displayed on the page.)</p>
<p>In manual mode, you can also specify your own header text for the revision list and diff sections. This is the second optional parameter for the list function:</p>
<pre class="code" >the_revision_list_prd($refreshGlobals=false,
                      $header=REV_LIST_HEADER)</pre>
<p>Where the default <code>REV_LIST_HEADER</code> is <code>&lt;h4&gt;Revision List:&lt;/h4&gt;</code></p>
<p>The header is the first and only optional parameter for the function:</p>
<pre class="code" >the_revision_diffs_prd($header=REV_DIFFS_HEADER)</pre>
<p>Where the default <code>REV_DIFFS_HEADER</code> is <code>&lt;h4&gt;Changes:&lt;/h4&gt;</code></p>
<p>An example of calling these from <code>single.php</code>:</p>
<pre class="code" >&lt;?php the_revision_list_prd
          (false, '&lt;h3&gt;This is the revision list!&lt;/h3&gt;') ?&gt;
&lt;?php the_revision_diffs_prd
          ('&lt;p&gt;&lt;b&gt;These are the diffs!&lt;/b&gt;&lt;/p&gt;') ?&gt;</pre>
<h2>Download v0.7 (87K)</h2>
<p>Also available from the <a href="http://wordpress.org/extend/plugins/post-revision-display/" >official wordpress.org plugin page</a>.</p>
<div class="box" >
<p class="center no-deco" ><a href="http://www.movingtofreedom.org/src/wordpress/post-revision-display.tgz" >post-revision-display.tgz</a></p>
<p class="center no-deco" ><a href="http://www.movingtofreedom.org/src/wordpress/post-revision-display.zip" >post-revision-display.zip</a></p>
</div>
<p>The plugin has been tested with WordPress 3.0 and is licensed with the <a href="http://www.gnu.org/licenses/gpl-2.0.html" >GNU General Public License</a>, version 2 or later.</p>
<div class="box" >
<h3>Updates</h3>
<p><b>23 August 2010:</b> v0.7: Nicer diff styling using built-in <code>wp_text_diff</code> function. Requires CSS for the &#8220;nicer&#8221; part.</p>
<p><b>16 August 2010:</b> <a href="http://www.movingtofreedom.org/src/wordpress/post-revision-display-0.6.tgz" >v0.6</a>: Manual mode lets you make function calls from your theme for control over where revision information appears.</p>
<p><b>2 August 2010:</b> <a href="http://www.movingtofreedom.org/src/wordpress/post-revision-display-0.5.1.tgz" >v0.5.2</a>: Compares and reports on changes in post title.</p>
<p><b>1 August 2010:</b> <a href="http://www.movingtofreedom.org/src/wordpress/post-revision-display-0.5.1.tgz" >v0.5.1</a>: Revision note at top of post changed to use div + p instead of just p.</p>
</div>
<h2>Notes / Acknowledgments</h2>
<ul>
<li>I don&#8217;t plan on using this right now on my site, so you&#8217;ll have to go to <a href="http://www.wordyard.com/" >Scott&#8217;s Wordyard blog</a> to see it in action. (Maybe not until a few days after this post.) And for more examples, please leave a note in the comments if you decide to try it!</li>
<li>The default behavior of WordPress is to save all revisions, but can be modified to save only the most recent &#8220;N&#8221; revisions. If used for the &#8220;trust factor,&#8221; it would be best to save all revisions, don&#8217;t you think?</li>
<li>The markup generated by the plugin validates as HTML5, and very possibly will also pass as Transitional XHTML 1.0.</li>
<li>Let&#8217;s consider this to be experimental and proof-of-concepty, although so far it appears to be robust enough. I tried to take care with security checks so that only post-publication versions of public posts can be viewed. It seems that WordPress&#8217;s security mostly carries the day. If there are private posts, only those with access should be able to see revisions. However, <i>caveat emptor</i>.  <b>Please</b> let me know if you find any problems, with security or otherwise.</li>
<li>How cool is free software? I find that no matter how much I work with &#8220;free as in freedom&#8221; stuff, I still get a kick out of the way this works. We should all be free to build on each other&#8217;s work. It&#8217;s a culture of cooperation. Without the boost from the original, I likely wouldn&#8217;t have done this. (Thanks, D&#8217;Arcy!)</li>
<li>I found a nice PHP implementation of the Unix &#8220;diff&#8221; utility written by Daniel Unterberger and Nils Knappmeier, <a href="http://www.holomind.de/phpnet/diff2.src.php" >PHPDiff</a>,  which I modified for use in earlier versions, but later started using the built-in WordPress function, <code>wp_text_diff</code>.  (Still, <i>more</i> wonderful free software at work.)</li>
<li>Thanks to Scott R. for starting the ball rolling. I enjoyed working on this little project and doing my part to save the credibility of journalism in the digital age.</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=1LLzdOzYQck:7-27DDi0ygk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=1LLzdOzYQck:7-27DDi0ygk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=1LLzdOzYQck:7-27DDi0ygk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=1LLzdOzYQck:7-27DDi0ygk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=1LLzdOzYQck:7-27DDi0ygk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=1LLzdOzYQck:7-27DDi0ygk:2mJPEYqXBVI"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=2mJPEYqXBVI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MovingToFreedom/~4/1LLzdOzYQck" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.movingtofreedom.org/2010/07/30/wordpress-plugin-post-revision-and-diff-viewer/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://www.movingtofreedom.org/2010/07/30/wordpress-plugin-post-revision-and-diff-viewer/</feedburner:origLink></item>
		<item>
		<title>WordPress Plugin: The French Archives</title>
		<link>http://feedproxy.google.com/~r/MovingToFreedom/~3/HDlVmJAFPxE/</link>
		<comments>http://www.movingtofreedom.org/2010/07/17/wordpress-plugin-month-grid-and-all-posts-archive/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 16:28:53 +0000</pubDate>
		<dc:creator>Scott Carpenter</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp plugins]]></category>

		<guid isPermaLink="false">http://www.movingtofreedom.org/?p=1117</guid>
		<description><![CDATA[The French are a fine people, but you should be aware that this plugin has nothing to do with France or the French. Month Grid Archive I wanted to be able to display my monthly archives in a grid: With post counts for each month, but wasn&#8217;t finding a plugin for it. I did find [...]]]></description>
			<content:encoded><![CDATA[<p>The French are a fine people, but you should be aware that this plugin has nothing to do with France or the French.</p>
<h2>Month Grid Archive</h2>
<p>I wanted to be able to display my monthly <a href="http://www.movingtofreedom.org/archives/" >archives</a> in a grid:</p>
<p class="center" ><a href="http://www.movingtofreedom.org/archives/" ><img src="http://www.movingtofreedom.org/images/2010/07/wordpress_month_grid_archive.jpg"  width="500"  height="244"  alt="WordPress Month Grid Archive" /></a></p>
<p>With post counts for each month, but wasn&#8217;t finding a plugin for it. I did find Rob Marsh&#8217;s <a href="http://rmarsh.com/plugins/compact-archives/" >Compact Archives plugin</a> which gave me a good starting place. (Thanks Rob!)</p>
<p>Along the way, it seemed like it would be nice to have post count totals for each year and a grand total. I think this table gives readers a nice snapshot of posting activity over the years.</p>
<p>It&#8217;s simple to use: put <code>the_french_archives.php</code> in your plugin dir, activate it, and put <code>&lt;?php month_grid_archive(); ?&gt;</code> in your template file.</p>
<p>You can optionally specify the month header styles. &#8220;abbr&#8221; is the default, &#8220;initial&#8221; shows only the first letter of the month, and &#8220;numeric&#8221; shows the month number. You can also customize the top row. Default is &#8220;Monthly&#8221; as shown here. If you pass in an empty string, that row will disappear.</p>
<p>Example: <code>&lt;?php month_grid_archive('abbr', ''); ?&gt;</code></p>
<p>If there are only posts within one calendar year, the grand total won&#8217;t be shown at the bottom. (Although the row will remain.)</p>
<h2>All Posts Archive</h2>
<p>Inspired by the nice look of <a href="http://zenhabits.net/archives/" >Leo Babauta&#8217;s Archives</a> page, I also wanted to have an <a href="http://www.movingtofreedom.org/archives-all-posts/" >archives page to show all posts</a>, like this:</p>
<p class="center" ><a href="http://www.movingtofreedom.org/archives-all-posts/" ><img src="http://www.movingtofreedom.org/images/2010/07/wordpress_all_posts_archive.jpg"  width="500"  height="400"  alt="WordPress All Posts Archive" /></a></p>
<p>For this, I found some helpful template code from <a href="http://wpguy.com/articles/an-archives-page-with-all-the-posts-in-cronological-order/" >Wessley Roche</a>. I made it into a function, added the option to use a table instead of a list (now the default), added comment counts, and used &#8220;rowspan&#8221; to group multiple entries in the same day.</p>
<p>This one is called from your theme file with <code>&lt;?php all_posts_archive(); ?&gt;</code>.</p>
<p>You can optionally specify if a table should be used. Default is true. If false, it will use a list instead. (You&#8217;ll probably want to style the <code>&lt;ul&gt;</code> as <code>list-style-type: none;</code>.) You can also specify if comment counts should be displayed.</p>
<p>For example, to show in a table with no comments:</p>
<p><code>&lt;?php all_posts_archive(true, false); ?&gt;</code></p>
<h2>CSS</h2>
<p>There are several classes and IDs included for styling. <i>These have changed from version 1.0 of the plugin.</i> I initially plugged in miscellaneous classes I had laying around in my stylesheet, but decided to add more and name them specifically for the plugin in v1.1. I hope there&#8217;s enough flexibility for your needs. Take a look at the code or the generated HTML to see where classes are referenced. (Obviously, you can modify things to your liking, but my intention is to keep this part stable now so that updates should be easier.)</p>
<p>As an example, the screenshots above used styles like this:</p>
<pre><span style="color: blue;" >.fa-table</span> { border: 2px solid #cebb90; border-collapse: collapse;
            margin-left: auto; margin-right: auto;}
<span style="color: blue;" >.fa-table</span> td,th { border: 1px solid #cebb90;
                  padding: 5px; vertical-align: top; }
<span style="color: blue;" >.fa-table</span> th { border: 2px solid #cebb90; background: #f3e8cc; }
<span style="color: blue;" >#fa-month-grid</span> { width: 100%; }
<span style="color: blue;" >.fa-hdr1, .fa-hdr3</span> { text-align: left; padding: 6px; }
<span style="color: blue;" >.fa-hdr2</span> { font-size: .8em; }
<span style="color: blue;" >.fa-count</span> { font-size: .9em; }
<span style="color: blue;" >.fa-count, .fa-total, .fa-day, .fa-cmt</span> { text-align: right; }
<span style="color: blue;" >#fa-all-posts</span> { margin-top: 1.5em; margin-left: auto;
                                   margin-right: auto; }
<span style="color: blue;" >.fa-day</span> { font-weight: bold; }</pre>
<h2>Memory Error</h2>
<p>I haven&#8217;t had any problems on my web host, but the &#8220;all posts&#8221; archive caused this error with my local dev instance of WordPress:</p>
<p><code class="op" >Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 64 bytes) in /home/scarpent/yada/yada/www/wp-includes/meta.php on line 307</code></p>
<p>One solution I found suggested adding to the <code>wp-config.php</code> file:</p>
<p><code>define('WP_MEMORY_LIMIT', '64M');</code></p>
<p>Which fixed the problem for me.</p>
<h2>Download v1.1 (66K)</h2>
<p>Also available from the <a href="http://wordpress.org/extend/plugins/the-french-archives/" >official wordpress.org plugin page</a>.</p>
<div class="box" >
<p class="center no-deco" ><a href="http://www.movingtofreedom.org/src/wordpress/the_french_archives.tgz" >the_french_archives.tgz</a></p>
<p class="center no-deco" ><a href="http://www.movingtofreedom.org/src/wordpress/the_french_archives.zip" >the_french_archives.zip</a></p>
</div>
<p>&#8220;The French Archives&#8221; plugin has been tested with WordPress 3.0 and is licensed with the <a href="http://www.gnu.org/licenses/gpl-2.0.html" >GNU General Public License</a>, version 2 or later.</p>
<div class="box" >
<h3>Updates</h3>
<p><b>30 July 2010:</b> <a href="http://www.movingtofreedom.org/src/wordpress/the_french_archives-1.0.tgz" >v1.0</a>: Original version.</p>
<p><b>9 August 2010:</b> v1.1: More options for showing headers and comment counts. New class names.</p>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=HDlVmJAFPxE:9BrMsM-FdRs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=HDlVmJAFPxE:9BrMsM-FdRs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=HDlVmJAFPxE:9BrMsM-FdRs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=HDlVmJAFPxE:9BrMsM-FdRs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=HDlVmJAFPxE:9BrMsM-FdRs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=HDlVmJAFPxE:9BrMsM-FdRs:2mJPEYqXBVI"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=2mJPEYqXBVI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MovingToFreedom/~4/HDlVmJAFPxE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.movingtofreedom.org/2010/07/17/wordpress-plugin-month-grid-and-all-posts-archive/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.movingtofreedom.org/2010/07/17/wordpress-plugin-month-grid-and-all-posts-archive/</feedburner:origLink></item>
		<item>
		<title>Trey Ratcliff HDR: Driving to Akaroa (New Zealand)</title>
		<link>http://feedproxy.google.com/~r/MovingToFreedom/~3/ApDPcjoznsU/</link>
		<comments>http://www.movingtofreedom.org/2010/07/16/trey-ratcliff-hdr-driving-to-akaroa-new-zealand/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 00:42:56 +0000</pubDate>
		<dc:creator>Scott Carpenter</dc:creator>
				<category><![CDATA[photos]]></category>
		<category><![CDATA[hdr]]></category>
		<category><![CDATA[trey ratcliff]]></category>

		<guid isPermaLink="false">http://www.movingtofreedom.org/?p=1113</guid>
		<description><![CDATA[Apparently, Trey has the ability to travel into my dreams and take pictures: Driving to Akaroa, by Trey Ratcliff License: Creative Commons Attribution Noncommercial Share Alike]]></description>
			<content:encoded><![CDATA[<p>Apparently, Trey has the ability to travel into my dreams and take pictures:</p>
<p class="center" ><a href="http://www.flickr.com/photos/stuckincustoms/4745758387/" ><img class="imgBorder"  src="http://www.movingtofreedom.org/images/2010/07/driving-to-akaroa-new-zealand-500x328--by-trey-ratcliff--cc-by-nc-sa-20.jpg"  width="500"  height="328"  alt="Driving to Akaroa, New Zealand (HDR), by Trey Ratcliff" /></a></p>
<p class="center" ><i><a href="http://www.flickr.com/photos/stuckincustoms/4745758387/" >Driving to Akaroa</a></i>, by <a href="http://www.stuckincustoms.com/" >Trey Ratcliff</a></p>
<p class="center" >License: <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/deed.en" >Creative Commons Attribution Noncommercial Share Alike</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=ApDPcjoznsU:JbsON6MRRw4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=ApDPcjoznsU:JbsON6MRRw4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=ApDPcjoznsU:JbsON6MRRw4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=ApDPcjoznsU:JbsON6MRRw4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=ApDPcjoznsU:JbsON6MRRw4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=ApDPcjoznsU:JbsON6MRRw4:2mJPEYqXBVI"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=2mJPEYqXBVI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MovingToFreedom/~4/ApDPcjoznsU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.movingtofreedom.org/2010/07/16/trey-ratcliff-hdr-driving-to-akaroa-new-zealand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.movingtofreedom.org/2010/07/16/trey-ratcliff-hdr-driving-to-akaroa-new-zealand/</feedburner:origLink></item>
		<item>
		<title>WordPress Plugin, YARQ v3.0: Yet Another Random Quote</title>
		<link>http://feedproxy.google.com/~r/MovingToFreedom/~3/eU9A9l2p0NA/</link>
		<comments>http://www.movingtofreedom.org/2010/07/11/wordpress-plugin-yarq-v3-yet-another-random-quote/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 16:28:10 +0000</pubDate>
		<dc:creator>Scott Carpenter</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp plugins]]></category>

		<guid isPermaLink="false">http://www.movingtofreedom.org/?p=1096</guid>
		<description><![CDATA[This is a plugin/widget to show random quotes on your blog. Frank van den Brink originally created it and Christian Beer has also contributed. The wordpress.org homepage is here: Yet Another Random Quote. I like this plugin, even if very few people around here can be bothered to actually click on a link to see [...]]]></description>
			<content:encoded><![CDATA[<p>This is a plugin/widget to show random quotes on your blog. <a href="http://openmonday.org/" >Frank van den Brink</a> originally created it and <a href="http://blog.os-tools.net/en/" >Christian Beer</a> has also contributed.  The wordpress.org homepage is here: <a href="http://wordpress.org/extend/plugins/yet-another-random-quote/" >Yet Another Random Quote</a>.</p>
<p>I like this plugin, even if very few people around here can be bothered to actually <i>click</i> on a link to <i>see</i> <a href="http://www.movingtofreedom.org/random-quote/" >my random quotes</a>. Really, it&#8217;s okay. It&#8217;s just <i>fine</i> if you don&#8217;t give a rat&#8217;s ass about my collected pearls of wit, wisdom, and pop culture ephemera. (You probably won&#8217;t care to read my <a href="http://www.movingtofreedom.org/2007/09/16/random-quotes-and-excerpts-and-snippets-yarq/" >old YARQ post</a> either.)</p>
<p>It appears that the plugin hasn&#8217;t been actively maintained, but through the miracle of free software I&#8217;ve been able to make my own fixes and enhancements, and now I can share them with you and the world. (I did get in contact with Christian, so we&#8217;ll see what we can do about updating the official plugin page.)</p>
<p>YARQ v3.0 works with WordPress 3.0 (for me, anyway), and I suspect will work with WP 2.5 and up. Please let me know how it goes for you. I can&#8217;t promise anything for time commitment, but I&#8217;d like to keep this thing alive so I welcome feedback and will try to fix reported problems.</p>
<h2>Download</h2>
<div class="box" >
<p class="center no-deco" ><a href="http://www.movingtofreedom.org/src/wordpress/yarq.tgz" >yarq.tgz</a> (13K)</p>
<p class="center no-deco" ><a href="http://www.movingtofreedom.org/src/wordpress/yarq.zip" >yarq.zip</a> (14K)</p>
</div>
<p>YARQ is licensed with the <a href="http://www.gnu.org/licenses/gpl-2.0.html" >GNU General Public License</a>, version 2 or later.</p>
<div class="box" >
<p><b>Updated, 16 July 2010:</b> In v3.0.1, detached customized functions to be used in <code>functions.php</code> if desired, or they can be ignored. This way the core plugin will be compatible for future updates. More below&#8230;</p>
<p><b>Updated, 17 July 2010:</b> In v3.0.2, license reverts to GP version 2 or later. I think with WordPress being v2 only, the plugin would have to be v2 also. But if WordPress ever goes to v3 or higher, or if you use this code for something else, then I&#8217;d say v2+ should apply.</p>
<p><b>Updated, 19 July 2010:</b> Still v3.0.2, but uses new %opt_separator% option instead of %opt_comma%. Christian updated the <a href="http://wordpress.org/extend/plugins/yet-another-random-quote/" >official wordpress.org plugin page</a> and made this change. There are a few other small changes also.</p>
</div>
<h2>Usage</h2>
<ul>
<li>Upload <code>yarq.php</code> to the <code>/wp-content/plugins/</code> directory and activate through the Plugins menu in WordPress.</li>
<li>Add your own quotes via the admin page, Tools &rarr; Quotes.</li>
<li>Display the quotes by placing <code>&lt;php yarq_display(); ?&gt;</code> in your template, or using the widget (which I don&#8217;t use so haven&#8217;t confirmed if it works okay).</li>
<li>
<p>You can control the formatting of the quote in Settings &rarr; YARQ. For example, I use:</p>
<p class="code" ><code>%quote%<br/>
&#0060;p&#0062;<i>%author%%opt_separator%%source%</i>&#0060;/p&#0062;</code></p>
<p>Where the %placeholders% will be replaced with the corresponding part of the quote. (These should be self-explanatory, except for <code>%opt_separator%</code> which is a new feature in this version and explained below.)</p>
</li>
</ul>
<h2>Fixes for Previous Official Version</h2>
<ul>
<li>The &#8220;Add Quote&#8221; form stopped working at some WordPress upgrade along the way. (I upgraded from 2.0 to 2.9 so it&#8217;s hard to say exactly when this broke.)</li>
<li>The admin page wasn&#8217;t showing the sources for the quotes.</li>
</ul>
<h2>Changes in v3.0</h2>
<ul>
<li>You can edit quotes!</li>
<li>&#8220;Add Quote&#8221; form moved to top, and &#8220;QID&#8221; (Quote ID) field added for editing existing quotes.</li>
<li>Author is now optional. If neither author nor source is given, then the <code>%author</code> placeholder will be replaced with &#8220;unknown&#8221;.</li>
<li>If a quote has both an author and a source, <code>%opt_separator%</code> will be replaced with the separator value set in YARQ options. (For example: a comma and a space.) Otherwise it will be replaced by an empty string.</li>
<li>
<p>Going against the random nature of this plugin, you can show a specific quote via a GET parameter in the URL, e.g.:</p>
<p><a href="http://www.movingtofreedom.org/random-quote/?qid=76" >http://www.movingtofreedom.org/random-quote/?qid=76</a></p>
<p>You and your readers can find the ID for a displayed quote by looking at the page source, which will show something like this near the quote: <code>&#0060;!&#0045;&#0045;&nbsp;id&nbsp;=&nbsp;76&nbsp;&#0045;&#0045;&#0062;</code></p>
<p>(<code>intval</code> is used to make sure only a numeric quote ID can be passed in, preventing a <a href="http://xkcd.com/327/" >SQL injection attack</a>.)</p>
</li>
<li>
<p>Auto-formatting is performed on the quote when adding it to, so that:</p>
<div class="code" >
<p>One day I feel I&#8217;m ahead of the wheel<br/>And the next it&#8217;s rolling over me</p>
<p>I can get back on<br/>I can get back on</p>
</div>
<p>Goes into the database as:</p>
<div class="code" >
<p>&#0060;p&#0062;One day I feel I’m ahead of the wheel&#0060;br /&#0062;<br/>And the next it’s rolling over me&#0060;/p&#0062;</p>
<p>&#0060;p&#0062;I can get back on&#0060;br /&#0062;<br/>I can get back on&#0060;/p&#0062;</p>
</div>
<p>If you edit the quote, it&#8217;s mostly smart enough to preserve <code>br</code> and <code>p</code> tags as they are and add new ones where necessary. With the nifty new edit feature, you can easily experiment to see <i>how</i> smart or dumb it is.</p>
<p>You probably won&#8217;t get very good results with tags like <code>ul</code> or <code>ol</code>. Maybe we&#8217;ll need to add a checkbox to disable auto-formatting on the fly, but this handles most of <i>my</i> quoting needs. You can disable it altogether by commenting out this line in <code>yarq.php</code>:</p>
<p class="code" ><code>$quo = format_quote($quo);</code></p>
</li>
<li>Escape slashes are now hidden everywhere. <code>\"Fred\'s\"</code> may be stored in DB, but will be displayed as <code>"Fred's"</code>.</li>
</ul>
<h2>&#8220;Off-Road&#8221; Features</h2>
<p>I think these might be useful for others, but they&#8217;re experimental and individualized to my needs, so I used <code>functions.php</code> to separate out the custom parts. The plugin will check to see if the functions exist before trying to call them. If you don&#8217;t feel comfortable mucking around with the code, or you just simply don&#8217;t want to use them, no problem.  Just ignore this and the plugin will work normally.</p>
<p><span id="more-1096" ></span></p>
<h3>The Features</h3>
<ul>
<li>
<p>More fun with GET parameters in the URL! You can pick a random quote from a specific author (&#8220;who&#8221;) or source (&#8220;src&#8221;), e.g.:</p>
<p><a href="http://www.movingtofreedom.org/random-quote/?who=martin-sexton" >&#8230;/random-quote/?who=martin-sexton</a><br/><a href="http://www.movingtofreedom.org/random-quote/?src=calvin-and-hobbes" >&#8230;/random-quote/?src=calvin-and-hobbes</a></p>
<p>However! I wanted to limit this to authors and sources where I have more than one or two quotes. Also! When a quote is displayed from one of these &#8220;included&#8221; authors or sources, there will be a link from the name to look up another one.</p>
<p>Remember, this is kind of half-baked. More work is needed to handle authors/sources that contain HTML, quote marks, ampersands, and etcetera. But! I think it&#8217;s safe and robust within its limitations, and it works for my purposes, which counts for a lot. :-)</p>
</li>
<li>
<p>I have an imbalance of <a href="http://en.wikipedia.org/wiki/Rush_(band)" >Rush</a> lyric excerpts, so I reduced the odds of getting a <a href="http://www.movingtofreedom.org/random-quote/?who=rush" >Rush quote</a>. You may similarly want to  cheat the gods of probability, or modify the SQL &#8220;where&#8221; clause in some other way.</p>
</li>
</ul>
<h3>The Code</h3>
<p>In <code>yarq.php</code>, the <code>yarq_display</code> function makes these calls</p>
<pre class="code" ><span class="cmt" >/* &#0046;&#0046;&#0046; */</span>
if (function_exists(&#0039;yarq_get_where_clause&#0039;)) { $where = yarq_get_where_clause(); }
<span class="cmt" >/* &#0046;&#0046;&#0046; */</span>
if (function_exists(&#0039;yarq_get_author&#0039;)) { yarq_get_author($quote&#0045;&#0062;author, $output); }
if (function_exists(&#0039;yarq_get_source&#0039;)) { yarq_get_source($quote&#0045;&#0062;source, $output); }
<span class="cmt" >/* &#0046;&#0046;&#0046; */</span></pre>
<p>And in your theme&#8217;s <code>functions.php</code> file, you can create the functions like so:</p>
<h4>yarq_get_where_clause()</h4>
<p>Checks the URL GET parameters for author and source. Calls <code>yarq_get_author</code> and <code>yarq_get_source</code> to see if they are &#8220;included&#8221; (and buffer against using the raw GET data in the SQL query).</p>
<p>Also there is the probability manipulation with setting the odds of getting <a href="http://www.movingtofreedom.org/random-quote/?who=rush" >Neil Peart&#8217;s poetry</a> at 1 in 8.</p>
<pre class="code" >function yarq_get_where_clause()
{
	if (isset($_GET[&#0039;who&#0039;]) &#0038;&#0038; function_exists(&#0039;yarq_get_author&#0039;)) {
		$author = yarq_get_author($_GET[&#0039;who&#0039;], $output);
	}
	if (isset($_GET[&#0039;src&#0039;]) &#0038;&#0038; function_exists(&#0039;yarq_get_source&#0039;)) {
		$source = yarq_get_source($_GET[&#0039;src&#0039;], $output);
	}
	if (empty($author) &#0038;&#0038; empty($source)) {
		<span class="cmt" >// reduce the odds of getting Rush</span>
		$rnd = rand(1,8);
		if ($rnd == 1) {
			$author = &#0039;Rush&#0039;;
		} else {
			$author_not = &#0039;Rush&#0039;;
		}
	}
	if (!empty($author)) {
		$where = &#0034; WHERE author = &#0039;$author&#0039;&#0034;;
	} elseif (!empty($author_not)) {
		$where = &#0034; WHERE author != &#0039;$author_not&#0039;&#0034;;
	} elseif (!empty($source)) {
		$where = &#0034; WHERE source = &#0039;$source&#0039; &#0034;;
	}
	return $where;
}</pre>
<h4>yarq_get_author()</h4>
<pre class="code" ><span class="cmt" >// used in two ways: 1) see if an author is marked for the link treatment and
//                      return name for use in SQL, and
//                   2) replace author in output string with the link
//
// assumes no single or double quotes or html already in author name; just plain text
// will have to enhance for other scenarios if/when necessary</span>
function yarq_get_author($a, &#0038;$output)
{
	$author_param = str_replace(&#0039; &#0039;, &#0039;&#0045;&#0039;, strtolower($a));
	switch($author_param) {
		case &#0039;author&#0045;one&#0039;:		$author = &#0039;Author One&#0039;;		break;
		case &#0039;author&#0045;two&#0039;:		$author = &#0039;Author Two&#0039;;		break;
		<span class="cmt" >// etcetera</span>
	}
	if (!empty($author)) {
		$output = str_replace($author, &#0039;&lt;a href=&#0034;?who=&#0039; &#0046; $author_param &#0046; &#0039;&#0034;&#0062;&#0039; &#0046; $author &#0046; &#0039;&lt;/a&#0062;&#0039;, $output);
	}
	return $author;
}
</pre>
<h4>yarq_get_source()</h4>
<p>(Same comments apply as for yarq_get_author.)</p>
<pre class="code" >function yarq_get_source($s, &#0038;$output)
{
	$source_param = str_replace(&#0039; &#0039;, &#0039;&#0045;&#0039;, strtolower($s));
	switch($source_param) {
		case &#0039;source&#0045;one&#0039;:		$author = &#0039;Source One&#0039;;		break;
		case &#0039;source&#0045;two&#0039;:		$author = &#0039;Source Two&#0039;;		break;
	}
	if (!empty($source)) {
		$output = str_replace($source, &#0039;&lt;a href=&#0034;?src=&#0039; &#0046; $source_param &#0046; &#0039;&#0034;&#0062;&#0039; &#0046; $source &#0046; &#0039;&lt;/a&#0062;&#0039;, $output);
	}

	return $source;
}
</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=eU9A9l2p0NA:tYlYfIw4zF8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=eU9A9l2p0NA:tYlYfIw4zF8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=eU9A9l2p0NA:tYlYfIw4zF8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=eU9A9l2p0NA:tYlYfIw4zF8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=eU9A9l2p0NA:tYlYfIw4zF8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=eU9A9l2p0NA:tYlYfIw4zF8:2mJPEYqXBVI"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=2mJPEYqXBVI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MovingToFreedom/~4/eU9A9l2p0NA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.movingtofreedom.org/2010/07/11/wordpress-plugin-yarq-v3-yet-another-random-quote/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://www.movingtofreedom.org/2010/07/11/wordpress-plugin-yarq-v3-yet-another-random-quote/</feedburner:origLink></item>
		<item>
		<title>Ralph Waldo Emerson: Spiritual Laws</title>
		<link>http://feedproxy.google.com/~r/MovingToFreedom/~3/xkkeYvJ_YoY/</link>
		<comments>http://www.movingtofreedom.org/2010/07/08/ralph-waldo-emerson-spiritual-laws/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 02:26:31 +0000</pubDate>
		<dc:creator>Scott Carpenter</dc:creator>
				<category><![CDATA[miscellany]]></category>
		<category><![CDATA[quotes]]></category>
		<category><![CDATA[ralph waldo emerson]]></category>

		<guid isPermaLink="false">http://www.movingtofreedom.org/?p=1091</guid>
		<description><![CDATA[I&#8217;ve been helped the past couple of days by this passage from Emerson: A little consideration of what takes place around us every day would show us that a higher law than that of our will regulates events; that our painful labors are unnecessary and fruitless; that only in our easy, simple, spontaneous action are [...]]]></description>
			<content:encoded><![CDATA[<p class="non-print" ><img hspace="1em"  vspace="1em"  align="right"  class="imgFloatRightBorder"  src="http://www.movingtofreedom.org/images/2006/12/050819-02-tettegouche-state-park-minnesota--by-scott-carpenter--cc-by-sa-25.jpg"  width="200"  height="790"  alt="river"   style="float: right; margin: 0 0 1em 1em;"/></p>
<p>I&#8217;ve been helped the past couple of days by this passage from Emerson:</p>
<blockquote cite="http://www.gutenberg.org/files/2944/2944.txt" >
<p>A little consideration of what takes place around us every day would show us that a higher law than that of our will regulates events; that our painful labors are unnecessary and fruitless; that only in our easy, simple, spontaneous action are we strong, and by contenting ourselves with obedience we become divine.</p>
<p>Belief and love &#8212; a believing love will relieve us of a vast load of care. O my brothers, God exists. There is a soul at the center of nature and over the will of every man, so that none of us can wrong the universe.</p>
<p>The whole course of things goes to teach us faith. We need only obey. There is guidance for each of us, and by lowly listening we shall hear the right word.</p>
<p>Why need you choose so painfully your place and occupation and associates and modes of action and of entertainment? Certainly there is a possible right for you that precludes the need of balance and willful election. For you there is a reality, a fit place and congenial duties. Place yourself in the middle of the stream of power and wisdom which animates all whom it floats, and you are without effort impelled to truth, to right and a perfect contentment.</p>
<p>I say, do not choose; but that is a figure of speech by which I would distinguish what is commonly called choice among men, and which is a partial act, the choice of the hands, of the eyes, of the appetites, and not a whole act of the man. But that which I call right or goodness, is the choice of my constitution; and that which I call heaven, and inwardly aspire after, is the state or circumstance desirable to my constitution; and the action which I in all my years tend to do, is the work for my faculties.</p>
<p>Each man has his own vocation. The talent is the call. There is one direction in which all space is open to him. He has faculties silently inviting him thither to endless exertion. He is like a ship in a river; he runs against obstructions on every side but one, on that side all obstruction is taken away and he sweeps serenely over a deepening channel into an infinite sea. This talent and this call depend on his organization, or the mode in which the general soul incarnates itself in him. He inclines to do something which is easy to him and good when it is done, but which no other man can do. He has no rival. For the more truly he consults his own powers, the more difference will his work exhibit from the work of any other.</p>
<p>His ambition is exactly proportioned to his powers. The height of the pinnacle is determined by the breadth of the base. Every man has this call of the power to do something unique, and no man has any other call. The pretense that he has another call, a summons by name and personal election and outward &#8220;signs that mark him extraordinary, and not in the roll of common men,&#8221; is fanaticism, and betrays obtuseness to perceive that there is one mind in all the individuals, and no respect of persons therein.</p>
<p>By doing his work he makes the need felt which he can supply, and creates the taste by which he is enjoyed. By doing his own work he unfolds himself.</p>
<p>It is the vice of our public speaking that it has not abandonment. Somewhere, not only every orator but every man should let out all the length of all the reins; should find or make a frank and hearty expression of what force and meaning is in him. The common experience is that the man fits himself as well as he can to the customary details of that work or trade he falls into, and tends it as a dog turns a spit. Then is he a part of the machine he moves; the man is lost.</p>
<p>Until he can manage to communicate himself to others in his full stature and proportion, he does not yet find his vocation. He must find in that an outlet for his character, so that he may justify his work to their eyes. If the labor is mean, let him by his thinking and character make it liberal. Whatever he knows and thinks, whatever in his apprehension is worth doing, that let him communicate, or men will never know and honor him aright. Foolish, whenever you take the meanness and formality of that thing you do, instead of converting it into the obedient spiracle of your character and aims.</p>
<p>&#8211; Ralph Waldo Emerson, &#8220;Spiritual Laws&#8221;</p>
<p>&nbsp;&nbsp;&nbsp;<span class="less-small-text" ><i>Edited. The full text can be found at Project Gutenberg:</i></span><br/>
&nbsp;&nbsp;&nbsp;<a href="http://www.gutenberg.org/files/2944/2944.txt" >http://www.gutenberg.org/files/2944/2944.txt</a></p>
</blockquote>
<p>I wonder if I&#8217;ve been laboring under the wrong call. A pretense&#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=xkkeYvJ_YoY:lJLlBAiBDHs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=xkkeYvJ_YoY:lJLlBAiBDHs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=xkkeYvJ_YoY:lJLlBAiBDHs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=xkkeYvJ_YoY:lJLlBAiBDHs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=xkkeYvJ_YoY:lJLlBAiBDHs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=xkkeYvJ_YoY:lJLlBAiBDHs:2mJPEYqXBVI"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=2mJPEYqXBVI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MovingToFreedom/~4/xkkeYvJ_YoY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.movingtofreedom.org/2010/07/08/ralph-waldo-emerson-spiritual-laws/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.movingtofreedom.org/2010/07/08/ralph-waldo-emerson-spiritual-laws/</feedburner:origLink></item>
		<item>
		<title>Again, Waipi’o</title>
		<link>http://feedproxy.google.com/~r/MovingToFreedom/~3/rB5ilT5ABNk/</link>
		<comments>http://www.movingtofreedom.org/2010/06/29/again-waipio-valley-hawaii/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 21:58:38 +0000</pubDate>
		<dc:creator>Scott Carpenter</dc:creator>
				<category><![CDATA[photos]]></category>
		<category><![CDATA[hawaii]]></category>

		<guid isPermaLink="false">http://www.movingtofreedom.org/?p=1081</guid>
		<description><![CDATA[Waipio Valley, Hawaii Looking across the valley. In the larger image, you can see the switchback hiking trail zig-zagging up the other side. Our visit recedes as a dream of paradise&#8230; Bigger: 2816 x 2112 Shot with: 6 mega-pixel Canon SD600 Shared with: Creative Commons Attribution-ShareAlike License]]></description>
			<content:encoded><![CDATA[<p class="center" ><a href="http://www.movingtofreedom.org/images/2010/06/090208_145100--waipio-valley-hawaii-2816x2112--by-scott-carpenter--cc-by-sa-30.jpg" ><img class="imgBorder"  src="http://www.movingtofreedom.org/images/2010/06/090208_145100--waipio-valley-hawaii-500x375--by-scott-carpenter--cc-by-sa-30.jpg"  width="500"  height="375"  alt="Road Down to Waipio Valley in Hawaii" /></a></p>
<p class="center" ><a href="http://en.wikipedia.org/wiki/Waipio_Valley" >Waipio Valley</a>, <a href="http://en.wikipedia.org/wiki/Hawaii" >Hawaii</a></p>
<p>Looking across the valley. In the larger image, you can see the switchback hiking trail zig-zagging up the other side.</p>
<p class="rgt" >Our visit recedes as a dream of paradise&#8230;</p>
<p>Bigger: <a href="http://www.movingtofreedom.org/images/2010/06/090208_145100--waipio-valley-hawaii-2816x2112--by-scott-carpenter--cc-by-sa-30.jpg" >2816 x 2112</a><br/>
Shot with: 6 mega-pixel Canon SD600<br/>
Shared with: <a href="http://creativecommons.org/licenses/by-sa/3.0/" >Creative Commons Attribution-ShareAlike License</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=rB5ilT5ABNk:vz44MHoaf4c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=rB5ilT5ABNk:vz44MHoaf4c:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=rB5ilT5ABNk:vz44MHoaf4c:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=rB5ilT5ABNk:vz44MHoaf4c:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=rB5ilT5ABNk:vz44MHoaf4c:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=rB5ilT5ABNk:vz44MHoaf4c:2mJPEYqXBVI"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=2mJPEYqXBVI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MovingToFreedom/~4/rB5ilT5ABNk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.movingtofreedom.org/2010/06/29/again-waipio-valley-hawaii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.movingtofreedom.org/2010/06/29/again-waipio-valley-hawaii/</feedburner:origLink></item>
		<item>
		<title>Mind Grapes Recruiting 1: Meeting Kurt Bill</title>
		<link>http://feedproxy.google.com/~r/MovingToFreedom/~3/CVP_0eMfNZY/</link>
		<comments>http://www.movingtofreedom.org/2010/06/26/mind-grapes-recruiting-001/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 01:35:47 +0000</pubDate>
		<dc:creator>Scott Carpenter</dc:creator>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[mind grapes recruiting]]></category>

		<guid isPermaLink="false">http://www.movingtofreedom.org/?p=1075</guid>
		<description><![CDATA[Well. I finally got together with Kurt Bill, from Mind Grapes Recruiting. He&#8217;s not based in the Twin Cities, so I figured we&#8217;d work through email and phone conversations to get things started, but he insisted that we had to meet in person to kick things off. Then he seemed to have problems getting travel [...]]]></description>
			<content:encoded><![CDATA[<p>Well. I finally got together with Kurt Bill, from <a href="http://mindgrapes.net" >Mind Grapes Recruiting</a>. He&#8217;s not based in the Twin Cities, so I figured we&#8217;d work through email and phone conversations to get things started, but he insisted that we <i>had</i> to meet in person to kick things off. Then he seemed to have problems getting travel plans and expenses approved by his uncle, Winston J. Thorpleton III.</p>
<p>In the meantime, I kept asking for resumes and information on prospective guest bloggers, but he wouldn&#8217;t hear of it. He said they were working hard on setting up their franchise process and I&#8217;d &#8220;just have to be patient.&#8221; And while I was impatient on behalf of my legions of faithful readers, the delay has been okay because I&#8217;m busy with a new job and summertime stuff.</p>
<p>And then Kurt called me right in the middle of my vacation this week and said he was in town and we had to meet ASAP. Like, <i>right now!</i> So I interrupted my long-planned project of building new display cases for my extensive collection of Hummel figurines to drive down to the Eagan Budget Host Inn. He apologized that his rental car had broken down so that we couldn&#8217;t meet closer to my house, yet he wouldn&#8217;t budge from a meeting time that had me out on the road at the height of rush hour. He said he had meeting room facilities booked for a special kick off presentation.</p>
<p>I parked next to an old Ford Fiesta in the hotel lot. Maybe a 1980&#8242;s model? Rust-enhanced red. A guy in a nice suit (as far as I could tell; I&#8217;m not a big fan of sartorial plumage) was leaning into the open hatchback, rummaging through a number of boxes and bags and loose debris. He came up with a laptop case, slammed the door shut, and with a look my way, managed to convey his disdain for my &#8217;98 Saturn (also red; no rust).</p>
<p>I followed him inside. He sat down in the waiting area. I approached the front desk. When I started asking about the meeting room, Fiesta Suit Guy jumped up and was at the desk in a flash, cutting off the clerk&#8217;s response.</p>
<p>&#8220;Hello!&#8221; he said, thrusting his hand out. &#8220;You must be Mr. Carpenter! I&#8217;m Kurt Bill!&#8221; I shook his hand and he led me over to the chairs while the woman behind the desk frowned at him. &#8220;It&#8217;s so nice to meet you in person. Thank you for coming down on such short notice. Travel arrangements! You know how it is.&#8221; He nodded inclusively as if we belonged to the same elite club, sitting there in the Budget Host lobby. He gave no indication that he recognized me from the parking lot.</p>
<p>He glanced at the clerk and lowered his voice. &#8220;I&#8217;m sorry, but there&#8217;s been a mixup with the meeting room. Double-booked.&#8221;</p>
<p>The woman said, &#8220;Sir, I <i>told you</i>, there are no conference amenities here.&#8221;</p>
<p>He opened his mouth as if to reply to her, but then smiled dismissively and forged ahead. &#8220;Anyway, I hope you don&#8217;t mind meeting here. I can still show you the presentation on my laptop.&#8221; He grabbed at one handle of the laptop bag and it fell open, spilling the computer, several cords, and some file folders and loose papers onto the floor. He set the laptop aside and hurriedly shoved everything else back into the bag.</p>
<p>He booted up the machine and made small talk as he searched for his presentation.  &#8220;Hmm. Where did it go?&#8221; He tried calling his office to see if someone might have a copy of it, but no one answered his phone calls, texts, instant messages, and emails.</p>
<p>I said, &#8220;Let&#8217;s just talk. I don&#8217;t need to see the presentation right now.&#8221;</p>
<p>&#8220;Oh, no! I&#8217;ve come all this way and you&#8217;ve been waiting so patiently for this. Uncle Winston will be very unhappy if everything isn&#8217;t handled professionally and according to plan.&#8221;</p>
<p>&#8220;Really, it&#8217;s okay,&#8221; I said. &#8220;Do you have any leads for me? I want to get someone writing for the web site sooner than later. Things are getting pretty stale lately.&#8221; (See, readers, I&#8217;m on <i>your</i> side.)</p>
<p>He was shaking his head: no, no, no. &#8220;Scott. <i>Man&#8230;</i> Tell you what. Give me a day or two. I&#8217;ll try to get the presentation from our admin assistant and get things more organized for another meeting this week before I leave town. I should have my new rental car by then and can meet you on your side of town. <i>Please</i> give me another chance.&#8221;</p>
<p>(I didn&#8217;t have the heart to mention the Fiesta and ask which rental company handed out 25-year-old cars.)</p>
<p>He rebuffed all my attempts to put him at ease and have a casual conversation about the recruiting process. I explained that it wasn&#8217;t a big deal. I just wanted to find a good guest blogger. <abbr title="Mind Grapes Recruiting" >MGR</abbr> didn&#8217;t have to make a big production out of this.  They&#8217;re in the startup/pilot phase.  I understood that everything wasn&#8217;t tuned and production ready yet.  None of this helped his state of mind.  He seemed almost on the verge of tears. I wasn&#8217;t thrilled about interrupting another vacation day, but I agreed we could meet again later in the week.</p>
<p>&#8220;Thank you, thank you, <i>thank you,</i> Scott. And <i>please</i> don&#8217;t say anything to Winston or the other partners before we get a chance to work through some more of the preliminaries.&#8221;</p>
<p>I said sure, whatever. I resented the wasted time, but felt sorry for him and tried not to show it.</p>
<p>And then he never called me back. He sent a brief email on Friday saying he was sorry, but he had to head &#8220;back to the ranch.&#8221; He again implored me to keep things between us, for now.  Which is fine with me, for now, although I guess it depends on whether or not Winston J. Thorpleton III and the others are reading my blog.</p>
<p>In conclusion: it looks like it may be a while before we&#8217;ll get our new guest blogger. I guess we&#8217;ll &#8220;just have to be patient.&#8221; I&#8217;m willing to play along for now. As far as I know, this isn&#8217;t costing me anything, which is a key selling point. Let&#8217;s see what happens.</p>
<p>Thanks for your understanding. I&#8217;ll try to expedite things and post updates more often.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=CVP_0eMfNZY:iwxX4AEm4BU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=CVP_0eMfNZY:iwxX4AEm4BU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=CVP_0eMfNZY:iwxX4AEm4BU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=CVP_0eMfNZY:iwxX4AEm4BU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?i=CVP_0eMfNZY:iwxX4AEm4BU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MovingToFreedom?a=CVP_0eMfNZY:iwxX4AEm4BU:2mJPEYqXBVI"><img src="http://feeds.feedburner.com/~ff/MovingToFreedom?d=2mJPEYqXBVI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MovingToFreedom/~4/CVP_0eMfNZY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.movingtofreedom.org/2010/06/26/mind-grapes-recruiting-001/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.movingtofreedom.org/2010/06/26/mind-grapes-recruiting-001/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 1.503 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-09-06 20:42:16 --><!-- Compression = gzip -->
