<?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/"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Yabfog &#187; xml</title>
	<atom:link href="http://yabfog.com/blog/tag/xml/feed" rel="self" type="application/rss+xml" />
	<link>http://yabfog.com/blog</link>
	<description>Yet another blog full of gas</description>
	<lastBuildDate>Tue, 17 Apr 2012 18:51:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<cloud domain='yabfog.com' port='80' path='/blog/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Jaiku Planet Venus Filter</title>
		<link>http://yabfog.com/blog/2008/03/12/jaiku-planet-venus-filter</link>
		<comments>http://yabfog.com/blog/2008/03/12/jaiku-planet-venus-filter#comments</comments>
		<pubDate>Thu, 13 Mar 2008 03:27:36 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[jaiku]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[venus]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://yabfog.com/wp/2008/03/12/jaiku-planet-venus-filter</guid>
		<description><![CDATA[Just started exploring Jaiku and, coincidentally, Planet Venus. One of the cool things about Jaiku is that it aggregates your other web presences (like your blog, twitter, del.icio.us, and flickr posts) and integrates them into Jaiku presence stream. The down side of this is that it's not as good at that as Planet Venus, and [...]]]></description>
			<content:encoded><![CDATA[<p>Just started exploring <a href="http://danmactough.jaiku.com/">Jaiku</a> and, coincidentally, <a href="http://www.intertwingly.net/code/venus/">Planet Venus</a>. One of the cool things about Jaiku is that it aggregates your other web presences (like your blog, twitter, del.icio.us, and flickr posts) and integrates them into Jaiku presence stream. The down side of this is that it's not as good at that as Planet Venus, and then if you use Planet Venus to create a aggregation of your web presences and you include Jaiku, then you've got annoying duplication.</p>
<p>So, I'm not much of a Python programmer, but I wrote this <a href="http://yabfog.com/files/fix_jaikus.py">Planet Venus filter</a> that looks at each entry, and if it detects that it's a Jaiku presence update, it only includes it if it originated via Jaiku. In other words, it filters out all the duplicates.</p>
<p>If you understood any of that, you may find this helpful. If not, nevermind.</p>
<p><code><br />
"""<br />
For jaiku presence entries, only retain entries that originate from jaiku<br />
(as opposed to grabbed via web feeds)<br />
"""<br />
import sys, xml.dom.minidom<br />
entry = xml.dom.minidom.parse(sys.stdin).documentElement<br />
entry_id = entry.getElementsByTagName('id')[0].firstChild.data<br />
for node in entry.getElementsByTagName('link'):<br />
  if node.getAttribute('rel') == 'alternate':<br />
    entry_link = node.getAttribute('href')<br />
    break<br />
if entry_id.find('jaiku.com/presence') &gt; 0 and (entry_id != entry_link):<br />
  sys.exit(1)<br />
print entry.toxml('utf-8')<br />
</code></p>
<p><em>(Updated to fix a bug on line 11.)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2008/03/12/jaiku-planet-venus-filter/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Character Encoding Help</title>
		<link>http://yabfog.com/blog/2007/11/17/character-encoding-help</link>
		<comments>http://yabfog.com/blog/2007/11/17/character-encoding-help#comments</comments>
		<pubDate>Sat, 17 Nov 2007 15:58:02 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://yabfog.com/wp/2007/11/17/character-encoding-help</guid>
		<description><![CDATA[Tom Morris is pulling his hair out dealing with XML character encoding issues. I've gone through this myself. I found that the SimplePie feed parser has great logic for dealing with this, so I adapted it to my needs in my PHP class XMLParseIntoArray. I think I've expanded on SimplePie's approach a bit, but it's [...]]]></description>
			<content:encoded><![CDATA[<p>Tom Morris is <a href="http://tommorris.org/blog/2007/11/17#When:10:15:19">pulling his hair out dealing with XML character encoding</a> issues. I've gone through this myself. I found that the <a href="http://simplepie.org">SimplePie</a> feed parser has great logic for dealing with this, so I adapted it to my needs in my PHP class <a href="https://code.yabfog.com/svn/feedparser/trunk/class.xmlparseintoarray.php">XMLParseIntoArray</a>. I think I've expanded on SimplePie's approach a bit, but it's still a work in progress. YMMV. Hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2007/11/17/character-encoding-help/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Leash and Feedparser</title>
		<link>http://yabfog.com/blog/2007/06/03/leash-and-feedparser</link>
		<comments>http://yabfog.com/blog/2007/06/03/leash-and-feedparser#comments</comments>
		<pubDate>Mon, 04 Jun 2007 02:26:21 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://yabfog.com/wp/2007/06/03/leash-and-feedparser/</guid>
		<description><![CDATA[Maybe I'll write up something a little more formal in the future. For now, I just want to publish this in case it's useful to someone. Les Orchard posted a blurb that indicated that he was looking for a PHP class to perform HTTP requests with conditional GET support. Well, a while ago I was [...]]]></description>
			<content:encoded><![CDATA[<p>Maybe I'll write up something a little more formal in the future. For now, I just want to publish this in case it's useful to someone.</p>
<p><a href="http://blogs.opml.org/decafbad/2007/05/21#When:10:05:41PM">Les Orchard posted a blurb</a> that indicated that he was looking for a PHP class to perform HTTP requests with conditional GET support. Well, a while ago I was looking for that, too. Because I was working on a replacement for Magpie RSS (see below), I decided to use <a href="http://snoopy.sourceforge.net/">Snoopy</a> as my HTTP client. I then wrote a brief extension, Leash, to provide a cache-enabled front end to Snoopy. Leash automatically caches the HTTP results, the time of the request, and the Last Modified and Etag HTTP headers. When you request a page you've previously requested, Leash first checks to see if the cached copy is older than the maximum cache age you've specified (or the default of 1 hour), and if the cache is too old, Leash performs a conditional GET. The <a href="https://code.yabfog.com/svn/feedparser/trunk/class.leash.php">latest version of Leash</a> (which I bundle with Snoopy) is in my Subversion repository.</p>
<p>Also in that repository is my replacement for <a href="http://magpierss.sourceforge.net/">Magpie RSS</a>. I always liked Magpie, but it didn't quite work for me and I also wanted an OPML parser. So I wrote one. Actually, first I wrote a <a href="https://code.yabfog.com/svn/feedparser/trunk/class.xmlparseintoarray.php">generic PHP XML parser</a>. Then I wrote the <a href="https://code.yabfog.com/svn/feedparser/trunk/class.opmlparse.php">OPML parser</a> and <a href="https://code.yabfog.com/svn/feedparser/trunk/class.feedparse.php">Feed parser</a>.</p>
<p>Sorry, but I currently don't have time for documentation. Or support. That probably makes this of very limited utility to all but the most daring. If you're a PHP junkie, you'll probably be able to peruse the code and get the gist. And here's <a href="http://yabfog.com/files/podcast-add.phps">an example of how I'm using it to help manage my podcasts</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2007/06/03/leash-and-feedparser/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Optimal Bugfix</title>
		<link>http://yabfog.com/blog/2006/06/15/optimal-bugfix</link>
		<comments>http://yabfog.com/blog/2006/06/15/optimal-bugfix#comments</comments>
		<pubDate>Thu, 15 Jun 2006 23:14:43 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[announcements]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xsl/xslt]]></category>

		<guid isPermaLink="false">http://yabfog.com/blog/2006/06/15/optimal-bugfix/</guid>
		<description><![CDATA[I released a bugfix for Optimal today. The latest version is 0.4c. If you haven't experienced any weird problems with the 0.4 release, don't bother updating. Thanks to Chris Pirillo for bringing the problem to my attention and working through it with me.]]></description>
			<content:encoded><![CDATA[<p>I released a bugfix for Optimal today. The <a href="http://yabfog.com/blog/optimal/#download">latest version is 0.4c</a>. If you haven't experienced any <a href="http://yabfog.com/blog/optimal/#gotcha">weird problems</a> with the 0.4 release, don't bother updating.</p>
<p>Thanks to <a href="http://chris.pirillo.com">Chris Pirillo</a> for bringing the problem to my attention and working through it with me.</p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2006/06/15/optimal-bugfix/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Optimal OPML Browser Update v. 0.4</title>
		<link>http://yabfog.com/blog/2006/06/12/optimal-opml-browser-update-v-04</link>
		<comments>http://yabfog.com/blog/2006/06/12/optimal-opml-browser-update-v-04#comments</comments>
		<pubDate>Mon, 12 Jun 2006 23:39:01 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[announcements]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xsl/xslt]]></category>

		<guid isPermaLink="false">http://yabfog.com/blog/2006/06/12/optimal-opml-browser-update-v-04/</guid>
		<description><![CDATA[I've completed a major rewrite of my OPML browser, Optimal. I didn't manage to document all of the changes, they were so numerous. Highlights are: Object-oriented reimplementation, making it more portable to other applications Same code may be used as a WordPress plugin -- replaces the OPML Renderer plugin for WordPress RSS items now include [...]]]></description>
			<content:encoded><![CDATA[<p>I've completed a major rewrite of my OPML browser, <strong><a href="http://www.optimalbrowser.com/">Optimal</a></strong>.</p>
<p>I didn't manage to document all of the <a href="http://yabfog.com/blog/optimal/#changes">changes</a>, they were so numerous. Highlights are:</p>
<ul>
<li>Object-oriented reimplementation, making it more portable to other applications</li>
<li>Same code may be used as a WordPress plugin -- replaces the OPML Renderer plugin for WordPress</li>
<li>RSS items now include descriptions, so you can browse the feeds without subscribing or visiting the home page</li>
<li>New <a href="http://www.optimalbrowser.com/widgetwiz.php">widget generator</a> to generate HTML to include Optimal on your web site</li>
</ul>
<p><a href="http://yabfog.com/blog/optimal/">More...</a> | <a href="http://yabfog.com/blog/optimal/#download">Download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2006/06/12/optimal-opml-browser-update-v-04/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
	</item>
		<item>
		<title>Optimal OPML Browser Update v. 0.4pre1</title>
		<link>http://yabfog.com/blog/2006/03/29/optimal-opml-browser-update-v-04pre1</link>
		<comments>http://yabfog.com/blog/2006/03/29/optimal-opml-browser-update-v-04pre1#comments</comments>
		<pubDate>Wed, 29 Mar 2006 17:52:08 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[announcements]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xsl/xslt]]></category>

		<guid isPermaLink="false">http://yabfog.com/blog/2006/03/29/optimal-opml-browser-update-v-04pre1/</guid>
		<description><![CDATA[I'm still working on a significant rewrite of my OPML browser, Optimal, but I've decided to release the current working version in the meantime because it addresses a couple of significant usability comments I've had. Specifically: There are now links to expand/collapse all nodes, and There is a new query string parameter, depth, which allows [...]]]></description>
			<content:encoded><![CDATA[<p>I'm still working on a significant rewrite of my OPML browser, <strong><a href="http://www.optimalbrowser.com/">Optimal</a></strong>, but I've decided to release the current working version in the meantime because it addresses a couple of significant usability comments I've had.</p>
<p>Specifically:</p>
<ol>
<li>There are now links to expand/collapse all nodes, and</li>
<li>There is a new query string parameter, depth, which allows you to specify the initial expansion state.</li>
</ol>
<ul>
<li><a href="http://yabfog.com/blog/optimal/#changes">Changes</a></li>
</ul>
<p><a class="imagelink" href="http://yabfog.com/blog/wp-content/uploads/2006/03/optimal04pre1.gif" title="Optimal Screen Cap 0.4pre1"><img id="image76" src="http://yabfog.com/blog/wp-content/uploads/2006/03/optimal04pre1.thumbnail.gif" alt="Optimal Screen Cap 0.4pre1" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2006/03/29/optimal-opml-browser-update-v-04pre1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://yabfog.com/blog/wp-content/uploads/2006/03/optimal04pre1.thumbnail.gif" />
		<media:content url="http://yabfog.com/blog/wp-content/uploads/2006/03/optimal04pre1.thumbnail.gif" medium="image">
			<media:title type="html">Optimal Screen Cap 0.4pre1</media:title>
		</media:content>
	</item>
		<item>
		<title>Optimal OPML Browser Update v. 0.3a</title>
		<link>http://yabfog.com/blog/2006/03/09/optimal-opml-browser-update-v-03a</link>
		<comments>http://yabfog.com/blog/2006/03/09/optimal-opml-browser-update-v-03a#comments</comments>
		<pubDate>Fri, 10 Mar 2006 00:33:28 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[announcements]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xsl/xslt]]></category>

		<guid isPermaLink="false">http://yabfog.com/blog/?p=68</guid>
		<description><![CDATA[Relatively minor updates to Optimal. Changes]]></description>
			<content:encoded><![CDATA[<p>Relatively minor updates to <a href="http://yabfog.com/blog/optimal/">Optimal</a>.</p>
<ul>
<li><a href="http://yabfog.com/blog/optimal/#changes">Changes</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2006/03/09/optimal-opml-browser-update-v-03a/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
	</item>
		<item>
		<title>Optimal OPML Browser Update v. 0.3</title>
		<link>http://yabfog.com/blog/2006/03/02/optimal-opml-browser-update-v-03</link>
		<comments>http://yabfog.com/blog/2006/03/02/optimal-opml-browser-update-v-03#comments</comments>
		<pubDate>Thu, 02 Mar 2006 23:47:07 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[announcements]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xsl/xslt]]></category>

		<guid isPermaLink="false">http://yabfog.com/blog/2006/03/02/optimal-opml-browser-update-v-03/</guid>
		<description><![CDATA[Thanks to Adam Green, who gave me loads of feedback, I've made quite a few enhancements to my OPML browser, Optimal. Changes Query String Parameters Use Cases/Examples]]></description>
			<content:encoded><![CDATA[<p>Thanks to <a href="http://darwinianweb.com/">Adam Green</a>, who gave me loads of feedback, I've made quite a few enhancements to my OPML browser, <a href="http://yabfog.com/blog/optimal/">Optimal</a>.</p>
<ul>
<li><a href="http://yabfog.com/blog/optimal/#changes">Changes</a></li>
<li><a href="http://yabfog.com/blog/optimal/#queryString">Query String Parameters</a></li>
<li><a href="http://yabfog.com/blog/optimal/#useCases">Use Cases/Examples</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2006/03/02/optimal-opml-browser-update-v-03/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
	</item>
		<item>
		<title>Optimal OPML Browser Update v. 0.2</title>
		<link>http://yabfog.com/blog/2006/02/25/optimal-opml-browser-update-v02</link>
		<comments>http://yabfog.com/blog/2006/02/25/optimal-opml-browser-update-v02#comments</comments>
		<pubDate>Sat, 25 Feb 2006 23:56:40 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[announcements]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xsl/xslt]]></category>

		<guid isPermaLink="false">http://yabfog.com/wp/2006/02/25/optimal-opml-browser-update-v02/</guid>
		<description><![CDATA[Minor bug-fix update to permit installation in a subdirectory of the web document root.]]></description>
			<content:encoded><![CDATA[<p>Minor bug-fix update to permit installation in a subdirectory of the web document root.</p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2006/02/25/optimal-opml-browser-update-v02/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Optimal OPML Browser Released</title>
		<link>http://yabfog.com/blog/2006/02/23/optimal-opml-browser-released</link>
		<comments>http://yabfog.com/blog/2006/02/23/optimal-opml-browser-released#comments</comments>
		<pubDate>Thu, 23 Feb 2006 18:22:50 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[announcements]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xsl/xslt]]></category>

		<guid isPermaLink="false">http://yabfog.com/wp/2006/02/23/optimal-opml-browser-released/</guid>
		<description><![CDATA[I've released a significant revision to my OPML browser: Optimal. If you hate the name, just be glad I'm not going to camel-case it.]]></description>
			<content:encoded><![CDATA[<p>I've released a significant revision to my OPML browser: <a href="http://www.optimalbrowser.com/">Optimal</a>.</p>
<p>If you hate the name, just be glad I'm not going to camel-case it. <img src='http://yabfog.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://yabfog.com/blog/2006/02/23/optimal-opml-browser-released/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
	</item>
	</channel>
</rss>

