<?xml version="1.0" encoding="utf-8"?>
<!-- generator="wordpress/2.1.2" -->
<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/"
	>

<channel>
	<title>Professional PHP</title>
	<link>http://www.procata.com/blog</link>
	<description>PHP Programming, Web Development, PHP Advocacy and PHP Best Practices.</description>
	<pubDate>Mon, 12 May 2008 05:04:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1.2</generator>
	<language>en</language>
			<item>
		<title>Firefox Extensions for Web Developers</title>
		<link>http://www.procata.com/blog/archives/2007/03/08/firefox-extensions-for-web-developers/</link>
		<comments>http://www.procata.com/blog/archives/2007/03/08/firefox-extensions-for-web-developers/#comments</comments>
		<pubDate>Thu, 08 Mar 2007 13:11:14 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[Mac]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Web Design]]></category>
<category>firebug</category><category>firefox</category><category>firefox extensions</category><category>tamper data</category>
		<guid isPermaLink="false">http://www.procata.com/blog/archives/2007/03/08/firefox-extensions-for-web-developers/</guid>
		<description><![CDATA[I prefer Safari for my casual web browsing on the Mac, but for web development, nothing beats Firefox.  (Firefox beats IE hands down on Windows.)  Firefox&#8217;s openness and the Firefox plugin architecture means that there is little that you cannot find out about a web page with a Firefox add-on.  I&#8217;ve tried [...]]]></description>
			<content:encoded><![CDATA[<p>I prefer Safari for my casual web browsing on the Mac, but for web development, nothing beats Firefox.  (Firefox beats IE hands down on Windows.)  Firefox&#8217;s openness and the Firefox plugin architecture means that there is little that you cannot find out about a web page with a Firefox add-on.  I&#8217;ve tried a bunch of different Firefox extensions for web development.  Here are the ones that I find most useful and that I use on a regular basis.</p>
<h3>DOM Inspector</h3>
<p>Yes, yes, it comes installed with Firefox, but lets not forget the basics.  The DOM Inspector allows you to see what is actually going on in your web document.  The DOM Inspector lets you browse DOM nodes, style sheets, or Java Script objects.  You select a node by either drilling down, by searching, or by clicking on it.  Although, the UI for selecting a node with your mouse is just plain lousy.  Once you&#8217;ve chosen your subject, the DOM inspector can show you the box model information for that node, the style sheets associated with the node, the computed CSS styles, or the Javascript object.</p>
<h3>Web Developer Extension</h3>
<p>Chris Pederick&#8217;s <a href="http://chrispederick.com/work/webdeveloper/">Web developer extension</a> has been out for a long time and is the plugin I am most familiar with.  This is really the swiss army knife of web developer tools. It is so feature packed that I am still finding new things that it does.  Unfortunately, the UI is also so cluttered that I am still finding new things that it does.</p>
<p>This add-on can slice and dice a web page every which way.  It can outline a variety DOM elements, for example drawing an outline around all block elements on a page.  This can be nice for lining things up.  The Display Line Guides option is also a good way to verify alignment, not to mention Display Ruler, or Display Page Magnifier for fine detail.</p>
<p>This extension has dozens of reports, each one geared toward diagnosing a particular kind of problem.  Some of them are external, such as sending your URL to a validation service.  Some are internal, such as showing a dump of all of the page&#8217;s active cookies.  Unfortunately, many of these option open up in a new tab, taking the focus off of the page that you are trying to work with.  It can be hard to tell which options do this.  There is an option for having the tabs open in the background, but this is not the default.</p>
<p>The View Style Information option is particularly nice.  You can point to any element on the page and the extension will display the element tree along with ids and classes.  If you click on an element, it will display only the style rules that apply to that element.  This beats the drill down approach in the DOM inspector, although it doesn&#8217;t show box model information or computed style information this way.</p>
<p>The web developer extension can change things as well as inspect them.  You can go into a mode where you can edit your CSS or HTML in real time for immediate feedback.  This is great for testing out small changes. For the PHP developer, the extension has a variety of options for manipulating cookies and forms.  There are also a variety of ways to enable or disable certain elements on the page.</p>
<p><a href="https://addons.mozilla.org/firefox/60/">Install Web Developer Extension</a></p>
<h3>Tamper Data</h3>
<p><a href="http://tamperdata.mozdev.org/">Tamper Data</a> is live HTTP headers on steroids.  Tamper data records the HTTP request headers and HTTP response headers for each request that the browser makes.  Not only that, It allows you to &#8220;tamper&#8221; with the requests before they are sent out, editing headers or form values behind the scenes.  Tamper data can present a graph of the requests involved with loading a web page.  Tamper data is great for security testing and page loading performance tuning.</p>
<p><a href="https://addons.mozilla.org/firefox/966/">Install Tamper Data Extension</a></p>
<h3>FireBug</h3>
<p><a href="http://www.getfirebug.com/">FireBug</a>, ah what can I say but wow!  According to their web site:</p>
<blockquote><p>
Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.
</p></blockquote>
<p>Firebug has considerable overlap with the extensions I&#8217;ve mentioned so far.  It doesn&#8217;t necessarily duplicate all of their functions, but the ones it does, it does really well.  It goes way beyond in some cases.  There is really no point in me talking about Firebug&#8217;s features, because the <a href="http://www.getfirebug.com/">website</a> already does such a good job at it.  They&#8217;ve impressed this jaded old developer.</p>
<p>If you haven&#8217;t tried this one yet, seriously, go get it right now.</p>
<p><a href="https://addons.mozilla.org/firefox/1843/">Install FireBug Extension</a></p>
<h3>ColorZilla</h3>
<p><a href="http://www.iosart.com/firefox/colorzilla/">ColorZilla</a> adds a small eyedropper tool to the bottom left corner of the window.  You can use this tool to inspect colors on the current web site.  Double clicking it brings up a color picker and some other color related tools.</p>
<p><a href="https://addons.mozilla.org/firefox/271/">Install ColorZilla Extension</a></p>
<h3>Multiple Profiles</h3>
<p>Ok, I lied.  There are a few situations where I use FireFox for casual browsing.  Some web sites just won&#8217;t work with Safari, or don&#8217;t work well with Safari.  For these, I pull up Firefox.  I don&#8217;t want my casual browsing tools to clutter up my web development experience and I don&#8217;t want my web development tools to clutter up my casual browsing experience.  The solution is to create <a href="http://lifehacker.com/software/firefox/geek-to-live--manage-multiple-firefox-profiles-231646.php">multiple profiles</a> in FireFox. I have one for web development and another for normal surfing.  I have safari ask me to select a profile on start up.  This extra step would be annoying for a primary browser, but it doesn&#8217;t seem too bad for a secondary browser.</p>
<h3>Setting up my Mac series</h3>
<p>Firefox is not mac specific, but this is actually the latest installment in my setting up my Mac series.</p>
<ol>
<li><a href="http://www.procata.com/blog/archives/2007/02/16/how-to-transfer-mac-os-x-application-data-between-computers/">How to Transfer Mac OS X Application Data between Computers</a></li>
<li><a href="http://www.procata.com/blog/archives/2007/02/22/free-software-for-mac-os-x/">Free Software for Mac OS X</a></li>
<li><a href="http://www.procata.com/blog/archives/2007/03/08/firefox-extensions-for-web-developers/">FireFox Extensions for Web Developers</a></li>
<li>UPCOMING: Configuring Boot Camp and Parallels</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2007/03/08/firefox-extensions-for-web-developers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Delphi for PHP</title>
		<link>http://www.procata.com/blog/archives/2007/02/23/delphi-for-php/</link>
		<comments>http://www.procata.com/blog/archives/2007/02/23/delphi-for-php/#comments</comments>
		<pubDate>Fri, 23 Feb 2007 18:55:39 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Software Design]]></category>
<category>delphi</category><category>delphi for php</category><category>delphi4php</category><category>php</category><category>vcl</category><category>vcl4php</category>
		<guid isPermaLink="false">http://www.procata.com/blog/archives/2007/02/23/delphi-for-php/</guid>
		<description><![CDATA[I have to comment on this week&#8217;s annoucement of Delphi for PHP.  I was a Delphi programmer for about 5 years before taking up PHP about 6 years ago.  What a convergence.
I have a great fondness and respect for the old Object Pascal based Delphi.  Delphi&#8217;s VCL has been influential, inspiring the [...]]]></description>
			<content:encoded><![CDATA[<p>I have to comment on this week&#8217;s annoucement of <a href="http://www.codegear.com/Products/Delphi/DelphiforPHP/tabid/237/Default.aspx">Delphi for PHP</a>.  I was a Delphi programmer for about 5 years before taking up PHP about 6 years ago.  What a convergence.</p>
<p>I have a great fondness and respect for the old Object Pascal based Delphi.  Delphi&#8217;s VCL has been influential, inspiring the GUI components in Java.  And, of course <a href="http://en.wikipedia.org/wiki/Anders_Hejlsberg">Ander Heijlsberg</a> went on to put a huge stamp on C# and .NET that would be familiar to any Delphi programmers.</p>
<p>I&#8217;ve always admired this approach of extending the language syntax to make common things easy and for the integration between the language and the tools. In Delphi, this was evidenced by the excellent properties support.  Six years later, this is the feature I miss the most in PHP.  This language extension approach has seen its culmination in C# and <a href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx">LINQ</a>.  It almost pains me to say it, but the cutting edge of commercial language design is at Microsoft now.</p>
<p>On the other hand, I&#8217;ve never had that much respect for Borland as a company. We were big enough to have Borland representative&#8217;s come to our office and try sell us their products.  They were terrible at the mechanics of selling into big companies.  I was in their beta programs.  I went to their conferences.  I&#8217;ve never had any sense that they know what they are doing business wise.  Inprise?  What were they thinking?  Now here they are, just having gotten their asses kicked by eclipse in the Java IDE space and what are they working on?  They release an IDE for PHP, just as Zend is embracing Eclipse in the PHP space.  Brilliant!</p>
<p>I don&#8217;t quite know what Delphi means now.  To me, its always been and IDE plus Object Pascal.  What is it now? I also don&#8217;t quite know what Borland has become.  Is it <a href="http://www.codegear.com/">CodeGear</a> now?  I guess that the Delphi for PHP IDE comes from <a href="http://www.qadram.com/">Quadram</a> and their now discontinued QStudio product.  And the VCL is their WCL (no linkage found).  Anytime I&#8217;ve been touched by the corporate entity that was Borland, confusion ensued.  I&#8217;m confused now.</p>
<p>It appears that the <a href="http://sourceforge.net/projects/vcl4php">PHP version of the VCL</a> will be released on open source.  There is nothing at the sourceforge project, yet, but I&#8217;ll be interested to see what it looks like, if only for old times sake.</p>
<p>The Delphi tool approach was to serialize an object based representation of an application, then offer tools to create that serialized representation, and to load that representation at run time.  In Delphi, that serialization was done into the form files (.DFM).  I&#8217;ll be interested to see how Delphi for PHP does it.  Perhaps, this is an area where the <a href="http://www.zend.com/pdt">Eclipse PHP Development Tool</a> can learn. I know that I definitely had Delphi in mind when I was writing my column  on <a href="http://www.phparch.com/issue.php?mid=98">Object Serialization</a> for this month&#8217;s php | Architect.</p>
<p>Meanwhile, if you want to see the Delphi influence in PHP with code that you can download today, take a look at the <a href="http://www.xisc.com/">Prado</a> framework, which I imagine to be like the VCL for PHP, but without the supporting IDE.</p>
<p>This is a space I&#8217;ll definitely be watching.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2007/02/23/delphi-for-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Managing Open Source Projects</title>
		<link>http://www.procata.com/blog/archives/2007/02/22/managing-open-source-projects/</link>
		<comments>http://www.procata.com/blog/archives/2007/02/22/managing-open-source-projects/#comments</comments>
		<pubDate>Fri, 23 Feb 2007 00:50:32 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[Open Source]]></category>
<category>books</category><category>open source</category><category>project management</category>
		<guid isPermaLink="false">http://www.procata.com/blog/archives/2007/02/22/managing-open-source-projects/</guid>
		<description><![CDATA[I ran across How Open Source Projects Survive Poisonous People (video) and Producing Open Source Software (book).  Anyone know of any other interesting open source project management resources?
]]></description>
			<content:encoded><![CDATA[<p>I ran across <a href="http://video.google.com/videoplay?docid=-4216011961522818645">How Open Source Projects Survive Poisonous People</a> (video) and <a href="http://producingoss.com/">Producing Open Source Software</a> (book).  Anyone know of any other interesting open source project management resources?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2007/02/22/managing-open-source-projects/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why is PHP Code Considered Hard to Maintain?</title>
		<link>http://www.procata.com/blog/archives/2006/11/09/why-is-php-code-considered-hard-to-maintain/</link>
		<comments>http://www.procata.com/blog/archives/2006/11/09/why-is-php-code-considered-hard-to-maintain/#comments</comments>
		<pubDate>Fri, 10 Nov 2006 06:37:21 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Software Design]]></category>
<category>maintainability</category><category>namespaces</category><category>php</category><category>scaleability</category>
		<guid isPermaLink="false">http://www.procata.com/blog/archives/2006/11/09/why-is-php-code-considered-hard-to-maintain/</guid>
		<description><![CDATA[Tobias Schlitt describes Tim Bray&#8217;s talk at the International PHP Conference.  (PDF slides)   Tim compares PHP, Java, and Rails along several dimensions.  One of those dimensions is maintainability.  Tim ranks PHP as least maintainable, Rails in the middle, and Java as most maintainable.  
This is not a surprising ranking. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://schlitt.info/applications/blog/index.php?/archives/508-Tim-Bray-compared-Java,-Ruby-and-PHP.html">Tobias Schlitt</a> describes <a href="http://www.tbray.org/ongoing/">Tim Bray&#8217;s</a> talk at the International PHP Conference.  (<a href="http://www.tbray.org/talks/php.de.pdf">PDF slides</a>)   Tim compares PHP, Java, and Rails along several dimensions.  One of those dimensions is maintainability.  Tim ranks PHP as least maintainable, Rails in the middle, and Java as most maintainable.  </p>
<p>This is not a surprising ranking.  After all, Tim is from Sun, and the maintainability complaint is common in Anti-PHP rants.  I&#8217;m not trying to suggest that Tim is anti-PHP, far from it, it seems.  I&#8217;m just using his ranking as a spring board to ask questions.</p>
<p>Chances are that your average Java jockey or C scientist&#8217;s first exposure to PHP is to download one of the popular PHP applications.  These are usually the product of some open source mega-project with developers of varying degrees of skill.  Our engineer-by-day spends a few evenings with the program.  The code is not technically outstanding. </p>
<p>How can something like this be so popular he asks?  Yet, the software is successful by definition.  Nobody downloads unsuccessful open source applications.  The technocrat, heavily invested in his own technical prowess, faced with successful yet technically inferior code experiences cognitive dissonance.  The only thing to do is to belittle the successful, but surely offensive code.  &#8220;I could write better code than this,&#8221; he says, or &#8220;this code sucks,&#8221; or &#8220;this is unmaintainable.&#8221;</p>
<p>It is easy to dismiss these gripes inside the PHP community.  After all, those of us using PHP professionally can write maintainable code in PHP.  Ask any programmer and they will tell you, &#8220;My code is maintainable.&#8221;  Who writes all of this unmaintainable code, anyway?</p>
<p>Lets take this gripe at face value for a moment.  Why is PHP code considered hard to maintain?  Is it the language that produces code that is hard to maintain, or is it that the popular ambassadors of the language happen to be programs that are hard to maintain?</p>
<p>Another common PHP sucks complaint is that PHP doesn&#8217;t scale.  When you are talking about traffic, there are all sorts of counter examples for this.  Personally, I&#8217;m dying to learn the story behind those .php extensions on YouTube.  But, this post is not about requests per second.</p>
<p>Another kind of scalability is team size.  I think that when some people complain that PHP doesn&#8217;t scale, what they mean is that PHP doesn&#8217;t scale to large development teams or large projects.  Now we are back to the maintainability issue.</p>
<p>What is it about PHP that makes people think that it is not suitable for larger development teams?</p>
<p>The criticisms of maintainability and scalability generally come from outside the PHP community.  But, there is a common complaint from within the PHP community.  </p>
<p>It is hard to find a PHP wish list that doesn&#8217;t include namespaces.  It comes up again and again.</p>
<p>Sometimes users request a feature without explicitly making their true desires and intentions known.  They say &#8220;I want feature X,&#8221; but what they really mean is &#8220;solve problem Y.&#8221;  Good programmers can hear the request for X, but make the jump to solving Y.  </p>
<p>When people ask for the namespace feature, the problem they want to solve is integrating code from multiple parties.  I wonder if the frequency of this request is a signal of a problem in this department?   Perhaps one that requires more than just namespaces to solve?  Is the namespace request a proxy for a larger problem?</p>
<p>What is it about PHP that makes it hard to integrate code written by multiple parties, whether they be different developers or different organizations?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2006/11/09/why-is-php-code-considered-hard-to-maintain/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP as a Deployment Platform</title>
		<link>http://www.procata.com/blog/archives/2006/11/04/php-as-a-deployment-platform/</link>
		<comments>http://www.procata.com/blog/archives/2006/11/04/php-as-a-deployment-platform/#comments</comments>
		<pubDate>Sat, 04 Nov 2006 20:38:15 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Software Design]]></category>
<category>php deployment</category>
		<guid isPermaLink="false">http://www.procata.com/blog/archives/2006/11/04/php-as-a-deployment-platform/</guid>
		<description><![CDATA[PHP has been incredibly successful as a deployment platform for web applications.  The WordPress blog brags that the WordPress 2.0 series has been downloaded 1.2 million times.  
However, PHP as a platform is far from homogenous.  With many different versions installed and the vast configurability of php.ini, there can be a great [...]]]></description>
			<content:encoded><![CDATA[<p>PHP has been incredibly successful as a deployment platform for web applications.  The WordPress blog <a href="http://wordpress.org/development/2006/10/205-ronan/">brags</a> that the WordPress 2.0 series has been downloaded 1.2 million times.  </p>
<p>However, PHP as a platform is far from homogenous.  With many different versions installed and the vast configurability of php.ini, there can be a great deal of variation from PHP installation to PHP installation.  PHP developers often ask what should I target?  The question is the same if you want to write the next WordPress, or if you want to make sure your code is reusable for the next client that knocks on your door.</p>
<p>Nexen has been publishing <a href="http://www.nexen.net/chiffres_cles/phpversion/php_statistics_for_september_2006.php">PHP version adoption statistics</a> for some time.  Damien Seguy has really gone the extra step now by collecting and publishing <a href="http://www.nexen.net/articles/dossier/php_configuration_statitstics.php">configuration statistics</a>.  These are generated from scanning publicly available phpinfo() output.</p>
<p>The stats range from useful to blog candy.</p>
<p>One thing to keep in mind is sample bias.  Damien compared the php version number of the sample against the version data collected from expose php and found they correlate well.  But, perhaps there is a bias toward certain configuration settings (or versions) among those who have public phpinfo() data and those who do not.  (The stats do have suitable disclaimers.)</p>
<p>Its hard to look at stats like this and decide what they represent.  <a href="http://blogs.zend.com/2006/10/25/platform-223-released/">According to the Zend blog</a>,  81% of their customers are using PHP 5, while the nexen monthly numbers report 11%.  I think its fair to say that all of Zend&#8217;s customers use PHP, while many servers that expose_php are domain parking or serving static pages.  What is the adoption rate for php 5?  Who knows.</p>
<p>It would be interesting to see the correlation between those installations with expose_php off and the monthly version data, collected from the broader set of servers with expose_php on.  I think it would also be interesting to see what functions are being disabled with disable_functions.  Which extensions are being loaded?  How many servers are running an opcode cache?</p>
<p>Which version of PHP to use?  PHP 5 versus PHP 4?  Unless you are constrained by legacy PHP 4, the answer is definitely PHP 5.  Targeting PHP 4 isn&#8217;t going to make you the next WordPress.  Its just going to put you as far behind the version adoption curve as they are.</p>
<p>PHP 5 is vastly easier to develop in than PHP 4.  Development is expensive.  Hosting is cheap.  Don&#8217;t let the tail wag your dog.  If your host doesn&#8217;t support 5, change hosts.  PHP 5 hosting is not rocket science.</p>
<p>I know the decision is that not simple, but the excuses for remaining with PHP 4 are dwindling.</p>
<p>Which configuration options to target?  There was some talk recently on the PHP internals list about creating a recommended .ini profile for development environments and one for production environments.  I think this is a great idea.  Hopefully, then folks installing PHP can choose a profile instead of setting individual .ini options.  Perhaps this would help reign in some variability and reduce some <a href="http://www.procata.com/blog/archives/2006/07/13/the-paradox-of-choice/">Paradox of choice</a> style unhappiness.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2006/11/04/php-as-a-deployment-platform/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Delicious Outage Link Dump</title>
		<link>http://www.procata.com/blog/archives/2005/12/19/delicious-outage-link-dump/</link>
		<comments>http://www.procata.com/blog/archives/2005/12/19/delicious-outage-link-dump/#comments</comments>
		<pubDate>Mon, 19 Dec 2005 18:21:53 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[Misc]]></category>

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

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

		<category><![CDATA[Agile Methods]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Web Design]]></category>

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

		<category><![CDATA[Software Design]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/?p=168</guid>
		<description><![CDATA[Del.icio.us has been down for a while.  I use it for my public bookmarks, which are listed on the side of this blog.  Here is a post with some recent random things that I would bookmark if I could.

The departure of the hyper-enthusiasts - &#8220;The Java hyper-enthusiasts have left the building&#8221;  (along [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.del.icio.us/blog/2005/12/continued_hiccu.html">Del.icio.us has been down</a> for a while.  I use it for my public bookmarks, which are listed on the side of this blog.  Here is a post with some recent random things that I would bookmark if I could.</p>
<ul>
<li><a href="http://www.artima.com/weblogs/viewpost.jsp?thread=141312">The departure of the hyper-enthusiasts</a> - &#8220;The Java hyper-enthusiasts have left the building&#8221;  (along the lines of <a href="http://www.procata.com/blog/archives/2005/09/29/why-isnt-php-the-natural-successor-to-java/">this</a>.)</li>
<li><a href="http://martinfowler.com/articles/newMethodology.html">The New Methodology</a> - Martin Fowler describes Agile methodologies &#8212; recently updated.</li>
<li><a href="http://wiki.caucho.com/PHP_Hello_World">PHP on Caucho</a> - PHP on the JVM.</li>
<li><a href="http://norman.walsh.name/2004/11/10/xml20">XML 2.0</a> - some thoughts on XML 2.0.</li>
<li><a href="http://www.webpatterns.org/">Web Patterns</a> - Under construction &#8212; check back later.</li>
<li><a href="http://www.welie.com/patterns/">Web Design Patterns</a>.</li>
<li><a href="http://www.agilealliance.org/resources/carnivaloftheagilists">Carnival of the Agilists</a>.</li>
</ul>
<p>I&#8217;m currently adding UTF-8 support to and generally improving WACT&#8217;s &#8220;liberal&#8221; xml/html parser.  A few sources of tests cases and information:</p>
<ul>
<li><a href="http://weblog.philringnalda.com/2005/12/18/who-knows-a-title-from-a-hole-in-the-ground">Who knows a title from a hole in the ground?</a></li>
<li><a href="http://decafbad.com/blog/2005/12/19/feedburner-feeds-give-heartburn-to-php-xml-parsers">FeedBurner feeds give heartburn to PHP XML parsers?</a></li>
<li><a href="http://www.is-thought.co.uk/book/home.htm">Web SGML and HTML 4.0 explained</a></li>
<li><a href="http://www.flightlab.com/~joe/sgml/cdata.html">CDATA confusion</a></li>
<li><a href="http://www.flightlab.com/~joe/sgml/comments.html">Comment syntax in SGML and HTML</a></li>
<li><a href="http://www.cs.tut.fi/~jkorpela/html/empty.html">Empty elements in SGML, HTML, XML, and XHTML</a></li>
<li><a href="http://www.w3.org/TR/NOTE-sgml-xml.html">Comparison of SGML and XML</a></li>
<li><a href="http://www.w3.org/XML/Test/">Extensible Markup Language (XML) Conformance Test Suites</a></li>
<li><a href="http://www.hixie.ch/tests/adhoc/html/parsing/">Ian Hixie&#8217;s HTML parsing test cases</a></li>
<li><a href="http://xmlconf.sourceforge.net/">Conformance Testing for XML and Related Technologies</a></li>
<li><a href="http://feedparser.org/">Universal Feed Parser</a> liberal feed parser with many test cases.</li>
<li><a href="http://schneegans.de/sv/test-cases/">XHTML test cases</a></li>
</ul>
<ul>
<li><a href="http://www.cl.cam.ac.uk/~mgk25/unicode.html">UTF-8 and Unicode FAQ for Unix/Linux</a></li>
<li><a href="http://www.w3.org/2001/06/utf-8-wrong/">bad UTF-8 test files</a></li>
<li><a href="http://validator.w3.org/dev/tests/">The W3C Markup Validation Service: Tests</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/12/19/delicious-outage-link-dump/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Communicating a Vision with Open Source</title>
		<link>http://www.procata.com/blog/archives/2005/11/06/communicating-a-vision-with-open-source/</link>
		<comments>http://www.procata.com/blog/archives/2005/11/06/communicating-a-vision-with-open-source/#comments</comments>
		<pubDate>Mon, 07 Nov 2005 05:39:54 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[Open Source]]></category>
<category>open source</category><category>project management</category>
		<guid isPermaLink="false">http://www.procata.com/blog/?p=144</guid>
		<description><![CDATA[Jon Udell and John Montgomery are taking a private conversation about open source public:

I&#8217;ll continue one argument I was having with Jon in the open, just to see what happens. The premise: Open collaboration can relentlessly commoditize things that require a lot of work &#8212; like deep integration &#8212; just because it can mobilize the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://weblog.infoworld.com/udell/2005/10/12.html#a1320">Jon Udell</a> and <a href="http://blogs.msdn.com/johnmont/archive/2005/10/07/478289.aspx">John Montgomery</a> are taking a private conversation about open source public:</p>
<blockquote><p>
I&#8217;ll continue one argument I was having with Jon in the open, just to see what happens. The premise: Open collaboration can relentlessly commoditize things that require a lot of work &#8212; like deep integration &#8212; just because it can mobilize the resources.</p>
<p>My response: In my experience, that hasn&#8217;t been the case. In fact, the &#8220;open collaboration&#8221; model tends to leave things at the &#8220;good enough&#8221; point too often. Look at most open source software efforts: very few large-scale projects get beyond looking like bunches of different applications created by different people. Nearly none actually demonstrate things like common user experience paradigms, consistent APIs, or uniform management.
</p></blockquote>
<p>John goes on to describe four types of open source projects:</p>
<ul>
<li>Cloners - so many of these.</li>
<li>Standards built - such as apache or mozilla.</li>
<li>Competitive Devaluation - closed source projects that become open source to gather a larger audience.</li>
<li>Invention - &#8220;Not quite like anything that came before.&#8221;</li>
</ul>
<p>I think its worth noting that of these four kinds of projects, the top three share the characteristic of having well defined requirements.  These are the projects where parallel collaborative development can excel.</p>
<p>The fourth kind of project, Invention, is a different beast entirely.  I&#8217;ll argue that the open source projects in this category that end up actually succeeding are the ones run by a single benevolent dictator, or a small tight team.  Thats because large groups are not good at setting cohesive goals.  (ever watch CSPAN?)  A strong goal and  a strong vision, more than any other factor, determines the success of a software project.</p>
<p>Again and again I see various forums, mailing lists and news groups spawn open source projects, but if they don&#8217;t fit into the clone this or implement this standard variety, they usually die away.  Thats because they lack a clear vision and a participants lack a willingness to commit resources to achieve that vision.</p>
<p>Communicating a vision such that people are willing to invest resources in realizing that vision is hard.  The coin of the realm in open source is, of course, source code.  The best communicator of a vision is code that solves a problem or provides value.  Without that seed of working, valuable code, most open source projects never move beyond their creator.</p>
<p>Innovative open source projects face the same problem that a small business faces trying to get a a loan from the bank.  The more you need the money, the less likely the bank is to give it to you.  Similarly, potential contributers to an innovative open source project need to see that the goal of the project offers them value and that the project already has enough resources committed to potentially achieve that goal.  Only then are they willing to commit their own resources to the stone soup.</p>
<p>Given the difficulty of communicating a common vision, I think its no surprise that &#8220;common user experience paradigms, consistent APIs, or uniform management&#8221; are not necessarily natural strong points of open source software.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/11/06/communicating-a-vision-with-open-source/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A WordPress bug fix</title>
		<link>http://www.procata.com/blog/archives/2005/09/27/a-wordpress-bug-fix/</link>
		<comments>http://www.procata.com/blog/archives/2005/09/27/a-wordpress-bug-fix/#comments</comments>
		<pubDate>Wed, 28 Sep 2005 04:33:55 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Open Source]]></category>
<category>blogging</category><category>wordpress</category>
		<guid isPermaLink="false">http://www.procata.com/blog/?p=139</guid>
		<description><![CDATA[I upgraded WordPress to 1.5.2 this weekend.  This version fixed some bugs that made it necessary to edit WordPress itself in order to get my BBCode plugin to work.  That editing is one reason I put off upgrading for so long.  I am grateful that my plugin can now exist on its [...]]]></description>
			<content:encoded><![CDATA[<p>I upgraded WordPress to 1.5.2 this weekend.  This version fixed some bugs that made it necessary to edit WordPress itself in order to get my <a href="http://www.procata.com/blog/archives/2004/05/26/wordpress-bbcode-plugin/">BBCode plugin</a> to work.  That editing is one reason I put off upgrading for so long.  I am grateful that my plugin can now exist on its own.   (I&#8217;ll release a new version in a few days.)</p>
<p>Unfortunately, this version of WordPress introduced one bug that really annoys me.  Pingbacks and Trackbacks aren&#8217;t using the permalinks, but instead using ugly query string links.</p>
<p>A little greping suggests that this is caused by a cache that becomes stale after a post is updated.  So, I think the solution is to insert this line:</p>
<p><pre class="php">&nbsp;
<a href="http://www.php.net/unset"><span style="color: #000066;">unset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$post_cache</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$post_ID</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre></p>
<p>on line 382 of wp-admin/post.php.</p>
<p>Since this post contains a link to another blog post, which should get a pingback, it will be my public test of the theory.  </p>
<p><strong>UPDATE:</strong> Bug fixed. <img src='http://www.procata.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/09/27/a-wordpress-bug-fix/feed/</wfw:commentRss>
		</item>
		<item>
		<title>php testing and coverage</title>
		<link>http://www.procata.com/blog/archives/2005/04/08/php-testing-and-coverage/</link>
		<comments>http://www.procata.com/blog/archives/2005/04/08/php-testing-and-coverage/#comments</comments>
		<pubDate>Fri, 08 Apr 2005 15:18:30 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Agile Methods]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[WACT]]></category>
<category>code coverage</category><category>simple test</category><category>unit testing</category>
		<guid isPermaLink="false">http://www.procata.com/blog/archives/2005/04/08/php-testing-and-coverage/</guid>
		<description><![CDATA[I ran across this O&#8217;Reily article about SpikeSource today.  Very interesting.
They have released a coverage reporting tool, Spike PHP Coverage, for PHP that works with XDebug coverage data.  It works with Simple Test and it seems to be able aggregate the results of remote test runs, such as for web based tests.  [...]]]></description>
			<content:encoded><![CDATA[<p>I ran across <a href="http://www.oreillynet.com/pub/a/network/2005/04/07/spikesource.html">this O&#8217;Reily article</a> about <a href="http://www.spikesource.com/">SpikeSource</a> today.  Very interesting.</p>
<p>They have released a coverage reporting tool, <a href="http://www.spikesource.com/projects/phpcoverage/">Spike PHP Coverage</a>, for PHP that works with XDebug coverage data.  It works with Simple Test and it seems to be able aggregate the results of remote test runs, such as for web based tests.  I have wanted something exactly like this.  I can&#8217;t wait to get the chance to generate a consolidated coverage report for WACT.</p>
<p>It seems that they have the capability for generating and aggregating code <a href="http://www.spikesource.com/testresults.log/fedora-1-i386/1440/oss/comp/web/php5/test/coverage/coveragereport.txt">coverage reports</a> for <a href="http://www.spikesource.com/testresults/index.jsp?show=component-results&#038;category=all&#038;comp-id=65726#pkgtest">PHP</a> itself.  I haven&#8217;t had a chance to check this out, but its something that I have always wondered about.</p>
<p>Additionally, it looks like they accept <a href="http://www.spikesource.com/testupload/help_upload.php">contributions of Test Suites</a>.  If I understand this correctly, it means that I can upload the WACT test suite and that it can be used to test and generate coverage reports for PHP 4 and for PHP 5 as well as the framework.  If this is true, this is a big deal.  As there are more and more applications with automated test suites, it only makes sense to aggregate them to test PHP itself.</p>
<p>It also seems that they have embraced <a href="http://www.lastcraft.com/simple_test.php">Simple Test</a> for php testing.  Congratulations, <a href="http://www.lastcraft.com/blog/">Marcus</a>.  Simple Test is a fine piece of software.</p>
<p>I think code coverage measurements are important for gauging the quality of a test suite on open source projects, where there can be less formal development practices and a large number of contributers of varying skill levels and motivation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/04/08/php-testing-and-coverage/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WordPress Search Engine Spam</title>
		<link>http://www.procata.com/blog/archives/2005/03/31/wordpress-search-engine-spam/</link>
		<comments>http://www.procata.com/blog/archives/2005/03/31/wordpress-search-engine-spam/#comments</comments>
		<pubDate>Thu, 31 Mar 2005 16:46:38 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
		
		<category><![CDATA[Open Source]]></category>
<category>blogging</category><category>wordpress</category>
		<guid isPermaLink="false">http://www.procata.com/blog/archives/2005/03/31/wordpress-search-engine-spam/</guid>
		<description><![CDATA[In light of the reports of WordPress search engine spamming, I have removed my link to the WordPress web site.  The default WordPress theme has a &#8220;is proudly powered by WordPress&#8221; tag line with a link.  I thought proudly was overkill in the first place and certainly not true now, so I have [...]]]></description>
			<content:encoded><![CDATA[<p>In light of the <a href="http://www.waxy.org/archive/2005/03/30/wordpres.shtml">reports</a> of WordPress search engine spamming, I have removed my link to the WordPress web site.  The default WordPress theme has a &#8220;is proudly powered by WordPress&#8221; tag line with a link.  I thought proudly was overkill in the first place and certainly not true now, so I have removed both the tag line and the link.  While I certainly don&#8217;t begrudge open source authors the ability to make money from their efforts, I think this was a disappointing choice of methods.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/03/31/wordpress-search-engine-spam/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
