<?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>iridani.com &#187; php</title>
	<atom:link href="http://iridani.com/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://iridani.com</link>
	<description>dev://james.stansfield</description>
	<lastBuildDate>Mon, 26 Jul 2010 21:52:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Day One @ #phptek</title>
		<link>http://iridani.com/2009/05/day-one-phptek/</link>
		<comments>http://iridani.com/2009/05/day-one-phptek/#comments</comments>
		<pubDate>Thu, 21 May 2009 06:28:26 +0000</pubDate>
		<dc:creator>jqs</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://iridani.com/?p=83</guid>
		<description><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/>What was the single most important thing I learned today? Always bring your condom! Er, I mean, your keyboard condom1.
First official day of the conference and my new MacBook survived three spills, two coffee and one water and lived to tell the tale.
Man these php devs just don&#8217;t like Macs!

1.&#160;iSkin&#8617;
]]></description>
			<content:encoded><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/><p>What was the single most important thing I learned today? Always bring your condom! Er, I mean, your keyboard condom<sup><a id="fn-83-1" href="#foot-83-1" onclick="new Effect.ScrollTo('foot-83-1', {offset:-140}); return false">1</a></sup>.</p>
<p>First official day of the conference and my new MacBook survived three spills, two coffee and one water and lived to tell the tale.</p>
<p>Man these php devs just don&#8217;t like Macs!<br />

<div class='footnotes'><span class="footnote" id="foot-83-1">1.&nbsp;<a href="http://www.iskin.com/product_kbrd_air.html">iSkin</a><a href="#fn-83-1" onclick="new Effect.ScrollTo('fn-83-1', {offset:-140}); return false">&#8617;</a></span></div>
]]></content:encoded>
			<wfw:commentRss>http://iridani.com/2009/05/day-one-phptek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Attending #phptek &#8211; Which Talks&#8230;</title>
		<link>http://iridani.com/2009/04/attending-phptek-which-talks/</link>
		<comments>http://iridani.com/2009/04/attending-phptek-which-talks/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 14:34:28 +0000</pubDate>
		<dc:creator>jqs</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[scalable]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[tokens]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://iridani.com/?p=70</guid>
		<description><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/>(See what I did there? When this tweets, the hashtag will be picked up!)
So in less than a month I&#8217;ll be attending php&#124;tek1 adn its high time I decided what talks I want to be seen at. Erm, I mean, which I want to attend&#8230;
Tutorial Day:
I&#8217;m torn bewteen MVC Development in PHP and Web Application [...]]]></description>
			<content:encoded><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/><p>(See what I did there? When this tweets, the hashtag will be picked up!)</p>
<p>So in less than a month I&#8217;ll be attending php|tek<sup><a id="fn-70-1" href="#foot-70-1" onclick="new Effect.ScrollTo('foot-70-1', {offset:-140}); return false">1</a></sup> adn its high time I decided what talks I want to be seen at. Erm, I mean, which I want to attend&#8230;</p>
<p>Tutorial Day:</p>
<p>I&#8217;m torn bewteen <a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/ts1/0">MVC Development in PHP</a> and <a href="http://tek.mtacon.com/c/schedule/talk/ts1/1">Web Application Security Boot Camp</a> but in the end I think MVC will win out&#8230;</p>
<p><a href="http://tek.mtacon.com/c/schedule/talk/ts2/1">PHP Code Review</a> wins in the afternoon. And that evening I&#8217;ll be busy attending the ChiSox/Twins game.</p>
<p>Day 1:</p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d1s2/2">Highly Scalable Web Applications</a></p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d1s3/0">Streaming XML</a></p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d1s4/0">MySQL Server Performance Tuning</a></p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d1s5/0">SPL to the Rescue</a></p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d1s6/0">Getting it Done</a></p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d1s7/0">Security Centered Design</a></p>
<p>Day 2:</p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d2s1/1">Exceptional PHP</a></p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d2s2/0">Desktop RIAs with PHP, HTML and JS in AIR</a></p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d2s3/1">Seven Steps to Better OOP Code</a></p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d2s4/1">PHP Database Application Architecture for Scalability and Availability</a></p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d2s5/1">Bend SQL to Your Will With EXPLAIN</a></p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d2s6/1">Taking it All Offline with SQL Anywhere</a></p>
<p>Day 3:</p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d3s1/2">Out with Regex, In with Tokens</a></p>
<p><a class="talk clueTip" href="http://tek.mtacon.com/c/schedule/talk/d3s2/0">Working with Microformats</a></p>
<p>It looks like I&#8217;m going to have a lot of fun and will learn a lot. I&#8217;m hoping some of my methods get justified as well by my peers.</p>
<p>Kudos again to my work for sending me on this trip, and to my wife for allowing it!<br />

