<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>saltybeagle.com &#187; Fun</title>
	<atom:link href="http://saltybeagle.com/category/fun/feed/" rel="self" type="application/rss+xml" />
	<link>http://saltybeagle.com</link>
	<description>All of Brett&#039;s junk.</description>
	<lastBuildDate>Thu, 22 Jul 2010 14:00:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Autoloader That Installs PEAR Packages</title>
		<link>http://saltybeagle.com/2009/11/autoloader-that-installs-pear-packages/</link>
		<comments>http://saltybeagle.com/2009/11/autoloader-that-installs-pear-packages/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 12:23:08 +0000</pubDate>
		<dc:creator>bbieber</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[PEAR]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[pear2]]></category>
		<category><![CDATA[pyrus]]></category>

		<guid isPermaLink="false">http://saltybeagle.com/?p=191</guid>
		<description><![CDATA[I had a thought the other night about an autoloader that could install pear packages automatically for you.
Security concerns aside, I thought this would be a fun/juvenile coding experiment, and something that could showcase how easy the pyrus api is for installing PEAR packages. So here it is, pushed out on github &#8211; http://github.com/saltybeagle/AutoloadPackage/blob/master/AutoloadPackage.php
Only 56 [...]]]></description>
			<content:encoded><![CDATA[<p>I had a thought the other night about an autoloader that could <strong>install pear packages automatically</strong> for you.</p>
<p>Security concerns aside, I thought this would be a fun/juvenile coding experiment, and something that could showcase <strong>how easy the pyrus api is</strong> for installing PEAR packages. So here it is, pushed out on github &#8211; <a href="http://github.com/saltybeagle/AutoloadPackage/blob/master/AutoloadPackage.php">http://github.com/saltybeagle/AutoloadPackage/blob/master/AutoloadPackage.php</a></p>
<p>Only <strong>56 lines</strong> of code to have an autoloader that will install a PEAR2 package. Now if that&#8217;s not fun, I don&#8217;t know what is.</p>
<p> <img src='http://saltybeagle.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Oh, and you should really check out <strong>Pyrus, the new PEAR installer</strong>. Get it over at the <a href="http://pear2.php.net/">pear2 website</a> (under construction).</p>
]]></content:encoded>
			<wfw:commentRss>http://saltybeagle.com/2009/11/autoloader-that-installs-pear-packages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-Origin Resource Sharing Demo</title>
		<link>http://saltybeagle.com/2009/09/cross-origin-resource-sharing-demo/</link>
		<comments>http://saltybeagle.com/2009/09/cross-origin-resource-sharing-demo/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 12:36:18 +0000</pubDate>
		<dc:creator>bbieber</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[The Problem
Many times I&#8217;ve been frustrated with the same-origin policy for AJAX requests. I have legitimate content on another domain that I would like to retrieve and display on another page using AJAX.
As an example, department.unl.edu would like to display a list of upcoming events from events.unl.edu/department/.
Historically you would have to serve the content out [...]]]></description>
			<content:encoded><![CDATA[<h3>The Problem</h3>
<p>Many times I&#8217;ve been frustrated with the same-origin policy for AJAX requests. I have legitimate content on another domain that I would like to retrieve and display on another page using AJAX.</p>
<p>As an example, department.unl.edu would like to display a list of upcoming events from events.unl.edu/department/.</p>
<p>Historically you would have to serve the content out as JSON, or use a proxy to convert the content to json, and reference the resource using a script tag which gets around the same-origin policy &#8211; and for years, this has worked well.</p>
<p>Unfortunately this requires you to either send content out in multiple formats (html + json for these requests), or use html and send all requests for cross-site resources through a proxy script, which adds a translation delay.</p>
<p>Serving the content out in two formats requires more work to maintain, and if the content output is cached, requires more resources to generate. If you use a proxy to translate the content, you have an open proxy unless you lock down what resources the proxy script can retrieve and translate.</p>
<h3>CORS is the Answer</h3>
<p>The answer is in the <a href="http://www.w3.org/TR/access-control/">Cross-Origin Resource Sharing specification,</a> which is supported in Firefox 3.5+, Safari 4+ and albeit using agent specific methods, supported in Internet Explorer 8+.</p>
<p>The specification allows resources on other domains to be retrieved through AJAX methods, if the resource announces support as a Cross-Origin Resource. This is done through special headers which identify to the user-agent which alternate origin domains can request the resource and what methods are supported.</p>
<h3>Demo</h3>
<p>For the demo, the html and js is served off of this domain, and the CORS resource is located on ucommbieber.unl.edu.</p>
<p><a href="http://saltybeagle.com/cors/">Click here to go to the demo.</a></p>
<p>This page demonstrates both GET and POST methods, with custom callbacks, using an api just like the jQuery <a href="http://docs.jquery.com/Ajax/jQuery.get">get</a> and <a href="http://docs.jquery.com/Ajax/jQuery.post">post</a> methods.</p>
<p>The HTML:</p>
<pre><code>&lt;html&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js&quot;&gt;&lt;/script&gt;

&lt;script type=&quot;text/javascript&quot; src=&quot;cors.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;

function testGet()
{
    getCORS('http://ucommbieber.unl.edu/CORS/cors.php', null, function(data){alert(data);});
}
function testPost(form)
{
    postCORS('http://ucommbieber.unl.edu/CORS/cors.php', {name: form.name.value}, function(data){alert(data);});
}
&lt;/script&gt;
&lt;body&gt;
&lt;h1&gt;CORS Examples&lt;/h1&gt;

&lt;p&gt;Test GET
    This page retrieves content from another server, using CORS&lt;br /&gt;
    &lt;a href=&quot;#&quot; onclick=&quot;testGet(); return false;&quot;&gt;Get content from another server&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Test POST:
    &lt;form action=&quot;#&quot; onsubmit=&quot;testPost(this); return false&quot;&gt;

        Name: &lt;input type=&quot;text&quot; name=&quot;name&quot; /&gt;
        &lt;input type=&quot;submit&quot; /&gt;
    &lt;/form&gt;

&lt;/p&gt;
&lt;a href=&quot;http://saltybeagle.com/2009/09/cross-origin-resource-sharing-demo/&quot;&gt;More info&lt;/a&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>The javascript:</p>
<pre><code>/**
 * This is for Cross-site Origin Resource Sharing (CORS) requests.
 *
 * Additionally the script will fail-over to a proxy if you have one set up.
 *
 * @param string   url      the url to retrieve
 * @param mixed    data     data to send along with the get request [optional]
 * @param function callback function to call on successful result [optional]
 * @param string   type     the type of data to be returned [optional]
 */
function getCORS(url, data, callback, type) {
    try {
        // Try using jQuery to get data
        jQuery.get(url, data, callback, type);
    } catch(e) {
        // jQuery get() failed, try IE8 CORS, or use the proxy
        if (jQuery.browser.msie &amp;&amp; window.XDomainRequest) {
            // Use Microsoft XDR
            var xdr = new XDomainRequest();
            xdr.open("get", url);
            xdr.onload = function() {
                callback(this.responseText, 'success');
            };
            xdr.send();
        } else {
            try {
                // Ancient browser, use our proxy
                var mycallback = function() {
                    var textstatus = 'error';
                    var data = 'error';
                    if ((this.readyState == 4)
                        &amp;&amp; (this.status == '200')) {
                        textstatus = 'success';
                        data = this.responseText;
                    }
                    callback(data, textstatus);
                };
                // proxy_xmlhttp is a separate script you'll have to set up
                request = new proxy_xmlhttp();
                request.open('GET', url, true);
                request.onreadystatechange = mycallback;
                request.send();
            } catch(e) {
                // Could not fetch using the proxy
            }
        }
    }
}

/**
 * This method is for Cross-site Origin Resource Sharing (CORS) POSTs
 *
 * @param string   url      the url to post to
 * @param mixed    data     additional data to send [optional]
 * @param function callback a function to call on success [optional]
 * @param string   type     the type of data to be returned [optional]
 */
function postCORS(url, data, callback, type)
{
    try {
        // Try using jQuery to POST
        jQuery.post(url, data, callback, type);
    } catch(e) {
        // jQuery POST failed
        var params = '';
        for (key in data) {
            params = params+'&amp;'+key+'='+data[key];
        }
        // Try XDR, or use the proxy
        if (jQuery.browser.msie &amp;&amp; window.XDomainRequest) {
            // Use XDR
            var xdr = new XDomainRequest();
            xdr.open("post", url);
            xdr.send(params);
            xdr.onload = function() {
                callback(xdr.responseText, 'success');
            };
        } else {
            try {
                // Use the proxy to post the data.
                request = new proxy_xmlhttp();
                request.open('POST', url, true);
                request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                request.send(params);
            } catch(e) {
                // could not post using the proxy
            }
        }
    }
}</code></pre>
<p>The PHP code responding from the server looks like this:<br />
<code><span style="color: #000000"><br />
<span style="color: #0000BB">&lt;?php</p>
<p></span><span style="color: #FF8000">//&nbsp;Specify&nbsp;domains&nbsp;from&nbsp;which&nbsp;requests&nbsp;are&nbsp;allowed<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Access-Control-Allow-Origin:&nbsp;*'</span><span style="color: #007700">);</p>
<p></span><span style="color: #FF8000">//&nbsp;Specify&nbsp;which&nbsp;request&nbsp;methods&nbsp;are&nbsp;allowed<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Access-Control-Allow-Methods:&nbsp;GET,&nbsp;POST,&nbsp;OPTIONS'</span><span style="color: #007700">);</p>
<p></span><span style="color: #FF8000">//&nbsp;Additional&nbsp;headers&nbsp;which&nbsp;may&nbsp;be&nbsp;sent&nbsp;along&nbsp;with&nbsp;the&nbsp;CORS&nbsp;request<br />//&nbsp;The&nbsp;X-Requested-With&nbsp;header&nbsp;allows&nbsp;jQuery&nbsp;requests&nbsp;to&nbsp;go&nbsp;through<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Access-Control-Allow-Headers:&nbsp;X-Requested-With'</span><span style="color: #007700">);</p>
<p></span><span style="color: #FF8000">//&nbsp;Set&nbsp;the&nbsp;age&nbsp;to&nbsp;1&nbsp;day&nbsp;to&nbsp;improve&nbsp;speed/caching.<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Access-Control-Max-Age:&nbsp;86400'</span><span style="color: #007700">);</p>
<p></span><span style="color: #FF8000">//&nbsp;Exit&nbsp;early&nbsp;so&nbsp;the&nbsp;page&nbsp;isn't&nbsp;fully&nbsp;loaded&nbsp;for&nbsp;options&nbsp;requests<br /></span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">strtolower</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'REQUEST_METHOD'</span><span style="color: #007700">])&nbsp;==&nbsp;</span><span style="color: #DD0000">'options'</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;exit();<br />}</p>
<p></span><span style="color: #FF8000">//&nbsp;If&nbsp;raw&nbsp;post&nbsp;data,&nbsp;this&nbsp;could&nbsp;be&nbsp;from&nbsp;IE8&nbsp;XDomainRequest<br />//&nbsp;Only&nbsp;use&nbsp;this&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;populate&nbsp;$_POST&nbsp;in&nbsp;all&nbsp;instances<br /></span><span style="color: #007700">if&nbsp;(isset(</span><span style="color: #0000BB">$HTTP_RAW_POST_DATA</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$data&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">explode</span><span style="color: #007700">(</span><span style="color: #DD0000">'&amp;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$HTTP_RAW_POST_DATA</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000BB">$data&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$val</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!empty(</span><span style="color: #0000BB">$val</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list(</span><span style="color: #0000BB">$key</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$value</span><span style="color: #007700">)&nbsp;=&nbsp;</span><span style="color: #0000BB">explode</span><span style="color: #007700">(</span><span style="color: #DD0000">'='</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$val</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$_POST</span><span style="color: #007700">[</span><span style="color: #0000BB">$key</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">urldecode</span><span style="color: #007700">(</span><span style="color: #0000BB">$value</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</p>
<p>echo&nbsp;</span><span style="color: #DD0000">'Hello&nbsp;CORS,&nbsp;this&nbsp;is&nbsp;'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'SERVER_NAME'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">PHP_EOL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">.</span><span style="color: #DD0000">'You&nbsp;sent&nbsp;a&nbsp;'</span><span style="color: #007700">.</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'REQUEST_METHOD'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'&nbsp;request.'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;</p>
<p>if&nbsp;(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'REQUEST_METHOD'</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">'POST'</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">'Your&nbsp;name&nbsp;is&nbsp;'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">htmlentities</span><span style="color: #007700">(</span><span style="color: #0000BB">$_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'name'</span><span style="color: #007700">]);<br />}</span></p>
<p></span><br />
</code></p>
<p>Note the special headers that have to be returned to allow the request to complete:<br />
Access-Control-Allow-Origin: *<br />
Access-Control-Allow-Methods: GET, POST, OPTIONS<br />
Access-Control-Allow-Headers: X-Requested-With</p>
<p>The X-Requested-With allows us to use jQuery&#8217;s internal GET method which adds in the additional header.</p>
<p><a href="http://github.com/saltybeagle/cors">View all the code on GitHub.</a></p>
<p>Support for proxy fallback for older browsers is left up to you to code. The proxy requires you to set up a script which translates a page into JSON and handles the response. There are many examples of how to do this.</p>
]]></content:encoded>
			<wfw:commentRss>http://saltybeagle.com/2009/09/cross-origin-resource-sharing-demo/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Lost Stickley Side Table</title>
		<link>http://saltybeagle.com/2008/08/lost-stickley-side-table/</link>
		<comments>http://saltybeagle.com/2008/08/lost-stickley-side-table/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 19:08:18 +0000</pubDate>
		<dc:creator>bbieber</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Woodworking]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[The rumor is that this was a prototype Stickley table, never put in to production. It has 14 mortise &#38; tenon joints, and the legs angle slightly outward &#8211; which makes it a more complex project to build. This was also the first project in which I used hand-cut dovetails. After some reflection, I think [...]]]></description>
			<content:encoded><![CDATA[<p>The rumor is that this was a prototype Stickley table, never put in to production. It has 14 mortise &amp; tenon joints, and the legs angle slightly outward &#8211; which makes it a more complex project to build. This was also the first project in which I used hand-cut dovetails. After some reflection, I think this project required every tool in my little workshop to build. From mortising &amp; tenoning jigs, hand saw &amp; chisel for the dovetails, table saw &amp; dado blades, jig saw for rough-cuts, band saw for the smooth curves, thickness planer, biscuit joiner, sanders, drills and screwdrivers &#8211; just about everything was used to some degree.</p>
<p>It has taken me quite a few weekends to build, but now that it&#8217;s complete I think it will make a nice piece of furniture for our house.<br />
<a style="float:left" title="Done finishing! by saltybeagle, on Flickr" href="http://www.flickr.com/photos/saltybeagle/2749925149/"><img src="http://farm4.static.flickr.com/3223/2749925149_e07188b30d_m.jpg" alt="Done finishing!" width="180" height="240" /></a><br />
<a style="float:left" title="Lost Stickley Side Table by saltybeagle, on Flickr" href="http://www.flickr.com/photos/saltybeagle/2749928441/"><img src="http://farm4.static.flickr.com/3101/2749928441_4aff034345_m.jpg" alt="Lost Stickley Side Table" width="180" height="240" /></a><br />
<a style="float:left" title="half blind dovetails on the drawer front by saltybeagle, on Flickr" href="http://www.flickr.com/photos/saltybeagle/2749930695/"><img src="http://farm4.static.flickr.com/3206/2749930695_3aee93ea5a_m.jpg" alt="half blind dovetails on the drawer front" width="180" height="240" /></a></p>
<p>The only question is &#8211; what do I build next?</p>
]]></content:encoded>
			<wfw:commentRss>http://saltybeagle.com/2008/08/lost-stickley-side-table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stickley #602</title>
		<link>http://saltybeagle.com/2008/03/stickley-602/</link>
		<comments>http://saltybeagle.com/2008/03/stickley-602/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 03:04:38 +0000</pubDate>
		<dc:creator>bbieber</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Woodworking]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Recently I discovered the online woodworking community&#8230; something which I never even thought of looking for online.
