<?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>Ken Guest's online diary</title>
	<atom:link href="http://blogs.linux.ie/kenguest/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.linux.ie/kenguest</link>
	<description>php, linux, pear, mysql etc etc</description>
	<lastBuildDate>Mon, 18 Jan 2010 00:52:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PEAR metapackage for Statusnet</title>
		<link>http://blogs.linux.ie/kenguest/2010/01/17/pear_metapackage_for_statusnet/</link>
		<comments>http://blogs.linux.ie/kenguest/2010/01/17/pear_metapackage_for_statusnet/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 23:55:00 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=315</guid>
		<description><![CDATA[A short while ago, someone popped into the PEAR irc channel on efnet and asked about installing Statusnet - which is a "open source micro messaging platform that helps you share and connect in real-time within your own domain." It's what powers identi.ca and similar micro-blogging services.

Specifically, this person wanted advice on installing the six or so PEAR packages on which this software depends; eight if you include the optional ones.

Foreseeing a number of people wanting similar help, I thought it would be best to create a metapackage to bundle these PEAR packages together - at the least it would mean only one "pear install" command would be required and it would reduce the number of potential mistakes that could be made.

Following my own instructions in the <a href="http://pear.php.net/manual/en/guide.users.dependencytracking.php">"Dependency Tracking (Meta Packages) with PEAR"</a> section in the PEAR documentation, I quickly came up with <a href="http://short.ie/statusnettgz">Statusnet_Statusnet-0.1.1.tgz</a>.

Install it via "$pear install http://short.ie/statusnettgz" for the moment - as the location of where it's being hosted may change during the week.]]></description>
			<content:encoded><![CDATA[<p>A short while ago, someone popped into the PEAR irc channel on efnet and asked about installing Statusnet &#8211; which is a &#8220;open source micro messaging platform that helps you share and connect in real-time within your own domain.&#8221; It&#8217;s what powers identi.ca and similar micro-blogging services.</p>
<p>Specifically, this person wanted advice on installing the six or so PEAR packages on which this software depends; eight if you include the optional ones.</p>
<p>Foreseeing a number of people wanting similar help, I thought it would be best to create a metapackage to bundle these PEAR packages together &#8211; at the least it would mean only one &#8220;pear install&#8221; command would be required and it would reduce the number of potential mistakes that could be made.</p>
<p>Following my own instructions in the <a href="http://pear.php.net/manual/en/guide.users.dependencytracking.php">&#8220;Dependency Tracking (Meta Packages) with PEAR&#8221;</a> section in the PEAR documentation, I quickly came up with <a href="http://short.ie/statusnettgz">Statusnet_Statusnet-0.1.1.tgz</a>.</p>
<p>Install it via &#8220;$pear install http://short.ie/statusnettgz&#8221; for the moment &#8211; as the location of where it&#8217;s being hosted may change during the week.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2010/01/17/pear_metapackage_for_statusnet/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A response to &#8220;Better Postal/Zip Code Validation Method for CakePHP 1.2&#8243;</title>
		<link>http://blogs.linux.ie/kenguest/2009/12/15/a-response-to-better-postalzip-code-validation-method-for-cakephp-1-2/</link>
		<comments>http://blogs.linux.ie/kenguest/2009/12/15/a-response-to-better-postalzip-code-validation-method-for-cakephp-1-2/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 13:59:32 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=307</guid>
		<description><![CDATA[Just a few minutes ago I read Jamie Nay's <a href="http://jamienay.com/2009/12/a-better-postal-zip-code-validation-method-for-cakephp-1-2/">A Better Postal/Zip Code Validation Method for CakePHP 1.2</a> blog post.

Jamie says that "The Validation::postal() method that comes with CakePHP 1.2 is good in that it can handle a number of different country formats, but the problem is you can only validate your data against one country. What if you want to accept, say, either Canadian or US postal/zip code formats? I ran into this problem earlier today, and decided to write my own postal() function that can take either a string as the country, just like Validation::postal(), or an array of countries."

I'm probably going to have to wait for Jamie to wake up before my comment on that blog-post is approved, but the crux of it is "Don't". Don't write your own code to validate user input, unless of course the input data is specific to a problem domain that others haven't catered for yet.

I drew attention to two things. The first is that there are <a href="http://pear.php.net/packages.php?catpid=50&#38;catname=Validate">Validation packages in PEAR</a>, including  <a href="http://pear.php.net/package/Validate"> the main Validate class</a> and all the Validate_xx subclasses such as <a href="http://pear.php.net/package/Validate_US">Validate_US</a>, <a href="http://pear.php.net/package/Validate_CA">Validate_CA</a> and some 22 others).

The second item I drew Jamie's attention to is that his validation code counts a zip code of "00000" as valid, when <a href="http://zip4.usps.com/zip4/citytown_zip.jsp">the USPS zip code look up tool</a> correctly (and they should know!) identifies that code as invalid.

Why spend time writing and debugging regular expressions, compiling lists of valid data and so on when other people have already done this work? Especially when it comes down to such things as validating data input which is crucial when you need to guard against cross site scripting vulnerabilities.

Focus on what you need to do rather than reimplementing what others have already done.

Honestly, this probably should be subtitled - "Stop the NIH craziness, please" - though to be fair Jamie might not have known of the solutions already out there.]]></description>
			<content:encoded><![CDATA[<p>Just a few minutes ago I read Jamie Nay&#8217;s <a href="http://jamienay.com/2009/12/a-better-postal-zip-code-validation-method-for-cakephp-1-2/">A Better Postal/Zip Code Validation Method for CakePHP 1.2</a> blog post.</p>
<p>Jamie says that &#8220;The Validation::postal() method that comes with CakePHP 1.2 is good in that it can handle a number of different country formats, but the problem is you can only validate your data against one country. What if you want to accept, say, either Canadian or US postal/zip code formats? I ran into this problem earlier today, and decided to write my own postal() function that can take either a string as the country, just like Validation::postal(), or an array of countries.&#8221;</p>
<p>I&#8217;m probably going to have to wait for Jamie to wake up before my comment on that blog-post is approved, but the crux of it is &#8220;Don&#8217;t&#8221;. Don&#8217;t write your own code to validate user input, unless of course the input data is specific to a problem domain that others haven&#8217;t catered for yet.</p>
<p>I drew attention to two things. The first is that there are <a href="http://pear.php.net/packages.php?catpid=50&amp;catname=Validate">Validation packages in PEAR</a>, including  <a href="http://pear.php.net/package/Validate"> the main Validate class</a> and all the Validate_xx subclasses such as <a href="http://pear.php.net/package/Validate_US">Validate_US</a>, <a href="http://pear.php.net/package/Validate_CA">Validate_CA</a> and some 22 others).</p>
<p>The second item I drew Jamie&#8217;s attention to is that his validation code counts a zip code of &#8220;00000&#8243; as valid, when <a href="http://zip4.usps.com/zip4/citytown_zip.jsp">the USPS zip code look up tool</a> correctly (and they should know!) identifies that code as invalid.</p>
<p>Why spend time writing and debugging regular expressions, compiling lists of valid data and so on when other people have already done this work? Especially when it comes down to such things as validating data input which is crucial when you need to guard against cross site scripting vulnerabilities.</p>
<p>Focus on what you need to do rather than reimplementing what others have already done.</p>
<p>Honestly, this probably should be subtitled &#8211; &#8220;Stop the NIH craziness, please&#8221; &#8211; though to be fair Jamie might not have known of the solutions already out there.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2009/12/15/a-response-to-better-postalzip-code-validation-method-for-cakephp-1-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Book Review: jQuery 1.3 with PHP</title>
		<link>http://blogs.linux.ie/kenguest/2009/12/13/book-review-jquery-1-3-with-php/</link>
		<comments>http://blogs.linux.ie/kenguest/2009/12/13/book-review-jquery-1-3-with-php/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 23:46:53 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=292</guid>
		<description><![CDATA[[caption id="attachment_298" align="alignleft" width="100" caption="jQuery 1.3 with PHP"]<a href="http://www.packtpub.com/jquery-1-3-with-php/book"><img src="http://blogs.linux.ie/kenguest/files/2009/12/verens_book.png" alt="jQuery 1.3 with PHP" title="jQuery 1.3 with PHP" width="100" height="123" class="size-full wp-image-298" /></a>[/caption] Before I start this review proper, I need to disclose one nugget of information first: The author, Kae Verens, and I are both currently serving as members of the Irish PHP Users Group Committee and have known each other for quite a few years. If you believe I can remain impartial and objective (as I hope you do - because I am), read on:

This is the first book sent to me from Packt where I wasn't left dizzy from trying to understand just what it is the author was trying to get across. It looks like their proof-reader was awake for this one - totally awesome.

jQuery, as the vast majority of us already know, is a JavaScript library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. In other words it does all the heavy lifting and takes care of cross-browser compatibility issues so you don't have to and thus allows you to focus on the work that you need to do without all those distractions.

"jQuery 1.3 with PHP" is aimed "for PHP application developers who want to improve their user interfaces through jQuery's capabilities and responsiveness". Over the course of ten chapters Verens starts the off with an introduction, then a series of 'Quick Tricks' that almost immediately help you add some measure of "Web 2.0" functionality to what I'd term a "web 0.2 application" rather sharply.
The book ends with a chapter on Optimization - some of which you are bound to already know and some which are complete gems.

In the middle are chapters with mini-projects on tabs and accordians, forms and form validation, file management, calendars (and how to make your own google-calendar-like application), image manipulation, drag and drop and data tables. 
In each case, projects are analysed and the required steps for each are outlined in the simplest terms - no extraneous buzzwords are used or are the projects over-analysed for the sake of pedantry.

I was a little surprised in some places where, for example, the json encoded output was not created via json_encode; but then thought not everyone is going to have PHP 5.2 or greater installed. Thumb forward a few pages and this is mentioned. So all's o k.

It was good to see Kae suggesting use of the PEAR Validate package (or similar) in the Forms and Forms Validation chapter (chapter 4). I had to wonder if there was a PEAR package for creating and shunting down jQuery validation rules to the client - and found that there isn't. That's something to consider for later on, I guess.

The rest of the book is similarly both easy to read and easy to understand - my first port of call for learning how to do something that I'd almost term exotic with jQuery and with PHP in the background is usually Google but that is going to change (actually it already has).

Honestly, I wouldn't be surprised if this books working title was "JQuery and PHP: The HowTo" -  it is that good.
Now, this book is not for learning jQuery - that is not within its remit, but I would heartily recomend "jQuery 1.3 with PHP" by Kae Verens to anyone wanting to utilise jQuery from a PHP background.]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_298" class="wp-caption alignleft" style="width: 110px"><a href="http://www.packtpub.com/jquery-1-3-with-php/book"><img src="http://blogs.linux.ie/kenguest/files/2009/12/verens_book.png" alt="jQuery 1.3 with PHP" title="jQuery 1.3 with PHP" width="100" height="123" class="size-full wp-image-298" /></a><p class="wp-caption-text">jQuery 1.3 with PHP</p></div> Before I start this review proper, I need to disclose one nugget of information first: The author, Kae Verens, and I are both currently serving as members of the Irish PHP Users Group Committee and have known each other for quite a few years. If you believe I can remain impartial and objective (as I hope you do &#8211; because I am), read on:</p>
<p>This is the first book sent to me from Packt where I wasn&#8217;t left dizzy from trying to understand just what it is the author was trying to get across. It looks like their proof-reader was awake for this one &#8211; totally awesome.</p>
<p>jQuery, as the vast majority of us already know, is a JavaScript library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. In other words it does all the heavy lifting and takes care of cross-browser compatibility issues so you don&#8217;t have to and thus allows you to focus on the work that you need to do without all those distractions.</p>
<p>&#8220;jQuery 1.3 with PHP&#8221; is aimed &#8220;for PHP application developers who want to improve their user interfaces through jQuery&#8217;s capabilities and responsiveness&#8221;. Over the course of ten chapters Verens starts the off with an introduction, then a series of &#8216;Quick Tricks&#8217; that almost immediately help you add some measure of &#8220;Web 2.0&#8243; functionality to what I&#8217;d term a &#8220;web 0.2 application&#8221; rather sharply.<br />
The book ends with a chapter on Optimization &#8211; some of which you are bound to already know and some which are complete gems.</p>
<p>In the middle are chapters with mini-projects on tabs and accordians, forms and form validation, file management, calendars (and how to make your own google-calendar-like application), image manipulation, drag and drop and data tables.<br />
In each case, projects are analysed and the required steps for each are outlined in the simplest terms &#8211; no extraneous buzzwords are used or are the projects over-analysed for the sake of pedantry.</p>
<p>I was a little surprised in some places where, for example, the json encoded output was not created via json_encode; but then thought not everyone is going to have PHP 5.2 or greater installed. Thumb forward a few pages and this is mentioned. So all&#8217;s o k.</p>
<p>It was good to see Kae suggesting use of the PEAR Validate package (or similar) in the Forms and Forms Validation chapter (chapter 4). I had to wonder if there was a PEAR package for creating and shunting down jQuery validation rules to the client &#8211; and found that there isn&#8217;t. That&#8217;s something to consider for later on, I guess.</p>
<p>The rest of the book is similarly both easy to read and easy to understand &#8211; my first port of call for learning how to do something that I&#8217;d almost term exotic with jQuery and with PHP in the background is usually Google but that is going to change (actually it already has).</p>
<p>Honestly, I wouldn&#8217;t be surprised if this books working title was &#8220;JQuery and PHP: The HowTo&#8221; &#8211;  it is that good.<br />
Now, this book is not for learning jQuery &#8211; that is not within its remit, but I would heartily recomend &#8220;jQuery 1.3 with PHP&#8221; by Kae Verens to anyone wanting to utilise jQuery from a PHP background.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2009/12/13/book-review-jquery-1-3-with-php/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Two security fixes for PEAR&#8217;s Net_Ping and Net_Traceroute packages</title>
		<link>http://blogs.linux.ie/kenguest/2009/11/15/two-security-fixes-for-pears-net_ping-and-net_traceroute-packages/</link>
		<comments>http://blogs.linux.ie/kenguest/2009/11/15/two-security-fixes-for-pears-net_ping-and-net_traceroute-packages/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 14:07:19 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=287</guid>
		<description><![CDATA[As David mentioned in the PEAR Blog yesterday, in the <a href="http://blog.pear.php.net/2009/11/14/net_traceroute-and-net_ping-security-advisory/">PEAR Security Advisory PSA 200911-14-01</a>, <a href="http://pear.php.net/package/Net_Ping">Net_Ping</a> and <a href="http://pear.php.net/package/Net_Traceroute">Net_Traceroute</a> had been found to have command injection venerabilities in them.

These were fixed and new versions released immediately - further details are available on the Official PEAR Blog.]]></description>
			<content:encoded><![CDATA[<p>As David mentioned in the PEAR Blog yesterday, in the <a href="http://blog.pear.php.net/2009/11/14/net_traceroute-and-net_ping-security-advisory/">PEAR Security Advisory PSA 200911-14-01</a>, <a href="http://pear.php.net/package/Net_Ping">Net_Ping</a> and <a href="http://pear.php.net/package/Net_Traceroute">Net_Traceroute</a> had been found to have command injection venerabilities in them.</p>
<p>These were fixed and new versions released immediately &#8211; further details are available on the Official PEAR Blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2009/11/15/two-security-fixes-for-pears-net_ping-and-net_traceroute-packages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Team Development by Samisa Abeysinghe</title>
		<link>http://blogs.linux.ie/kenguest/2009/11/15/php-team-development-by-samisa-abeysinghe/</link>
		<comments>http://blogs.linux.ie/kenguest/2009/11/15/php-team-development-by-samisa-abeysinghe/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 09:33:16 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=282</guid>
		<description><![CDATA[<strong>PHP Team Development by Samisa Abeysinghe</strong>

A few weeks ago I received a copy of <a href="http://www.packtpub.com/php-team-development/book">"PHP Team Development" from Packt</a>.
Split into seven chapters, all equally sprinkled with phrases that are disjointly written and that don't get a point across, and some that make you think the book was written using some speech-to-text software ("Vendor locking" anybody?) , this book which "is for PHP developers who work in teams on complex projects" has given me an aversion to seeing three little words printed alongside each other ("the PHP code").
If you have read this book you too will develop this aversion. I think <a href="http://www.lornajane.net/posts/2009/Book-Review-PHP-Team-Development">Lorna Jane Mitchell</a> and <a href="http://www.brandonsavage.net/book-review-php-team-development/">Brandon Savage</a> who both bravely reviewed this book before me might be inclined to agree. 

Published only in September of this year, I found it surprising that its section on coding standards and best practices does not suggest the use of phpCodeSniffer (for checking the adherence to coding standards, and which, incidentally, has been available in one form or the next for the last three years). Nor does Samisa suggest the use of phpUnit or SimpleTest for unit testing (Actually, nothing is mentioned for unit testing - the concept isn't even described, nor is Test Driven Development). These tools have been around for a very long time and I was honestly startled by their ommission.

In a way that's fine - these are only tools and the book is about team development - not about listing and reviewing each and every tool that could be used to help team members make more efficient use of their time.
But I'd rather use these tools during peer review to help highlight what a team member may be doing wrong in an efficient use of my time, than have to analyse the code myself. 

So, moving on, there's a section explaining that frameworks should also be assessed on the basis of the various open source licenses they are distributed under but the author doesn't really explain why this is important - or discuss what the prevalent FLOSS licences are (MIT, BSD, GPL etc), or what issues they each attempt to address and what they are best suited for.

The NIH (Not Invented Here) Syndrome is mentioned and to be fair the author does give a long list of frameworks to be considered; probably the one detailed list in the book, to be honest. 

PEAR had been mentioned in passing elsewhere in the book so I was expecting it to be listed in the frameworks section too, as I was expecting ezComponents to be referenced somewhere as well - but then, these are a component framework/libraries so perhaps he thought it did not belong in such a list. 

To be honest, I think that is part of the problem. The book focuses on what the author thinks and his thoughts on the subject are written in such a manner, that once you put in the immense effort in trying to understand what he is attempting to communicate, that you are left with the impression that
there are no alternatives; that X &#38; Y &#38; Z are the true and tested ways of doing things in PHP and there are no two ways about it.

This is a complete shame. 

Some other observances about this book;
<ul>
	<li>Continuous Integration is mentioned; but CruiseControl and PHP-Under-Control are not. 
</li>
	<li>Source Code Control is mentioned, and here Subversion and GIT are covered. CVS is mentioned elsewhere, under a section, and chapter, far-far-away. Mercurial, bazaar and others don't even get a look-in. 
</li>

	<li>There is no mention of how approaches to Team Development might vary depending on whether some team members might be working remotely, Pair Programming is barely mentioned let alone suggested as one way of ensuring that each team member is learning from the other and reviewing the code that his partner has written.
</li>

	<li>Under issue- or bug-tracking, jira and bugzilla are mentioned as two popular bug tracking tools, and although Abeysinghe states "there are numerous tools that are available, both opensource and commercial for bug tracking", no others are listed. Fogbugz, Mantis, RT, Trac, and plenty others get left by the wayside.
Actually, I'm wrong. Sorry. Trac is mentioned - at the other end of the book; though not in the glossary or index.
</li>
</ul>

I honestly considered giving up on reading this book and not writing this review. The book truly is that bad. The thought of someone paying out close to thirty euro for a book that I'd call poorly researched, badly proof-read, woefully incomplete, badly structured at worst  and self-opinionated at best did force me to reconsider.

Nobody should spend close to thirty euro on a book and get so little in return.

So my oneliner opinion of PHP Team Development by Samisa Abeysinghe?
I'd seriously suggest you give it a miss - do something more meaningful with the money and buy bread to bring your team on a duck-feeding-mission.]]></description>
			<content:encoded><![CDATA[<p><strong>PHP Team Development by Samisa Abeysinghe</strong></p>
<p>A few weeks ago I received a copy of <a href="http://www.packtpub.com/php-team-development/book">&#8220;PHP Team Development&#8221; from Packt</a>.<br />
Split into seven chapters, all equally sprinkled with phrases that are disjointly written and that don&#8217;t get a point across, and some that make you think the book was written using some speech-to-text software (&#8220;Vendor locking&#8221; anybody?) , this book which &#8220;is for PHP developers who work in teams on complex projects&#8221; has given me an aversion to seeing three little words printed alongside each other (&#8220;the PHP code&#8221;).<br />
If you have read this book you too will develop this aversion. I think <a href="http://www.lornajane.net/posts/2009/Book-Review-PHP-Team-Development">Lorna Jane Mitchell</a> and <a href="http://www.brandonsavage.net/book-review-php-team-development/">Brandon Savage</a> who both bravely reviewed this book before me might be inclined to agree. </p>
<p>Published only in September of this year, I found it surprising that its section on coding standards and best practices does not suggest the use of phpCodeSniffer (for checking the adherence to coding standards, and which, incidentally, has been available in one form or the next for the last three years). Nor does Samisa suggest the use of phpUnit or SimpleTest for unit testing (Actually, nothing is mentioned for unit testing &#8211; the concept isn&#8217;t even described, nor is Test Driven Development). These tools have been around for a very long time and I was honestly startled by their ommission.</p>
<p>In a way that&#8217;s fine &#8211; these are only tools and the book is about team development &#8211; not about listing and reviewing each and every tool that could be used to help team members make more efficient use of their time.<br />
But I&#8217;d rather use these tools during peer review to help highlight what a team member may be doing wrong in an efficient use of my time, than have to analyse the code myself. </p>
<p>So, moving on, there&#8217;s a section explaining that frameworks should also be assessed on the basis of the various open source licenses they are distributed under but the author doesn&#8217;t really explain why this is important &#8211; or discuss what the prevalent FLOSS licences are (MIT, BSD, GPL etc), or what issues they each attempt to address and what they are best suited for.</p>
<p>The NIH (Not Invented Here) Syndrome is mentioned and to be fair the author does give a long list of frameworks to be considered; probably the one detailed list in the book, to be honest. </p>
<p>PEAR had been mentioned in passing elsewhere in the book so I was expecting it to be listed in the frameworks section too, as I was expecting ezComponents to be referenced somewhere as well &#8211; but then, these are a component framework/libraries so perhaps he thought it did not belong in such a list. </p>
<p>To be honest, I think that is part of the problem. The book focuses on what the author thinks and his thoughts on the subject are written in such a manner, that once you put in the immense effort in trying to understand what he is attempting to communicate, that you are left with the impression that<br />
there are no alternatives; that X &amp; Y &amp; Z are the true and tested ways of doing things in PHP and there are no two ways about it.</p>
<p>This is a complete shame. </p>
<p>Some other observances about this book;</p>
<ul>
<li>Continuous Integration is mentioned; but CruiseControl and PHP-Under-Control are not.
</li>
<li>Source Code Control is mentioned, and here Subversion and GIT are covered. CVS is mentioned elsewhere, under a section, and chapter, far-far-away. Mercurial, bazaar and others don&#8217;t even get a look-in.
</li>
<li>There is no mention of how approaches to Team Development might vary depending on whether some team members might be working remotely, Pair Programming is barely mentioned let alone suggested as one way of ensuring that each team member is learning from the other and reviewing the code that his partner has written.
</li>
<li>Under issue- or bug-tracking, jira and bugzilla are mentioned as two popular bug tracking tools, and although Abeysinghe states &#8220;there are numerous tools that are available, both opensource and commercial for bug tracking&#8221;, no others are listed. Fogbugz, Mantis, RT, Trac, and plenty others get left by the wayside.<br />
Actually, I&#8217;m wrong. Sorry. Trac is mentioned &#8211; at the other end of the book; though not in the glossary or index.
</li>
</ul>
<p>I honestly considered giving up on reading this book and not writing this review. The book truly is that bad. The thought of someone paying out close to thirty euro for a book that I&#8217;d call poorly researched, badly proof-read, woefully incomplete, badly structured at worst  and self-opinionated at best did force me to reconsider.</p>
<p>Nobody should spend close to thirty euro on a book and get so little in return.</p>
<p>So my oneliner opinion of PHP Team Development by Samisa Abeysinghe?<br />
I&#8217;d seriously suggest you give it a miss &#8211; do something more meaningful with the money and buy bread to bring your team on a duck-feeding-mission.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2009/11/15/php-team-development-by-samisa-abeysinghe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Beginning Joomla! (Second Edition); A review</title>
		<link>http://blogs.linux.ie/kenguest/2009/10/27/beginning-joomla-second-edition-a-review/</link>
		<comments>http://blogs.linux.ie/kenguest/2009/10/27/beginning-joomla-second-edition-a-review/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 13:55:53 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=277</guid>
		<description><![CDATA[A while ago I was sent a complimentary review copy of "Beginning Joomla! (Second Edition)" by Dan Rahmel and published by Apress.

In a clear non-patronising and concise manner the author explains to the reader just what Joomla is (a content management system), how to install, add content, administer, design templates and write extensions for it. He touches on SEO and covers the aspects of both deploying Joomla on Windows, Linux and Mac.
Done in a gentle manner with graceful explanations along the way, he explains everything in a clear manner: how to troubleshoot not being able to access the web or database servers and even mentioning the password system differs from version 4 to version 5 of mysql, for example.

There are a few points in the book that startled me however; Rahmel informs the reader in chapter three that if XAMPP is used as a means of installing the base requirements then certain security concerns need to be addressed. In chapter two he states PHP 4.3.10 as the lowest version required - I'm surprised that a later version of PHP 4 wasn't recommended, even though 4.3.10 may be the lowest required version - version 4.4.10 for example which is the very last version of PHP to ever be released. I hope this is just a typo that hadn't been caught in time. 
If it was not, then I'd have to express a certain level of professional disappointment; the security enhancements and bug fixes in PHP 4.4.10 should definitely have been enumerated. While it is true to say that most installs of Joomla are into shared hosting environments where such changes can not be implemented, I also would have expected the author to have mentioned that Apache, and by implication Joomla, performs better when configuration directives are specified in the httpd.conf files rather than .htaccess files which must first be scanned for at a directory-by-directory level.

I had been looking forward to reading the chapter on creating extensions (chapter thirteen) but was rather disappointed. I had expected Rahmel to go into much more depth, especially as the blurb on the back of the book mentions how he has coded other solutions from scratch in PHP and ASP, so surely there would be hard-learned tips and some advice that he could share? Instead he hardly mentions the Joomla API nor does he provide a reference or link to where further information on the subject could be found. 

I would like to say that the second edition of "Beginning Joomla!" is well rounded but the lack of detail on creating extensions and the differing levels of detail regarding security and performance tips makes me shy from saying that.

Also, I do wish that there was a list of recommended reading and a glossary in the book too - it is invaluable to have a "cheat sheet" of what different terms mean and also to know what other bodies of work are available to help you learn more.

To summarise - "Beginning Jooma! Secong Edition" is a well-written book aimed at (surprise) people new to using Joomla - it just could be better and the section on developing plugins or components should simply be dropped as it is not adequate and probably could have an entire book devoted to the subject.]]></description>
			<content:encoded><![CDATA[<p>A while ago I was sent a complimentary review copy of &#8220;<a href="http://www.apress.com/book/view/1430216425">Beginning Joomla! (Second Edition)</a>&#8221; by Dan Rahmel and published by Apress.</p>
<p>In a clear non-patronising and concise manner the author explains to the reader just what Joomla is (a content management system), how to install, add content, administer, design templates and write extensions for it. He touches on SEO and covers the aspects of both deploying Joomla on Windows, Linux and Mac.<br />
Done in a gentle manner with graceful explanations along the way, he explains everything in a clear manner: how to troubleshoot not being able to access the web or database servers and even mentioning the password system differs from version 4 to version 5 of mysql, for example.</p>
<p>There are a few points in the book that startled me however; Rahmel informs the reader in chapter three that if XAMPP is used as a means of installing the base requirements then certain security concerns need to be addressed. In chapter two he states PHP 4.3.10 as the lowest version required &#8211; I&#8217;m surprised that a later version of PHP 4 wasn&#8217;t recommended, even though 4.3.10 may be the lowest required version &#8211; version <del datetime="2009-11-08T10:06:23+00:00">4.4.10</del> 4.4.9 for example which is the very last version of PHP to ever be released. I hope this is just a typo that hadn&#8217;t been caught in time.<br />
If it was not, then I&#8217;d have to express a certain level of professional disappointment; the security enhancements and bug fixes in PHP 4.4.10 should definitely have been enumerated. While it is true to say that most installs of Joomla are into shared hosting environments where such changes can not be implemented, I also would have expected the author to have mentioned that Apache, and by implication Joomla, performs better when configuration directives are specified in the httpd.conf files rather than .htaccess files which must first be scanned for at a directory-by-directory level.</p>
<p>I had been looking forward to reading the chapter on creating extensions (chapter thirteen) but was rather disappointed. I had expected Rahmel to go into much more depth, especially as the blurb on the back of the book mentions how he has coded other solutions from scratch in PHP and ASP, so surely there would be hard-learned tips and some advice that he could share? Instead he hardly mentions the Joomla API nor does he provide a reference or link to where further information on the subject could be found. </p>
<p>I would like to say that the second edition of &#8220;Beginning Joomla!&#8221; is well rounded but the lack of detail on creating extensions and the differing levels of detail regarding security and performance tips makes me shy from saying that.</p>
<p>Also, I do wish that there was a list of recommended reading and a glossary in the book too &#8211; it is invaluable to have a &#8220;cheat sheet&#8221; of what different terms mean and also to know what other bodies of work are available to help you learn more.</p>
<p>To summarise &#8211; &#8220;Beginning Jooma! Secong Edition&#8221; is a well-written book aimed at (surprise) people new to using Joomla &#8211; it just could be better and the section on developing plugins or components should simply be dropped as it is not adequate and probably could have an entire book devoted to the subject.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2009/10/27/beginning-joomla-second-edition-a-review/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>OSSBarCamp lightning talk on PEAR: slides now online</title>
		<link>http://blogs.linux.ie/kenguest/2009/09/23/pear_lightning_talk_slides/</link>
		<comments>http://blogs.linux.ie/kenguest/2009/09/23/pear_lightning_talk_slides/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 13:03:00 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=273</guid>
		<description><![CDATA[I was the the <a href="http://www.ossbarcamp.com/">OSSBarCamp</a> event in Dublin last Saturday and gave a <a href="http://talks.php.net/show/ossbarcamp2009/">lightning talk on PEAR</a>. It went well (I think). The slides for it are now online at the <a href="http://talks.php.net/">talks.php.net website</a>.]]></description>
			<content:encoded><![CDATA[<p>I was the the <a href="http://www.ossbarcamp.com/">OSSBarCamp</a> event in Dublin last Saturday and gave a <a href="http://talks.php.net/show/ossbarcamp2009/">lightning talk on PEAR</a>. It went well (I think). The slides for it are now online at the <a href="http://talks.php.net/">talks.php.net website</a>. <br />
I&#8217;ll write up more thoughts on the event later if I find the time <img src='http://blogs.linux.ie/kenguest/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2009/09/23/pear_lightning_talk_slides/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OpenStreetMap in the news again</title>
		<link>http://blogs.linux.ie/kenguest/2009/08/28/openstreetmap-in-the-news-agai/</link>
		<comments>http://blogs.linux.ie/kenguest/2009/08/28/openstreetmap-in-the-news-agai/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 07:45:24 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[openstreetmap]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=268</guid>
		<description><![CDATA[Spotted two new articles on OpenStreetMap recently - one on the PocketLint site: "<a href='http://www.pocket-lint.com/news/26612/osm-openstreetmap-interview-steve-coast'>OpenStreetMap - Crowd sourced cartography set to re-map the world</a>"; and the other on Wired: "<a href='http://www.wired.com/gadgetlab/2009/08/gps-hackers'>GPS Hackers Blaze Own Trails With Crowdsourced Maps</a>".<br />
They both mention how OpenStreetMap cartography is more detailed than the alternatives produced by Navteq, Teleatlas et al and the Wired article even goes to include at least four links to various parts of the <a href="http://wiki.openstreetmap.org/">OSM wiki</a> and mentions some of the devices that our maps can be used on such as iPhones, TomToms and so on.<br />
What with this and more OSM 'love' spilling into <a href="http://twit.tv/floss83">Episode 83 of Floss Weekly</a> - Steve Coast, founder of OpenStreetMap, was interviewed in Episode 81 it looks like activity is only going to increase.]]></description>
			<content:encoded><![CDATA[<p>Spotted two new articles on OpenStreetMap recently &#8211; one on the PocketLint site: &#8220;<a href='http://www.pocket-lint.com/news/26612/osm-openstreetmap-interview-steve-coast'>OpenStreetMap &#8211; Crowd sourced cartography set to re-map the world</a>&#8220;; and the other on Wired: &#8220;<a href='http://www.wired.com/gadgetlab/2009/08/gps-hackers'>GPS Hackers Blaze Own Trails With Crowdsourced Maps</a>&#8220;.<br />
They both mention how OpenStreetMap cartography is more detailed than the alternatives produced by Navteq, Teleatlas et al and the Wired article even goes to include at least four links to various parts of the <a href="http://wiki.openstreetmap.org/">OSM wiki</a> and mentions some of the devices that our maps can be used on such as iPhones, TomToms and so on.<br />
What with this and more OSM &#8216;love&#8217; spilling into <a href="http://twit.tv/floss83">Episode 83 of Floss Weekly</a> &#8211; Steve Coast, founder of OpenStreetMap, was interviewed in Episode 81 it looks like activity is only going to increase.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2009/08/28/openstreetmap-in-the-news-agai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenStreetMap at the Farmleigh Park Geeknic in Dublin, anybody?</title>
		<link>http://blogs.linux.ie/kenguest/2009/07/21/openstreetmap-at-the-farmleigh-park-geeknic-in-dublin-anybody/</link>
		<comments>http://blogs.linux.ie/kenguest/2009/07/21/openstreetmap-at-the-farmleigh-park-geeknic-in-dublin-anybody/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 12:52:01 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[openstreetmap]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=261</guid>
		<description><![CDATA[There's a <a href="http://ubuntu-ie.org/node/35">Geeknic (picnic for geeks if you aren't too sure) on in  Farmleigh Park, Dublin</a> in a few weeks time (on Sunday 2nd August @ 1pm). I can't help but notice that <a href="http://www.openstreetmap.org/?lat=53.3665931224823&#38;lon=-6.35754346847534&#38;zoom=15">the OpenStreetMap map of Farmleigh</a> could do with a bit of attention - from what I can make out there are unnamed roads on the OSM map along with ones that aren't there - and as we all know, we can add as much detail as we feel necessary ;-)

So, anybody on for a bit of socialisin', evangelisin' and map making?
]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a <a href="http://ubuntu-ie.org/node/35">Geeknic (picnic for geeks if you aren&#8217;t too sure) on in  Farmleigh Park, Dublin</a> in a few weeks time (on Sunday 2nd August @ 1pm). I can&#8217;t help but notice that <a href="http://www.openstreetmap.org/?lat=53.3665931224823&amp;lon=-6.35754346847534&amp;zoom=15">the OpenStreetMap map of Farmleigh</a> could do with a bit of attention &#8211; from what I can make out there are unnamed roads on the OSM map along with ones that aren&#8217;t there &#8211; and as we all know, we can add as much detail as we feel necessary <img src='http://blogs.linux.ie/kenguest/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>So, anybody on for a bit of socialisin&#8217;, evangelisin&#8217; and map making?</p>
<div id="map_1" class="Oms" style="width:450px; height:450px; overflow:hidden"></div><script type="text/javascript">/* <![CDATA[ */jQuery(document).ready(function($) { map = new OpenLayers.Map ("map_1", {            controls:[              new OpenLayers.Control.Navigation(),              new OpenLayers.Control.PanZoom(),              new OpenLayers.Control.Attribution()              ],          maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),          maxResolution: 156543.0399,          numZoomLevels: 19,          units: "m",          projection: new OpenLayers.Projection("EPSG:900913"),           displayProjection: new OpenLayers.Projection("EPSG:4326")      } );var layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");var layerTah    = new OpenLayers.Layer.OSM.Osmarender("Osmarender");var layerCycle  = new OpenLayers.Layer.OSM.CycleMap("CycleMap");map.addLayers([layerMapnik, layerTah, layerCycle]);map.addControl(new OpenLayers.Control.LayerSwitcher());var lonLat = new OpenLayers.LonLat(-6.352,53.364).transform(map.displayProjection,  map.projection);map.setCenter (lonLat,14);var markers = new OpenLayers.Layer.Markers( "Marker" );map.addLayer(markers);var data = {};data.icon = new OpenLayers.Icon("http://blogs.linux.ie/kenguest/wp-content/plugins/osm/icons/marker_blue.png",     new OpenLayers.Size(24,24),     new OpenLayers.Pixel(-12, -12));var ll = new OpenLayers.LonLat(-6.353,53.366).transform(map.displayProjection,  map.projection);     var feature = new OpenLayers.Feature(markers, ll, data);feature.closeBox = true;feature.popupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {minSize: new OpenLayers.Size(100,150) } );feature.data.popupContentHTML = "Array";feature.data.overflow = "hidden";var marker = new OpenLayers.Marker(ll,data.icon.clone());marker.feature = feature;var markerClick = function(evt) {  if (this.popup == null) {    this.popup = this.createPopup(this.closeBox);    map.addPopup(this.popup);    this.popup.show();  }   else {    this.popup.toggle();  }  OpenLayers.Event.stop(evt);};marker.events.register("mousedown", feature, markerClick);markers.addMarker(marker);map.addPopup(feature.createPopup(feature.closeBox));});/* ]]&gt; */ </script>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2009/07/21/openstreetmap-at-the-farmleigh-park-geeknic-in-dublin-anybody/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Accessibility mailing list for Open Street Map</title>
		<link>http://blogs.linux.ie/kenguest/2009/07/02/accessibility-mailing-list/</link>
		<comments>http://blogs.linux.ie/kenguest/2009/07/02/accessibility-mailing-list/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 13:13:11 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[openstreetmap]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=257</guid>
		<description><![CDATA[<a href="http://lists.openstreetmap.org/pipermail/talk/2009-July/038201.html">Lulu-Ann posted to the general Open Street Map</a> mailing list an announcement of the<a href="http://lists.openstreetmap.org/listinfo/accessibility">accessibility mailing list </a>.

From her posting, this mailing list will be focused on the discussion of
<ul>
	<li>How to create non visual maps for the blind and visual impaired</li>
	<li>New tags that allow to map objects of special interest for disabled persons</li>
	<li>New maps that contain information about barriers like steps for wheelchair users</li>
	<li>Special routing, like wheelchair routing or pedestrian routing for the blind</li>
	<li>New maps that contain worthful information like theatres with subtitles for the deaf or braille writing signs or acoustic traffic lights for the blind</li>
	<li>Data exchange to the navigation tool "Loadstone-GPS" for the blind</li>
</ul>

All very interesting.]]></description>
			<content:encoded><![CDATA[<p><a href="http://lists.openstreetmap.org/pipermail/talk/2009-July/038201.html">Lulu-Ann posted to the general Open Street Map</a> mailing list an announcement of the<a href="http://lists.openstreetmap.org/listinfo/accessibility">accessibility mailing list </a>.</p>
<p>From her posting, this mailing list will be focused on the discussion of</p>
<ul>
<li>How to create non visual maps for the blind and visual impaired</li>
<li>New tags that allow to map objects of special interest for disabled persons</li>
<li>New maps that contain information about barriers like steps for wheelchair users</li>
<li>Special routing, like wheelchair routing or pedestrian routing for the blind</li>
<li>New maps that contain worthful information like theatres with subtitles for the deaf or braille writing signs or acoustic traffic lights for the blind</li>
<li>Data exchange to the navigation tool &#8220;Loadstone-GPS&#8221; for the blind</li>
</ul>
<p>All very interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2009/07/02/accessibility-mailing-list/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