<div class='footnotes'><span class="footnote" id="foot-70-1">1.&nbsp;<a href="http://tek.mtacon.com">php|tek</a><a href="#fn-70-1" onclick="new Effect.ScrollTo('fn-70-1', {offset:-140}); return false">&#8617;</a></span></div>
]]></content:encoded>
			<wfw:commentRss>http://iridani.com/2009/04/attending-phptek-which-talks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expect: php curl should play nice</title>
		<link>http://iridani.com/2009/04/expect-php-curl-should-play-nice/</link>
		<comments>http://iridani.com/2009/04/expect-php-curl-should-play-nice/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 13:06:43 +0000</pubDate>
		<dc:creator>jqs</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://iridani.com/?p=56</guid>
		<description><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/>Once again, my job has me writing mutli-threaded PHP1 scripts that use PHP&#8217;s CURL2 library to connect to remote servers. (I&#8217;m calling an API here!)  Without going into too much detail, the networking specifics changed between me and the api server, adding a new, or newly reconfigured, invisible proxy to the data path.
This proxy is [...]]]></description>
			<content:encoded><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/><p>Once again, my job has me writing mutli-threaded PHP<sup><a id="fn-56-1" href="#foot-56-1" onclick="new Effect.ScrollTo('foot-56-1', {offset:-140}); return false">1</a></sup> scripts that use PHP&#8217;s CURL<sup><a id="fn-56-2" href="#foot-56-2" onclick="new Effect.ScrollTo('foot-56-2', {offset:-140}); return false">2</a></sup> library to connect to remote servers. (I&#8217;m calling an API here!)  Without going into too much detail, the networking specifics changed between me and the api server, adding a new, or newly reconfigured, invisible proxy to the data path.</p>