Through the searches and feeds I&#8217;ve amassed &#8211; I&#8217;m finding a lot of inspiration and a ton of projects I&#8217;d like to build. The first of which is a reproduction Stickley tabouret.
I&#8217;m not finished yet &#8211; I just finished [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I discovered the online woodworking community&#8230; something which I never even thought of looking for online.</p>
<p>Through the searches and feeds I&#8217;ve amassed &#8211; I&#8217;m finding a lot of inspiration and a ton of projects I&#8217;d like to build. The first of which is a reproduction Stickley tabouret.</p>
<p>I&#8217;m not finished yet &#8211; I just finished staining it tonight and I&#8217;ll put topcoat on it in the next few days. But, building it was quite a pleasure, as there&#8217;s a lot of good construction and joinery techniques to practice in it.</p>
<p>It&#8217;s an excellent little table/stool, with good proportions and a nice size.</p>
<p><a title="Stickley #602 by saltybeagle, on Flickr" href="http://www.flickr.com/photos/saltybeagle/2378330427/"><img src="http://farm4.static.flickr.com/3070/2378330427_1a3a29e6e9_m.jpg" alt="Stickley #602" width="180" height="240" /></a></p>
<p>Thanks to <a href="http://treefrogfurniture.blogspot.com/">TreeFrogFurniture</a> for the inspiration.</p>
]]></content:encoded>
			<wfw:commentRss>http://saltybeagle.com/2008/03/stickley-602/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Dog</title>
		<link>http://saltybeagle.com/2007/05/new-dog/</link>
		<comments>http://saltybeagle.com/2007/05/new-dog/#comments</comments>
		<pubDate>Wed, 23 May 2007 14:35:32 +0000</pubDate>
		<dc:creator>bbieber</dc:creator>
				<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[
Milo.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/saltybeagle/510840773/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/223/510840773_7295dace8a.jpg" width="500" height="375" alt="Milo" /></a></p>
<p>Milo.</p>
]]></content:encoded>
			<wfw:commentRss>http://saltybeagle.com/2007/05/new-dog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Freecycle Piano</title>
		<link>http://saltybeagle.com/2007/02/freecycle-piano/</link>
		<comments>http://saltybeagle.com/2007/02/freecycle-piano/#comments</comments>
		<pubDate>Mon, 26 Feb 2007 17:19:31 +0000</pubDate>
		<dc:creator>bbieber</dc:creator>
				<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[First &#8211; Thanks to Allen, Allen, Tyson, and Aaron.
 Now the news! 
A couple weeks ago we got a used piano from freecycle. In case you don&#8217;t know&#8230; Freecycle is a mailing list where people list things they have to offer for free &#8211; the idea is to keep things with some life left in [...]]]></description>
			<content:encoded><![CDATA[<p>First &#8211; Thanks to Allen, Allen, Tyson, and <a href="http://www.elasticheart.com/">Aaron</a>.<br />
<strong> Now the news! </strong><br />
A couple weeks ago we got a used piano from freecycle. In case you don&#8217;t know&#8230; Freecycle is a mailing list where people list things they have to offer for free &#8211; the idea is to keep things with some life left in them out of our landfills. The concept is great&#8230; larger metropolitan areas will have a list for their area. Anyways, Katie and I had talked about getting a piano for our house, and after a couple weeks one was listed on freecycle.</p>
<p><a href="http://www.flickr.com/photos/saltybeagle/403646045/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/151/403646045_435bc9d94d_m.jpg" width="180" height="240" alt="Piano" /></a></p>
<p>The piano is an early 20th century Ivers &#038; Pond mahogany full upright.  Some marks on the wood, and missing a couple ivory key tops&#8230; but what can you expect for a piano nearly 100 years old.<br />
It is a monster&#8230; very big and heavy &#8211; but has a good sound to it. We do need to get it tuned some time.</p>
<p>Anyone know where I can get a tuning lever for a piano?</p>
]]></content:encoded>
			<wfw:commentRss>http://saltybeagle.com/2007/02/freecycle-piano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
