<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments for My Diversions</title>
	<atom:link href="http://diversions.nfshost.com/blog/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://diversions.nfshost.com/blog</link>
	<description>Notes on things I'm thinking and doing</description>
	<pubDate>Wed, 20 Aug 2008 17:18:17 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>Comment on Take Two by Luke Evans</title>
		<link>http://diversions.nfshost.com/blog/2008/07/09/take-two/#comment-3654</link>
		<dc:creator>Luke Evans</dc:creator>
		<pubDate>Tue, 05 Aug 2008 08:25:37 +0000</pubDate>
		<guid isPermaLink="false">http://diversions.nfshost.com/blog/2008/07/09/take-two/#comment-3654</guid>
		<description>&lt;p&gt;Hi Tom,&lt;/p&gt;

&lt;p&gt;Thanks for fixing the formatting.  Looks like the tags in the string quotations got nixed by my not escaping the code blocks too.
As it stands, the code doesn't quite conform to specification ;-)&lt;/p&gt;

&lt;p&gt;-- Lwe&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi Tom,</p>

<p>Thanks for fixing the formatting.  Looks like the tags in the string quotations got nixed by my not escaping the code blocks too.
As it stands, the code doesn&#8217;t quite conform to specification <img src='http://diversions.nfshost.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>

<p>&#8211; Lwe</p>]]></content:encoded>
	</item>
	<item>
		<title>Comment on Laptop design stupidity by John R</title>
		<link>http://diversions.nfshost.com/blog/2008/08/03/laptop-design-stupidity/#comment-3603</link>
		<dc:creator>John R</dc:creator>
		<pubDate>Sun, 03 Aug 2008 23:04:33 +0000</pubDate>
		<guid isPermaLink="false">http://diversions.nfshost.com/blog/?p=47#comment-3603</guid>
		<description>&lt;p&gt;Yeah, I had the same thing with an Acer laptop.&lt;/p&gt;

&lt;p&gt;There's a light on the front of the laptop that indicates Wireless status -- but it's a button as well as a light, and not very obvious.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Yeah, I had the same thing with an Acer laptop.</p>

<p>There&#8217;s a light on the front of the laptop that indicates Wireless status &#8212; but it&#8217;s a button as well as a light, and not very obvious.</p>]]></content:encoded>
	</item>
	<item>
		<title>Comment on How to increase your Ycombinator Karma without really trying by Tom Davies</title>
		<link>http://diversions.nfshost.com/blog/2008/07/28/how-to-increase-your-ycombinator-karma-without-really-trying/#comment-3531</link>
		<dc:creator>Tom Davies</dc:creator>
		<pubDate>Sat, 02 Aug 2008 07:21:26 +0000</pubDate>
		<guid isPermaLink="false">http://diversions.nfshost.com/blog/?p=45#comment-3531</guid>
		<description>&lt;p&gt;@2 -- I only meant to be funny :-)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>@2 &#8212; I only meant to be funny <img src='http://diversions.nfshost.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
	<item>
		<title>Comment on How to increase your Ycombinator Karma without really trying by christo</title>
		<link>http://diversions.nfshost.com/blog/2008/07/28/how-to-increase-your-ycombinator-karma-without-really-trying/#comment-3387</link>
		<dc:creator>christo</dc:creator>
		<pubDate>Tue, 29 Jul 2008 07:23:38 +0000</pubDate>
		<guid isPermaLink="false">http://diversions.nfshost.com/blog/?p=45#comment-3387</guid>
		<description>&lt;p&gt;I don't get it. You mean be weird and funny?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I don&#8217;t get it. You mean be weird and funny?</p>]]></content:encoded>
	</item>
	<item>
		<title>Comment on How to increase your Ycombinator Karma without really trying by rmk</title>
		<link>http://diversions.nfshost.com/blog/2008/07/28/how-to-increase-your-ycombinator-karma-without-really-trying/#comment-3376</link>
		<dc:creator>rmk</dc:creator>
		<pubDate>Tue, 29 Jul 2008 00:31:21 +0000</pubDate>
		<guid isPermaLink="false">http://diversions.nfshost.com/blog/?p=45#comment-3376</guid>
		<description>&lt;p&gt;LMFAO, I can not stop laughing at this tom! fak me...&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>LMFAO, I can not stop laughing at this tom! fak me&#8230;</p>]]></content:encoded>
	</item>
	<item>
		<title>Comment on Take Two by Luke Evans</title>
		<link>http://diversions.nfshost.com/blog/2008/07/09/take-two/#comment-3367</link>
		<dc:creator>Luke Evans</dc:creator>
		<pubDate>Mon, 28 Jul 2008 19:55:52 +0000</pubDate>
		<guid isPermaLink="false">http://diversions.nfshost.com/blog/2008/07/09/take-two/#comment-3367</guid>
		<description>&lt;p&gt;Oops.  Forgot to escape the code blocks.  Oh well. [fixed :-)]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Oops.  Forgot to escape the code blocks.  Oh well. [fixed :-)]</p>]]></content:encoded>
	</item>
	<item>
		<title>Comment on Take Two by Luke Evans</title>
		<link>http://diversions.nfshost.com/blog/2008/07/09/take-two/#comment-3366</link>
		<dc:creator>Luke Evans</dc:creator>
		<pubDate>Mon, 28 Jul 2008 19:54:17 +0000</pubDate>
		<guid isPermaLink="false">http://diversions.nfshost.com/blog/2008/07/09/take-two/#comment-3366</guid>
		<description>&lt;p&gt;Unsurprisingly, if allow ourselves to use a few more list functions than things can improve still further:&lt;/p&gt;