<p>This proxy is running Lighttpd, while light in name, is starting to throw around it&#8217;s weight and get in my way.</p>
<p>Warning! We are going to get technical!</p>
<p><span id="more-56"></span>Here is the output of curl when trying to access the api. (All ip addresses have been obfuscated to protect the innocent!)</p>
<p>[cc]</p>
<p>* About to connect() to theapi.com port 80 (#0)</p>
<p>*   Trying 42.42.42.42&#8230; * connected</p>
<p>* Connected to theapi.com (42.42.42.42) port 80 (#0)</p>
<p>> POST /ApiCommand HTTP/1.1</p>
<p>Host: theapi.com</p>
<p>Accept: */*</p>
<p>Content-Length: 1760</p>
<p>Content-Type: application/x-www-form-urlencoded</p>
<p>Expect: 100-continue</p>
<p>< HTTP/1.1 417 Expectation Failed</p>
<p>< Connection: close</p>
<p>< Content-Length: 0</p>
<p>< Date: Mon, 20 Apr 2009 14:16:26 GMT</p>
<p>< Server: lighttpd/1.4.1</p>
<p><</p>
<p>* Closing connection #0</p>
<p>[/cc]</p>
<p>Wow, that was short lived. The culprit here is that lighttpd doesn't handle the <em>Expect: 100-continue</em> properly. In fact it cacks on it entirely. What you get (if you aren&#8217;t looking at headers) is an empty response from curl. Not very fun to debug if you were expecting some kind of response from the api.</p>
<p>It has been suggested <sup><a id="fn-56-3" href="#foot-56-3" onclick="new Effect.ScrollTo('foot-56-3', {offset:-140}); return false">3</a></sup><sup><a id="fn-56-4" href="#foot-56-4" onclick="new Effect.ScrollTo('foot-56-4', {offset:-140}); return false">4</a></sup> that this bug will be fixed in version 1.5.x but that doesn&#8217;t help us right here, right now<sup><a id="fn-56-5" href="#foot-56-5" onclick="new Effect.ScrollTo('foot-56-5', {offset:-140}); return false">5</a></sup>. So what to do. Who will save me? The internet of course!</p>
<p><strong>gnegg</strong>, amongst others, has run into this problem before me and has a fix<sup><a id="fn-56-6" href="#foot-56-6" onclick="new Effect.ScrollTo('foot-56-6', {offset:-140}); return false">6</a></sup> that solves the problem easily. Just add a blank <em>Expect:</em> header to your curl call. That fixes the problem nice and quick:</p>
<p>[cc lang='php']curl_setopt($ch, CURLOPT_HTTPHEADER, array(&#8216;Expect:&#8217;));[/cc]</p>
<p>And that&#8217;s it, by implicitly setting the Expect: directive we bypass the default condition that CURL injects on every request.</p>
<p>Now I can&#8217;t say exactly what Expect: does, but I think it helps by chopping up data into smaller chunks, but that is a guess and I don&#8217;t feel like looking it up.</p>
<p><strong>Update: I&#8217;m so very wrong!</strong></p>
<p>Philip Hofstetter, who wrote the article on <em>gnegg.ch</em> sent me an email today clearing up my assumption about the Expect: 100-continue HTTP directive:</p>
<blockquote><p>I&#8217;m the author of the blog post on gnegg.ch you referred to and I</p>
<p>wanted to take the oportunity to explain what the idea behind Expect:</p>
<p>100-continue is:</p>
<p>The idea behind Expect: 100-continue is to give the server a chance to</p>
<p>make checks for the requests validity without the client actually</p>
<p>having to send all the data first.</p>
<p>So the clients sends the POST request just as if it would just post</p>
<p>the data, but it leaves the request body completely empty, but adds</p>
<p>the Expect: 100-continue.</p>
<p>The server can now check</p>
<p>- if maybe authentication is needed but not provided</p>
<p>- if the URL in question is even capable of accepting a POST request</p>
<p>- if the remote host is permitted to send the data</p>
<p>or what ever else that can be checked independently of the post body.</p>
<p>Now the server either sends back a fitting error code or it sends the</p>
<p>doe 100 telling the client that it&#8217;s ok to go ahead and resend the</p>
<p>request, but this time WITH the request body and WITHOUT the expect</p>
<p>header.</p>
<p>So the idea isn&#8217;t chopping up the data, it&#8217;s making it as sure as</p>
<p>possible to detect early failures without the client having to</p>
<p>transmit all the data first.</p>
<p>I hope that helps to explain what&#8217;s going on.</p></blockquote>
<p>I knew I should have just gone and looked it up! <strong>Thanks Philip!</strong><br />

<div class='footnotes'><span class="footnote" id="foot-56-1">1.&nbsp;<a href="http://php.net">php.net</a><a href="#fn-56-1" onclick="new Effect.ScrollTo('fn-56-1', {offset:-140}); return false">&#8617;</a></span><br /><span class="footnote" id="foot-56-2">2.&nbsp;<a href="http://php.net/manual/en/book.curl.php">php.net/curl</a><a href="#fn-56-2" onclick="new Effect.ScrollTo('fn-56-2', {offset:-140}); return false">&#8617;</a></span><br /><span class="footnote" id="foot-56-3">3.&nbsp;<a href="http://stackoverflow.com/questions/463144/php-http-post-fails-when-curl-data-1024">StackOverFlow.com</a><a href="#fn-56-3" onclick="new Effect.ScrollTo('fn-56-3', {offset:-140}); return false">&#8617;</a></span><br /><span class="footnote" id="foot-56-4">4.&nbsp;<a href="http://redmine.lighttpd.net/issues/show/1017">redmine.lighttpd.net</a><a href="#fn-56-4" onclick="new Effect.ScrollTo('fn-56-4', {offset:-140}); return false">&#8617;</a></span><br /><span class="footnote" id="foot-56-5">5.&nbsp;<a href="http://en.wikipedia.org/wiki/Jesus_Jones">Jesus Jones</a><a href="#fn-56-5" onclick="new Effect.ScrollTo('fn-56-5', {offset:-140}); return false">&#8617;</a></span><br /><span class="footnote" id="foot-56-6">6.&nbsp;<a href="http://www.gnegg.ch/2007/02/the-return-of-except-100-continue/">gnegg.ch</a><a href="#fn-56-6" onclick="new Effect.ScrollTo('fn-56-6', {offset:-140}); return false">&#8617;</a></span></div>
]]></content:encoded>
			<wfw:commentRss>http://iridani.com/2009/04/expect-php-curl-should-play-nice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php&#124;tek</title>
		<link>http://iridani.com/2009/04/phptek/</link>
		<comments>http://iridani.com/2009/04/phptek/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 02:31:55 +0000</pubDate>
		<dc:creator>jqs</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php|architect]]></category>

		<guid isPermaLink="false">http://iridani.com/?p=49</guid>
		<description><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/>I&#8217;ll be attending php&#124;tek 20091 in Chicago this May. If anyone is attending who knows me, we should make plans to meet up.
I&#8217;m excited for this conference. I can&#8217;t remember the last time I attended a programming conference, let alone one being paid for by my employer!

1.&#160;php&#124;tek&#8617;
]]></description>
			<content:encoded><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/><p>I&#8217;ll be attending php|tek 2009<sup><a id="fn-49-1" href="#foot-49-1" onclick="new Effect.ScrollTo('foot-49-1', {offset:-140}); return false">1</a></sup> in Chicago this May. If anyone is attending who knows me, we should make plans to meet up.</p>
<p>I&#8217;m excited for this conference. I can&#8217;t remember the last time I attended a programming conference, let alone one being paid for by my employer!<br />

<div class='footnotes'><span class="footnote" id="foot-49-1">1.&nbsp;<a href="http://tek.mtacon.com/">php|tek</a><a href="#fn-49-1" onclick="new Effect.ScrollTo('fn-49-1', {offset:-140}); return false">&#8617;</a></span></div>
]]></content:encoded>
			<wfw:commentRss>http://iridani.com/2009/04/phptek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Published!</title>
		<link>http://iridani.com/2008/08/published/</link>
		<comments>http://iridani.com/2008/08/published/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 17:52:08 +0000</pubDate>
		<dc:creator>jqs</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php|architect]]></category>
		<category><![CDATA[pro]]></category>
		<category><![CDATA[publish]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://iridani.com/?p=39</guid>
		<description><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/> Well it was bound to happen sooner or later. I&#8217;ve been published in the latest issue of php&#124;architect1 of the magazine&#8230; I suggest you all go out and buy a copy now. Several copies. (I&#8217;ll be holding an autograph session at Yorkdale Mall, Saturday Aug&#8230;)
The article itself is a little feature that explains how to [...]]]></description>
			<content:encoded><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/><p><a href="http://iridani.com/wp-content/uploads/2008/08/0080.jpg"><img class="alignleft alignnone size-full wp-image-40" style="vertical-align: left; margin-right: 5px; float: left" title="php|architect Issue 80 - Aug 2008" src="http://iridani.com/wp-content/uploads/2008/08/0080.jpg" alt="" width="160" height="207" /></a> Well it was bound to happen sooner or later. I&#8217;ve been published in the latest issue of php|architect<sup><a id="fn-39-1" href="#foot-39-1" onclick="new Effect.ScrollTo('foot-39-1', {offset:-140}); return false">1</a></sup> of the magazine&#8230; I suggest you all go out and buy a copy now. Several copies. (I&#8217;ll be holding an autograph session at Yorkdale Mall, Saturday Aug&#8230;)</p>
<p>The article itself is a little feature that explains how to write a Wordpress plugin and gives full demonstration code. Give it a read and feel free to ask any questions regarding the implementation if you wish. The code is pretty tight but should have some more security if it is to be used in a production environment. It is really a project starter. If you need to modify Wordpress, this is a great place to start looking to learn how your code should interact with Wordpress. </p>
<p>Not a dig at Yangaroo, but it is nice to be now working for a company who doesn&#8217;t deter this type of creativity.<br />

<div class='footnotes'><span class="footnote" id="foot-39-1">1.&nbsp;<a href="http://www.phparch.com/c/magazine/issue/80">Issue 80</a><a href="#fn-39-1" onclick="new Effect.ScrollTo('fn-39-1', {offset:-140}); return false">&#8617;</a></span></div>
]]></content:encoded>
			<wfw:commentRss>http://iridani.com/2008/08/published/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>refactormycode.com == Great Idea&#8230;</title>
		<link>http://iridani.com/2008/06/refactormycodecom-great-idea/</link>
		<comments>http://iridani.com/2008/06/refactormycodecom-great-idea/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 11:45:32 +0000</pubDate>
		<dc:creator>jqs</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://iridani.com/?p=30</guid>
		<description><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/>I&#8217;m going to attempt to not spam this site with a bunch of non-development work stuff. I&#8217;ve other blogs for that&#8230; But in keeping with the vein of this website1, I&#8217;ve recently been pointed to a very cool website who&#8217;s basic premise is too simple to have not been thought of before now&#8230;
We&#8217;ve all seen [...]]]></description>
			<content:encoded><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/><p>I&#8217;m going to attempt to not spam this site with a bunch of non-development work stuff. I&#8217;ve other blogs for that&#8230; But in keeping with the vein of this website<sup><a id="fn-30-1" href="#foot-30-1" onclick="new Effect.ScrollTo('foot-30-1', {offset:-140}); return false">1</a></sup>, I&#8217;ve recently been pointed to a very cool website who&#8217;s basic premise is too simple to have not been thought of before now&#8230;</p>
<p>We&#8217;ve all seen web clipboards and code repositories before<sup><a id="fn-30-2" href="#foot-30-2" onclick="new Effect.ScrollTo('foot-30-2', {offset:-140}); return false">2</a></sup>, and even I am guilty<sup><a id="fn-30-3" href="#foot-30-3" onclick="new Effect.ScrollTo('foot-30-3', {offset:-140}); return false">3</a></sup> of wanting to get in on the action. But all of these sites are simple repositories.</p>
<p>Marc-André Cournoyer<sup><a id="fn-30-4" href="#foot-30-4" onclick="new Effect.ScrollTo('foot-30-4', {offset:-140}); return false">4</a></sup> has a fresh take on the idea. His <strong>refactormycode.com</strong><sup><a id="fn-30-5" href="#foot-30-5" onclick="new Effect.ScrollTo('foot-30-5', {offset:-140}); return false">5</a></sup> site isn&#8217;t just a web clipboard, but rather it is a place to put your code up for community scrutiny.</p>
<p>The idea is that you can post a code snippet and ask for help to see if anyone can help you sort out a problem. This isn&#8217;t a wholesale help board for new programmers, but for people who are having problems envisioning code design changes, code cleanup problems, and even those who want the tightest code possible and are seeking improvement.</p>
<p>The website even has an API<sup><a id="fn-30-6" href="#foot-30-6" onclick="new Effect.ScrollTo('foot-30-6', {offset:-140}); return false">6</a></sup> for those who want to dig into the site that much more&#8230; (Maybe I&#8217;ll add a widget here for my refactorings&#8230;)</p>
<p>Good job Marc. Nicely executed.<br />

<div class='footnotes'><span class="footnote" id="foot-30-1">1.&nbsp;code code code<a href="#fn-30-1" onclick="new Effect.ScrollTo('fn-30-1', {offset:-140}); return false">&#8617;</a></span><br /><span class="footnote" id="foot-30-2">2.&nbsp;<a href="http://pastie.org">pastie.org</a><a href="#fn-30-2" onclick="new Effect.ScrollTo('fn-30-2', {offset:-140}); return false">&#8617;</a></span><br /><span class="footnote" id="foot-30-3">3.&nbsp;A new project will be released shortly&#8230; Keep watching this space! &#8212; <a href="http://c???x.iridani.com">c???x.iridani.com</a><a href="#fn-30-3" onclick="new Effect.ScrollTo('fn-30-3', {offset:-140}); return false">&#8617;</a></span><br /><span class="footnote" id="foot-30-4">4.&nbsp;<a href="http://macournoyer.com/">macournoyer.com</a><a href="#fn-30-4" onclick="new Effect.ScrollTo('fn-30-4', {offset:-140}); return false">&#8617;</a></span><br /><span class="footnote" id="foot-30-5">5.&nbsp;<a href="http://refactormycode.com">refactormycode.com</a><a href="#fn-30-5" onclick="new Effect.ScrollTo('fn-30-5', {offset:-140}); return false">&#8617;</a></span><br /><span class="footnote" id="foot-30-6">6.&nbsp;<a href="http://refactormycode.com/help/api">API</a><a href="#fn-30-6" onclick="new Effect.ScrollTo('fn-30-6', {offset:-140}); return false">&#8617;</a></span></div>
]]></content:encoded>
			<wfw:commentRss>http://iridani.com/2008/06/refactormycodecom-great-idea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jqs_random &#8211; Released</title>
		<link>http://iridani.com/2008/06/jqs_random-released/</link>
		<comments>http://iridani.com/2008/06/jqs_random-released/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 16:35:23 +0000</pubDate>
		<dc:creator>jqs</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://iridani.com/?p=28</guid>
		<description><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/>I&#8217;ve released1 (finally) a version of what I consider a &#8217;starter&#8217; Wordpress2 plugin.
This little baby is a simple text replacement thingy. The nice thing is that is easily demonstrates a clean plugin that won&#8217;t trip over other plugins, creates proper administration pages utilizing AJAX and uses 2.5&#8217;s shortcodes.
It&#8217;s not production level code as there isn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<img src="http://iridani.com/wp-content/icons/125X75/wordpress.png" width="125" height="75" alt="" title="Blog" /><br/><p>I&#8217;ve released<sup><a id="fn-28-1" href="#foot-28-1" onclick="new Effect.ScrollTo('foot-28-1', {offset:-140}); return false">1</a></sup> (finally) a version of what I consider a &#8217;starter&#8217; Wordpress<sup><a id="fn-28-2" href="#foot-28-2" onclick="new Effect.ScrollTo('foot-28-2', {offset:-140}); return false">2</a></sup> plugin.</p>
<p><!--pull-->This little baby is a simple text replacement thingy.<!--/pull--> The nice thing is that is easily demonstrates a clean plugin that won&#8217;t trip over other plugins, creates proper administration pages utilizing AJAX and uses 2.5&#8217;s shortcodes.</p>
<p>It&#8217;s not production level code as there isn&#8217;t any real data validation on the admin form (altho if someone has gotten that far, you are toast anyway&#8230;), and it doesn&#8217;t check to make sure that it is being called from the admin pages either.</p>
<p>Beyond that, it is easy to read as an example for starting your own Wordpress plugin.</p>
<p>Enjoy.</p>
<p>EDIT: Looks like I&#8217;ve done something horribly wrong and the readme.txt file isn&#8217;t being parsed correctly&#8230; Thus the download isn&#8217;t working. Will update when this is fixed.</p>
<p>EDIT: (June 17, &#8216;08) It is fixed. I just ran the plugin auto-updater and it worked perfectly from this copy of Wordpress. Go download!<br />

<div class='footnotes'><span class="footnote" id="foot-28-1">1.&nbsp;<a href="http://wordpress.org/extend/plugins/jqs-random/">jqs_random @ Wordpress Extend</a><a href="#fn-28-1" onclick="new Effect.ScrollTo('fn-28-1', {offset:-140}); return false">&#8617;</a></span><br /><span class="footnote" id="foot-28-2">2.&nbsp;<a href="http://wordpress.org">Wordpress</a><a href="#fn-28-2" onclick="new Effect.ScrollTo('fn-28-2', {offset:-140}); return false">&#8617;</a></span></div>
]]></content:encoded>
			<wfw:commentRss>http://iridani.com/2008/06/jqs_random-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
