<?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>Mike&#039;s Place &#187; Programming</title>
	<atom:link href="http://blog.gurski.org/index.php/category/technology/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gurski.org</link>
	<description>Inarticulate ramblings on whatever strikes my fancy</description>
	<lastBuildDate>Thu, 02 Feb 2012 16:58:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Making some progress</title>
		<link>http://blog.gurski.org/index.php/2007/03/09/making-some-progress/</link>
		<comments>http://blog.gurski.org/index.php/2007/03/09/making-some-progress/#comments</comments>
		<pubDate>Fri, 09 Mar 2007 22:01:20 +0000</pubDate>
		<dc:creator>emag</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.gurski.org/index.php/2007/03/09/making-some-progress/</guid>
		<description><![CDATA[Even though I haven&#8217;t been devoting as much time to it as I either could or should, I&#8217;ve made some decent progress on my aggregator. Maybe it isn&#8217;t as much as it could be, but it&#8217;s enough to make me happy, and since I&#8217;m not getting paid, that&#8217;s all that matters right now, right? Let&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Even though I haven&#8217;t been devoting as much time to it as I either could or should, I&#8217;ve made some decent progress on my aggregator.  Maybe it isn&#8217;t as much as it could be, but it&#8217;s enough to make me happy, and since I&#8217;m not getting paid, that&#8217;s all that matters right now, right?</p>
<p><span id="more-21"></span></p>
<p>Let&#8217;s see&#8230; where to begin?  Well, I guess I can list things in no particular order, and let it go from there.</p>
<ol>
<li> <strong>The &#8220;biggie&#8221; is that there&#8217;s now an official name for the project.</strong>  I thought that I&#8217;d be clever, and had been using <code>SpeedReader</code> internally, but then I decided to search for the name, and it turns out that not only is there <em>already</em> a <code>SpeedReader</code>, but it&#8217;s also an aggregator.  Damn.  So, I thought long and hard about it (a few minutes), and decided that, based on my initials and a dearth of hits from <a href="http://www.google.com/">Google</a>, that the name <code>maggregate</code> would be good.  Well, if not good, at least unique<sup><a href="http://blog.gurski.org/index.php/2007/03/09/making-some-progress/#footnote_0_21" id="identifier_0_21" class="footnote-link footnote-identifier-link" title="I had jokingly originally referred to the project as <code>maggle</code>, a take on raggle, but it seemed a bit too derivative of a name.  Sorry Tim, I know you liked this one">1</a></sup>.  So, that&#8217;s what I&#8217;m calling it from now on.  <code>Maggregate</code>.</li>
<li> <strong>A lot of extraneous crashes have been dealt with.</strong>  I had been adding exception handling in the few places where it&#8217;s most likely to occur (network and parsing) on a case-by-case basis, but I kept coming up with new ones.  When I took the wireless interface down on the laptop I use to develop code on, and got yet another unhandled exception, I finally decided that adding a &#8220;catchall&#8221; <code>rescue</code> block to each place that needed it, as those errors were all technically recoverable.  Since then, no crashes.  Yay.  And logging differentiates enough (error for catchall vs warning for explicitly handled) that I can quickly see what I&#8217;ve been too lazy to explicitly deal with.</li>
<li> <strong><code>Maggregate</code> now accepts gzip-encoded content!</strong>  I knew I always wanted to do this, but my prior experiences with trying to deal with raw <code>Zlib</code> (in C) kept me from relishing having to do it.  Lucky for me, the <code>ruby</code> library is nice enough that it was <em>almost</em> trivial.  In fact, the hardest part was realizing that I needed to wrap the body from the <acronym title="HyperText Transfer Protocol">HTTP</acronym> request in a <code>StringIO</code> object instead of leaving it as a string.  Once that was done, it was dead simple.</li>
<li> <strong>Partial cookie support is in place.</strong>  Well, that should really be &#8220;preliminary&#8221;, as in there&#8217;s just a bit of code to recognize cookies, and there&#8217;s now a table in the <code>maggregate</code> database to eventually store the cookies.  So, the logs let you know that you were sent a cookie (or several), but that&#8217;s currently it.
<p>As an aside, having looked at <a href="http://www.ietf.org/rfc/rfc2109.txt">RFC 2109</a> and <a href="http://www.ietf.org/rfc/rfc2965.txt">RFC 2965</a>, it appears no one is using them&#8230;  Instead, it appears every single server out there sending cookies that I&#8217;ve come across just uses the <a href="http://wp.netscape.com/newsref/std/cookie_spec.html">Netscape cookie specification</a>.  Keep in mind, RFC 2109 dates from February 1997, and RFC 2965 dates from October 2000.  Not much of an issues, but I think my jaw will drop the first time I spy a <code>max-age</code> insead of an <code>expires</code> in a cookie header.</p>
</li>
<li> <strong>Potential support for <a href="http://www.wyman.us/main/2004/09/using_rfc3229_w.html">RFC 3229 with &#8220;feed&#8221;</a>.</strong>  This was more of a &#8220;I wonder how easy it would be&#8230;&#8221; deal than anything else.  I was reading something, followed a <acronym title="Uniform Resource Locator">URL</acronym> in a comment, and one or two clicks later, ended up at that page.  For those folks who haven&#8217;t memorized the RFC index, <a href="http://www.ietf.org/rfc/rfc3229.txt">RFC 3229</a> is &#8220;Delta encoding in <acronym title="HyperText Transfer Protocol">HTTP</acronym>&#8221;, which is basically a way to request a resource over <acronym title="HyperText Transfer Protocol">HTTP</acronym> and get just what has changed on the page instead of having to transfer the entire thing again.  The &#8220;with feed&#8221; is an extension that purports to handle feed deltas in a manner that doesn&#8217;t break encapsulation, it just gives you a &#8220;feed&#8221; with only new/changed articles in it.
<p>My biggest concern was having to support a new <acronym title="HyperText Transfer Protocol">HTTP</acronym> status code, <code>226 IM Used</code>, as the Ruby <code>Net::HTTP</code> library doesn&#8217;t have support for it.  I should have known that it wouldn&#8217;t be an issue, thanks to Ruby&#8217;s allowing one to extend existing classes fairly easily.  How easily?  This easily:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw3">require</span> <span class="st0">&#8216;net/http&#8217;</span></p>
<p><span class="kw1">module</span> Net<br />
&nbsp; <span class="kw1">class</span> HTTPIMUsed &lt; HTTPSuccess &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1"># 226</span><br />
&nbsp; &nbsp; HAS_BODY = <span class="kw2">true</span><br />
&nbsp; <span class="kw1">end</span></p>
<p>&nbsp; <span class="kw1">class</span> HTTPResponse<br />
&nbsp; &nbsp; CODE_TO_OBJ<span class="br0">&#91;</span><span class="nu0">226</span><span class="br0">&#93;</span> = HTTPIMUsed<br />
&nbsp; <span class="kw1">end</span><br />
<span class="kw1">end</span></div>
<p>That&#8217;s in the <code>maggregate</code> file that does all the network and <acronym title="HyperText Transfer Protocol">HTTP</acronym> connections.  That&#8217;s it.  Now, in <code>maggregate</code> at least, <code>Net::HTTP</code> understands the proper status code for a successful response for RFC 3229.  Nice, no?</p>
<p>Now, I say it&#8217;s potential support, because so far not one single feed in over 300 has ever responded with either a 226 response OR the associated additional <acronym title="HyperText Transfer Protocol">HTTP</acronym> headers.  But due to the way that I handle adding entries now, I don&#8217;t expect any issues, if and when a server decides to respond correctly.</p>
</li>
</ol>
<p>The UI is still completely unusable, as I&#8217;ve been verifying things are working through both logging and using the <code>sqlite3</code> exectuable to examine the database by hand.  Despite the number of crashes, I&#8217;ve yet to corrupt any data, either.  I suppose that the UI is the next real step, so I should finally learn more about <code>ncurses</code> and how to interact with it.</p>
<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;partner=sociable" title="Print"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;partner=sociable" title="PDF"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Making%20some%20progress%20-%20http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F" title="Twitter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://identi.ca/notice/new?status_textarea=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F" title="Identi.ca"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/identica.png" title="Identi.ca" alt="Identi.ca" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;title=Making%20some%20progress" title="Reddit"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;title=Making%20some%20progress&amp;notes=Even%20though%20I%20haven%27t%20been%20devoting%20as%20much%20time%20to%20it%20as%20I%20either%20could%20or%20should%2C%20I%27ve%20made%20some%20decent%20progress%20on%20my%20aggregator.%20%20Maybe%20it%20isn%27t%20as%20much%20as%20it%20could%20be%2C%20but%20it%27s%20enough%20to%20make%20me%20happy%2C%20and%20since%20I%27m%20not%20getting%20paid%2C%20that%27s%20all%20" title="del.icio.us"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;title=Making%20some%20progress&amp;source=Mike%26%23039%3Bs+Place+Inarticulate+ramblings+on+whatever+strikes+my+fancy&amp;summary=Even%20though%20I%20haven%27t%20been%20devoting%20as%20much%20time%20to%20it%20as%20I%20either%20could%20or%20should%2C%20I%27ve%20made%20some%20decent%20progress%20on%20my%20aggregator.%20%20Maybe%20it%20isn%27t%20as%20much%20as%20it%20could%20be%2C%20but%20it%27s%20enough%20to%20make%20me%20happy%2C%20and%20since%20I%27m%20not%20getting%20paid%2C%20that%27s%20all%20" title="LinkedIn"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;title=Making%20some%20progress&amp;annotation=Even%20though%20I%20haven%27t%20been%20devoting%20as%20much%20time%20to%20it%20as%20I%20either%20could%20or%20should%2C%20I%27ve%20made%20some%20decent%20progress%20on%20my%20aggregator.%20%20Maybe%20it%20isn%27t%20as%20much%20as%20it%20could%20be%2C%20but%20it%27s%20enough%20to%20make%20me%20happy%2C%20and%20since%20I%27m%20not%20getting%20paid%2C%20that%27s%20all%20" title="Google Bookmarks"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;t=Making%20some%20progress" title="Facebook"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;title=Making%20some%20progress&amp;bodytext=Even%20though%20I%20haven%27t%20been%20devoting%20as%20much%20time%20to%20it%20as%20I%20either%20could%20or%20should%2C%20I%27ve%20made%20some%20decent%20progress%20on%20my%20aggregator.%20%20Maybe%20it%20isn%27t%20as%20much%20as%20it%20could%20be%2C%20but%20it%27s%20enough%20to%20make%20me%20happy%2C%20and%20since%20I%27m%20not%20getting%20paid%2C%20that%27s%20all%20" title="Digg"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;title=Making%20some%20progress" title="StumbleUpon"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;title=Making%20some%20progress" title="DZone"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Making%20some%20progress&amp;u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F" title="Fark"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://blog.gurski.org/index.php/feed/" title="RSS"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=Making%20some%20progress&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F" title="Slashdot"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F" title="Technorati"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;t=Making%20some%20progress&amp;s=Even%20though%20I%20haven%27t%20been%20devoting%20as%20much%20time%20to%20it%20as%20I%20either%20could%20or%20should%2C%20I%27ve%20made%20some%20decent%20progress%20on%20my%20aggregator.%20%20Maybe%20it%20isn%27t%20as%20much%20as%20it%20could%20be%2C%20but%20it%27s%20enough%20to%20make%20me%20happy%2C%20and%20since%20I%27m%20not%20getting%20paid%2C%20that%27s%20all%20" title="Tumblr"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Making%20some%20progress&amp;body=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F" title="email"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Making%20some%20progress&amp;link=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F" title="FriendFeed"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;title=Making%20some%20progress" title="Live"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://ping.fm/ref/?link=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;title=Making%20some%20progress&amp;body=Even%20though%20I%20haven%27t%20been%20devoting%20as%20much%20time%20to%20it%20as%20I%20either%20could%20or%20should%2C%20I%27ve%20made%20some%20decent%20progress%20on%20my%20aggregator.%20%20Maybe%20it%20isn%27t%20as%20much%20as%20it%20could%20be%2C%20but%20it%27s%20enough%20to%20make%20me%20happy%2C%20and%20since%20I%27m%20not%20getting%20paid%2C%20that%27s%20all%20" title="Ping.fm"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/ping.png" title="Ping.fm" alt="Ping.fm" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;title=Making%20some%20progress" title="blogmarks"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.blogospherenews.com/submit.php?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;title=Making%20some%20progress" title="Blogosphere News"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/blogospherenews.png" title="Blogosphere News" alt="Blogosphere News" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://current.com/clipper.htm?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;title=Making%20some%20progress" title="Current"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/current.png" title="Current" alt="Current" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.diggita.it/submit.php?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&title=Making%20some%20progress" title="Diggita"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/diggita.png" title="Diggita" alt="Diggita" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://globalgrind.com/submission/submit.aspx?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;type=Article&amp;title=Making%20some%20progress" title="Global Grind"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/globalgrind.png" title="Global Grind" alt="Global Grind" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;t=Making%20some%20progress" title="HackerNews"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://reporter.nl.msn.com/?fn=contribute&amp;Title=Making%20some%20progress&amp;URL=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;cat_id=6&amp;tag_id=31&amp;Remark=Even%20though%20I%20haven%27t%20been%20devoting%20as%20much%20time%20to%20it%20as%20I%20either%20could%20or%20should%2C%20I%27ve%20made%20some%20decent%20progress%20on%20my%20aggregator.%20%20Maybe%20it%20isn%27t%20as%20much%20as%20it%20could%20be%2C%20but%20it%27s%20enough%20to%20make%20me%20happy%2C%20and%20since%20I%27m%20not%20getting%20paid%2C%20that%27s%20all%20" title="MSN Reporter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/msnreporter.png" title="MSN Reporter" alt="MSN Reporter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;t=Making%20some%20progress" title="MySpace"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://posterous.com/share?linkto=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;title=Making%20some%20progress&amp;selection=Even%20though%20I%20haven%27t%20been%20devoting%20as%20much%20time%20to%20it%20as%20I%20either%20could%20or%20should%2C%20I%27ve%20made%20some%20decent%20progress%20on%20my%20aggregator.%20%20Maybe%20it%20isn%27t%20as%20much%20as%20it%20could%20be%2C%20but%20it%27s%20enough%20to%20make%20me%20happy%2C%20and%20since%20I%27m%20not%20getting%20paid%2C%20that%27s%20all%20" title="Posterous"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://socialogs.com/add_story.php?story_url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;story_title=Making%20some%20progress" title="Socialogs"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/socialogs.png" title="Socialogs" alt="Socialogs" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home/?status=tip%20@Techmeme%20http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F%20Making%20some%20progress" title="Suggest to Techmeme via Twitter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/techmeme.png" title="Suggest to Techmeme via Twitter" alt="Suggest to Techmeme via Twitter" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F03%2F09%2Fmaking-some-progress%2F&amp;submitHeadline=Making%20some%20progress&amp;submitSummary=Even%20though%20I%20haven%27t%20been%20devoting%20as%20much%20time%20to%20it%20as%20I%20either%20could%20or%20should%2C%20I%27ve%20made%20some%20decent%20progress%20on%20my%20aggregator.%20%20Maybe%20it%20isn%27t%20as%20much%20as%20it%20could%20be%2C%20but%20it%27s%20enough%20to%20make%20me%20happy%2C%20and%20since%20I%27m%20not%20getting%20paid%2C%20that%27s%20all%20&amp;submitCategory=science&amp;submitAssetType=text" title="Yahoo! Buzz"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/yahoobuzz.png" title="Yahoo! Buzz" alt="Yahoo! Buzz" class="sociable-hovers" /></a></li>
</ul>
</div>
<img src="http://blog.gurski.org/?ak_action=api_record_view&id=21&type=feed" alt="" /><ol class="footnotes"><li id="footnote_0_21" class="footnote">I had jokingly originally referred to the project as <code>maggle</code>, a take on <a href="http://www.raggle.org/">raggle</a>, but it seemed a bit too derivative of a name.  Sorry Tim, I know you liked this one</li></ol>]]></content:encoded>
			<wfw:commentRss>http://blog.gurski.org/index.php/2007/03/09/making-some-progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>This is supposed to be simple, right?</title>
		<link>http://blog.gurski.org/index.php/2007/02/22/this-is-supposed-to-be-simple-right/</link>
		<comments>http://blog.gurski.org/index.php/2007/02/22/this-is-supposed-to-be-simple-right/#comments</comments>
		<pubDate>Thu, 22 Feb 2007 07:22:12 +0000</pubDate>
		<dc:creator>emag</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.gurski.org/index.php/2007/02/22/this-is-supposed-to-be-simple-right/</guid>
		<description><![CDATA[So, I&#8217;ve been spending more time working on coming up with my own feed aggregator. I&#8217;ve learned some pretty interesting things so far, as well as just how FUBAR RSS and Atom happen to be. You&#8217;d think that this would all be somewhat simple, and in an ideal world, it probably would. This is the [...]]]></description>
			<content:encoded><![CDATA[<p>So, I&#8217;ve been spending more time working on coming up with my own feed aggregator.  I&#8217;ve learned some pretty interesting things so far, as well as just how <acronym title="Fucked Up Beyond All Recognition">FUBAR</acronym> <acronym title="Really Simple Syndication">RSS</acronym> and Atom happen to be.  You&#8217;d think that this would all be somewhat simple, and in an ideal world, it probably would.  This is the real world though, not an ideal one.</p>
<p><span id="more-19"></span></p>
<p>Some of the fun fun things I&#8217;ve encountered thus far are:</p>
<ul>
<li>The confused server that seems to think that, instead of giving a proper <code>304 Not Modified</code> response (with no body) when the content I&#8217;m requesting hasn&#8217;t changed, it should instead give a <code>200 OK</code> response, with no body.  This kept throwing me as I was trying to debug, as I kept believing my logs that there should be new content there&#8230;</li>
<li>The confused server that gives a <code>406 Not Acceptable</code> response to requests that don&#8217;t supply a <code>User-Agent:</code> header with the request.  Admittedly, were I less lazy, I&#8217;d be specifying one anyway, just to identify the new kid on the block.  But as I haven&#8217;t even officially settled on a name yet, I was leaving things at their default (and made the assumption that Ruby&#8217;s <code>Net::HTTP</code> library had some sort of default value).  What really threw me was that <code>wget</code> would work, but <code>telnet</code> wouldn&#8217;t, even when I was listing a huge laundry list of formats I was interested in in the <code>Accept:</code> header (including the type that <code>wget</code> said was coming back).  After a little while, I decided to just pass a <code>User-Agent: moo</code>, and lo and behold, content!</li>
<li>The really confused server that would reply to all requests with a <code>Last-Modified: Thu, 01 Jan 1970 00:00:00 GMT</code>, but would then completely bomb out with an application error if it got that value back in a <code>If-Modified-Since:</code> request header.</li>
<li>The feed that seems to randomly return something that isn&#8217;t <acronym title="Really Simple Syndication">RSS</acronym> or Atom at all, but from the exception the content generates, looks like it could be normal <acronym title="HyperText Markup Language">HTML</acronym>.  I say randomly, because after the last time it happened (and I finally got around to catching that exception to log it, deal with it, and carry on), it&#8217;s happened a grand total of once.  And in that time, it&#8217;s checked the feed a few more times, though the content hasn&#8217;t updated (from before the time stored&#8230;), with no issues.  I&#8217;m hoping something happens during the night, just so I know that <strong>I&#8217;m</strong> not the one going crazy.
</ul>
<p>Feeds in general have also been interesting.  I&#8217;ve discovered that there&#8217;s such a huge variation in the quality of the actual data that I&#8217;ve had to special-case a few things, and delve into the <acronym title="eXtensible Markup Language">XML</acronym> (or <acronym title="eXtensible Markup Language">XML</acronym>-like) content itself in order to pull out data that I&#8217;d hoped would percolate into the normal accessor methods of the classes I&#8217;m using.  It&#8217;s not a big deal, but it&#8217;s one of those things that becomes a minor annoyance after a while.  Fortunately, of the information I care about, it&#8217;s only dates and links to individual entries (or in at least one case, the complete and total lack thereof), and I think I have that in the bag.</p>
<p>Speaking of dates, one thing I&#8217;ve been noticing over the months of adding various and sundry feeds to the readers I&#8217;ve used in the past is that there are some pretty horrid implementations of Atom out there.  I&#8217;ve noticed several feeds that various apps/frameworks provide that seem to think that publication, update, etc dates should always reflect the <em>current</em> time when you make the request, and not the time that each item was actually published or underwent a major update.  This makes trying to figure out anything temporally useful about feed items a non-starter.  Such is life&#8230;</p>
<p>Now, lest folks think that all I&#8217;m doing is complaining, let me just say that I&#8217;m <em>glad</em> that I&#8217;ve been running into these problems.  I never would have discovered some rather fragile assumptions that I made without real-world data.  In order to do that, I whipped up a pretty brain-dead (but functional) <acronym title="Outline Processor Markup Language">OPML</acronym> import feature, and an add-a-feed feature, so that I could import the <acronym title="Outline Processor Markup Language">OPML</acronym> file that I&#8217;d managed to export from my other reader a short time ago.  Importing that, and adding some feeds that I&#8217;ve been pasting into a file for a week or two, I&#8217;m able to see how everything fares trying to parse 294 highly varied feeds instead of a few minor test cases.  So when I&#8217;m ready to release the first alpha version to the guinea pigs, it should at least do better than it might otherwise.</p>
<p>So, yeah, I&#8217;ve made some decent progress on a lot of the back-end code and infrastructure.  There&#8217;s just enough of a UI in place so that I can at least verify that things are working.  It&#8217;s butt-ugly, and almost completely useless, but meets my current needs.  Eventually I&#8217;ll get around to making it functional for me, maybe even functional for you. <img src='http://blog.gurski.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   There&#8217;s logging in place so that I can at least figure out where something goes wrong.  Hell, it even saves data (without corruption despite multiple crashes).  You just can&#8217;t, well, read or navigate or do anything else at the moment.</p>
<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;partner=sociable" title="Print"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;partner=sociable" title="PDF"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=This%20is%20supposed%20to%20be%20simple%2C%20right%3F%20-%20http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F" title="Twitter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://identi.ca/notice/new?status_textarea=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F" title="Identi.ca"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/identica.png" title="Identi.ca" alt="Identi.ca" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="Reddit"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F&amp;notes=So%2C%20I%27ve%20been%20spending%20more%20time%20working%20on%20coming%20up%20with%20my%20own%20feed%20aggregator.%20%20I%27ve%20learned%20some%20pretty%20interesting%20things%20so%20far%2C%20as%20well%20as%20just%20how%20FUBAR%20RSS%20and%20Atom%20happen%20to%20be.%20%20You%27d%20think%20that%20this%20would%20all%20be%20somewhat%20simple%2C%20and%20in%20a" title="del.icio.us"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F&amp;source=Mike%26%23039%3Bs+Place+Inarticulate+ramblings+on+whatever+strikes+my+fancy&amp;summary=So%2C%20I%27ve%20been%20spending%20more%20time%20working%20on%20coming%20up%20with%20my%20own%20feed%20aggregator.%20%20I%27ve%20learned%20some%20pretty%20interesting%20things%20so%20far%2C%20as%20well%20as%20just%20how%20FUBAR%20RSS%20and%20Atom%20happen%20to%20be.%20%20You%27d%20think%20that%20this%20would%20all%20be%20somewhat%20simple%2C%20and%20in%20a" title="LinkedIn"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F&amp;annotation=So%2C%20I%27ve%20been%20spending%20more%20time%20working%20on%20coming%20up%20with%20my%20own%20feed%20aggregator.%20%20I%27ve%20learned%20some%20pretty%20interesting%20things%20so%20far%2C%20as%20well%20as%20just%20how%20FUBAR%20RSS%20and%20Atom%20happen%20to%20be.%20%20You%27d%20think%20that%20this%20would%20all%20be%20somewhat%20simple%2C%20and%20in%20a" title="Google Bookmarks"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;t=This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="Facebook"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F&amp;bodytext=So%2C%20I%27ve%20been%20spending%20more%20time%20working%20on%20coming%20up%20with%20my%20own%20feed%20aggregator.%20%20I%27ve%20learned%20some%20pretty%20interesting%20things%20so%20far%2C%20as%20well%20as%20just%20how%20FUBAR%20RSS%20and%20Atom%20happen%20to%20be.%20%20You%27d%20think%20that%20this%20would%20all%20be%20somewhat%20simple%2C%20and%20in%20a" title="Digg"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="StumbleUpon"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="DZone"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://cgi.fark.com/cgi/fark/farkit.pl?h=This%20is%20supposed%20to%20be%20simple%2C%20right%3F&amp;u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F" title="Fark"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://blog.gurski.org/index.php/feed/" title="RSS"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F" title="Slashdot"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F" title="Technorati"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;t=This%20is%20supposed%20to%20be%20simple%2C%20right%3F&amp;s=So%2C%20I%27ve%20been%20spending%20more%20time%20working%20on%20coming%20up%20with%20my%20own%20feed%20aggregator.%20%20I%27ve%20learned%20some%20pretty%20interesting%20things%20so%20far%2C%20as%20well%20as%20just%20how%20FUBAR%20RSS%20and%20Atom%20happen%20to%20be.%20%20You%27d%20think%20that%20this%20would%20all%20be%20somewhat%20simple%2C%20and%20in%20a" title="Tumblr"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=This%20is%20supposed%20to%20be%20simple%2C%20right%3F&amp;body=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F" title="email"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F&amp;link=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F" title="FriendFeed"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="Live"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://ping.fm/ref/?link=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F&amp;body=So%2C%20I%27ve%20been%20spending%20more%20time%20working%20on%20coming%20up%20with%20my%20own%20feed%20aggregator.%20%20I%27ve%20learned%20some%20pretty%20interesting%20things%20so%20far%2C%20as%20well%20as%20just%20how%20FUBAR%20RSS%20and%20Atom%20happen%20to%20be.%20%20You%27d%20think%20that%20this%20would%20all%20be%20somewhat%20simple%2C%20and%20in%20a" title="Ping.fm"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/ping.png" title="Ping.fm" alt="Ping.fm" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="blogmarks"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.blogospherenews.com/submit.php?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="Blogosphere News"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/blogospherenews.png" title="Blogosphere News" alt="Blogosphere News" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://current.com/clipper.htm?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="Current"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/current.png" title="Current" alt="Current" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.diggita.it/submit.php?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="Diggita"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/diggita.png" title="Diggita" alt="Diggita" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://globalgrind.com/submission/submit.aspx?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;type=Article&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="Global Grind"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/globalgrind.png" title="Global Grind" alt="Global Grind" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;t=This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="HackerNews"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://reporter.nl.msn.com/?fn=contribute&amp;Title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F&amp;URL=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;cat_id=6&amp;tag_id=31&amp;Remark=So%2C%20I%27ve%20been%20spending%20more%20time%20working%20on%20coming%20up%20with%20my%20own%20feed%20aggregator.%20%20I%27ve%20learned%20some%20pretty%20interesting%20things%20so%20far%2C%20as%20well%20as%20just%20how%20FUBAR%20RSS%20and%20Atom%20happen%20to%20be.%20%20You%27d%20think%20that%20this%20would%20all%20be%20somewhat%20simple%2C%20and%20in%20a" title="MSN Reporter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/msnreporter.png" title="MSN Reporter" alt="MSN Reporter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;t=This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="MySpace"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://posterous.com/share?linkto=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F&amp;selection=So%2C%20I%27ve%20been%20spending%20more%20time%20working%20on%20coming%20up%20with%20my%20own%20feed%20aggregator.%20%20I%27ve%20learned%20some%20pretty%20interesting%20things%20so%20far%2C%20as%20well%20as%20just%20how%20FUBAR%20RSS%20and%20Atom%20happen%20to%20be.%20%20You%27d%20think%20that%20this%20would%20all%20be%20somewhat%20simple%2C%20and%20in%20a" title="Posterous"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://socialogs.com/add_story.php?story_url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;story_title=This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="Socialogs"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/socialogs.png" title="Socialogs" alt="Socialogs" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home/?status=tip%20@Techmeme%20http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F%20This%20is%20supposed%20to%20be%20simple%2C%20right%3F" title="Suggest to Techmeme via Twitter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/techmeme.png" title="Suggest to Techmeme via Twitter" alt="Suggest to Techmeme via Twitter" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F22%2Fthis-is-supposed-to-be-simple-right%2F&amp;submitHeadline=This%20is%20supposed%20to%20be%20simple%2C%20right%3F&amp;submitSummary=So%2C%20I%27ve%20been%20spending%20more%20time%20working%20on%20coming%20up%20with%20my%20own%20feed%20aggregator.%20%20I%27ve%20learned%20some%20pretty%20interesting%20things%20so%20far%2C%20as%20well%20as%20just%20how%20FUBAR%20RSS%20and%20Atom%20happen%20to%20be.%20%20You%27d%20think%20that%20this%20would%20all%20be%20somewhat%20simple%2C%20and%20in%20a&amp;submitCategory=science&amp;submitAssetType=text" title="Yahoo! Buzz"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/yahoobuzz.png" title="Yahoo! Buzz" alt="Yahoo! Buzz" class="sociable-hovers" /></a></li>
</ul>
</div>
<img src="http://blog.gurski.org/?ak_action=api_record_view&id=19&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.gurski.org/index.php/2007/02/22/this-is-supposed-to-be-simple-right/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Putting my money where my mouth is</title>
		<link>http://blog.gurski.org/index.php/2007/02/14/putting-my-money-where-my-mouth-is/</link>
		<comments>http://blog.gurski.org/index.php/2007/02/14/putting-my-money-where-my-mouth-is/#comments</comments>
		<pubDate>Wed, 14 Feb 2007 18:05:25 +0000</pubDate>
		<dc:creator>emag</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.gurski.org/index.php/2007/02/14/putting-my-money-where-my-mouth-is/</guid>
		<description><![CDATA[So, having complained about console feed readers, I&#8217;ve decided to put up or shut up. Or put my moneycode where my mouth is. A few months before I wrote the last article, I&#8217;d started playing a little bit with ruby-feedparser. Then I promptly forgot about it, as other more pressing matters came up. However, now [...]]]></description>
			<content:encoded><![CDATA[<p>So, having <a href="http://http://blog.gurski.org/index.php/2007/01/02/desperately-seeking-a-console-feed-reader/">complained about console feed readers</a>, I&#8217;ve decided to put up or shut up.  Or put my <del>money</del><ins>code</ins> where my mouth is.  A few months before I wrote the last article, I&#8217;d started playing a little bit with <a href="http://home.gna.org/ruby-feedparser/">ruby-feedparser</a>.  Then I promptly forgot about it, as other more pressing matters came up.</p>
<p><span id="more-16"></span></p>
<p>However, now I&#8217;m dealing with one of the readers I mentioned deciding to die partway through startup, and having marked all my feeds invalid or unread.  I noticed it Saturday morning, when I went to check some news before <a href="http://blog.catherinesandy.com/index.php/2007/02/10/be-vewwy-vewwy-quiet/">heading out to look at houses</a>, when the window that I keep the reader in was sitting at a prompt with an error on the screen.  So I re-ran the command, and within a minute, it had crashed again.  As near as I can guess, either some bad data came through on a feed, or its constantly-growing cache got corrupted.  Either way, even with logging set to <code>DEBUG</code> and the &#8220;diagnostic&#8221; flag specified, there&#8217;s no indication at all what is causing the problem.</p>
<p>So, instead of fighting with it, I&#8217;m writing my own feed reader.  I&#8217;ve dusted off the really simplistic &#8220;playing around&#8221; code, and have been working on turning it into a full-featured (or at least itch-scratching) <acronym title="Really Simple Syndication">RSS</acronym> and ATOM feed reader.  It&#8217;s nowhere near usable yet, but I&#8217;m currently able to pull down, parse, and save feeds, as well as check intelligently for updates (thanks, in part, to &#8220;<a href="http://metacircular.wordpress.com/2007/02/07/towards-polite-http-retrieval-in-scala/">Towards polite <acronym title="HyperText Transfer Protocol">HTTP</acronym> retrieval in Scala</a>&#8220;, which gave me the idea to let the remote webservers tell me whether a feed&#8217;s changed, in order to reduce load on everyone).</p>
<p>Instead of raw on-disk storage, or fairly opaque language-specific storage formats, I&#8217;ve been playing with using <a href="http://www.sqlite.org/index.html">SQLite</a> for storage.  It seems fairly lightweight (especially in comparison to MySQL or Postgres) while still providing a nice familiar <acronym title="Structured Query Language">SQL</acronym> engine, gives me a decent command-line tool to inspect and modify data, is fairly portable, and I was able to get up and running with <a href="http://rubyforge.org/projects/sqlite-ruby">sqlite-ruby</a> in practically no time at all.</p>
<p>I&#8217;m currently working on a functional (read: ugly, but it works for my purposes) interface in <a href="http://invisible-island.net/ncurses/">ncurses</a>, threads to deal with fetching &#038; updating in the background, category and configuration management, etc.  As I work on it off-and-on as I grab a few spare minutes, I&#8217;m not sure on the ETA right now, but hopefully something that I&#8217;m willing to let others see will be available &#8220;soon&#8221;.</p>
<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;partner=sociable" title="Print"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;partner=sociable" title="PDF"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Putting%20my%20money%20where%20my%20mouth%20is%20-%20http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F" title="Twitter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://identi.ca/notice/new?status_textarea=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F" title="Identi.ca"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/identica.png" title="Identi.ca" alt="Identi.ca" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;title=Putting%20my%20money%20where%20my%20mouth%20is" title="Reddit"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;title=Putting%20my%20money%20where%20my%20mouth%20is&amp;notes=So%2C%20having%20complained%20about%20console%20feed%20readers%2C%20I%27ve%20decided%20to%20put%20up%20or%20shut%20up.%20%20Or%20put%20my%20moneycode%20where%20my%20mouth%20is.%20%20A%20few%20months%20before%20I%20wrote%20the%20last%20article%2C%20I%27d%20started%20playing%20a%20little%20bit%20with%20ruby-feedparser.%20%20Then%20I%20promptly%20forgot" title="del.icio.us"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;title=Putting%20my%20money%20where%20my%20mouth%20is&amp;source=Mike%26%23039%3Bs+Place+Inarticulate+ramblings+on+whatever+strikes+my+fancy&amp;summary=So%2C%20having%20complained%20about%20console%20feed%20readers%2C%20I%27ve%20decided%20to%20put%20up%20or%20shut%20up.%20%20Or%20put%20my%20moneycode%20where%20my%20mouth%20is.%20%20A%20few%20months%20before%20I%20wrote%20the%20last%20article%2C%20I%27d%20started%20playing%20a%20little%20bit%20with%20ruby-feedparser.%20%20Then%20I%20promptly%20forgot" title="LinkedIn"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;title=Putting%20my%20money%20where%20my%20mouth%20is&amp;annotation=So%2C%20having%20complained%20about%20console%20feed%20readers%2C%20I%27ve%20decided%20to%20put%20up%20or%20shut%20up.%20%20Or%20put%20my%20moneycode%20where%20my%20mouth%20is.%20%20A%20few%20months%20before%20I%20wrote%20the%20last%20article%2C%20I%27d%20started%20playing%20a%20little%20bit%20with%20ruby-feedparser.%20%20Then%20I%20promptly%20forgot" title="Google Bookmarks"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;t=Putting%20my%20money%20where%20my%20mouth%20is" title="Facebook"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;title=Putting%20my%20money%20where%20my%20mouth%20is&amp;bodytext=So%2C%20having%20complained%20about%20console%20feed%20readers%2C%20I%27ve%20decided%20to%20put%20up%20or%20shut%20up.%20%20Or%20put%20my%20moneycode%20where%20my%20mouth%20is.%20%20A%20few%20months%20before%20I%20wrote%20the%20last%20article%2C%20I%27d%20started%20playing%20a%20little%20bit%20with%20ruby-feedparser.%20%20Then%20I%20promptly%20forgot" title="Digg"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;title=Putting%20my%20money%20where%20my%20mouth%20is" title="StumbleUpon"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;title=Putting%20my%20money%20where%20my%20mouth%20is" title="DZone"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Putting%20my%20money%20where%20my%20mouth%20is&amp;u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F" title="Fark"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://blog.gurski.org/index.php/feed/" title="RSS"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=Putting%20my%20money%20where%20my%20mouth%20is&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F" title="Slashdot"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F" title="Technorati"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;t=Putting%20my%20money%20where%20my%20mouth%20is&amp;s=So%2C%20having%20complained%20about%20console%20feed%20readers%2C%20I%27ve%20decided%20to%20put%20up%20or%20shut%20up.%20%20Or%20put%20my%20moneycode%20where%20my%20mouth%20is.%20%20A%20few%20months%20before%20I%20wrote%20the%20last%20article%2C%20I%27d%20started%20playing%20a%20little%20bit%20with%20ruby-feedparser.%20%20Then%20I%20promptly%20forgot" title="Tumblr"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Putting%20my%20money%20where%20my%20mouth%20is&amp;body=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F" title="email"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Putting%20my%20money%20where%20my%20mouth%20is&amp;link=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F" title="FriendFeed"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;title=Putting%20my%20money%20where%20my%20mouth%20is" title="Live"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://ping.fm/ref/?link=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;title=Putting%20my%20money%20where%20my%20mouth%20is&amp;body=So%2C%20having%20complained%20about%20console%20feed%20readers%2C%20I%27ve%20decided%20to%20put%20up%20or%20shut%20up.%20%20Or%20put%20my%20moneycode%20where%20my%20mouth%20is.%20%20A%20few%20months%20before%20I%20wrote%20the%20last%20article%2C%20I%27d%20started%20playing%20a%20little%20bit%20with%20ruby-feedparser.%20%20Then%20I%20promptly%20forgot" title="Ping.fm"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/ping.png" title="Ping.fm" alt="Ping.fm" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;title=Putting%20my%20money%20where%20my%20mouth%20is" title="blogmarks"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.blogospherenews.com/submit.php?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;title=Putting%20my%20money%20where%20my%20mouth%20is" title="Blogosphere News"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/blogospherenews.png" title="Blogosphere News" alt="Blogosphere News" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://current.com/clipper.htm?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;title=Putting%20my%20money%20where%20my%20mouth%20is" title="Current"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/current.png" title="Current" alt="Current" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.diggita.it/submit.php?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&title=Putting%20my%20money%20where%20my%20mouth%20is" title="Diggita"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/diggita.png" title="Diggita" alt="Diggita" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://globalgrind.com/submission/submit.aspx?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;type=Article&amp;title=Putting%20my%20money%20where%20my%20mouth%20is" title="Global Grind"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/globalgrind.png" title="Global Grind" alt="Global Grind" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;t=Putting%20my%20money%20where%20my%20mouth%20is" title="HackerNews"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://reporter.nl.msn.com/?fn=contribute&amp;Title=Putting%20my%20money%20where%20my%20mouth%20is&amp;URL=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;cat_id=6&amp;tag_id=31&amp;Remark=So%2C%20having%20complained%20about%20console%20feed%20readers%2C%20I%27ve%20decided%20to%20put%20up%20or%20shut%20up.%20%20Or%20put%20my%20moneycode%20where%20my%20mouth%20is.%20%20A%20few%20months%20before%20I%20wrote%20the%20last%20article%2C%20I%27d%20started%20playing%20a%20little%20bit%20with%20ruby-feedparser.%20%20Then%20I%20promptly%20forgot" title="MSN Reporter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/msnreporter.png" title="MSN Reporter" alt="MSN Reporter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;t=Putting%20my%20money%20where%20my%20mouth%20is" title="MySpace"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://posterous.com/share?linkto=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;title=Putting%20my%20money%20where%20my%20mouth%20is&amp;selection=So%2C%20having%20complained%20about%20console%20feed%20readers%2C%20I%27ve%20decided%20to%20put%20up%20or%20shut%20up.%20%20Or%20put%20my%20moneycode%20where%20my%20mouth%20is.%20%20A%20few%20months%20before%20I%20wrote%20the%20last%20article%2C%20I%27d%20started%20playing%20a%20little%20bit%20with%20ruby-feedparser.%20%20Then%20I%20promptly%20forgot" title="Posterous"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://socialogs.com/add_story.php?story_url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;story_title=Putting%20my%20money%20where%20my%20mouth%20is" title="Socialogs"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/socialogs.png" title="Socialogs" alt="Socialogs" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home/?status=tip%20@Techmeme%20http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F%20Putting%20my%20money%20where%20my%20mouth%20is" title="Suggest to Techmeme via Twitter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/techmeme.png" title="Suggest to Techmeme via Twitter" alt="Suggest to Techmeme via Twitter" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2007%2F02%2F14%2Fputting-my-money-where-my-mouth-is%2F&amp;submitHeadline=Putting%20my%20money%20where%20my%20mouth%20is&amp;submitSummary=So%2C%20having%20complained%20about%20console%20feed%20readers%2C%20I%27ve%20decided%20to%20put%20up%20or%20shut%20up.%20%20Or%20put%20my%20moneycode%20where%20my%20mouth%20is.%20%20A%20few%20months%20before%20I%20wrote%20the%20last%20article%2C%20I%27d%20started%20playing%20a%20little%20bit%20with%20ruby-feedparser.%20%20Then%20I%20promptly%20forgot&amp;submitCategory=science&amp;submitAssetType=text" title="Yahoo! Buzz"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/yahoobuzz.png" title="Yahoo! Buzz" alt="Yahoo! Buzz" class="sociable-hovers" /></a></li>
</ul>
</div>
<img src="http://blog.gurski.org/?ak_action=api_record_view&id=16&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.gurski.org/index.php/2007/02/14/putting-my-money-where-my-mouth-is/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

