<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>phpslacker</title>
	<atom:link href="http://stickytape.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://stickytape.wordpress.com</link>
	<description>yet another g33k blog *sigh*</description>
	<lastBuildDate>Sat, 12 Jun 2010 21:18:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='stickytape.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>phpslacker</title>
		<link>http://stickytape.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://stickytape.wordpress.com/osd.xml" title="phpslacker" />
	<atom:link rel='hub' href='http://stickytape.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Compiling ejabberd for Ubuntu Lucid server</title>
		<link>http://stickytape.wordpress.com/2010/06/12/compiling-ejabberd-for-ubuntu-lucid-server/</link>
		<comments>http://stickytape.wordpress.com/2010/06/12/compiling-ejabberd-for-ubuntu-lucid-server/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 18:54:59 +0000</pubDate>
		<dc:creator>phpslacker</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[ejabberd]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://phpslacker.com/?p=266</guid>
		<description><![CDATA[But there&#8217;s an apt package Yes. But it kind of sucks. I had problems with the bundled init.d script. It tries to start ejabberd as the user &#8220;ejabberd&#8221; but something goes awry. It seems to start but I&#8217;m then unable to connect to that node using the ejabberdctl command. Maybe its just me? meh. What [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=266&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>But there&#8217;s an <a href="http://packages.ubuntu.com/lucid/ejabberd">apt package</a></h2>
<p>
Yes. But it kind of sucks. I had problems with the bundled init.d script. It tries to start <a href="http://www.ejabberd.im/">ejabberd</a> as the user &#8220;ejabberd&#8221; but something goes awry. It seems to start but I&#8217;m then unable to connect to that node using the ejabberdctl command. Maybe its just me? meh.
</p>
<h2>What about the <a href="http://www.process-one.net/en/ejabberd/downloads">Process One binary installer</a>?</h2>
<p>
That works if you&#8217;re content with running ejabberd under root user or whatever user you installed ejabberd as. If installed as a user other than root you&#8217;ll have a problem trying to start ejabberd with any user other than root. Thats because the .erlang-cookie file is expected in the $HOME directory of the user starting ejabberd. Its a file permissions nightmare. bleh.
</p>
<h2>Running ejabberd under a safe(r) user account</h2>
<h3>Install dependencies</h3>
<p>
Lets use apt to install the dependencies for ejabberd. Its just a shortcut to getting the dependencies. You can do it the hard way. If you want<br />
<code><br />
apt-get build-dep ejabberd<br />
</code>
</p>
<h3>Download ejabberd source</h3>
<p>
We&#8217;ll get the source for ejabberd 2.1.3 the lazy way too. You could of course clone the git repo and checkout version 2.1.3 but a clone can take a while over a slow-w-w-w connection.<br />
<code><br />
wget http://github.com/processone/ejabberd/tarball/v2.1.3 &amp;&amp; tar -xzf processone-ejabberd-v2.1.3-0-g962b66b.tar.gz &amp;&amp; cd processone-ejabberd-84987d6/src<br />
</code></p>
<h3>Creating a user to run ejabberd</h3>
<p>This is important. We&#8217;ll need it for the ./configure command coming later</p>
<p><code><br />
sudo groupadd --gid 107 ejabberd<br />
sudo adduser --system --no-create-home --uid 107 --gid 107 --disabled-password --disabled-login ejabberd<br />
</code>
</p>
<p><strong>Note:</strong> I&#8217;ve used the same <em>uid</em> and <em>gid</em> in the line above. <em>uid</em> 107 may already be in use on your system. You can check for <em>uid</em>&#8216;s already in use by grep&#8217;ing your /etc/passwd. Ensure the numeric value for <em>uid</em> and <em>gid</em> is the same as shown above. I&#8217;m not so sure the next step will work as intended if its not.</p>
<h3>Configure (with something special), make, make install</h3>
<p>Here&#8217;s the part that really matters<br />
<code><br />
cd /path-to-untarred-ejabberd/src<br />
sudo ./configure --prefix /usr/local/ejabberd-2.1.3/ --enable-user=ejabberd --enable-odbc --enable-full-xml<br />
sudo make<br />
sudo make install<br />
</code></p>
<p>There are two other options available for the ./configure script. Check this out. You may want MSSQL Server support or whatever. The only must-have for the purpose of this install method is the <em>&#8211;enable-user</em> option. The rest can be changed to your liking</p>
<p>
The <em>&#8211;enable-user</em> option allows ejabberd to be started by root and/or the user account specified. Permissions will be set accordingly by the install process
</p>
<h3>A sane init.d script</h3>
<p>
ejabberd is now installed but you&#8217;d like it to automatically be started on system startup? You&#8217;ll need an init.d script for that and I have one for you.
</p>
<p>
I mauled the init.d script shipped with <a href="http://www.process-one.net/en/">Process One</a>&#8216;s binary installer to my liking. <a href="http://gist.github.com/435964">Download revised init.d script from github</a>. Place it in your /etc/init.d/ folder naturally. It works. Trust me already
</p>
<h3>Make ejabberdctl executable from anywhere</h3>
<p>
This is a lazy hack you could do it &#8220;right&#8221; by modifying your $PATH env variable in /etc/profile for all users or whatever<br />
<code><br />
sudo ln -s /usr/local/ejabberd-2.1.3/sbin/ejabberdctl /usr/sbin/ejabberdctl<br />
</code>
</p>
<h3>Starting/stopping ejabberd</h3>
<p>
The ejabberd process will automagically be daemonized erlang-style and the ownership of the ejabberd process is handed over to the ejabberd user we created earlier<br />
<code><br />
root@blahblah:~# /etc/init.d/ejabberd start<br />
Starting ejabberd...<br />
done.</p>
<p>ps aux | grep ejabberd<br />
ejabberd 21200  0.0 19.5 207044 49004 ?        Sl   18:07   0:01 /usr/lib/erlang/erts-5.7.4/bin/beam.smp -K true -P 250000 -- -root /usr/lib/erlang -progname erl -- -home /usr/local/ejabberd-2.1.3/var/lib/ejabberd -- -sname ejabberd@localhost -noshell -noinput -noshell -noinput -pa /usr/local/ejabberd-2.1.3/lib/ejabberd/ebin -mnesia dir "/usr/local/ejabberd-2.1.3/var/lib/ejabberd" -s ejabberd -sasl sasl_error_logger {file,"/usr/local/ejabberd-2.1.3/var/log/ejabberd/erlang.log"} -smp auto start<br />
root     21257  0.0  0.2   6152   660 pts/5    S+   18:37   0:00 grep --color=auto ejabberd<br />
</code>
</p>
<p>Confirmation that the ejabberd node has been started<br />
<code><br />
root@blahblah:~# ejabberdctl status<br />
The node ejabberd@localhost is started with status: started<br />
ejabberd 2.1.3 is running in that node<br />
</code>
</p>
<p>And that is all. You could do the same for ejabberd 2.1.4 (I reckon). I didn&#8217;t install 2.1.4 because its a little too bleeding edge but you decide for yourself</p>
<br /> Tagged: <a href='http://stickytape.wordpress.com/tag/ejabberd/'>ejabberd</a>, <a href='http://stickytape.wordpress.com/tag/ubuntu/'>ubuntu</a>, <a href='http://stickytape.wordpress.com/tag/xmpp/'>xmpp</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stickytape.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stickytape.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stickytape.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stickytape.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stickytape.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stickytape.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stickytape.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stickytape.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stickytape.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stickytape.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stickytape.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stickytape.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stickytape.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stickytape.wordpress.com/266/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=266&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stickytape.wordpress.com/2010/06/12/compiling-ejabberd-for-ubuntu-lucid-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3192d5f19ae8e0c31333c056f613de6b?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">phpslacker</media:title>
		</media:content>
	</item>
		<item>
		<title>The real reason why Flash is not on the iPhone,iPad and iPod Touch</title>
		<link>http://stickytape.wordpress.com/2010/02/22/the-real-reason-why-flash-is-not-on-the-iphoneipad/</link>
		<comments>http://stickytape.wordpress.com/2010/02/22/the-real-reason-why-flash-is-not-on-the-iphoneipad/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 17:15:31 +0000</pubDate>
		<dc:creator>phpslacker</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://phpslacker.com/?p=251</guid>
		<description><![CDATA[Flash is slow (well&#8230; yes kind of&#8230; maybe) Sure its true that flash can be a hog. Flash optimists will proclaim that developers that write bad code are the ones giving flash a bad name. Who knows? Flash can&#8217;t do hover (some say) Of late, the latest and greatest is reason is that flash doesn&#8217;t [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=251&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Flash is slow (well&#8230; yes kind of&#8230; maybe)</h2>
<p>
Sure its true that flash can be a hog. Flash optimists will proclaim that developers that write bad code are the ones giving flash a bad name. Who knows?</p>
<h2>Flash can&#8217;t do hover (some say)</h2>
<p>Of late, the latest and greatest is reason is that <a href="http://www.roughlydrafted.com/2010/02/20/an-adobe-flash-developer-on-why-the-ipad-cant-use-flash/"> flash doesn&#8217;t support the hover event</a> or something. And just in a <a href="http://www.mikechambers.com/blog/2010/02/22/flash-player-content-mouse-events-and-touch-input/">rebuttal claiming that reason is moot</a>. Doesn&#8217;t matter if this is true or not. I think we&#8217;re all beating around the wrong bush.</p>
<h2>Steve Jobs is deflecting</h2>
<p>IMO all the technical reasons for why flash is not on the iPhone and iPad are simply convenient excuses which deflect from the REAL reason why flash is not available on the iPhone/iPad.</p>
<h2>The Real Reason</h2>
<p>Flash apps would compete with the app store. It&#8217;s that simple. If flash was allowed on the iphone how much developers would write flash apps instead of native iphone apps? Plenty</p>
<p>Apple make their money from the apps not the devices (although the early iPhone adopters were gutted for $400 a piece)</p>
<p>Eventually most manufacturers will be capable of making a smartphone that is comparable to that of the iPhone&#8217;s software/hardware. Q: Which smartphone will people buy?</p>
<p>A: The one with the biggest 3rd party app platform</p>
<p>Developers will flock to the platform with most the users and users will flock to the platform with the most apps. Its a <a href="http://en.wikipedia.org/wiki/Network_effect">network effect</a></p>
<p>The real reason is strategic not technical</p>
<h2>And then there&#8217;s the iPad CPU</h2>
<p>iPad uses a <del datetime="2010-02-23T04:56:17+00:00">proprietary</del> Apple-designed CPU which means you can&#8217;t run linux or any other OS on your iPad nor can you hackintosh your intel netbook with the iPad OS. Could it be that this is also a strategic business decision and not a technical one?</p>
<br /> Tagged: <a href='http://stickytape.wordpress.com/tag/apple/'>apple</a>, <a href='http://stickytape.wordpress.com/tag/flash/'>flash</a>, <a href='http://stickytape.wordpress.com/tag/ipad/'>ipad</a>, <a href='http://stickytape.wordpress.com/tag/iphone/'>iphone</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stickytape.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stickytape.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stickytape.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stickytape.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stickytape.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stickytape.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stickytape.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stickytape.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stickytape.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stickytape.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stickytape.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stickytape.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stickytape.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stickytape.wordpress.com/251/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=251&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stickytape.wordpress.com/2010/02/22/the-real-reason-why-flash-is-not-on-the-iphoneipad/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3192d5f19ae8e0c31333c056f613de6b?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">phpslacker</media:title>
		</media:content>
	</item>
		<item>
		<title>Agile Adoption: When the going gets tough</title>
		<link>http://stickytape.wordpress.com/2009/11/03/agile-adoption-when-the-going-gets-tough/</link>
		<comments>http://stickytape.wordpress.com/2009/11/03/agile-adoption-when-the-going-gets-tough/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 09:10:59 +0000</pubDate>
		<dc:creator>phpslacker</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://phpslacker.com/?p=238</guid>
		<description><![CDATA[Success abounds The intertubes is home to a multitude of blog posts, videos, prezzos,case studies evangelizing the agile method for software project management. Many cite phenomenal results with agile and so-called hyper-productive teams. It all sounds too good to be true because it kind of is. What&#8217;s the catch? Agile is simple but hard Agile [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=238&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>Success abounds</h3>
<p>
The intertubes is home to a multitude of blog posts, videos, prezzos,case studies evangelizing the agile method for software project management.  Many cite phenomenal results with agile and so-called <a href="http://jeffsutherland.com/scrum/SutherlandShockTherapyAgile2009.pdf" title="PDF download">hyper-productive teams</a>. It all sounds too good to be true because it kind of is. What&#8217;s the catch?
</p>
<h3>Agile is simple but hard</h3>
<p>Agile processes are deceptively simple but the underlying principles require much understanding. Take a look at <a href="http://www.scrumalliance.org/">scrum</a> for a moment, a very popular gateway to agile adoption. The <a href="http://www.scrumalliance.org/resources/598">official scrum guide</a> emphasizes processes but not so much <a href="http://agilemanifesto.org/" title="Agile manifesto">agile principles</a>. Don&#8217;t get me wrong. Scrum has not abolished agile principles but instead appears to be tailored for for <a href="http://alistair.cockburn.us/Shu+Ha+Ri" title="About shu ha ri">shu-level</a> agile practitioners. </p>
<h3>Starting out is easy</h3>
<p>
As you build your product it becomes increasingly more complex (hopefully not complicated) resulting in the need for increasingly complex decision-making. Initially its very easy to follow the Scrum recipe for agility but as we progress from iteration to iteration we need to be able to respond to the changing environment.
</p>
<p>
If you&#8217;re still blindly following the scrum recipe by the book (i.e. the process) 20 iterations on you&#8217;re in big trouble. You need an understanding of the underlying principles. You need to progress from shu-level. Fast.
</p>
<h3>Be agile about your agile adoption</h3>
<p>If you&#8217;ve adopted agile for a particular project realize that you now have two projects. The software you&#8217;re developing and your team or organization&#8217;s state of agile adoption.
</p>
<h3>Retrospectives are crucial</h3>
<p>Always have a retrospective meeting at the end of an iteration. In fact make it a rule that an iteration is incomplete without such a meeting. Not only is the retrospective a reflection on the latest iteration but its also function as an inspection point for the state of your team&#8217;s agile adoption. Ask yourself is agile working for you or are you working for it? Every retrospective should identify at least one problem. I doubt any team has ever had a perfect iteration. This is an opportunity for self-reflection, correction, inspection, adaptation blah blah.
</p>
<h3>How to tell if you&#8217;re failing</h3>
<p>Things might be going well for your agile/xp/scrum team. Don&#8217;t be deceived. Just like a code smell is an indicator of a larger problem in a codebase so can seemingly small issues be a manifestation of greater ones. See Mike Cohn&#8217;s excellent pdf on <a href="http://www.mountaingoatsoftware.com/articles/40-how-to-fail-with-agile">how to fail with agile</a>.
</p>
<h3>Prevention better than cure</h3>
<p>Before you get all excited about the wonder cure to waterfall madness ask yourself:</p>
<ul>
<li>Is an agile methodology a good fit for your software development team? Or the bigger question:  Is agile the right thing to do for your business?
</li>
<li>Are you sufficiently fed up with waterfall to try something radically different?
</li>
<li>How susceptible is your team/organization to change (managers, developers, testers, everyone!) ?
</li>
</ul>
<h3>Stick it through</h3>
<p>
If your agile implementation is hurting more than delivering the expected result i advise:
</p>
<ul>
<li>Call in an agile expert to coach your agile implementation</li>
<li>Seek to get the most out of retrospective meetings. this means looking deeply at the root causes not just the manifestation of the problem(s)
</li>
<li>
Talk to other agile practitioners (preferably &#8220;ri&#8221; level). You&#8217;re not alone
</li>
<li>
Seek to understand the principles behind the rules and don&#8217;t give up until you do!
</li>
</ul>
<p>
<strong>Disclaimer:</strong> I&#8217;m no agile expert. At best I may rate myself at &#8220;Ha&#8221; level. So if u find an odd statement or two in this post please send me some feedback. I would hate to mislead a &#8220;shu&#8221; <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
<br /> Tagged: agile, scrum <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stickytape.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stickytape.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stickytape.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stickytape.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stickytape.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stickytape.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stickytape.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stickytape.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stickytape.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stickytape.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stickytape.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stickytape.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stickytape.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stickytape.wordpress.com/238/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=238&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stickytape.wordpress.com/2009/11/03/agile-adoption-when-the-going-gets-tough/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3192d5f19ae8e0c31333c056f613de6b?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">phpslacker</media:title>
		</media:content>
	</item>
		<item>
		<title>Try-catch suppress?</title>
		<link>http://stickytape.wordpress.com/2009/03/19/try-catch-suppress/</link>
		<comments>http://stickytape.wordpress.com/2009/03/19/try-catch-suppress/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 20:17:39 +0000</pubDate>
		<dc:creator>phpslacker</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[bugs]]></category>

		<guid isPermaLink="false">http://phpslacker.com/?p=231</guid>
		<description><![CDATA[PHP never ceases to amaze me. Just the other day a colleague discovered that you can suppress error messages reported by file_get_contents() using the try-catch statement. That should&#8217;ve raised an eyebrow. In case you missed it here&#8217;s the sample code run from php&#8217;s interactive console: Sample code, nothing odd (yet) qbook:mobilesns quinton$ php -a Interactive [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=231&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
PHP never ceases to amaze me. Just the other day a colleague discovered that you can suppress error messages reported by <a href="http://www.php.net/file_get_contents" rel="nofollow">file_get_contents()</a> using the try-catch statement. That should&#8217;ve raised an eyebrow. In case you missed it here&#8217;s the sample code run from php&#8217;s interactive console:
</p>
<h2>Sample code, nothing odd (yet)</h2>
<p><code><br />
qbook:mobilesns quinton$ php -a<br />
Interactive mode enabled</p>
<p>&lt;?php</p>
<p>echo file_get_contents('bleh');</p>
<p>Warning: file_get_contents(bleh): failed to open stream: No such file or directory in /Library/WebServer/workspaces/default/mobilesns/- on line 3</p>
<p>Call Stack:<br />
   19.3675     673612   1. {main}() /Library/WebServer/workspaces/default/mobilesns/-:0<br />
   19.3914     673676   2. file_get_contents('bleh') /Library/WebServer/workspaces/default/mobilesns/-:3</p>
<p>Dump $_SERVER<br />
Dump $_GET<br />
Dump $_POST</p>
<p></code></p>
<p>
Predictably, the code snippet above confirms that php will report an error if you attempt to open a file that does not exist. You may have noticed, my php installation has some extra debug output because I&#8217;m using the <a href="http://xdebug.org/" rel="nofollow">XDebug extension</a>. I recommend it. Highly.
</p>
<h2>This is where it gets weird</h2>
<p>
Again, from the console. Here we place the same call to read a non-existent file within a try-catch statement.
</p>
<p><code><br />
qbook:mobilesns quinton$ php -a<br />
Interactive mode enabled</p>
<p>&lt;?php</p>
<p>try<br />
{</p>
<p>echo file_get_contents('bleh');</p>
<p>}<br />
catch (Exception $e)<br />
{</p>
<p>echo "Exception is caught";              </p>
<p>}</p>
<p></code></p>
<p>
This time around the error is not reported by php nor is the &#8220;catch&#8221; executed proving that the error message is suppressed. Is it a bug or a side-effect? Anyone have any thoughts on this? &#8220;Its not a bug its a feature!&#8221; ~ comes to mind <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />
</p>
<h2>My php version, in case you&#8217;re wondering</h2>
<p><code><br />
qbook:mobilesns quinton$ php -v<br />
PHP 5.2.5 (cli) (built: May 27 2008 11:45:48)<br />
Copyright (c) 1997-2007 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies<br />
    with Xdebug v2.0.4, Copyright (c) 2002-2008, by Derick Rethans<br />
    with Zend Debugger v5.2.14, Copyright (c) 1999-2008, by Zend Technologies<br />
</code></p>
<br /> Tagged: bugs, php <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stickytape.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stickytape.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stickytape.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stickytape.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stickytape.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stickytape.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stickytape.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stickytape.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stickytape.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stickytape.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stickytape.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stickytape.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stickytape.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stickytape.wordpress.com/231/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=231&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stickytape.wordpress.com/2009/03/19/try-catch-suppress/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3192d5f19ae8e0c31333c056f613de6b?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">phpslacker</media:title>
		</media:content>
	</item>
		<item>
		<title>session-clustering with memcache</title>
		<link>http://stickytape.wordpress.com/2009/03/02/php-session-clustering-with-memcache/</link>
		<comments>http://stickytape.wordpress.com/2009/03/02/php-session-clustering-with-memcache/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 21:26:09 +0000</pubDate>
		<dc:creator>phpslacker</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[clustering]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://phpslacker.com/?p=197</guid>
		<description><![CDATA[You need php session-clustering and you need it done yesterday. The project is at risk. The suits are breathing down your neck and monitoring your every tweet. Memcache to the rescue Installing memcached Not installed? Get it here. Alternatively, install via a *nix package manager eg. apt, yum, rpm etc. Start your memcache servers: /usr/local/bin/memcached [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=197&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
You need php session-clustering and you need it done yesterday. The project is at risk. The suits are breathing down your neck and monitoring your every tweet. <a href="http://www.danga.com/memcached/" rel="nofollow">Memcache</a> to the rescue <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />
</p>
<h3>Installing memcached</h3>
<p>
Not installed? <a href="http://www.danga.com/memcached/download.bml" rel="nofollow">Get it here</a>. Alternatively, install via a *nix package manager eg. apt, yum, rpm etc. Start your memcache servers:
</p>
<p><code><br />
/usr/local/bin/memcached -u root -d -m 1024 -l 0.0.0.0 -p 11211<br />
</code></p>
<p>Add one more to the pool: (this will make sense later. promise)</p>
<p><code><br />
/usr/local/bin/memcached -u root -d -m 1024 -l 0.0.0.0 -p 11212<br />
</code></p>
<p>Note: the port number differs for the second memcached daemon. </p>
<h3>Installing memcache extension with &#8220;session feature&#8221;</h3>
<p>
PHP &#8220;talks&#8221; to a memcache server via the <a href="http://php.net/memcache" rel="nofollow">memcache extension</a> but you already knew that. Something less known is that when installing this extension you can enable/disable the extension&#8217;s <a href="http://www.php.net/session-set-save-handler" rel="nofollow">session.save_handler</a> feature.
</p>
<p><code><br />
qbook:Locate quinton$ sudo pecl install memcache<br />
Password:<br />
downloading memcache-2.2.5.tgz ...<br />
Starting to download memcache-2.2.5.tgz (35,981 bytes)<br />
....done: 35,981 bytes<br />
11 source files, building<br />
running: phpize<br />
Configuring for:<br />
PHP Api Version:         20041225<br />
Zend Module Api No:      20060613<br />
Zend Extension Api No:   220060519<br />
 1. Enable memcache session handler support? : yes</p>
<p></code></p>
<p>
Choose &#8220;yes&#8221;. You can now configure php to use memcache as its session store.
</p>
<h3>Configuring the memcache session store</h3>
<p>
ext/memcache introduces new directives to the php.ini. In this post I&#8217;ll use ini_set() within a php script so you can just copy-and-paste to try it out yourself. In your production environment you&#8217;ll prolly want these directives inside your php.ini and/or apache vhost. You decide.
</p>
<p><a name="phpsnippet"></a><br />
<code><br />
&lt;?php</p>
<p>// firstly, override the default session save_handler like this<br />
ini_set('session.save_handler',     "memcache"); //     PHP_INI_ALL     Supported since memcache 2.1.2</p>
<p>// now tell php where to store the sessions. two memcache servers specified here. more bout that later<br />
ini_set('session.save_path',    "tcp://localhost:11211, tcp://localhost:11212"); //     PHP_INI_ALL     Supported since memcache 2.1.2</p>
<p>// getting interesting. if primary server is down talk to the others in the server pool<br />
ini_set('memcache.allow_failover',      "1"); //    PHP_INI_ALL  Available since memcache 2.0.2.</p>
<p>// more tweaking stuff follows here</p>
<p>// may want to adjust this<br />
ini_set('memcache.max_failover_attempts',   "20"); //   PHP_INI_ALL     Available since memcache 2.1.0.</p>
<p>ini_set('memcache.default_port',    "11211"); //    PHP_INI_ALL     Available since memcache 2.0.2.</p>
<p>ini_set('memcache.chunk_size',  "8192"); //     PHP_INI_ALL     Available since memcache 2.0.2.</p>
<p>ini_set('memcache.hash_strategy',   "standard"); //     PHP_INI_ALL     Available since memcache 2.2.0.</p>
<p>ini_set('memcache.hash_function',   "crc32"); //    PHP_INI_ALL     Available since memcache 2.2.0.</p>
<p>?&gt;<br />
</code></p>
<h3>A crude test</h3>
<p>This code can be appended to the <a href="#phpsnippet">php snippet from above</a></p>
<p><code><br />
&lt;?php</p>
<p>session_start();</p>
<p>echo "Session save_handler is: ".ini_get("session.save_handler")."<br />";<br />
echo "Session save_path is: ".ini_get("session.save_path")."<br />";</p>
<p>if(isset($_SESSION['bleh']))<br />
{<br />
    echo "Bleh is already set: ".$_SESSION['bleh']."<br />";<br />
}<br />
else<br />
{<br />
    $_SESSION['bleh'] = 'bwahahha';<br />
    echo 'Bleh has been set with: '.$_SESSION['bleh']."<br />";<br />
}</p>
<p>?&gt;</p>
<p></code></p>
<h3>Where&#8217;s the clustering you ask</h3>
<p>
Well, truth be told there isn&#8217;t any. What we have so far is a memcache pool consisting of 2 servers. PHP is configured to write to the pool. PHP reads/writes to the server pool in order specified by &#8220;session.save_path&#8221; ini directive. For reads PHP will request a cache object by key from the pool. Because &#8220;failover&#8221; is enabled PHP will query the pool of memcache servers one-by-one until the request is fulfilled. Every silver lining has a cloud.
</p>
<h3>Fragmentation</h3>
<p>
In the event of a memcache server crash, fragmentation will occur. Therefore the pool will have an identical cache and its exceptionally hard to tell which keys each memcache server is storing. When a memcache daemon crashes it loses all data. Memory, by nature, is volatile. You have been warned.
</p>
<h3>Replication</h3>
<p>
This method is most commonly refered to as client-side replication BUT is better described as redundancy. There is a method of achieving server-side replication (think <a href="http://dev.mysql.com/doc/refman/5.0/en/replication.html" rel="nofollow">mysql replication</a>). AFAIK <a href="http://repcached.lab.klab.org/" rel="nofollow">repcached</a> is the only available patch of its kind. I would like to try it but haven&#8217;t had the opportunity. Its a long story.
</p>
<h3>Summary</h3>
<p>
Memcache-based session save_handler is a quick-win but its NOT scalable. As your server farm grows the cost of maintaining and managing this solution is complexity. Also, consider the implications of managing a php.ini per web server and the repercussions of the failover feature. Nasty. However, there is <a href="http://pecl.php.net/package-info.php?package=memcache&amp;version=3.0.0" rel="nofollow">good news</a>. A <a href="http://pecl.php.net/package/memcached" rel="nofollow">libmemcached-based extension is on the way.</a>
</p>
<h3>Getting real</h3>
<p>
If you have more time to spare take the safer option ie. storing sessions in a database. You could write a custom session save_handler or just use Zend framework&#8217;s <a href="http://framework.zend.com/manual/en/zend.session.savehandler.dbtable.html" rel="nofollow">Zend_Session_SaveHandler_DbTable</a>. What could be easier?</p>
<br /> Tagged: clustering, memcache, php, session <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stickytape.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stickytape.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stickytape.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stickytape.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stickytape.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stickytape.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stickytape.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stickytape.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stickytape.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stickytape.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stickytape.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stickytape.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stickytape.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stickytape.wordpress.com/197/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=197&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stickytape.wordpress.com/2009/03/02/php-session-clustering-with-memcache/feed/</wfw:commentRss>
		<slash:comments>53</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3192d5f19ae8e0c31333c056f613de6b?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">phpslacker</media:title>
		</media:content>
	</item>
		<item>
		<title>Test-drive: MySQL Workbench</title>
		<link>http://stickytape.wordpress.com/2009/02/21/test-drive-mysql-workbench/</link>
		<comments>http://stickytape.wordpress.com/2009/02/21/test-drive-mysql-workbench/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 16:52:50 +0000</pubDate>
		<dc:creator>phpslacker</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[test-drives]]></category>
		<category><![CDATA[dbdesigner]]></category>
		<category><![CDATA[erd]]></category>
		<category><![CDATA[workbench]]></category>

		<guid isPermaLink="false">http://phpslacker.com/?p=186</guid>
		<description><![CDATA[Workbench? MySQL Workbench is a cross-platform, visual database design tool developed by MySQL. It is the highly anticipated successor application of the DBDesigner4 project. MySQL Workbench will be available as a native GUI tool on Window, Linux and OS X. Some history MySQL Workbench has been in the making for a while. Building on from [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=186&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Workbench?</h2>
<p>
<q cite="http://dev.mysql.com/workbench/?page_id=6"><br />
MySQL Workbench is a cross-platform, visual database design tool developed by MySQL. It is the highly anticipated successor application of the DBDesigner4 project. MySQL Workbench will be available as a native GUI tool on Window, Linux and OS X.<br />
</q>
</p>
<h2>Some history</h2>
<p>
<a href="http://dev.mysql.com/workbench/" rel="nofollow">MySQL Workbench</a> has been in the making for a while. Building on from <a href="http://www.fabforce.net/dbdesigner4/" rel="nofollow">DBDesigner 4</a> I&#8217;m sure there&#8217;s a community of anxious MySQL developers who can&#8217;t wait for a free and quality ERD-modelling (and more) tool for MySQL. The mysql command-line client is brilliant. I love it and will always use it BUT there&#8217;s no substitute for managing entity relationships visually.
</p>
<p>
I&#8217;ve been waiting on <a href="http://dev.mysql.com/workbench/" rel="nofollow">MySQL Workbench</a> for ages (more specifically a <a href="http://dev.mysql.com/workbench/?p=192" rel="nofollow">Mac OS X release</a>). On the day the windows version was released I soon installed it in my Windows XP virtual machine. It works really well but realistically its too painful to use via VirtualBox. Could be a breeze with VMWare Fusion. Anyone tried this?
</p>
<h2>It really is Alpha</h2>
<p>
MySQL Workbench 5.1.7 is an alpha release for Mac OS X and Linux which prolly explains why the dmg is only 7 megabytes. Features are missing!
</p>
<h2>And lift-off</h2>
<p>
Installation was easy. Typical drag-and-drop to Applications folder installation. First launch was all over in about 10 seconds. Workbench crashed when I tried File -&gt; Open Recent menu item. Strange. Evidence follows:
</p>
<div id="attachment_191" class="wp-caption alignnone" style="width: 310px"><a href="http://stickytape.files.wordpress.com/2009/02/picture-4.png"><img src="http://stickytape.files.wordpress.com/2009/02/picture-4.png?w=300&#038;h=187" alt="Workbench Crash" title="Workbench Crash" width="300" height="187" class="size-medium wp-image-191" /></a><p class="wp-caption-text">Workbench Crash</p></div>
<h2>And lift-off</h2>
<p>
On second launch I avoided &#8220;Open Recent&#8221; menu item. I tried the reverse engineer from .SQL script feature. Workbench smartly recreated a schema from an old project schema.sql I had lying around. I couldn&#8217;t edit any of the tables. Workbench complained about a &#8220;missing editor&#8221;. Maybe it wants to integrate with MySQL Query Browser or something?
</p>
<div id="attachment_189" class="wp-caption alignnone" style="width: 310px"><a href="http://stickytape.files.wordpress.com/2009/02/picture-2.png"><img src="http://stickytape.files.wordpress.com/2009/02/picture-2.png?w=300&#038;h=187" alt="Workbench reverse engineer script example" title="Workbench reverse engineer script example" width="300" height="187" class="size-medium wp-image-189" /></a><p class="wp-caption-text">Workbench reverse engineer script example</p></div>
<h2>ERD&#8217;ing</h2>
<p>
Getting around an apparently buggy UI I did get to link some tables with many-to-one relationships. The experience was positively engaging. Workbench is already a vast improvement on the kludgy and  buggy DBDesigner. Some screenshots to follow:
</p>
<div id="attachment_190" class="wp-caption alignnone" style="width: 310px"><a href="http://stickytape.files.wordpress.com/2009/02/picture-3.png"><img src="http://stickytape.files.wordpress.com/2009/02/picture-3.png?w=300&#038;h=187" alt="Workbench many-to-one example" title="Workbench many-to-one example" width="300" height="187" class="size-medium wp-image-190" /></a><p class="wp-caption-text">Workbench many-to-one example</p></div>
<p>
And just to verify that the &#8220;Open Recent&#8221; crash wasn&#8217;t an anomaly I tried it again. Kaboom. A rather strange bug indeed.
</p>
<h2>Conclusion</h2>
<p>
If you&#8217;re going to use Workbench on real projects I advise practicing the &#8220;save every 5 seconds&#8221; rule. It is but only an Alpha but a very promising one at that. Regardless. I&#8217;m excited. I can&#8217;t wait for the first stable release. To the MySQL Workbench (and entire team at Sun MySQL) thanks for great tools and a great database. Love it. Bugs and all.</p>
<br /> Tagged: dbdesigner, erd, mac, mysql, workbench <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stickytape.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stickytape.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stickytape.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stickytape.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stickytape.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stickytape.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stickytape.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stickytape.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stickytape.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stickytape.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stickytape.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stickytape.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stickytape.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stickytape.wordpress.com/186/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=186&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stickytape.wordpress.com/2009/02/21/test-drive-mysql-workbench/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3192d5f19ae8e0c31333c056f613de6b?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">phpslacker</media:title>
		</media:content>

		<media:content url="http://stickytape.files.wordpress.com/2009/02/picture-4.png?w=300" medium="image">
			<media:title type="html">Workbench Crash</media:title>
		</media:content>

		<media:content url="http://stickytape.files.wordpress.com/2009/02/picture-2.png?w=300" medium="image">
			<media:title type="html">Workbench reverse engineer script example</media:title>
		</media:content>

		<media:content url="http://stickytape.files.wordpress.com/2009/02/picture-3.png?w=300" medium="image">
			<media:title type="html">Workbench many-to-one example</media:title>
		</media:content>
	</item>
		<item>
		<title>Using MySQL 5.1? You&#8217;ve been warned</title>
		<link>http://stickytape.wordpress.com/2009/02/17/using-mysql-51-youve-been-warned/</link>
		<comments>http://stickytape.wordpress.com/2009/02/17/using-mysql-51-youve-been-warned/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 11:00:34 +0000</pubDate>
		<dc:creator>phpslacker</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://phpslacker.com/?p=171</guid>
		<description><![CDATA[The other day I got really excited about MySQL 5.1. Finally, I can use prepared statements and the query_cache at the same time! And then I stumbled upon Monty&#8217;s blog post. In case you missed it. A stern warning from Michael Widenius (Founder and original developer of MySQL). That&#8217;s alot of bugs. Its not the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=171&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
The other day <a href="http://phpslacker.com/2009/02/06/mysql-51-fixes-prepared-statements/">I got really excited about MySQL 5.1</a>. Finally, I can use prepared statements and the query_cache at the same time! And then I stumbled upon Monty&#8217;s blog post.
</p>
<p>
In case you missed it. A <a href="http://monty-says.blogspot.com/2008/11/oops-we-did-it-again-mysql-51-released.html" rel="nofollow">stern warning from Michael Widenius</a> (Founder and original developer of MySQL).
</p>
<p>
That&#8217;s <a href="http://bugs.mysql.com/search.php?cmd=display&amp;status=Active&amp;severity=2&amp;bug_age=0&amp;direction=ASC&amp;phpver=5.1&amp;limit=All&amp;reorder_by=bug_type" rel="nofollow">alot of bugs</a>. Its not the volume of bugs thats alarming but the seriousness attached to them. Many are &#8220;crashing&#8221; bugs! Depending on what you use MySQL for they may or may not matter. Depending on how much data you have that bug list could leave you feeling rather uncomfortable about MySQL 5.1.
</p>
<p>Three months has gone by since MySQL 5.1 was announced &#8220;Generally Available&#8221;. <a href="http://www.mysqlperformanceblog.com/2008/12/10/mysql-51-went-to-ga-was-it-a-good-move/" rel="nofollow">According to mysql performance blog</a> there are some exceptional MySQL users out there. Some on the bleeding edge using the 6.0 releases already.
</p>
<p>Is this all a rush to become &#8220;Enterprise Ready&#8221;? Is it Sun&#8217;s fault? Has MySQL lowered its quality standards?</p>
<p>Who knows. I&#8217;m keeping my options open (postgres?). Some <a href="https://launchpad.net/drizzle" rel="nofollow">ex-MySQLers are busy elsewhere</a>. Hrmm. <a href="http://www.readwriteweb.com/archives/is_the_relational_database_doomed.php" rel="nofollow">Maybe the relational database is doomed</a> after all. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stickytape.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stickytape.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stickytape.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stickytape.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stickytape.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stickytape.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stickytape.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stickytape.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stickytape.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stickytape.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stickytape.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stickytape.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stickytape.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stickytape.wordpress.com/171/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=171&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stickytape.wordpress.com/2009/02/17/using-mysql-51-youve-been-warned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3192d5f19ae8e0c31333c056f613de6b?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">phpslacker</media:title>
		</media:content>
	</item>
		<item>
		<title>Making an iso in mac os x leopard</title>
		<link>http://stickytape.wordpress.com/2009/02/15/making-an-iso-in-mac-os-x-leopard/</link>
		<comments>http://stickytape.wordpress.com/2009/02/15/making-an-iso-in-mac-os-x-leopard/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 14:09:40 +0000</pubDate>
		<dc:creator>phpslacker</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[iso]]></category>

		<guid isPermaLink="false">http://phpslacker.com/?p=145</guid>
		<description><![CDATA[The other day I desperately wanted/needed to install Ubuntu 8.04 Server as a virtual machine using VirtualBox. I could either install Ubuntu directly from the installation disc or install from a mounted ISO. I figured an ISO would be faster and more reliable. I looked all over Mac&#8217;s applications folder for a GUI utility but [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=145&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
The other day I desperately wanted/needed to install Ubuntu 8.04 Server as a virtual machine using <a href="http://virtualbox.org" rel="nofollow">VirtualBox</a>. I could either install Ubuntu directly from the installation disc or install from a mounted ISO. I figured an ISO would be faster and more reliable. I looked all over Mac&#8217;s applications folder for a GUI utility but the for the life of me couldn&#8217;t find one to create an iso. I really thought Disk Utility would have that feature, it doesn&#8217;t right?
</p>
<p>In *nix when the GUI fails you can always go old skool.</p>
<h2>Open Terminal</h2>
<p><code><br />
qbook:~ quinton$ drutil status<br />
 Vendor   Product           Rev<br />
 MATSHITA CD-RW  CW-8221    GA0K</p>
<p>           Type: CD-ROM               Name: /dev/disk3<br />
       Sessions: 1                  Tracks: 1<br />
   Overwritable:   00:00:00         blocks:        0 /   0.00MB /   0.00MiB<br />
     Space Free:   00:00:00         blocks:        0 /   0.00MB /   0.00MiB<br />
     Space Used:   59:42:17         blocks:   268667 / 550.23MB / 524.74MiB<br />
    Writability:<br />
</code></p>
<p>Assuming you&#8217;ve already inserted the disc for copying. This command tells you where its been mounted.</p>
<h2>Unmount the disk to be iso&#8217;d</h2>
<p><code></p>
<p>qbook:~ quinton$ diskutil unmountDisk /dev/disk3<br />
Unmount of all volumes on disk3 was successful<br />
</code></p>
<p>Using the location derived from the previous command. In my case the CD-ROM is /dev/disk3. Yours may differ</p>
<h2>Make the iso</h2>
<p><code><br />
qbook:~ quinton$ dd if=/dev/disk3s0 of=ubuntu_8.04_lts_server.iso bs=2048<br />
268667+0 records in<br />
268667+0 records out<br />
550230016 bytes transferred in 308.685634 secs (1782493 bytes/sec)<br />
</code></p>
<p>The real magic happens here. If you&#8217;re curious about progress you can watch the size of the newly created iso file &#8220;grow&#8221; in size using Finder or another terminal tab/window. Shouldn&#8217;t take longer than 10mins or so (for a 700mb cd)</p>
<h2>Mount the ISO</h2>
<p><code><br />
qbook:~ quinton$ hdid ubuntu_8.04_lts_server.iso<br />
/dev/disk1          	                               	/Volumes/Ubuntu-Server 8.<br />
</code></p>
<p>
And to confirm the ISO is working. This command will mount the ISO as a readable volume. Should be viewable in Finder alongside all your other mounted devices.</p>
<br /> Tagged: iso, mac <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stickytape.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stickytape.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stickytape.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stickytape.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stickytape.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stickytape.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stickytape.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stickytape.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stickytape.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stickytape.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stickytape.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stickytape.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stickytape.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stickytape.wordpress.com/145/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=145&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stickytape.wordpress.com/2009/02/15/making-an-iso-in-mac-os-x-leopard/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3192d5f19ae8e0c31333c056f613de6b?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">phpslacker</media:title>
		</media:content>
	</item>
		<item>
		<title>VirtualBox&#8217;ing Ubuntu Linux</title>
		<link>http://stickytape.wordpress.com/2009/02/09/virtualboxing-ubuntu-linux/</link>
		<comments>http://stickytape.wordpress.com/2009/02/09/virtualboxing-ubuntu-linux/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 20:24:26 +0000</pubDate>
		<dc:creator>phpslacker</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://phpslacker.com/?p=147</guid>
		<description><![CDATA[If you&#8217;re expecting a long hack about how to get it working sorry you won&#8217;t find it here. Ubuntu just works in VirtualBox except for one not so obvious error message on first boot. I couldn&#8217;t get a screenshot for some reason but the error message you will get on first boot of any ubuntu [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=147&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
If you&#8217;re expecting a long hack about how to get it working sorry you won&#8217;t find it here. <a href="http://www.ubuntu.com/" rel="nofollow">Ubuntu</a> just works in <a href="http://www.virtualbox.org/" rel="nofollow">VirtualBox</a> except for one not so obvious error message on first boot.</p>
<p>I couldn&#8217;t get a screenshot for some reason but the error message you will get on first boot of any ubuntu distro (desktop or server) in VirtualBox is:
</p>
<p><code><br />
Starting up ...<br />
This kernel requires the following features not present on the CPU:<br />
0:6<br />
Unable o boot - please use a kernel appropriate for your CPU.<br />
</code></p>
<p>Huh? Yeah me too. I&#8217;ve encountered this issue before I just forgot the fix so I had to google it (again). The fix is:</p>
<ol>
<li>Power-off or shutdown the running virtual machine instance</li>
<li>Select the &#8220;Settings&#8221; menu option from the context-menu on your VM instance (mine is called hardy lts in the screenshot)</li>
<li>Then from the General tab pane select &#8220;Advanced&#8221; tab pane</li>
<li>Enable PAE/NX</li>
</ol>
<p>
<a href="http://stickytape.files.wordpress.com/2009/02/picture-1.png" title="VirtualBox fixer upper"><img src="http://stickytape.files.wordpress.com/2009/02/picture-1.png?w=300&#038;h=187" alt="VirtualBox fixer upper" title="VirtualBox fixer upper" width="300" height="187" class="alignnone size-medium wp-image-149" /></a></p>
<p>That&#8217;s it! You now have a useable ubuntu virtual machine running in OS X. yay. <a href="https://help.ubuntu.com/community/VirtualBox#Known%20Issues%20and%20Gotchas" rel="nofollow">This is listed as a &#8220;Known Issue&#8221;</a> on the ubuntu wiki</p>
<p>Disclaimer: Steps may vary on your guest OS. eg. it might require 50+ clicks and a cold boot when using winblows <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  </p>
<br /> Tagged: linux, ubuntu, virtualbox <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stickytape.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stickytape.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stickytape.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stickytape.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stickytape.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stickytape.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stickytape.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stickytape.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stickytape.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stickytape.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stickytape.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stickytape.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stickytape.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stickytape.wordpress.com/147/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=147&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stickytape.wordpress.com/2009/02/09/virtualboxing-ubuntu-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3192d5f19ae8e0c31333c056f613de6b?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">phpslacker</media:title>
		</media:content>

		<media:content url="http://stickytape.files.wordpress.com/2009/02/picture-1.png?w=300" medium="image">
			<media:title type="html">VirtualBox fixer upper</media:title>
		</media:content>
	</item>
		<item>
		<title>php4 and php5 certification</title>
		<link>http://stickytape.wordpress.com/2009/02/09/php4-and-php5-certification/</link>
		<comments>http://stickytape.wordpress.com/2009/02/09/php4-and-php5-certification/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 11:51:32 +0000</pubDate>
		<dc:creator>phpslacker</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[php4]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://phpslacker.com/?p=129</guid>
		<description><![CDATA[At the beginning of 2009 I found myself a bit idle. A new year in a new company always starts out a bit slow. I decided that the best use of this abundant time would be to get PHP5 certified. Not the first certification Back in early 2005 the Zend certification first became available for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=129&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
At the beginning of 2009 I found myself a bit idle. A new year in a new company always starts out a bit slow. I decided that the best use of this abundant time would be to get <a href="http://www.zend.com/en/store/php-certification/" rel="nofollow">PHP5 certified</a>.
</p>
<h2>Not the first certification</h2>
<p>
Back in early 2005 the <a href="http://www.zend.com" rel="nofollow">Zend</a> certification first became available for PHP4. At that time I had roughly 2 years php experience. No South Africans were certified at that time. Barely 100 certified engineers worldwide. What a great achievement if I could join the elite few.
</p>
<h2>PHP4 certification process</h2>
<p>
I signed into Zend.com and ordered the certification voucher, <a href="http://www.amazon.com/Certification-Study-Guide-Developers-Library/dp/0672327090" rel="nofollow">exam study guide</a> and <a href="http://www.amazon.com/Zend-Certification-Practice-Test-Book/dp/0973589884" rel="nofollow">practice exam book</a>. Zend were very accomodating and offered a generous discount on pricing.
</p>
<p>
The php4 certification guide provided adequate preparation for the exam. Along with that I gained a deeper understanding learning many things along the way. And I&#8217;m grateful for that.</p>
<p>
The practice book is excellent. One could simulate at least 5 exams from the pool of questions in the book. It also provides the explanations to the answers which again was a real plus. Once I was ready I booked the exam with <a href="http://www.vue.com/" rel="nofollow">Pearson Vue</a> at a nearby testing centre.
</p>
<p>
From purchasing the certification goods all the way to writing the exam it was a smooth experience and most worthwhile.
</p>
<h2>Fast forward to 2009</h2>
<p>
PHP5 certification process was a little different. Not nearly as smooth. This time around I ordered the pdf version of the certification study guide and instead of a practice exam book Zend now offers mock tests thru <a href="http://www.phparch.com/c/product/vulcan/view" rel="nofollow">Vulcan</a>.
</p>
<h3>Shortcomings in the study guide</h3>
<p>
PHP5 study guide lacks the depth offered by the php4 study guide. Perhaps its because PHP5 is a &#8220;bigger&#8221; language with additions such as MySQLi, PDO, Tidy, SOAP and all new XML extensions. Not forgetting the complete rework of the OOP model. Did I miss anything?
</p>
<h3>Vulcan needs work</h3>
<p>
To phparch and Zend&#8217;s credit they have devised a smart online mock testing platform but it needs refinement.
</p>
<ul>
<li>I had a vulcan token which was valid for 10 mock tests but a few tests later the token become invalid.</li>
<li>Questions were very poorly phrased. I couldn&#8217;t tell if they were trick questions or just a result of poor english.</li>
<li>Vulcan didn&#8217;t offer explanations for the questions that you got wrong. It didn&#8217;t even tell you which questions you got wrong. Boo</li>
</ul>
<h3>Exam time</h3>
<p>
Exam format is 70 multiple choice questions in 90 minutes. Some code samples to interpret, some theory questions, some function names to type in but nothing too hardcore. The real exam also had some oddly phrased questions which often required a double-take. No sweat. I finished 40 minutes early and got my test results immediately. Pass. Yay!
</p>
<p>
In the end I missed my goal of becoming the first South African to be zend certified in 2005 and I also missed becoming the first php5 certified engineer. However, at time of writing I am the <a href="http://www.zend.com/store/education/certification/yellow-pages.php#list-cid=199&amp;firstname=&amp;lastname=&amp;orderby=name&amp;sid=XX&amp;company=&amp;photo_first=&amp;certtype=PHP45&amp;ClientCandidateID=" rel="nofollow">only South African to hold both php4 and php5 certifications</a>. w00t!
</p>
<p>
Thats an achievement but that isn&#8217;t my motivation for getting certified. I revel in proving to myself that I&#8217;m a competent and capable PHPer. Things grow, change and evolve so quickly one must always make room for learning.</p>
<br /> Tagged: certification, php, php4, php5, Zend <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stickytape.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stickytape.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stickytape.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stickytape.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stickytape.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stickytape.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stickytape.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stickytape.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stickytape.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stickytape.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stickytape.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stickytape.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stickytape.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stickytape.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stickytape.wordpress.com&amp;blog=4392513&amp;post=129&amp;subd=stickytape&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stickytape.wordpress.com/2009/02/09/php4-and-php5-certification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3192d5f19ae8e0c31333c056f613de6b?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">phpslacker</media:title>
		</media:content>
	</item>
	</channel>
</rss>
