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

<channel>
	<title>Christer's blog o' fun</title>
	<atom:link href="http://cogo.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cogo.wordpress.com</link>
	<description>Christer Edvartsen's blog about ... things!</description>
	<pubDate>Thu, 03 Jul 2008 15:20:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
			<item>
		<title>A bit late</title>
		<link>http://cogo.wordpress.com/2008/07/03/a-bit-late/</link>
		<comments>http://cogo.wordpress.com/2008/07/03/a-bit-late/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 15:20:21 +0000</pubDate>
		<dc:creator>christer</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[beer]]></category>

		<category><![CDATA[summer]]></category>

		<guid isPermaLink="false">http://cogo.wordpress.com/?p=321</guid>
		<description><![CDATA[I&#8217;m a bit late with the second part of the PHP_CodeSniffer series. I have had lots of stuff to do at work and at home this week, so I&#8217;ll hopefully get to finish the post this week. The fact that the weather keeps getting warmer (which also makes the beer seem colder) may also be [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;m a bit late with the second part of the PHP_CodeSniffer series. I have had lots of stuff to do at work and at home this week, so I&#8217;ll hopefully get to finish the post this week. The fact that the weather keeps getting warmer (which also makes the beer seem colder) may also be a part of the problem&#8230;</p>
<p>Cheers!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cogo.wordpress.com/321/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cogo.wordpress.com/321/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cogo.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cogo.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cogo.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cogo.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cogo.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cogo.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cogo.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cogo.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cogo.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cogo.wordpress.com/321/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cogo.wordpress.com&blog=66533&post=321&subd=cogo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cogo.wordpress.com/2008/07/03/a-bit-late/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/cogo-128.jpg" medium="image">
			<media:title type="html">christer</media:title>
		</media:content>
	</item>
		<item>
		<title>AOTW 27, 2008: Bert Jansch - The Black Swan</title>
		<link>http://cogo.wordpress.com/2008/06/30/aotw-27-2008-bert-jansch-the-black-swan/</link>
		<comments>http://cogo.wordpress.com/2008/06/30/aotw-27-2008-bert-jansch-the-black-swan/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 07:00:50 +0000</pubDate>
		<dc:creator>christer</dc:creator>
		
		<category><![CDATA[AOTW]]></category>

		<category><![CDATA[Music]]></category>

		<category><![CDATA[bert jansch]]></category>

		<category><![CDATA[beth orton]]></category>

		<category><![CDATA[pentangle]]></category>

		<guid isPermaLink="false">http://cogo.wordpress.com/?p=297</guid>
		<description><![CDATA[This week I have chosen the latest album from the great Scottish folk musician (Her)bert Jansch. Some of you might know him from the band Pentangle, which he was a founding member of.
The Black Swan is not his best album IMO, but I have listened to it quite a lot the last months. This album [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This week I have chosen the latest album from the great Scottish folk musician <a href="http://en.wikipedia.org/wiki/Bert_Jansch" target="_blank">(Her)bert Jansch</a>. Some of you might know him from the band <a href="http://en.wikipedia.org/wiki/Pentangle_(band)" target="_blank">Pentangle</a>, which he was a founding member of.</p>
<p>The Black Swan is not his best album IMO, but I have listened to it quite a lot the last months. This album has a tendency to bring back some good memories for me and since the last couple of months have not been too great in my personal life I have listened to it more than usual.</p>
<p>My three favorite songs are:</p>
<ul>
<li>Hey Pretty Girl</li>
<li>High Days</li>
<li>Watch the Stars</li>
</ul>
<p>&#8220;Watch the Stars&#8221; is also featured on Pentangles <a href="http://en.wikipedia.org/wiki/Sweet_Child" target="_blank">Sweet Child</a> album from &#8216;68. The Black Swan version of this song features <a href="http://en.wikipedia.org/wiki/Beth_Orton" target="_blank">Beth Orton</a> on vocals together with Jansch. She also sings on some of the other tracks on The Black Swan album.</p>
<p>Expect more from Jansch on my AOTW series!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cogo.wordpress.com/297/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cogo.wordpress.com/297/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cogo.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cogo.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cogo.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cogo.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cogo.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cogo.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cogo.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cogo.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cogo.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cogo.wordpress.com/297/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cogo.wordpress.com&blog=66533&post=297&subd=cogo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cogo.wordpress.com/2008/06/30/aotw-27-2008-bert-jansch-the-black-swan/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/cogo-128.jpg" medium="image">
			<media:title type="html">christer</media:title>
		</media:content>
	</item>
		<item>
		<title>Zend_Service_ReCaptcha in the standard incubator</title>
		<link>http://cogo.wordpress.com/2008/06/28/zend_service_recaptcha-in-the-standard-incubator/</link>
		<comments>http://cogo.wordpress.com/2008/06/28/zend_service_recaptcha-in-the-standard-incubator/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 10:24:21 +0000</pubDate>
		<dc:creator>christer</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[captcha]]></category>

		<category><![CDATA[incubator]]></category>

		<category><![CDATA[recaptcha]]></category>

		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://cogo.wordpress.com/?p=316</guid>
		<description><![CDATA[I imported the Zend_Service_ReCaptcha stuff to the Zend Framework standard incubator yesterday. You can access it from the subversion repository at http://framework.zend.com/svn/framework/standard/incubator/library/Zend/Service/.
The component also includes a class to use the mail hide feature over at recaptcha.net that allows you to render an email address as something like user&#8230;@foo.com and the reader has to solve a [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I imported the Zend_Service_ReCaptcha stuff to the <a href="http://framework.zend.com/" target="_blank">Zend Framework</a> standard incubator yesterday. You can access it from the subversion repository at <a href="http://framework.zend.com/svn/framework/standard/incubator/library/Zend/Service/" target="_blank">http://framework.zend.com/svn/framework/standard/incubator/library/Zend/Service/</a>.</p>
<p>The component also includes a class to use the mail hide feature over at <a href="http://recaptcha.net/" target="_blank">recaptcha.net</a> that allows you to render an email address as something like user&#8230;@foo.com and the reader has to solve a recaptcha to see the complete email address.</p>
<p>No documentation has been made yet but I will include some basic usage of the component in this post.</p>
<h2>Display a ReCaptcha in a form</h2>
<p>First you need to register at <a href="http://recaptcha.net/" target="_blank">recaptcha.net</a> to get a set of public/private keys for the domain you want to use the recaptcha on. If you develop something locally and you use <em>localhost</em> as hostname you will need to register <em>localhost</em> on the recaptcha site to get the keys. Once you have the keys you are good to go!</p>
<p>When displaying the captcha you will only need the public key. The private key will be used when you verify the user input to see if a user has solved the captcha or not.</p>
<pre name="code" class="php">

&lt;?php
/** @see Zend_Service_ReCaptcha */
require_once &#039;Zend/Service/ReCaptcha.php&#039;;

$publicKey = &#039;my public key from recaptcha.net&#039;;
$reCaptcha = new Zend_Service_ReCaptcha($publicKey);
?&gt;

&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;ReCaptcha test&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;form action=&quot;&quot; method=&quot;post&quot;&gt;
            &lt;?= $reCaptcha ?&gt;
            &lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Submit&quot; /&gt;
        &lt;/form&gt;
    &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Replace the public key with your own public key and you will see something that hopefully resembles this screenshot:</p>
<p><img class="alignnone size-full wp-image-317" src="http://cogo.files.wordpress.com/2008/06/recaptcha_1.png?w=334&h=163" alt="Zend_Service_ReCaptcha" width="334" height="163" /></p>
<h2>Verify the user input</h2>
<p>Now that we have our recaptcha in place we need to verify the user input. To do that we have to expand the block of php code at the top of our example here a bit.</p>
<p>PS! The syntax highlight plugin manages to write !emptyempty in the code below, so you&#8217;ll need to fix that if you copy the code.</p>
<pre name="code" class="php">

&lt;?php
/** @see Zend_Service_ReCaptcha */
require_once &#039;Zend/Service/ReCaptcha.php&#039;;

$publicKey = &#039;my public key from recaptcha.net&#039;;
$reCaptcha = new Zend_Service_ReCaptcha($publicKey);

// See if the form has been posted and that the two fields from the
// recaptcha are not empty
if (isset($_POST[&#039;submit&#039;]) &amp;&amp;
    !empty($_POST[&#039;recaptcha_challenge_field&#039;]) &amp;&amp;
    !empty($_POST[&#039;recaptcha_response_field&#039;]) ) {
    // Set the private key. We need this to verify user input
    $privateKey = &#039;my private key&#039;;
    $reCaptcha-&gt;setPrivateKey($privateKey);

    // See if the input is valid
    $response = $reCaptcha-&gt;verify($_POST[&#039;recaptcha_challenge_field&#039;],
                                   $_POST[&#039;recaptcha_response_field&#039;]);

    if (!$response-&gt;isValid()) {
        // Not valid. Add the error message from the recaptcha web service
        // to the recaptcha object so it will be shown in the recaptcha
        $reCaptcha-&gt;setParam(&#039;error&#039;, $response-&gt;getErrorCode());
    } else {
        // Success! The recaptcha has been solved
    }
}
?&gt;

&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;ReCaptcha test&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;form action=&quot;&quot; method=&quot;post&quot;&gt;
            &lt;?= $reCaptcha ?&gt;
            &lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Submit&quot; /&gt;
        &lt;/form&gt;
    &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>And thats it!</p>
<h2>Hide email addresses with Zend_Service_ReCaptcha_MailHide</h2>
<p>If you need to display an email address you can hide parts of it using the Zend_Service_ReCaptcha_MailHide component. You need a separate pair of public/private keys for this so head over to recaptcha.net and grab those keys.</p>
<p>Lets say we want to hide mynewemailaddress@domain.com. Do something like the following piece of code:</p>
<pre name="code" class="php">

/** @see Zend_Service_ReCaptcha */
require_once &#039;Zend/Service/ReCaptcha/MailHide.php&#039;;

$publicKey = &#039;my public key&#039;;
$privateKey = &#039;my super duper private key&#039;;

$mailHide = new Zend_Service_ReCaptcha_MailHide($publicKey,
                                                $privateKey,
                                                &#039;mynewemailaddress@domain.com&#039;);

print($mailHide);
</pre>
<p>The output of this will be myne&#8230;@domain.com except that the &#8220;&#8230;&#8221; part will have link to a JavaScript popup that displays a recaptcha, and once the user solves it, the complete email address will be displayed.</p>
<p>So &#8230; feel free to play around with the component and if you find some errors or feel that something is missing, let me know! I will add some more stuff about custom themes the next couple of days and maybe make a Zend Framework theme for the recaptcha.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cogo.wordpress.com/316/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cogo.wordpress.com/316/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cogo.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cogo.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cogo.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cogo.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cogo.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cogo.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cogo.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cogo.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cogo.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cogo.wordpress.com/316/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cogo.wordpress.com&blog=66533&post=316&subd=cogo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cogo.wordpress.com/2008/06/28/zend_service_recaptcha-in-the-standard-incubator/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/cogo-128.jpg" medium="image">
			<media:title type="html">christer</media:title>
		</media:content>

		<media:content url="http://cogo.files.wordpress.com/2008/06/recaptcha_1.png" medium="image">
			<media:title type="html">Zend_Service_ReCaptcha</media:title>
		</media:content>
	</item>
		<item>
		<title>More HDR madness</title>
		<link>http://cogo.wordpress.com/2008/06/27/more-hdr-madness/</link>
		<comments>http://cogo.wordpress.com/2008/06/27/more-hdr-madness/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 18:39:31 +0000</pubDate>
		<dc:creator>christer</dc:creator>
		
		<category><![CDATA[Photography]]></category>

		<category><![CDATA[hdr]]></category>

		<guid isPermaLink="false">http://cogo.wordpress.com/?p=315</guid>
		<description><![CDATA[Stumbled over a couple of blog posts with lots of cool HDR pictures:

20 beautiful hdr pictures
20 beautiful hdr pictures part 2
20 beautiful hdr pictures part 3

I still haven&#8217;t been able to try out some HDR stuff though, but when I get some more time on my hands I&#8217;ll give it a shot!
    [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Stumbled over a couple of blog posts with lots of cool HDR pictures:</p>
<ol>
<li><a href="http://abduzeedo.com/20-beautiful-hdr-pictures" target="_blank">20 beautiful hdr pictures</a></li>
<li><a href="http://abduzeedo.com/20-beautiful-hdr-pictures-part-2" target="_blank">20 beautiful hdr pictures part 2</a></li>
<li><a href="http://abduzeedo.com/20-beautiful-hdr-pictures-part-3" target="_blank">20 beautiful hdr pictures part 3</a></li>
</ol>
<p>I still haven&#8217;t been able to try out some HDR stuff though, but when I get some more time on my hands I&#8217;ll give it a shot!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cogo.wordpress.com/315/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cogo.wordpress.com/315/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cogo.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cogo.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cogo.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cogo.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cogo.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cogo.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cogo.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cogo.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cogo.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cogo.wordpress.com/315/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cogo.wordpress.com&blog=66533&post=315&subd=cogo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cogo.wordpress.com/2008/06/27/more-hdr-madness/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/cogo-128.jpg" medium="image">
			<media:title type="html">christer</media:title>
		</media:content>
	</item>
		<item>
		<title>And the new CEO of VG Multimedia is&#8230;</title>
		<link>http://cogo.wordpress.com/2008/06/26/and-the-new-ceo-of-vg-multimedia-is/</link>
		<comments>http://cogo.wordpress.com/2008/06/26/and-the-new-ceo-of-vg-multimedia-is/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 22:20:07 +0000</pubDate>
		<dc:creator>christer</dc:creator>
		
		<category><![CDATA[Work related]]></category>

		<category><![CDATA[ceo]]></category>

		<category><![CDATA[oter]]></category>

		<category><![CDATA[vg multimedia]]></category>

		<guid isPermaLink="false">http://cogo.wordpress.com/?p=314</guid>
		<description><![CDATA[&#8230;not me, that&#8217;s for sure! My employer, VG Multimedia, announced the new CEO today, and it&#8217;s none other than Jo Christian Oterhals! Congratulations oter!
       ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>&#8230;not me, that&#8217;s for sure! My employer, VG Multimedia, announced the new CEO today, and it&#8217;s none other than <a href="http://www.oter.net/" target="_blank">Jo Christian Oterhals</a>! Congratulations oter!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cogo.wordpress.com/314/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cogo.wordpress.com/314/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cogo.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cogo.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cogo.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cogo.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cogo.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cogo.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cogo.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cogo.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cogo.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cogo.wordpress.com/314/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cogo.wordpress.com&blog=66533&post=314&subd=cogo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cogo.wordpress.com/2008/06/26/and-the-new-ceo-of-vg-multimedia-is/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/cogo-128.jpg" medium="image">
			<media:title type="html">christer</media:title>
		</media:content>
	</item>
		<item>
		<title>Enforcing a PHP coding standard using PHP_CodeSniffer - Part 1</title>
		<link>http://cogo.wordpress.com/2008/06/25/enforcing-a-php-coding-standard-using-php_codesniffer-part-1/</link>
		<comments>http://cogo.wordpress.com/2008/06/25/enforcing-a-php-coding-standard-using-php_codesniffer-part-1/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 20:45:46 +0000</pubDate>
		<dc:creator>christer</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[codesniffer]]></category>

		<category><![CDATA[coding standard]]></category>

		<category><![CDATA[commit]]></category>

		<category><![CDATA[hook]]></category>

		<category><![CDATA[PEAR]]></category>

		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://cogo.wordpress.com/?p=313</guid>
		<description><![CDATA[This is the first part of a rather exciting trilogy (a thriller if you may) on how to use the PHP_CodeSniffer component from the PEAR repository to force developers to follow a set of coding standards before allowing them to commit code to a Subversion repository. This can also be accomplished using other Version Control [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This is the first part of a rather exciting trilogy (a thriller if you may) on how to use the <a href="http://pear.php.net/package/PHP_CodeSniffer/" target="_blank">PHP_CodeSniffer</a> component from the <a href="http://pear.php.net/" target="_blank">PEAR</a> repository to force developers to follow a set of <a href="http://en.wikipedia.org/wiki/Code_conventions" target="_blank">coding standards</a> before allowing them to commit code to a <a href="http://subversion.tigris.org/" target="_blank">Subversion</a> repository. This can also be accomplished using other <a href="http://en.wikipedia.org/wiki/Version_control_system" target="_blank">Version Control Systems</a> (VCS&#8217;s) but I will focus on Subversion. In this part of the trilogy I will explain the importance of having a coding standard, and I will give you a short introduction on how the PHP_CodeSniffer component works and some basic usage of it.</p>
<p>Let&#8217;s get on with the show!</p>
<p>When working together with other developers it&#8217;s important to agree on some sort of coding standard (not only in PHP). Why is this important you say? You don&#8217;t always get to play with stuff you have written yourself. Whenever you are to debug code that someone else wrote, wouldn&#8217;t it be great to know that he/she writes code that at least looks like your own?</p>
<p>Using a coding standard doesn&#8217;t force developers to solve problems the exact same way, but it might make the solution easier to read for other developers. It might also help developers from doing some pretty nasty errors. Let&#8217;s say you have the following piece of code:</p>
<pre name="code" class="php">

if (isset($_COOKIE[&#039;userId&#039;]) &amp;&amp; isset($_COOKIE[&#039;userSecret&#039;])) {
    $actualUserSecret = fetchUserSecretCode($_COOKIE[&#039;userId&#039;]);

    if ($actualUserSecret = $_COOKIE[&#039;userSecret&#039;]) {
        // ok &#8230; the secret code in the cookie is the same as the one
        // returned from the fetchUserSecretCode function. Let&#039;s login
        // the user

        // &#8230;
    }
}
</pre>
<p>Now &#8230; the code above is all valid, but it contains a pretty nasty bug. The line that says:</p>
<pre name="code" class="php">

if ($actualUserSecret = $_COOKIE[&#039;userSecret&#039;]) {
</pre>
<p>is missing an equal sign, so it will always evaluate to true, which in this case will log in the user with the user id from the cookie. If you want to log in as other users you could just change the user id in the cookie, and make a new request, and voila!</p>
<p>This bug is pretty hard to identify since the developer who wrote it probably just didn&#8217;t press the equal sign hard enough the second time and the code produced it still valid. The developer &#8220;knows&#8221; that the error has to be somewhere else and doesn&#8217;t even look in the right place. Some of you reading this is probably saying something like: &#8220;Come on, nobody will ever manage to do something that stupid!?&#8221;. The reason I chose this as an example is because yours truly exploited this &#8220;bug&#8221; in someone&#8217;s code once, so yeah &#8230; it&#8217;s possible to write something like the example above.</p>
<p>Another issue is when users start to mix up tabs and spaces for indentation and have different editor settings. If you open up a script that has both tabs and spaces used for indentation and your editor has a different tab width than the one who used spaces as indentation all hell breaks loose. Suddenly you won&#8217;t even get to order breakfast from your favorite Whammy Burger because you had to spend five extra minutes removing someone&#8217;s tabs and, well, we all know what happens next&#8230;</p>
<p>What has this got to do with a coding standard? What if the coding standard you were said to follow specified that doing assignments inside an if-test was illegal or that the use of tabs as indentation (or tabs in your code at all) were strictly forbidden? Wouldn&#8217;t that fix this issue? That depends on how you deploy the code you are writing. To be able to enforce a standard you need to attach a check that finds out if the code you are sharing with other developers adheres to some standard. Subversion (and other VCS&#8217;s) will let you add &#8220;<a href="http://en.wikipedia.org/wiki/Hooking" target="_blank">hooks</a>&#8221; to different events that occur. The event we would like to attach the coding standard check to is the one that occurs before the changes in code actually gets pushed to the repository: the pre-commit event. This event, as it&#8217;s name clearly specifies, happens before the commit is done, and it has the power to stop the commit from happening.</p>
<p>The next question is how do we actually check the code against a standard? This is where the PHP_CodeSniffer component comes into play. As its name implies, it will actually sniff PHP code. You might have heard <a href="http://en.wikipedia.org/wiki/Ramones" target="_blank">Ramones</a> singing something about wanting to sniff some glue&#8230; I&#8217;ll let you in on a little secret: The original lyrics actually went a little something like this:</p>
<blockquote><p>Now I wanna sniff some code<br />
Now I wanna have strings to explode<br />
All the kids wanna sniff some code<br />
All the kids want strings to explode</p></blockquote>
<p>Let&#8217;s get on with the show and start sniffing that code!</p>
<p>PHP_CodeSniffer uses something called sniffs and tokens to pull this off. A Sniff is actually a PHP class that checks one part of the coding standard only. A coding standard in PHP_CodeSniffer is a collection of these sniff classes. One example of a sniff is: &#8220;Disallow Tab Indentation&#8221;.</p>
<p>A token is an internal representation of a part of userland PHP code. Most of you have probably seen a token in an error message. If you do something like:</p>
<pre name="code" class="php">

$foo = &#039;foo&#039;
$foobar = $foo . &#039;bar&#039;;
</pre>
<p>you will get &#8220;syntax error, unexpected T_VARIABLE in &#8230; &#8221; because you forgot to end the first line with a semi-colon. This actually shows us that some error messages in PHP aren&#8217;t all fun and games, but that&#8217;s a different story&#8230;</p>
<p>The T_VARIABLE part of the error message is as some of you might have guessed a token. PHP_CodeSniffer uses the <a href="http://no2.php.net/manual/en/book.tokenizer.php" target="_blank">Tokenizer</a> extension in PHP to generate tokens of the PHP scripts it gets as input and the sniff classes you implement can use these tokens to analyze the input and see if it is correct according to the coding standard.</p>
<p>PHP_CodeSniffer comes with some complete coding standards and enough predefined sniff classes to let you define your own standard by using only predefined sniffs. If you simply want to follow the PEAR coding standard you can use the one that comes with the component. The component also includes a couple of command line scripts (Linux and Windows) that will let you examine your code with little effort.</p>
<p>Since the component belongs to PEAR, the default coding standard is PEAR (no shit Sherlock!). If you also want to use the PEAR standard on your code you can issue the following command (on Linux):</p>
<p><em>php /path/to/phpcs /path/to/script.php</em></p>
<p>PHP_CodeSniffer will then analyze script.php and see if it follows the PEAR standard. If not, you will get a bunch of errors informing you on the parts of your code that is different from the standard. If you have lots of code inside a directory you can simply use the name of the directory as argument to the phpcs script instead of the single script name. If you want to use some of the other coding standards that comes with the component you can do so by adding the <em>&#8211;standard=&lt;standard&gt;</em> argument. To use the &#8220;Zend&#8221; standard on a directory of code you can do something like this:</p>
<p><em>php /path/to/phpcs &#8211;standard=Zend /path/to/your/code/</em></p>
<p>And that&#8217;s it for this part actually. In the next part, which I hope to finish sometime this weekend or early next week,  I will create a coding standard in the PHP_CodeSniffer component and show you how to use some of the many sniff classes already defined to get you up and running with a shiny &#8220;new&#8221; coding standard. I will also show you how to extend some of them to do something a little different.</p>
<p>In the last part I will show you how to implement new sniff classes. The last part will also contain information on how to become the least popular guy on the development team: Add a check to the pre-commit hook so no one can commit code unless it follows the standard 100%!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cogo.wordpress.com/313/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cogo.wordpress.com/313/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cogo.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cogo.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cogo.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cogo.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cogo.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cogo.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cogo.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cogo.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cogo.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cogo.wordpress.com/313/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cogo.wordpress.com&blog=66533&post=313&subd=cogo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cogo.wordpress.com/2008/06/25/enforcing-a-php-coding-standard-using-php_codesniffer-part-1/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/cogo-128.jpg" medium="image">
			<media:title type="html">christer</media:title>
		</media:content>
	</item>
		<item>
		<title>Lego Vault</title>
		<link>http://cogo.wordpress.com/2008/06/24/lego-vault/</link>
		<comments>http://cogo.wordpress.com/2008/06/24/lego-vault/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 09:16:19 +0000</pubDate>
		<dc:creator>christer</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[lego]]></category>

		<guid isPermaLink="false">http://cogo.wordpress.com/?p=311</guid>
		<description><![CDATA[So I was going through my RSS feeds to see if there was something interesting, and then I found something on Digg: Lego Secret Vault Contains All Sets In History (VIDEO).
I played a lot with Lego when I was a kid. I loved the town sets and the castles. I remember building up and taking [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>So I was going through my RSS feeds to see if there was something interesting, and then I found something on Digg: <a href="http://gizmodo.com/5018990/lego-secret-vault-contains-all-sets-in-history" target="_blank">Lego Secret Vault Contains All Sets In History (VIDEO)</a>.</p>
<p>I played a lot with Lego when I was a kid. I loved the town sets and the castles. I remember building up and taking it down again just so I could build it up once more. I wish I knew better when I was a kid and had taken better care of all the stuff I had. Looking at this video actually made me shed a tear. So yeah &#8230; I&#8217;m a sucker for Lego&#8217;s.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cogo.wordpress.com/311/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cogo.wordpress.com/311/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cogo.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cogo.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cogo.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cogo.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cogo.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cogo.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cogo.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cogo.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cogo.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cogo.wordpress.com/311/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cogo.wordpress.com&blog=66533&post=311&subd=cogo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cogo.wordpress.com/2008/06/24/lego-vault/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/cogo-128.jpg" medium="image">
			<media:title type="html">christer</media:title>
		</media:content>
	</item>
		<item>
		<title>AOTW 26, 2008: Television - Marquee Moon</title>
		<link>http://cogo.wordpress.com/2008/06/23/aotw-26-2008-television-marquee-moon/</link>
		<comments>http://cogo.wordpress.com/2008/06/23/aotw-26-2008-television-marquee-moon/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 17:41:32 +0000</pubDate>
		<dc:creator>christer</dc:creator>
		
		<category><![CDATA[AOTW]]></category>

		<category><![CDATA[Music]]></category>

		<category><![CDATA[marquee moon]]></category>

		<category><![CDATA[television]]></category>

		<guid isPermaLink="false">http://cogo.wordpress.com/?p=296</guid>
		<description><![CDATA[Apart from programming and climbing I really enjoy listening to music. From this day on I will try to present to you an (A)lbum (O)f (T)he (W)eek, every week. The albums will be picked from my collection.
Since I spend lots of hours every week listening to all sorts of stuff I thought I could share [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Apart from programming and climbing I really enjoy listening to music. From this day on I will try to present to you an (A)lbum (O)f (T)he (W)eek, every week. The albums will be picked from my collection.</p>
<p>Since I spend lots of hours every week listening to all sorts of stuff I thought I could share some of it with you. Well &#8230; not share as in letting you download the music from my blog &#8230; but share the name of an album (and artist) that I think is worthy of the ATOW award so you can pick it up from your favorite music store! I won&#8217;t write huge reviews but I&#8217;ll do something as simple as presenting my own personal favourites of the songs on the album. If you for some reason follow my advice and buy the album I&#8217;m presenting (or perhaps you already have it in your collection?), feel free to comment on what you think about it and if you (dis)agree with my own personal favorites, let me have it!</p>
<p>The first AOTW award goes the brilliant <a href="http://en.wikipedia.org/wiki/Marquee_Moon" target="_blank">Marquee Moon</a> album, by <a href="http://en.wikipedia.org/wiki/Television_(band)" target="_blank">Television</a>. Some regard them as one of the founders of punk rock. I regard them as makers of music full of win!</p>
<p>My three favorite tracks on the album are:</p>
<ul>
<li>Friction</li>
<li>See no evil</li>
<li>Torn Curtain</li>
</ul>
<p>Thats it really&#8230; :) If you haven&#8217;t gotten around to ordering the album yet, you have failed miserably! Happy listening!</p>
<p><strong>Edit:</strong><br />
Dave (who added a comment here) has written an article about why he likes this album so much. Read the <a href="http://thishereboogie.com/marquee-moon-television-1977/" target="_blank">article at his blog</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cogo.wordpress.com/296/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cogo.wordpress.com/296/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cogo.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cogo.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cogo.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cogo.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cogo.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cogo.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cogo.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cogo.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cogo.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cogo.wordpress.com/296/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cogo.wordpress.com&blog=66533&post=296&subd=cogo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cogo.wordpress.com/2008/06/23/aotw-26-2008-television-marquee-moon/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/cogo-128.jpg" medium="image">
			<media:title type="html">christer</media:title>
		</media:content>
	</item>
		<item>
		<title>WTF?! Que pasa?!</title>
		<link>http://cogo.wordpress.com/2008/06/19/wtf-que-pasa/</link>
		<comments>http://cogo.wordpress.com/2008/06/19/wtf-que-pasa/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 18:35:22 +0000</pubDate>
		<dc:creator>christer</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[qpsa]]></category>

		<category><![CDATA[ripoff]]></category>

		<category><![CDATA[social networking]]></category>

		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://cogo.wordpress.com/?p=295</guid>
		<description><![CDATA[A couple of Norwegian guys has just released a Norwegian translation of Twitter over at qpsa.no. Oh wait &#8230; it just looks like Twitter! Almost had me fooled there!
They seem to believe that this &#8220;new&#8221; service will revolutionize social networking in Norway&#8230; well &#8230; I truly believe that Angelina Jolie will dump Brad Pitt and [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A couple of Norwegian guys has just released a Norwegian translation of <a href="http://twitter.com/" target="_blank">Twitter</a> over at <a href="http://qpsa.no/" target="_blank">qpsa.no</a>. Oh wait &#8230; it just looks like Twitter! Almost had me fooled there!</p>
<p>They seem to believe that this &#8220;new&#8221; service will revolutionize social networking in Norway&#8230; well &#8230; I truly believe that Angelina Jolie will dump Brad Pitt and come over to Oslogata to meet me instead&#8230; Let&#8217;s see what happens first!</p>
<p><a href="http://www.e-mats.org/" target="_blank">Mats</a> just published a post about the same thing <a href="http://e-mats.org/2008/06/theres-a-difference-between-being-inspired-by-and-outright-copying/" target="_blank">over at his blog</a>!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cogo.wordpress.com/295/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cogo.wordpress.com/295/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cogo.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cogo.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cogo.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cogo.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cogo.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cogo.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cogo.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cogo.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cogo.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cogo.wordpress.com/295/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cogo.wordpress.com&blog=66533&post=295&subd=cogo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cogo.wordpress.com/2008/06/19/wtf-que-pasa/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/cogo-128.jpg" medium="image">
			<media:title type="html">christer</media:title>
		</media:content>
	</item>
		<item>
		<title>Zend_Service_Recaptcha is accepted</title>
		<link>http://cogo.wordpress.com/2008/06/19/zend_service_recaptcha-is-accepted/</link>
		<comments>http://cogo.wordpress.com/2008/06/19/zend_service_recaptcha-is-accepted/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 16:33:07 +0000</pubDate>
		<dc:creator>christer</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[recaptcha]]></category>

		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://cogo.wordpress.com/?p=294</guid>
		<description><![CDATA[Just received a mail from Matthew Weier O&#8217;Phinney saying that the Zend_Service_Recaptcha proposal is accepted for inclusion in standard/incubator. So Paddy &#8230; you wanna update me on what changes you have done to the initial code soon? :p
       ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Just received a mail from Matthew Weier O&#8217;Phinney saying that the <a href="http://framework.zend.com/wiki/pages/viewpage.action?pageId=42442" target="_blank">Zend_Service_Recaptcha</a> proposal is accepted for inclusion in standard/incubator. So Paddy &#8230; you wanna update me on what changes you have done to the initial code soon? :p</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cogo.wordpress.com/294/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cogo.wordpress.com/294/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cogo.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cogo.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cogo.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cogo.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cogo.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cogo.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cogo.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cogo.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cogo.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cogo.wordpress.com/294/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cogo.wordpress.com&blog=66533&post=294&subd=cogo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cogo.wordpress.com/2008/06/19/zend_service_recaptcha-is-accepted/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/cogo-128.jpg" medium="image">
			<media:title type="html">christer</media:title>
		</media:content>
	</item>
	</channel>
</rss>