<?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>Fri, 21 Oct 2011 18:13:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>A new Openstreetmap API framework for PHP.</title>
		<link>http://blogs.linux.ie/kenguest/2011/10/21/a-new-openstreetmap-api-framework-for-php/</link>
		<comments>http://blogs.linux.ie/kenguest/2011/10/21/a-new-openstreetmap-api-framework-for-php/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 17:38:38 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[openstreetmap]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=371</guid>
		<description><![CDATA[So over the last while, I've been working on a PHP package imaginitively named <a href="https://github.com/kenguest/Services_Openstreetmap">Services_Openstreetmap</a>, for interacting with the <a href="http://wiki.openstreetmap.org/wiki/API_v0.6">openstreetmap API</a>. I initially needed it so I could search for certain POIs and tabulate the results; it's now also capable of adding data to the openstreetmap database - nodes and other elements can be created, updated and so on. It will even access the details of the user that is being used to modify that data, which is one difference between it and <a href="http://wiki.openstreetmap.org/wiki/Develop/Frameworks#Single_Purpose_Client_Libraries_for_API0.6_.28the_RESTful_API.29">the other single purpose OSM frameworks</a>.

So why the big fanfare now? Well I'm happy enough with it now to let other people look at and use it and also I've submitted it to the <a href="http://pear.php.net/pepr/">PEAR Pepr process</a>, and the grilling that entails, so it can be included in the PEAR repository.
]]></description>
			<content:encoded><![CDATA[<p>So over the last while, I&#8217;ve been working on a PHP package imaginatively named <a href="https://github.com/kenguest/Services_Openstreetmap">Services_Openstreetmap</a>, for interacting with the <a href="http://wiki.openstreetmap.org/wiki/API_v0.6">openstreetmap API</a>. I initially needed it so I could search for certain POIs and tabulate the results; it&#8217;s now also capable of adding data to the openstreetmap database &#8211; nodes and other elements can be created, updated and so on. It will even access the details of the user that is being used to modify that data, which is one difference between it and <a href="http://wiki.openstreetmap.org/wiki/Develop/Frameworks#Single_Purpose_Client_Libraries_for_API0.6_.28the_RESTful_API.29">the other single purpose OSM frameworks</a>.</p>
<p>So why the big fanfare now? Well I&#8217;m happy enough with it now to let other people look at and use it and also I&#8217;ve <a href="http://pear.php.net/pepr/pepr-proposal-show.php?id=667">submitted i</a>t to the <a href="http://pear.php.net/pepr/">PEAR Pepr process</a>, and the grilling that entails, so it can be included in the PEAR repository.</p>
<p>And if this pushes more people to using Openstreetmap (or PEAR for that matter) all the better!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2011/10/21/a-new-openstreetmap-api-framework-for-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mapping Roscrea &#8211; with hindsight set to 20/20.</title>
		<link>http://blogs.linux.ie/kenguest/2011/04/21/mapping-roscrea-with-hindsight-set-to-2020/</link>
		<comments>http://blogs.linux.ie/kenguest/2011/04/21/mapping-roscrea-with-hindsight-set-to-2020/#comments</comments>
		<pubDate>Thu, 21 Apr 2011 10:44:21 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[openstreetmap]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=364</guid>
		<description><![CDATA[So, I had the opportunity earlier on this week, to spend an hour or two &#8216;micromapping&#8217; a portion of Roscrea town. Deciding to focus on Castle Street, Glebe View (previously not on the map), Gaol Road, Abbey Street and back up to Castle Street via Rosemary Street and some of Main Street, I&#8217;ve added quite [...]]]></description>
			<content:encoded><![CDATA[<p>So, I had the opportunity earlier on this week, to spend an hour or two &#8216;micromapping&#8217; a portion of <a href="http://en.wikipedia.org/wiki/Roscrea">Roscrea</a> town. Deciding to focus on Castle Street, Glebe View (previously not on the map), Gaol Road, Abbey Street and back up to Castle Street via Rosemary Street and some of Main Street, I&#8217;ve added quite a few POIs; including *three* fast food emporiums with the word &#8216;Tasty&#8217; in their names!</p>
<style type="text/css">#map_1 {padding: 0; margin: 0;}#map_1 img{padding: 0; margin: 0;border:none;margin-top:0px;margin-right:0px;margin-left:0px;margin-bottom:0px;}</style><div id="map_1" style="width:450px; height:450px; overflow:hidden;padding:0px;"><script type="text/javascript" src="http://www.openlayers.org/api/OpenLayers.js"></script><script type="text/javascript" src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script><script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script><script type="text/javascript">/* <![CDATA[ */(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");var layerGooglePhysical   = new OpenLayers.Layer.Google("Google Physical", {type: google.maps.MapTypeId.TERRAIN} );var layerGoogleStreet     = new OpenLayers.Layer.Google("Google Street", {type: google.maps.MapTypeId.ROADMAP} );var layerGoogleHybrid     = new OpenLayers.Layer.Google("Google Hybrid", {type: google.maps.MapTypeId.HYBRID} );var layerGoogleSatellite  = new OpenLayers.Layer.Google("Google Satellite", {type: google.maps.MapTypeId.SATELLITE} );map.addLayers([layerMapnik, layerTah, layerCycle, layerGooglePhysical, layerGoogleStreet, layerGoogleHybrid, layerGoogleSatellite]);map.addControl(new OpenLayers.Control.LayerSwitcher());    function osm_getTileURL(bounds) {        var res = this.map.getResolution();        var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));        var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));        var z = this.map.getZoom();        var limit = Math.pow(2, z);        if (y < 0 || y >= limit) {            return OpenLayers.Util.getImagesLocation() + "404.png";        } else {            x = ((x % limit) + limit) % limit;            return this.url + z + "/" + x + "/" + y + "." + this.type;        }    }var lonLat = new OpenLayers.LonLat(-7.79622,52.95368).transform(map.displayProjection,  map.projection);map.setCenter (lonLat,17);})(jQuery)/* ]]&gt; */ </script></div>
<p>Walking around with a notepad and pen, along with a little black box with flashing lights on (my gps &#8216;mouse&#8217; for which I should get a spare battery) aroused some interest; between some people telling me of their favourite walks and at least one man telling me that what I was doing was very strange indeed I think, after the fact of course (hindsight always being 20-20), I should have brought <a href="http://blogs.linux.ie/kenguest/2010/03/25/openstreetmap-posters/">a few OSM pamphlets or leaflets</a> with me &#8211; not wanting to stick out too much I&#8217;d left <a href="http://wiki.openstreetmap.org/wiki/Merchandise#High_Vis_Jackets">my openstreetmap hi-viz vest</a> behind in the car.</p>
<p>What, if anything, do you bring along when mapping &#8211; both for the act of mapping itself and for &#8216;spreading the word&#8217;?</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2011/04/21/mapping-roscrea-with-hindsight-set-to-2020/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding colour to your mysql prompt</title>
		<link>http://blogs.linux.ie/kenguest/2011/04/20/adding-colour-to-your-mysql-prompt/</link>
		<comments>http://blogs.linux.ie/kenguest/2011/04/20/adding-colour-to-your-mysql-prompt/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 11:29:13 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=359</guid>
		<description><![CDATA[Adding colour to your mysql prompt can be a good way to indicate where you are running the mysql CLI client from. This is how to do it with rlwrap.]]></description>
			<content:encoded><![CDATA[<p>I almost made a critical mistake on the production mysql database for one of my projects yesterday, which definitely would not have been a Good Thing if it had happened; even though I do have a custom prompt set up for mysql &#8211; when they&#8217;re all so similar you don&#8217;t always take heed.</p>
<p>So now, along with having the mysql prompt defined as <em>prompt=&#8217;\h@\u (\d) > &#8216;</em> in the [mysql] section of my ~/.my.cnf file (so host, username and database name are included in the prompt), I have also installed rlwrap and set up an alias in my .bashrc:</p>
<p><code><br />
if [ -x /usr/bin/rlwrap ]; then<br />
        alias mysql='/usr/bin/rlwrap -a -pGREEN /usr/bin/mysql'<br />
fi<br />
</code>                                                        </p>
<p>This displays the mysql prompt in green, after checking that rlwrap is available, which I have configured for my development environment only &#8211; now I just need to train myself to be extra careful for when the prompt isn&#8217;t coloured.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2011/04/20/adding-colour-to-your-mysql-prompt/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>FTP files to/from 9310 with obexftp</title>
		<link>http://blogs.linux.ie/kenguest/2011/02/28/ftp-files-tofrom-9310-with-obexftp/</link>
		<comments>http://blogs.linux.ie/kenguest/2011/02/28/ftp-files-tofrom-9310-with-obexftp/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 14:10:18 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=356</guid>
		<description><![CDATA[Forgot I could ftp files to/from my old nokia 9310 via the command line on linux with obexftp.
This is how - so I don't forget again later on...]]></description>
			<content:encoded><![CDATA[<p>Forgot I could ftp files to/from my old nokia 9310 via the command line on linux with obexftp.<br />
This is how &#8211; so I don&#8217;t forget again later on&#8230;</p>
<p>  obexftp -b AA:BB:CC:DD:EE:FF -c C: -g TODO.txt; #get the file from the phone<br />
  vim TODO.txt; #whatever<br />
  obexftp -b AA:BB:CC:DD:EE:FF -c C: -p TODO.txt; #push it back up again.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2011/02/28/ftp-files-tofrom-9310-with-obexftp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Date_Holidays Frenzy &#8211; and a little update.</title>
		<link>http://blogs.linux.ie/kenguest/2011/02/28/date_holidays-frenzy-and-a-little-update/</link>
		<comments>http://blogs.linux.ie/kenguest/2011/02/28/date_holidays-frenzy-and-a-little-update/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 09:25:08 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=352</guid>
		<description><![CDATA[In the space of just under a month <a href="http://pear.php.net/package/Date_Holidays_Croatia/">Date_Holidays_Croatia</a> and <a href="http://pear.php.net/package/Date_Holidays_Australia/download/0.1.1/">Date_Holidays_Australia</a> were released - many thanks to the guys who did the actual hard work to be fair as all I did was package them up and release them!

I've also been slowly working my way through the <a href="http://pear.php.net/bugs/search.php?cmd=display&#038;package_name[]=Auth_SASL&#038;package_name[]=Cache&#038;package_name[]=Console_Getargs&#038;package_name[]=Contact_AddressBook&#038;package_name[]=Crypt_RC42&#038;package_name[]=Crypt_RSA&#038;package_name[]=DB_ado&#038;package_name[]=DB_ldap&#038;package_name[]=DB_ldap2&#038;package_name[]=DB_odbtp&#038;package_name[]=DB_Sqlite_Tools&#038;package_name[]=File_DICOM&#038;package_name[]=File_DNS&#038;package_name[]=File_Find&#038;package_name[]=File_Fstab&#038;package_name[]=File_Passwd&#038;package_name[]=File_SearchReplace&#038;package_name[]=File_XSPF&#038;package_name[]=Games_Chess&#038;package_name[]=Gtk_MDB_Designer&#038;package_name[]=HTML_CSS&#038;package_name[]=HTML_Javascript&#038;package_name[]=HTML_Progress2&#038;package_name[]=HTML_QuickForm_advmultiselect&#038;package_name[]=HTML_QuickForm_SelectFilter&#038;package_name[]=HTML_Select&#038;package_name[]=HTML_Select_Common&#038;package_name[]=HTML_Table_Matrix&#038;package_name[]=HTML_Template_Xipe&#038;package_name[]=HTTP_Header&#038;package_name[]=HTTP_Server&#038;package_name[]=HTTP_SessionServer&#038;package_name[]=HTTP_Upload&#038;package_name[]=HTTP_WebDAV_Server&#038;package_name[]=I18N_UnicodeString&#038;package_name[]=Image_Color2&#038;package_name[]=Image_GIS&#038;package_name[]=Image_Graph&#038;package_name[]=Image_IPTC&#038;package_name[]=Image_Puzzle&#038;package_name[]=Image_WBMP&#038;package_name[]=Inline_C&#038;package_name[]=LiveUser_Admin&#038;package_name[]=Mail_IMAPv2&#038;package_name[]=Math_Basex&#038;package_name[]=Math_BinaryUtils&#038;package_name[]=Math_Complex&#038;package_name[]=Math_Fibonacci&#038;package_name[]=Math_Finance&#038;package_name[]=Math_Histogram&#038;package_name[]=Math_Integer&#038;package_name[]=Math_Matrix&#038;package_name[]=Math_Polynomial&#038;package_name[]=Math_Quaternion&#038;package_name[]=Math_Stats&#038;package_name[]=Math_TrigOp&#038;package_name[]=Math_Vector&#038;package_name[]=MDB2_Driver_fbsql&#038;package_name[]=MDB2_TableBrowser&#038;package_name[]=Message&#038;package_name[]=MP3_Playlist&#038;package_name[]=Net_Cyrus&#038;package_name[]=Net_Dict&#038;package_name[]=Net_FTP&#038;package_name[]=Net_GameServerQuery&#038;package_name[]=Net_Geo&#038;package_name[]=Net_GeoIP&#038;package_name[]=Net_HL7&#038;package_name[]=Net_LMTP&#038;package_name[]=Net_Monitor&#038;package_name[]=Net_MPD&#038;package_name[]=Net_Ping&#038;package_name[]=Net_POP3&#038;package_name[]=Net_SMPP_Client&#038;package_name[]=Payment_PagamentoCerto&#038;package_name[]=PEAR_Delegator&#038;package_name[]=PEAR_PackageFileManager_Frontend&#038;package_name[]=PEAR_PackageFileManager_Frontend_Web&#038;package_name[]=PEAR_PackageFileManager_GUI_Gtk&#038;package_name[]=PEAR_PackageUpdate&#038;package_name[]=PEAR_PackageUpdate_Web&#038;package_name[]=PHP_Fork&#038;package_name[]=PHP_Parser&#038;package_name[]=PHP_ParserGenerator&#038;package_name[]=PHP_Shell&#038;package_name[]=RDF&#038;package_name[]=RDF_N3&#038;package_name[]=RDF_NTriple&#038;package_name[]=RDF_RDQL&#038;package_name[]=Science_Chemistry&#038;package_name[]=ScriptReorganizer&#038;package_name[]=Search_Mnogosearch&#038;package_name[]=Services_Delicious&#038;package_name[]=Services_DynDNS&#038;package_name[]=Services_Ebay&#038;package_name[]=Services_ExchangeRates&#038;package_name[]=Services_W3C_CSSValidator&#038;package_name[]=Services_Webservice&#038;package_name[]=Services_YouTube&#038;package_name[]=Stream_SHM&#038;package_name[]=Stream_Var&#038;package_name[]=Structures_Graph&#038;package_name[]=System_Command&#038;package_name[]=System_Mount&#038;package_name[]=System_ProcWatch&#038;package_name[]=System_SharedMemory&#038;package_name[]=System_Socket&#038;package_name[]=Text_Huffman&#038;package_name[]=Text_Statistics&#038;package_name[]=Text_TeXHyphen&#038;package_name[]=Text_Wiki_BBCode&#038;package_name[]=Text_Wiki_Cowiki&#038;package_name[]=Text_Wiki_Doku&#038;package_name[]=Tree&#038;package_name[]=Validate_AR&#038;package_name[]=Validate_FR&#038;package_name[]=Validate_HU&#038;package_name[]=Validate_IN&#038;package_name[]=Validate_IS&#038;package_name[]=Validate_NL&#038;package_name[]=Validate_PL&#038;package_name[]=Validate_ZA&#038;package_name[]=XML_CSSML&#038;package_name[]=XML_FastCreate&#038;package_name[]=XML_Feed_Parser&#038;package_name[]=XML_fo2pdf&#038;package_name[]=XML_FOAF&#038;package_name[]=XML_HTMLSax&#038;package_name[]=XML_HTMLSax3&#038;package_name[]=XML_image2svg&#038;package_name[]=XML_Indexing&#038;package_name[]=XML_MXML&#038;package_name[]=XML_NITF&#038;package_name[]=XML_RDDL&#038;package_name[]=XML_RSS&#038;package_name[]=XML_SaxFilters&#038;package_name[]=XML_Statistics&#038;package_name[]=XML_SVG&#038;package_name[]=XML_svg2image&#038;package_name[]=XML_Transformer&#038;package_name[]=XML_Wddx&#038;package_name[]=XML_XSLT_Wrapper&#038;search_for=&#038;php_os=&#038;boolean=0&#038;author_email=&#038;bug_type=Bugs&#038;bug_age=0&#038;bug_updated=0&#038;order_by=id&#038;direction=ASC&#038;packagever=&#038;phpver=&#038;limit=30&#038;handle=&#038;assign=&#038;maintain=&#038;status=OpenFeedback&#038;begin=30">bugs of orphaned PEAR packages</a> - as any PEAR QA Team member ought to!

These are packages that are no longer actively maintained  - if you want to take over any of those you should read Till's blog post on <a href="http://till.klampaeckel.de/blog/archives/139-Contributing-to-PEAR-Taking-over-packages.html">taking over PEAR packages</a> and follow on from there.]]></description>
			<content:encoded><![CDATA[<p>In the space of just under a month <a href="http://pear.php.net/package/Date_Holidays_Croatia/">Date_Holidays_Croatia</a> and <a href="http://pear.php.net/package/Date_Holidays_Australia/download/0.1.1/">Date_Holidays_Australia</a> were released &#8211; many thanks to the guys who did the actual hard work to be fair as all I did was package them up and release them!</p>
<p>I&#8217;ve also been slowly working my way through the <a href="http://pear.php.net/bugs/search.php?cmd=display&#038;package_name[]=Auth_SASL&#038;package_name[]=Cache&#038;package_name[]=Console_Getargs&#038;package_name[]=Contact_AddressBook&#038;package_name[]=Crypt_RC42&#038;package_name[]=Crypt_RSA&#038;package_name[]=DB_ado&#038;package_name[]=DB_ldap&#038;package_name[]=DB_ldap2&#038;package_name[]=DB_odbtp&#038;package_name[]=DB_Sqlite_Tools&#038;package_name[]=File_DICOM&#038;package_name[]=File_DNS&#038;package_name[]=File_Find&#038;package_name[]=File_Fstab&#038;package_name[]=File_Passwd&#038;package_name[]=File_SearchReplace&#038;package_name[]=File_XSPF&#038;package_name[]=Games_Chess&#038;package_name[]=Gtk_MDB_Designer&#038;package_name[]=HTML_CSS&#038;package_name[]=HTML_Javascript&#038;package_name[]=HTML_Progress2&#038;package_name[]=HTML_QuickForm_advmultiselect&#038;package_name[]=HTML_QuickForm_SelectFilter&#038;package_name[]=HTML_Select&#038;package_name[]=HTML_Select_Common&#038;package_name[]=HTML_Table_Matrix&#038;package_name[]=HTML_Template_Xipe&#038;package_name[]=HTTP_Header&#038;package_name[]=HTTP_Server&#038;package_name[]=HTTP_SessionServer&#038;package_name[]=HTTP_Upload&#038;package_name[]=HTTP_WebDAV_Server&#038;package_name[]=I18N_UnicodeString&#038;package_name[]=Image_Color2&#038;package_name[]=Image_GIS&#038;package_name[]=Image_Graph&#038;package_name[]=Image_IPTC&#038;package_name[]=Image_Puzzle&#038;package_name[]=Image_WBMP&#038;package_name[]=Inline_C&#038;package_name[]=LiveUser_Admin&#038;package_name[]=Mail_IMAPv2&#038;package_name[]=Math_Basex&#038;package_name[]=Math_BinaryUtils&#038;package_name[]=Math_Complex&#038;package_name[]=Math_Fibonacci&#038;package_name[]=Math_Finance&#038;package_name[]=Math_Histogram&#038;package_name[]=Math_Integer&#038;package_name[]=Math_Matrix&#038;package_name[]=Math_Polynomial&#038;package_name[]=Math_Quaternion&#038;package_name[]=Math_Stats&#038;package_name[]=Math_TrigOp&#038;package_name[]=Math_Vector&#038;package_name[]=MDB2_Driver_fbsql&#038;package_name[]=MDB2_TableBrowser&#038;package_name[]=Message&#038;package_name[]=MP3_Playlist&#038;package_name[]=Net_Cyrus&#038;package_name[]=Net_Dict&#038;package_name[]=Net_FTP&#038;package_name[]=Net_GameServerQuery&#038;package_name[]=Net_Geo&#038;package_name[]=Net_GeoIP&#038;package_name[]=Net_HL7&#038;package_name[]=Net_LMTP&#038;package_name[]=Net_Monitor&#038;package_name[]=Net_MPD&#038;package_name[]=Net_Ping&#038;package_name[]=Net_POP3&#038;package_name[]=Net_SMPP_Client&#038;package_name[]=Payment_PagamentoCerto&#038;package_name[]=PEAR_Delegator&#038;package_name[]=PEAR_PackageFileManager_Frontend&#038;package_name[]=PEAR_PackageFileManager_Frontend_Web&#038;package_name[]=PEAR_PackageFileManager_GUI_Gtk&#038;package_name[]=PEAR_PackageUpdate&#038;package_name[]=PEAR_PackageUpdate_Web&#038;package_name[]=PHP_Fork&#038;package_name[]=PHP_Parser&#038;package_name[]=PHP_ParserGenerator&#038;package_name[]=PHP_Shell&#038;package_name[]=RDF&#038;package_name[]=RDF_N3&#038;package_name[]=RDF_NTriple&#038;package_name[]=RDF_RDQL&#038;package_name[]=Science_Chemistry&#038;package_name[]=ScriptReorganizer&#038;package_name[]=Search_Mnogosearch&#038;package_name[]=Services_Delicious&#038;package_name[]=Services_DynDNS&#038;package_name[]=Services_Ebay&#038;package_name[]=Services_ExchangeRates&#038;package_name[]=Services_W3C_CSSValidator&#038;package_name[]=Services_Webservice&#038;package_name[]=Services_YouTube&#038;package_name[]=Stream_SHM&#038;package_name[]=Stream_Var&#038;package_name[]=Structures_Graph&#038;package_name[]=System_Command&#038;package_name[]=System_Mount&#038;package_name[]=System_ProcWatch&#038;package_name[]=System_SharedMemory&#038;package_name[]=System_Socket&#038;package_name[]=Text_Huffman&#038;package_name[]=Text_Statistics&#038;package_name[]=Text_TeXHyphen&#038;package_name[]=Text_Wiki_BBCode&#038;package_name[]=Text_Wiki_Cowiki&#038;package_name[]=Text_Wiki_Doku&#038;package_name[]=Tree&#038;package_name[]=Validate_AR&#038;package_name[]=Validate_FR&#038;package_name[]=Validate_HU&#038;package_name[]=Validate_IN&#038;package_name[]=Validate_IS&#038;package_name[]=Validate_NL&#038;package_name[]=Validate_PL&#038;package_name[]=Validate_ZA&#038;package_name[]=XML_CSSML&#038;package_name[]=XML_FastCreate&#038;package_name[]=XML_Feed_Parser&#038;package_name[]=XML_fo2pdf&#038;package_name[]=XML_FOAF&#038;package_name[]=XML_HTMLSax&#038;package_name[]=XML_HTMLSax3&#038;package_name[]=XML_image2svg&#038;package_name[]=XML_Indexing&#038;package_name[]=XML_MXML&#038;package_name[]=XML_NITF&#038;package_name[]=XML_RDDL&#038;package_name[]=XML_RSS&#038;package_name[]=XML_SaxFilters&#038;package_name[]=XML_Statistics&#038;package_name[]=XML_SVG&#038;package_name[]=XML_svg2image&#038;package_name[]=XML_Transformer&#038;package_name[]=XML_Wddx&#038;package_name[]=XML_XSLT_Wrapper&#038;search_for=&#038;php_os=&#038;boolean=0&#038;author_email=&#038;bug_type=Bugs&#038;bug_age=0&#038;bug_updated=0&#038;order_by=id&#038;direction=ASC&#038;packagever=&#038;phpver=&#038;limit=30&#038;handle=&#038;assign=&#038;maintain=&#038;status=OpenFeedback&#038;begin=30">bugs of orphaned PEAR packages</a> &#8211; as any PEAR QA Team member ought to!</p>
<p>Unlike the Date_Holidays packages, these are PEAR packages that are no longer actively maintained  &#8211; if you want to take over any of those you should read Till&#8217;s blog post on <a href="http://till.klampaeckel.de/blog/archives/139-Contributing-to-PEAR-Taking-over-packages.html">taking over PEAR packages</a> and follow on from there.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2011/02/28/date_holidays-frenzy-and-a-little-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Packt launches fifth annual Open Source Awards</title>
		<link>http://blogs.linux.ie/kenguest/2010/09/02/packt-launches-fifth-annual-open-source-awards/</link>
		<comments>http://blogs.linux.ie/kenguest/2010/09/02/packt-launches-fifth-annual-open-source-awards/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 10:21:58 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=349</guid>
		<description><![CDATA[Packt launches fifth annual Open Source Awards

The 2010 Open Source Awards was launched last month by Packt, inviting people to visit <a href="http://www.PacktPub.com">www.PacktPub.com</a> and submit nominations for their favorite Open Source project. Now in its fifth year, the Award has been adapted from the established Open Source CMS Award with the wider aim of encouraging, supporting, recognizing and rewarding all Open Source projects. 
WordPress won the 2009 Open Source Content Management System (CMS) Award in what was a very close contest with MODx and SilverStripe. While MODx was the first runner up, SilverStripe, a Most Promising CMS Award winner in 2008, made its way to the second runner up position in its first year in the Open Source CMS Award final.
The 2010 Award will feature a prize fund of $24,000 with several new categories introduced. While the Open Source CMS Award category will continue to recognize the best content management system, Packt is introducing categories for the Most Promising Open Source Project, Open Source E-Commerce Applications, Open Source JavaScript Libraries and Open Source Graphics Software.  CMSes that won the Overall CMS Award in previous years will continue to compete against one another in the Hall of Fame CMS category. 
These new categories will ensure that the Open Source Awards is the ultimate platform to recognise excellence within the community while supporting projects both new and old. “We believe that the adaption of the Award and the new categories will provide a new level of accessibility, with the Award recognizing a wider range of Open Source projects; both previous winners while at the same time, encouraging new projects” said Julian Copes, organizer of this year’s Awards.
Packt has opened up nominations for people to submit their favorite Open Source projects for each category at <a href="http://ww.PacktPub.com/open-source-awards-home">http://www.PacktPub.com/open-source-awards-home</a> . The top five in each category will go through to the final, which begins in the last week of September. For more information on the categories, please visit Packt’s website <a href="http://www.PacktPub.com/blog/packt’s-2010-open-source-awards-announcement">http://www.PacktPub.com/blog/packt’s-2010-open-source-awards-announcement</a>  
]]></description>
			<content:encoded><![CDATA[<p>Packt launches fifth annual Open Source Awards</p>
<p>The 2010 Open Source Awards was launched last month by Packt, inviting people to visit <a href="http://www.PacktPub.com">www.PacktPub.com</a> and submit nominations for their favorite Open Source project. Now in its fifth year, the Award has been adapted from the established Open Source CMS Award with the wider aim of encouraging, supporting, recognizing and rewarding all Open Source projects.<br />
WordPress won the 2009 Open Source Content Management System (CMS) Award in what was a very close contest with MODx and SilverStripe. While MODx was the first runner up, SilverStripe, a Most Promising CMS Award winner in 2008, made its way to the second runner up position in its first year in the Open Source CMS Award final.<br />
The 2010 Award will feature a prize fund of $24,000 with several new categories introduced. While the Open Source CMS Award category will continue to recognize the best content management system, Packt is introducing categories for the Most Promising Open Source Project, Open Source E-Commerce Applications, Open Source JavaScript Libraries and Open Source Graphics Software.  CMSes that won the Overall CMS Award in previous years will continue to compete against one another in the Hall of Fame CMS category.<br />
These new categories will ensure that the Open Source Awards is the ultimate platform to recognise excellence within the community while supporting projects both new and old. “We believe that the adaption of the Award and the new categories will provide a new level of accessibility, with the Award recognizing a wider range of Open Source projects; both previous winners while at the same time, encouraging new projects” said Julian Copes, organizer of this year’s Awards.<br />
Packt has opened up nominations for people to submit their favorite Open Source projects for each category at <a href="http://www.PacktPub.com/open-source-awards-home">http://www.PacktPub.com/open-source-awards-home</a> . The top five in each category will go through to the final, which begins in the last week of September. For more information on the categories, please visit Packt’s website <a href="http://www.PacktPub.com/blog/packt’s-2010-open-source-awards-announcement">http://www.PacktPub.com/blog/packt’s-2010-open-source-awards-announcement</a>  </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.linux.ie/kenguest/2010/09/02/packt-launches-fifth-annual-open-source-awards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenStreetMap posters</title>
		<link>http://blogs.linux.ie/kenguest/2010/03/25/openstreetmap-posters/</link>
		<comments>http://blogs.linux.ie/kenguest/2010/03/25/openstreetmap-posters/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 00:58:09 +0000</pubDate>
		<dc:creator>kenguest</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[openstreetmap]]></category>
		<category><![CDATA[op]]></category>

		<guid isPermaLink="false">http://blogs.linux.ie/kenguest/?p=340</guid>
		<description><![CDATA[Here&#8217;s a little list of various posters/leaflets that I&#8217;ve found for evangelizing OpenStreetMap: Open Street Map Fast Facts There&#8217;s the recruitment poster; with other formats at http://svn.openstreetmap.org/misc/pr_material/recruitment_poster/ &#8211; there are quite a few shops along my commute-route with this on their noticeboard The OSM Flyer This OSM Licence Card appeared mid-February If there are any [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a little list of various posters/leaflets that I&#8217;ve found for evangelizing OpenStreetMap:</p>
<ul>
<li><a href="http://community.cloudmade.com/blog/wp-content/uploads/2009/10/091006-OSM_Facts.pdf">Open Street Map Fast Facts</a></li>
<li><a href="http://svn.openstreetmap.org/misc/pr_material/recruitment_poster/poster.png">There&#8217;s the recruitment poster</a>; with other formats at <a href="http://svn.openstreetmap.org/misc/pr_material/recruitment_poster/">http://svn.openstreetmap.org/misc/pr_material/recruitment_poster/</a> &#8211; there are quite a few shops along my commute-route with this on their noticeboard <img src='http://blogs.linux.ie/kenguest/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />
</li>
<li><a href="http://svn.openstreetmap.org/misc/pr_material/english_flyer_ajr_2008-04/OSMFlyer-English.pdf">The OSM Flyer</a></li>
<li>This <a href="http://blogs.linux.ie/kenguest/files/2010/03/media_httpmapdatabigt_txhwk.png.scaled500.png">OSM Licence Card</a> appeared mid-February</li>
</ul>
<p>If there are any others please let me know so I can update the list <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/2010/03/25/openstreetmap-posters/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<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.

<strong>Update 2010-08-10:</strong> <a href="http://pc.de/pages/pear_metapackage_for_statusnet-be">This article has been translated to Belorussian by Patricia Clausnitzer and is available here.</a>]]></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>
<p><strong>Update 2010-08-10:</strong> <a href="http://pc.de/pages/pear_metapackage_for_statusnet-be">This article has been translated to Belorussian by Patricia Clausnitzer and is available here.</a></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[linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[Web Development]]></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>
	</channel>
</rss>