&lt;pre&gt;out4 lst =
    let 
        processSplitSequence leading trailing = 
            (map fromChar leading) ++ (if isEmpty trailing then [] else ([""] ++ (map fromChar trailing) ++ [""]));
    in
        unwords $ concatMap (uncurry processSplitSequence) (map (splitAt 2) (group lst));&lt;/pre&gt;

&lt;p&gt;This does the same as out3, except that spaces are rendered between the tags and the span sequence.
This approach has the overt concept that sequences are composed of leading elements (the 2 items rendered ahead of the tagged block), and trailing elements (the remainder of any sequence).&lt;/p&gt;

&lt;p&gt;Again, 'group' really does most of the heavy-lifting.  After that, we simply split groups into leading and trailing sequences, then project each of these sequence pairs as the appropriate list of strings.  Then we concatenate the renderings from each group.  Finally, we use 'unwords' a library function that renders a list of strings as a single string with space separated elements.&lt;/p&gt;

&lt;p&gt;For the uninitiated, the weird 'uncurry' is only there because I chose to define processSplitSequence as a function of two clearly named arguments.  This has to be applied to a single pair (2-tuple), which is what uncurry does here.    An alternative could be:&lt;/p&gt;

&lt;pre&gt;out4a lst =
    let 
        processSplitSequence seqPair = 
            (map fromChar seqPair.#1) ++ (if isEmpty seqPair.#2 then [] else ([""] ++ (map fromChar seqPair.#2) ++ [""]));
    in
        unwords $ concatMap processSplitSequence (map (splitAt 2) (group lst));&lt;/pre&gt;

&lt;p&gt;...though it would be good in this case to create a let definition in processSplitSequence to capture "seqPair.#2" once.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Unsurprisingly, if allow ourselves to use a few more list functions than things can improve still further:</p>

<pre>out4 lst =
    let 
        processSplitSequence leading trailing = 
            (map fromChar leading) ++ (if isEmpty trailing then [] else ([""] ++ (map fromChar trailing) ++ [""]));
    in
        unwords $ concatMap (uncurry processSplitSequence) (map (splitAt 2) (group lst));</pre>

<p>This does the same as out3, except that spaces are rendered between the tags and the span sequence.
This approach has the overt concept that sequences are composed of leading elements (the 2 items rendered ahead of the tagged block), and trailing elements (the remainder of any sequence).</p>

<p>Again, &#8216;group&#8217; really does most of the heavy-lifting.  After that, we simply split groups into leading and trailing sequences, then project each of these sequence pairs as the appropriate list of strings.  Then we concatenate the renderings from each group.  Finally, we use &#8216;unwords&#8217; a library function that renders a list of strings as a single string with space separated elements.</p>

<p>For the uninitiated, the weird &#8216;uncurry&#8217; is only there because I chose to define processSplitSequence as a function of two clearly named arguments.  This has to be applied to a single pair (2-tuple), which is what uncurry does here.    An alternative could be:</p>

<pre>out4a lst =
    let 
        processSplitSequence seqPair = 
            (map fromChar seqPair.#1) ++ (if isEmpty seqPair.#2 then [] else ([""] ++ (map fromChar seqPair.#2) ++ [""]));
    in
        unwords $ concatMap processSplitSequence (map (splitAt 2) (group lst));</pre>

<p>&#8230;though it would be good in this case to create a let definition in processSplitSequence to capture &#8220;seqPair.#2&#8243; once.</p>]]></content:encoded>
	</item>
	<item>
		<title>Comment on Crowd Authentication for Google&#8217;s AppEngine by Tom Davies</title>
		<link>http://diversions.nfshost.com/blog/2008/04/14/crowd-authentication-for-googles-appengine/#comment-1764</link>
		<dc:creator>Tom Davies</dc:creator>
		<pubDate>Sat, 03 May 2008 02:12:06 +0000</pubDate>
		<guid isPermaLink="false">http://diversions.nfshost.com/blog/2008/04/14/crowd-authentication-for-googles-appengine/#comment-1764</guid>
		<description>&lt;p&gt;Thanks for the tip -- I've been using Komodo -- I'll see if Pydev and Pylint suit me better.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Thanks for the tip &#8212; I&#8217;ve been using Komodo &#8212; I&#8217;ll see if Pydev and Pylint suit me better.</p>]]></content:encoded>
	</item>
	<item>
		<title>Comment on Crowd Authentication for Google&#8217;s AppEngine by Heikki Toivonen</title>
		<link>http://diversions.nfshost.com/blog/2008/04/14/crowd-authentication-for-googles-appengine/#comment-1755</link>
		<dc:creator>Heikki Toivonen</dc:creator>
		<pubDate>Fri, 02 May 2008 19:21:53 +0000</pubDate>
		<guid isPermaLink="false">http://diversions.nfshost.com/blog/2008/04/14/crowd-authentication-for-googles-appengine/#comment-1755</guid>
		<description>&lt;p&gt;When I started out with Python (I had extensive C++ background before that) I also found out I hated the situation when I made typos and found those much later when running my code. However, I solved my problems by using a couple of strategies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Pydev plugin for Eclipse and configure Pydev to use Pylint&lt;/li&gt;
&lt;li&gt;Write lots and lots of unit tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first of these catches most of my typos right there as I make them (and a lot of other errors too), and also provides a pretty good code completion support. I've never relied on code completion with any language, so I don't actually see 100% support as a big deal.&lt;/p&gt;

&lt;p&gt;The second point is good regardless of the programming language, but due to Python's nature I feel unit tests can cover some of the things you'd otherwise expect a compiler to do. And because Python makes it really easy to create and run unit tests it is a win-win in my  opinion.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>When I started out with Python (I had extensive C++ background before that) I also found out I hated the situation when I made typos and found those much later when running my code. However, I solved my problems by using a couple of strategies:</p>

<ul>
<li>Use Pydev plugin for Eclipse and configure Pydev to use Pylint</li>
<li>Write lots and lots of unit tests</li>
</ul>

<p>The first of these catches most of my typos right there as I make them (and a lot of other errors too), and also provides a pretty good code completion support. I&#8217;ve never relied on code completion with any language, so I don&#8217;t actually see 100% support as a big deal.</p>

<p>The second point is good regardless of the programming language, but due to Python&#8217;s nature I feel unit tests can cover some of the things you&#8217;d otherwise expect a compiler to do. And because Python makes it really easy to create and run unit tests it is a win-win in my  opinion.</p>]]></content:encoded>
	</item>
	<item>
		<title>Comment on EC2, Confluence, S3 and PostgreSQL by Tom Davies</title>
		<link>http://diversions.nfshost.com/blog/2007/12/22/ec2-confluence-s3-and-postgresql/#comment-1559</link>
		<dc:creator>Tom Davies</dc:creator>
		<pubDate>Sat, 12 Apr 2008 11:12:02 +0000</pubDate>
		<guid isPermaLink="false">http://diversions.nfshost.com/blog/2007/12/22/ec2-confluence-s3-and-postgresql/#comment-1559</guid>
		<description>&lt;p&gt;PS: I'm not familiar with MySQL NDBIO...&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>PS: I&#8217;m not familiar with MySQL NDBIO&#8230;</p>]]></content:encoded>
	</item>
</channel>
</rss>
