<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>PseudoCoder.com</title>
	
	<link>http://www.pseudocoder.com</link>
	<description>What Happends If It Actually Works?</description>
	<lastBuildDate>Fri, 23 Oct 2009 12:59:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/pseudocoder" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>CakePHP Digest #21 – Whose Left?</title>
		<link>http://www.pseudocoder.com/archives/2009/10/23/cakephp-digest-21-%e2%80%93-whose-left/</link>
		<comments>http://www.pseudocoder.com/archives/2009/10/23/cakephp-digest-21-%e2%80%93-whose-left/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 12:59:22 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[CakePHP Digest]]></category>

		<guid isPermaLink="false">http://www.pseudocoder.com/?p=1072</guid>
		<description><![CDATA[News
So Long and Thanks For All The Gwoo-Abele
Ok, maybe it&#8217;ll be easier this way:  Everyone NOT leaving the CakePHP dev team please take a step forward.  First it was Gwoo who left and then Nate soon after.  And now I&#8217;m hearing rumors that the &#8220;C&#8221; is leaving and it&#8217;ll just be &#8220;akePHP&#8221;. [...]]]></description>
			<content:encoded><![CDATA[<h1>News</h1>
<h4>So Long and Thanks For All The Gwoo-Abele</h4>
<p>Ok, maybe it&#8217;ll be easier this way:  Everyone NOT leaving the CakePHP dev team please take a step forward.  First it was <a href="http://www.ohloh.net/accounts/gwoo/messages/52362">Gwoo who left</a> and then <a href="http://twitter.com/nateabele/status/5087443139">Nate soon after</a>.  And now I&#8217;m hearing rumors that the &#8220;C&#8221; is leaving and it&#8217;ll just be &#8220;akePHP&#8221;.  In all seriousness, this is all slightly worrisome for Cake developers (I&#8217;ll take the liberty of speaking for everyone single one of you here).  We&#8217;re talking about <a href="https://trac.cakephp.org/wiki/Contributors">the people listed second and third on the Cake contributors page</a>.  How can there not be some anxiousness?  The Cake team could kill any doubt about the future of the project with a Bakery article.  Here&#8217;s a template:</p>
<blockquote><p>Hey Cake Community,<br />
I&#8217;m sure some of you have seen the news that Nate and Garrett have left the project.  First off, we&#8217;d like to thank them for their awesome work over the past few years&#8230;(continue lavishing praise.  You could stick 6 paragraphs here and you&#8217;d barely be scratching the surface).  We wish them both the best in their future endeavors. (also note: no parting shots.  Whatever disagreement (if any) took place behind the scenes &#8211; keep it that way).</p>
<p>Looking forward, we still have some great developers as part of the team.  Mark Story is kicking so much ass leading version 1.3.  We also have xxxx leading version 2.0 and making great progress.  Just last week 2.0 achieved consciousness and now repeatedly asks: &#8220;shall we play a game?&#8221;  They grow up so fast&#8230;</p></blockquote>
<p>You get the picture: 1) praise, 2) restore confidence.  </p>
<p>I&#8217;d also like to take a moment to personally thank Garrett Woodworth and Nate Abele.  I&#8217;m sure no one on the outside can truly recognize all the work they&#8217;ve put into the project.  Everyone pause and <a href="http://www.funnyordie.com/videos/35b5d7aff1/pour1out-for-your-homies-iphone-style-from-40cozy">pour1out for your homies</a>.  On the bright side we still have Cake and now Garrett and Nate are off to do <a href="http://search.twitter.com/search?q=%23li3">whatever they have planned next</a>.  So basically it&#8217;s like having conjoined twins who are now separated (probably not the best analogy, but I&#8217;m sticking with it).  </p>
<h4>Updated API and Book&#8230;now with more ads!</h4>
<p>The <a href="http://twitter.com/cakephp/statuses/4908730391">Book and API got updated</a> (momentarily dragging the stagnant @cakephp twitter account away from it&#8217;s beach side chair to make the announcement).  AdWords are now showing up for the three of you who don&#8217;t ad block.  My favorite so far is from the <a href="http://api.cakephp.org/class/security">Security lib</a>, which was something like &#8220;Want to become a security guard?&#8221;.  I was pretty tempted for a moment.  Do I get a baton or just a really long flash light that doubles as a weapon?  Also there are plenty of Java ads, which are a nice reminder for when you&#8217;re having a bad day: it could be so much worse.</p>
<h1>In The Wild</h1>
<h4>fontstruct.fontshop.com</h4>
<p>This one came in via email.  <a href="http://fontstruct.fontshop.com/">It&#8217;s a pretty cool looking font creator</a>.  I&#8217;m not a huge font/typeface nut.  The whole legal aspect has always turned me off.  So many patents and trademarks and who can use what type and how it can be rendered.  Seriously we&#8217;re talking about fucking letters here.  I also <a href="http://web.archive.org/web/20070717071257/planbookedu.com/login.php">once used comic sans in a site design</a>, so basically I have no credibility here.  </p>
<h4>paularmstrongdesigns.com</h4>
<p>New <a href="http://paularmstrongdesigns.com/">homepage for Paul Armstrong</a>, announced <a href="http://twitter.com/paularmstrong/statuses/4471136577">via twitter</a>.  </p>
<h4>free-bingo-cards.com</h4>
<p>A site to make <a href="http://free-bingo-cards.com/">free custom printable bingo cards</a>.  Suspiciously hosted on the same IP as this blog.</p>
<h1>In The Blogs</h1>
<h4>Unit Testing CakePHP Shells</h4>
<p>I stupidly <a href="http://mark-story.com/posts/view/unit-testing-cakephp-shells">missed this one</a> in the last digest, proving once again that I shouldn&#8217;t blog sober.</p>
<h4>Top 10 things to look forward to in CakePHP 1.3</h4>
<p>Teknoid has a great post <a href="http://teknoid.wordpress.com/2009/10/06/top-10-things-to-look-forward-to-in-cakephp-1-3/">counting down some of the changes to CakePHP 1.3</a>.  Go ahead and read it right now if you haven&#8217;t already.  Ok, now tell me you&#8217;re not excited for 1.3.  </p>
<h1>Anti-CakePHP Tweet(s) I enjoyed</h1>
<p><a href="http://twitter.com/alibby/statuses/4687119613">From @alibby</a>:</p>
<blockquote><p>
Feeling marginal about CakePHP. I wonder if there&#8217;s any other way to feel about it.
</p></blockquote>
<p><a href="http://twitter.com/alexmbarton/statuses/4764751648">From @alexmbarton</a>:</p>
<blockquote><p>
The white screen of death is fantastic fun on a Saturday evening. Thanks #cakephp, we really appreciate it
</p></blockquote>
<h1>Code</h1>
<h4>Google Analytics</h4>
<p>Neil Crookes rocks it once again with his <a href="http://www.neilcrookes.com/2009/09/27/get-google-analytics-data-in-your-cakephp/">Google Analytics plugin</a>.</p>
<h4>Croogo &#8211; A CMS</h4>
<p>From <a href="http://twitter.com/fahad19/statuses/4688586574">@fahad19</a>: <a href="http://croogo.org/">Croogo, a CakePHP powered CMS</a>.</p>
<h1>I&#8217;m Out!</h1>
<p>Don&#8217;t forget to <a href="http://feeds.feedburner.com/pseudocoder">subscribe to my feed</a> or <a href="http://twitter.com/mcurry">follow me on twitter</a>.</p>
<p>As always if you think I missed something leave a comment.  Or if you do something interesting and want it included in the next digest, <a href="mailto:matt@pseudocoder.com">send me an email</a>.</p>
<img src="http://feeds.feedburner.com/~r/pseudocoder/~4/vQZ-rYK11pc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.pseudocoder.com/archives/2009/10/23/cakephp-digest-21-%e2%80%93-whose-left/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>CakePHP Digest #20 – Nothing Left To Bitch About</title>
		<link>http://www.pseudocoder.com/archives/2009/09/24/cakephp-digest-20-%e2%80%93-nothing-left-to-bitch-about/</link>
		<comments>http://www.pseudocoder.com/archives/2009/09/24/cakephp-digest-20-%e2%80%93-nothing-left-to-bitch-about/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 10:41:51 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[CakePHP Digest]]></category>

		<guid isPermaLink="false">http://www.pseudocoder.com/?p=1055</guid>
		<description><![CDATA[News
CakePHP 1.2.5
We bitched about PHP4 support and result sets as arrays and Cake3 was announced.  We bitched about being stuck with prototype/script.aculo.us and CakePHP 1.3 was announced.  We bitched about deprecation messages with PHP 5.3 and CakePHP 1.2.5 was released.  Is there anything left to complain about?
Version Confusion
How about how confusing it [...]]]></description>
			<content:encoded><![CDATA[<h1>News</h1>
<h4>CakePHP 1.2.5</h4>
<p>We bitched about PHP4 support and result sets as arrays and Cake3 was announced.  We bitched about being stuck with prototype/script.aculo.us and CakePHP 1.3 was announced.  We bitched about deprecation messages with PHP 5.3 and <a href="http://bakery.cakephp.org/articles/view/release-cakephp-1-2-5">CakePHP 1.2.5 was released</a>.  Is there anything left to complain about?</p>
<h4>Version Confusion</h4>
<p>How about how confusing it is that there are so many different CakePHP versions?  Can we complain about that?  Oh&#8230;<a href="http://bakery.cakephp.org/articles/view/clearing-up-some-confusion-on-the-release-versions-of-cakephp">I guess not</a>.  </p>
<h4>München Workshops</h4>
<p>Fine, what about the lack of CakePHP workshops in München during 15. und 16. Oktober 2009?  How dare the CakePHP not fix this incredibly glaring oversight.  Shoot&#8230;<a href="http://www.debuggable.com/posts/CakePHP_Workshop_in_Muenchen_15_16_Oktober:4a9b0368-dcfc-4ab2-b8ed-0bc1cbdd56cb">that one is covered too</a>. </p>
<h4>CakeMatsuri </h4>
<p>Ha, that was trick.  I didn&#8217;t really care about German workshops.  What I really want is a <a href="http://matsuri.cakephp.jp/">CakeFest like gathering in Tokyo, Japan on October 30th and 31st </a>and I want it to be called CakeMatsuri and I want workshops all day on the 30th and talks all day on the 31st and I want lectures from Garrett J Woodworth, Graham Weldon and Joel Perras.  Why doesn&#8217;t the Cake team ever listen to <del datetime="2009-09-23T14:17:25+00:00">my demands</del> the needs of the community???  </p>
<h1>Anti-CakePHP Tweet(s) of the <del datetime="2009-09-23T14:17:25+00:00">Week</del> Month</h1>
<p><a href="http://twitter.com/robertbasic/statuses/3602590128">From @robertbasic</a>:</p>
<blockquote><p>
for fucks sake #cakephp you&#8217;re one fucked up framework. I hate you from the bottom of my soul
</p></blockquote>
<p><a href="http://twitter.com/mcurry/status/3603217250">My demand for @cakephp to respond</a> went un-answered.  Again CakePHP not coming through for it&#8217;s users.</p>
<blockquote><p>
I will donate $5 to @cakephp if they reply to this tweet with &#8220;We hate you too&#8221;. http://twitter.com/robertbasic/statuses/3602590128
</p></blockquote>
<p>This one from @s_bergmann got re-tweeted a lot.  Of course, I lost all respect for the tweet once I looked up &#8220;dementor&#8221; and found it was a Harry Potter reference.</p>
<blockquote><p>
Reading the CakePHP source code feels like being kissed by a dementor.
</p></blockquote>
<h1>In The Wild</h1>
<p>Nothing?  Really?  I must have missed something, right?  Can the CakePHP team get on this right away?</p>
<h1>In The Blogs</h1>
<h4>URL Shortener</h4>
<p><a href="http://www.jotlab.com/2009/08/26/cakephp-url-shortener-service-tutorial/">Jotlab has a post on going from clean install to working URL shortener</a> in 8 simple pages.</p>
<h1>Code</h1>
<h4>Cupcake Forum</h4>
<p>Miles Johnson has released an awesome <a href="http://www.milesj.me/resources/script/forum-plugin">CakePHP forum plugin</a>.  This thing rocks pretty hard &#8211; you should definitely try it out before wasting your time trying to integrate some other forum system.</p>
<h4>File Uploads</h4>
<p>Upload plugins are now giving Twitter components/datasources a run for most released CakePHP code.  Here&#8217;s <a href="http://github.com/szajbus/uploadpack">UploadPack</a> from <a href="http://twitter.com/szajbus">@szajbus</a>, which was recently made into a plugin.</p>
<h4>OpenID Component</h4>
<p>There is a new version of <a href="http://cakebaker.42dh.com/2009/08/18/new-release-of-the-openid-component/">cakebaker&#8217;s OpenID Component</a>.</p>
<h4>Akismet API Component</h4>
<p><a href="http://www.sethcardoza.com/posts/view/34/title/akismet-api-component-for-cakephp-1.2">Seth Cardoza released Akismet API Component</a> for fighting spam.  This would probably be better off as a datasource, but I can see why people stay away from datasources since there aren&#8217;t any docs for it.  Oh wait, what&#8217;s that?  <a href="http://book.cakephp.org/view/87/DataSources">The Cookbook now has a datasource section</a>?  Fuck&#8230;one less thing to complain about I guess.</p>
<h4>Static Pages</h4>
<p>Not much in the way of docs on this one, but if you follow this link path you&#8217;ll figure it out &#8211; I have faith in you.  First check out Jonathan Snook&#8217;s <a href="http://snook.ca/archives/cakephp/static_pages_cakephp12/">original post</a> and his <a href="http://snook.ca/archives/cakephp/easier_static_pages_2/">updated post</a>.  That should help you understand <a href="http://code.assembla.com/mi/subversion/nodes/branches/mi_development/vendors/shells/templates/skel/app_error.php">AD7six&#8217;s latest version</a>. <ins datetime="2009-09-25T00:36:47+00:00">Code has now been &#8220;verbosified&#8221; (<a href="http://twitter.com/AD7six/status/4353174741">great word, courtesy of @AD7six</a>).</ins></p>
<h4>Lorem Ipsum Helper</h4>
<p><a href="http://bakery.cakephp.org/articles/view/lorem-ipsum-dummy-text-helper-1">Lorem ipsum dolor sit amet</a>, consectetur adipiscing elit. Vivamus pulvinar, est ut convallis vestibulum, lectus velit placerat lorem, sit amet euismod erat nunc sit amet enim. Cras dictum aliquet mauris vitae elementum. Morbi scelerisque enim ac turpis interdum pellentesque ac at eros. Ut quis leo libero, a sagittis sapien. Proin molestie neque ac quam tincidunt mattis. Ut magna urna, posuere quis rhoncus et, laoreet vel erat.</p>
<h4>Simple Queue Plugin</h4>
<p>MSeven released a simple <a href="http://github.com/MSeven/cakephp_queue">job queue plugin</a>.  It doesn&#8217;t require any additional server configuration so it&#8217;s an easy way to get up and running with deferred job execution.  As a semi-professional slacker, you stick the word &#8220;deferred&#8221; in front of anything and I&#8217;m interested.  </p>
<h4>Session Handling</h4>
<p>ADmad has a post showing how to <a href="http://bakery.cakephp.org/articles/view/how-to-bend-cakephp-s-session-handling-to-your-needs">customize CakePHP&#8217;s session handling</a>.</p>
<h1>I&#8217;m Out!</h1>
<p>Don&#8217;t forget to <a href="http://feeds.feedburner.com/pseudocoder">subscribe to my feed</a> or <a href="http://twitter.com/mcurry">follow me on twitter</a>.</p>
<p>As always if you think I missed something leave a comment.  Or if you do something interesting and want it included in the next digest, <a href="mailto:matt@pseudocoder.com">send me an email</a>.</p>
<img src="http://feeds.feedburner.com/~r/pseudocoder/~4/7HWAIVYhG58" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.pseudocoder.com/archives/2009/09/24/cakephp-digest-20-%e2%80%93-nothing-left-to-bitch-about/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>CakePHP Digest #19 – The Holy Shit Do I Have A Ton Of Links Edition</title>
		<link>http://www.pseudocoder.com/archives/2009/08/17/cakephp-digest-19-%e2%80%93-the-holy-shit-do-i-have-a-ton-of-links-edition/</link>
		<comments>http://www.pseudocoder.com/archives/2009/08/17/cakephp-digest-19-%e2%80%93-the-holy-shit-do-i-have-a-ton-of-links-edition/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 02:37:23 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[CakePHP Digest]]></category>

		<guid isPermaLink="false">http://www.pseudocoder.com/?p=1034</guid>
		<description><![CDATA[Seriously, could you guys please stop posting so many interesting blog posts and useful code?  I&#8217;m having trouble keeping up.  
News
CakePHP 1.2.4.8284 and CakePHP 1.3-dev Released
The Cake Team launched two new versions last week at some point prior to me getting around to publishing this.  The first is a bug fix release [...]]]></description>
			<content:encoded><![CDATA[<p>Seriously, could you guys please stop posting so many interesting blog posts and useful code?  I&#8217;m having trouble keeping up.  </p>
<h1>News</h1>
<h4>CakePHP 1.2.4.8284 and CakePHP 1.3-dev Released</h4>
<p><a href="http://bakery.cakephp.org/articles/view/release-cakephp-1-2-4-8284">The Cake Team launched two new versions</a> <del datetime="2009-08-17T17:55:54+00:00">last week</del> at some point prior to me getting around to publishing this.  The first is a bug fix release for the 1.2 edition, which <a href="https://trac.cakephp.org/wiki/changelog/1.2.x.x/8284">closed over 70 issues</a>.  Also the first development release of 1.3 was announced.  There is <a href="http://code.cakephp.org/wiki/1.3/migration-guide">a migration guide</a> if you want to port a 1.2 app over.</p>
<p>One of the changes for 1.3 states:</p>
<blockquote><p>
DboSource::query() now throws warnings for un-handled model methods, instead of trying to run them as queries. This means, people starting transactions improperly via the $this->Model->begin() syntax will need to update their code so that it accesses the model&#8217;s DataSource object directly.</p></blockquote>
<p>I&#8217;m guilty of this, but mostly because I thought there actually were begin/commit/rollback methods.  Here&#8217;s a quick tip to fix this for 1.2 and 1.3 apps.  In your AppModel:</p>
<pre name="code" class="php">
function begin() {
  return $this->getDataSource()->begin($this);
}

function commit() {
  return $this->getDataSource()->commit($this);
}

function rollback() {
  return $this->getDataSource()->rollback($this);
}
</pre>
<h4>Nate Gets Around</h4>
<p>Lots of interviews with Nate Abele, Lead Dev of CakePHP (well 2, but one of them was 2 parts so it was really more like 2.5 interviews).  The first was <a href="http://debuggable.com/posts/Cake_3_interview_with_Nate_Abele:4a665a5e-5bfc-4e42-96ee-6d284834cda3">with Felix and is posted on debuggable.com</a>.  The second was with me and is <a href="http://www.pseudocoder.com/archives/2009/08/05/9-questions-with-nate-abele-lead-developer-of-cakephp/">posted on this site</a> in <a href="http://www.pseudocoder.com/archives/2009/08/06/6-more-questions-with-nate-abele-%E2%80%93-lead-developer-of-cakephp/">two parts</a>.</p>
<h4>CakeMatsuri Tokyo</h4>
<p>If your in Japan on October 30 to the 31 check out <a href="http://bakery.cakephp.org/articles/view/october-30-31-cakematsuri-tokyo">CakeMatsuri &#8211; a two day conference/workshop</a>.  Note that the workshops are &#8220;friendly&#8221;, which means you means you can leave your weaponry at home.  You will need your guns for&#8230;</p>
<h4>Start Cleaning Your Pistola</h4>
<p><a href="http://twitter.com/zendcon/status/2782373274">@ZendCon announced</a> that the closing keynote for <a href="http://zendcon.com/">ZendCon</a> would be a framework shootout.  Participating will be Matthew Weier O&#8217;Phinney, David Zülke, Fabien Potencier, Edward Finkler, and Nate Abele.  Here&#8217;s the description from their site:</p>
<blockquote><p>
Representatives from five major frameworks will form a panel on the stage and discuss the various pros and cons of their frameworks. Discussions will be moderated by Eli White from Zend and will include some history of why each framework has made various decisions over time. Audience participation will be encouraged and questions will be taken. Frameworks represented will be: Zend Framework, Symfony, Cake, CodeIgnitor, and Agavi</p></blockquote>
<h4>Bake Updates For Cake 1.3</h4>
<p>Mark Story has a great post <a href="http://mark-story.com/posts/view/bake-updates-for-1-3">covering all the new updates and features for Bake in 1.3</a>.  Be sure to check it out.  My favorite part: &#8220;Test cases also generate skeleton test methods for every non-inherited public method in your classes&#8221;.  Cool.</p>
<h4>Another Free CakePHP E-book</h4>
<p>Although he <a href="http://groups.google.com/group/cake-php/browse_thread/thread/2bff41e7a8259a30?hl=en#">took some heat in the Google Group</a> for not releasing the book in English, I applaud Azril Nazli on his free CakePHP E-book, <a href="http://blog.mamakspot.my/blog/posts/view/19/Ebook-Panduan-Bina-Blog-Guna-CakePHP-versi-0-1">Ebook Panduan Bina Blog Guna CakePHP versi 0.1</a>.   Here&#8217;s my review:  I can&#8217;t understand a word, but damn does it look pretty.  I&#8217;m like 75% jealous of how much better his looks <a href="http://www.pseudocoder.com/free-cakephp-book/">then mine</a>.  </p>
<h4>CakePHP Session at the Next PHPMelb Meeting</h4>
<p>If you&#8217;re live around Melbourne, Aus you should check out the next PHPMelb meeting: &#8220;<a href="http://phpmelb.org/2009/08/12/august-2009-baking-with-cakephp-and-beginners-series-planning-session/">Baking with CakePHP and Beginners Series Planning Session</a>&#8220;.  It takes place on Monday, Aug 17, <del datetime="2009-08-17T17:55:54+00:00">which may already be past&#8230;Aus is like a week ahead of the US in timezones, right?</del> <em>note to self: time based jokes only work if you can get the post out on time.</em></p>
<h1>Anti-CakePHP Tweet of the Week</h1>
<p>This is a new feature, where I pick out my favorite anti-CakePHP tweets(s).  This one comes from <a href="http://twitter.com/sjmadsen/statuses/3126921878">@sjmadsen</a>:</p>
<blockquote><p>If the CakePHP and SimpleTest web sites/documentation were indicative of all PHP developers, it&#8217;d be safe to say they&#8217;re illiterate.</p></blockquote>
<h1>Tickets and Commits</h1>
<p>This is probably the last time I&#8217;ll be linking to tickets over at the trac with the move to code.cakephp.org.  And it could be the last time I link to tickets at all, unless code.cakephp.org adds a ticket RSS feed.  I<del datetime="2009-08-18T16:47:32+00:00"> know, I know the code is open source &#8211; I should just add the feature and see if the Cake Team will include it</del>  <ins datetime="2009-08-18T16:47:32+00:00">TheChaw/code.cakephp.org isn&#8217;t open sourced&#8230;not sure why I thought it was.  See the comment below from Mark Story on using the timeline feed.</ins></p>
<h4>Convenience Functions</h4>
<p>I thought <a href="https://trac.cakephp.org/ticket/6525">this one was interesting</a>.  It covers removing the convenience functions (like e(), ife(), am()&#8230;) in basics.php from the core.  Don&#8217;t worry, though, it looks like they&#8217;ll still be available, for the 1.2-1.3 branches at least.</p>
<h4>Id&#8230;That is all</h4>
<p><a href="https://trac.cakephp.org/ticket/6532">This one was kind of fun too</a>.  </p>
<h1>In The Groups</h1>
<h4>Remove PHP 5.3 Deprecation Warnings</h4>
<p>If you&#8217;re trying to run the 1.2 branch on PHP 5.3 you may get a bunch of deprecation warnings. <a href="http://groups.google.com/group/cake-php/browse_thread/thread/cc8b71d4b7aa5217?hl=en#"> Here&#8217;s a quick tip (which involves a core hack) </a>to get rid of them.</p>
<h1>In The Blogs</h1>
<p>Teknoid has a post of <a href="http://teknoid.wordpress.com/2009/07/13/a-deeper-look-at-working-with-cakephp-shells/">how to build CakePHP shells</a>.</p>
<p>Nate comes out of blogging retirement to post some <a href=" http://bakery.cakephp.org/articles/view/secrets-of-admin-routing">secrets on admin routing</a>.</p>
<p>Miles J has a post on <a href="http://www.milesj.me/blog/read/52/How-To-Do-Plurals-In-L10n-And-I18n">plurals w/ Cake&#8217;s l10n and i18n</a>.</p>
<p>Ronny Vindenes posts a tutorial on how to <a href="http://illustrata.no/blog/2009/07/slicker-sitemap-with-slickmap-css/">integrate SlickMap CSS into your Cake app</a> to get pretty sitemaps.</p>
<h1>Code</h1>
<p>From Miles J: a <a href="http://www.milesj.me/resources/script/feed-aggregator-component">Feed Aggregator Component</a></p>
<p>From <a href="http://twitter.com/markgandolfo/status/2680699714">@markgandolfo</a>: <a href="http://github.com/markgandolfo/cakephp_cycle_css/tree/master">a Cycle CSS helper</a> to alternate table row colors similar to how Rails does it.  </p>
<p><a href="http://twitter.com/savant">@savant</a> is converting all <a href="http://github.com/josegonzalez">his CakePHP code to plugins</a> including his <a href="http://github.com/josegonzalez/cakephp-github-plugin-plugin/tree/master">GitHub plugin plugin</a>, which provides an easy way to install plugins from GitHub. </p>
<p>From <a href="http://twitter.com/utoxin/statuses/2915882007">@utoxin</a>: a behavior to <a href="http://www.utoxin.name/2009/07/automatic-db-field-encryption-in-cakephp/">automatically encrypt and decrypt a DB field</a>.</p>
<p>From Nick Baker: <a href="http://bakery.cakephp.org/articles/view/paypal-ipn-instant-payment-notification-plugin-complete-with-paypalhelper ">A PayPal IPN plugin</a></p>
<p>From <a href="http://twitter.com/pointlessjon">pointlessjon</a>: an <a href="http://github.com/pointlessjon/CakePHP-Fixturize-Shell-Plugin/tree/master">awesome fixturize plugin</a>.  I use this one and highly recommend.</p>
<p>From Graham Weldon: An <a href="http://bakery.cakephp.org/articles/view/automatic-javascript-includer-helper">automatic JavaScript includer helper</a></p>
<h1>In The Wild</h1>
<p>Just a ton of new sites since the last digest&#8230;<br />
From <a href="http://twitter.com/d4z0/statuses/2688175309">@d4z0</a>: <a href="http://feelv4.com/en_GB/pages/mainpage">feelv4.com</a> &#8211; a Euro Honda site.</p>
<p>From <a href="http://twitter.com/smalltowneye/statuses/2693132405">@smalltowneye</a>: <a href="http://smalltowneyes.com/">smalltowneyes.com</a> &#8211; a community site that integrated the &#8220;eye&#8221; part of the domain name just a tad too much into the design.  </p>
<p>From <a href="http://nik.chankov.net/2009/07/17/linxspy-com-track-your-links/">Nik Chankov</a>: <a href="http://linxspy.com/">linxspy.com</a> &#8211; a service to make sure that any link exchanges are maintained.  The service is free, for a small fee you can have Nik visit the homes of people who pull your links and remind them not to fuck with your page rank.</p>
<p>From <a href="http://twitter.com/gerhardsletten/statuses/2784859050">@gerhardsletten</a>: <a href="http://www.gersh.no/">www.gersh.no</a> &#8211; a new homepage.</p>
<p>From <a href="http://twitter.com/Gaslamp/statuses/2786327691">@gaslamp</a>: <a href="http://www.adamwes.com/">adamwes.com</a> &#8211; a math and science tutoring site.  You know how ads for escort services always show really hot dudes/chicks, but when the person arrives they have 300 pounds stuffed into an outfit for a 125 pound person?  Uhh&#8230;at least that&#8217;s what I&#8217;ve heard from people&#8230;  Anyway, all the &#8220;tutors&#8221; in the slideshow on the homepage are attractive and fit (you could say model-esq), but your tutor is probably caring a bucket of wings when they arrive.  Who would have thought that escort services and math/science tutors services would have something in common?</p>
<p>Via email &#8211; <a href="http://simcoedining.com/">SimcoeDining.com</a> &#8211; a food/fun site fort the Barrie and the Simcoe-County area.  If you read the URL fast it looks like sim coed ining. </p>
<h1>I&#8217;m Out!</h1>
<p>And on that note don&#8217;t forget to <a href="http://feeds.feedburner.com/pseudocoder">subscribe to my feed</a> or <a href="http://twitter.com/mcurry">follow me on twitter</a>.</p>
<p>As always if you think I missed something leave a comment.  Or if you do something interesting and want it included in the next digest, <a href="mailto:matt@pseudocoder.com">send me an email</a>.</p>
<img src="http://feeds.feedburner.com/~r/pseudocoder/~4/1iFtY1N4C_4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.pseudocoder.com/archives/2009/08/17/cakephp-digest-19-%e2%80%93-the-holy-shit-do-i-have-a-ton-of-links-edition/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Adding Ajax Panels to the CakePHP Status Plugin</title>
		<link>http://www.pseudocoder.com/archives/2009/08/13/adding-ajax-panels-to-the-cakephp-status-plugin/</link>
		<comments>http://www.pseudocoder.com/archives/2009/08/13/adding-ajax-panels-to-the-cakephp-status-plugin/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 03:54:21 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[GitHub]]></category>

		<guid isPermaLink="false">http://www.pseudocoder.com/?p=1012</guid>
		<description><![CDATA[Previously On&#8230;
Last time we made a simple panel that showed the last 10 users that signed up for you web app.  It was a good example for using the requestAction approach (or as AD7six pointed out you can skip the requestAction part and go right to the model).
Let&#8217;s Get Ajaxy Up In This Mofo
This [...]]]></description>
			<content:encoded><![CDATA[<h4>Previously On&#8230;</h4>
<p><a href="http://www.pseudocoder.com/archives/2009/08/06/adding-custom-panels-to-the-cakephp-status-plugin">Last time we made a simple panel</a> that showed the last 10 users that signed up for you web app.  It was a good example for using the requestAction approach (or as <a href="http://www.pseudocoder.com/archives/2009/08/06/adding-custom-panels-to-the-cakephp-status-plugin/#comment-4633">AD7six pointed out you can skip the requestAction part and go right to the model</a>).</p>
<h4>Let&#8217;s Get Ajaxy Up In This Mofo</h4>
<p>This time we&#8217;ll do a panel that shows the number of sign ups based on a time frame.  We&#8217;ll add a drop down that let&#8217;s you select day, week, month or year and it&#8217;ll show a breakdown of new users for that period.  The updates will use ajax.</p>
<h4>The Element</h4>
<p>Just like last time we&#8217;re going to create a new element: <code>/app/views/elements/panels/signups.ctp</code>.  This time, however, the element will contain a form:</p>
<pre name="code" class="php">
&lt;?php echo $form->create('User', array('id' => 'SignupsForm')); ?>
&lt;h1>
  &lt;?php __('Signups'); ?>
  &lt;?php echo $form->input('signup_span', array('type' => 'select', 'div' => false, 'label' => false,
                                               'options' => array('day' => 'day',
                                                                  'week' => 'week',
                                                                  'month' => 'month',
                                                                  'year' => 'year')));
  ?>
&lt;/h1>
&lt;?php echo $form->end(); ?>

&lt;div id="signup-table">
  &lt;p>&lt;?php echo $html->image('/status/img/ajax-loader.gif') ?>&lt;/p>
&lt;/div>
</pre>
<p>In addition to the form, there is a div (signup-table) that will be used to hold the result of the Ajax call.  For now we&#8217;ll just stick a spinny icon in there.</p>
<h4>The JavaScript</h4>
<pre name="code" class="javascript">
&lt;script type="text/javascript">
  $(function(){
    $("#UserSignupSpan").change(function() {
      $("#signup-table").html("&lt;p>&lt;img src=\"/status/img/ajax-loader.gif\" \>&lt;/p>");
      $.get("/users/signups/" + $(this).val(), function(data) {
        $("#signup-table").html(data);
      });
    }).change();
  });
&lt;/script>
</pre>
<p>Pretty standard jQuery.  We catch the change in the span select, set the holder div to the spinny icon and make the request for the updated data.</p>
<h4>The Controller</h4>
<pre name="code" class="php">
function signups($span=1) {
  if (!Configure::read('Status.allow')) {
    die;
  }

  switch ($span) {
    default:
    case 'day':
      $field = 'SUBSTR(created, 1, 13)';
      $limit = 24;
      break;
    case 'week':
      $field = 'SUBSTR(created, 1, 10)';
      $limit = 7;
      break;
    case 'month':
      $field = 'SUBSTR(created, 1, 7)';
      $limit = 12;
      break;
    case 'year':
      $field = 'SUBSTR(created, 1, 4)';
      $limit = 5;
      break;
  }

  $data = $this->User->find('all', array('fields' => array($field . ' AS span', 'count(*) as cnt'),
                                         'group' => 'span',
                                         'order' => 'span DESC',
                                         'limit' => $limit));

  $this->set('data', $data);
}
</pre>
<p>In practice I would move most of this code to a <a href="http://github.com/mcurry/find/">custom find type</a>, but for the sake of this example I&#8217;ll put it all in the controller.  An important note: Unlike the example in the previous post, this action has a view associated with it.  That means you can access it directly without going through the status panel.  To protect against that we add the check at the top to make sure the user is allowed to access the status panel.</p>
<h4>Include The New Panel</h4>
<p>Remember to add the panel to the list of panels in bootstrap.php:</p>
<pre name="code" class="php">
Configure::write('Status.panels', array('panels/signups'));
</pre>
<h4>What It Looks Like</h4>
<p><img src="http://www.pseudocoder.com/wp-content/uploads/2009/08/signups_panel.jpg" alt="signups_panel" title="signups_panel" width="453" height="373" class="alignleft size-full wp-image-1018" /></p>
<img src="http://feeds.feedburner.com/~r/pseudocoder/~4/BTwhDUhV4OU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.pseudocoder.com/archives/2009/08/13/adding-ajax-panels-to-the-cakephp-status-plugin/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Adding Custom Panels to the CakePHP Status Plugin</title>
		<link>http://www.pseudocoder.com/archives/2009/08/06/adding-custom-panels-to-the-cakephp-status-plugin/</link>
		<comments>http://www.pseudocoder.com/archives/2009/08/06/adding-custom-panels-to-the-cakephp-status-plugin/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 03:19:59 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[GitHub]]></category>

		<guid isPermaLink="false">http://www.pseudocoder.com/?p=997</guid>
		<description><![CDATA[Intro
A few weeks ago I released a status plugin for CakePHP.  It is basically a single page where you can get a quick snapshot of your app.  The plugin ships with a few random panels, but it&#8217;s easy enough to add your own.  This post will tell you how.
Make sure to get [...]]]></description>
			<content:encoded><![CDATA[<h1>Intro</h1>
<p>A <a href="http://www.pseudocoder.com/archives/2009/07/06/cakephp-status-dashboard-everything-you-need-to-know-about-your-app-on-one-page/">few weeks ago I released a status plugin</a> for CakePHP.  It is basically a single page where you can get a quick snapshot of your app.  The plugin ships with a few random panels, but it&#8217;s easy enough to add your own.  This post will tell you how.</p>
<p><em>Make sure to get the <a href="http://github.com/mcurry/status">latest version from GitHub</a>.  Also note that the way to include the default panels has changed.  You now have to include the &#8220;Status.&#8221; prefix.</em></p>
<h4>requestAction vs Ajax</h4>
<p>There are two different ways to add a panel &#8211; using requestAction or Ajax.  The general rule is if the panel is pretty fast to load and content is static use requestAction.  If the panel takes some time or you want to be able to interact with it then use Ajax.  For example, the logs panel uses requestAction since it&#8217;s pretty quick to grab the log entries and you really don&#8217;t need to interact with them.  The Google Analytics panel, on the other hand, takes a few seconds to query the API and has options to change the timeframe, so it uses Ajax.</p>
<h4>Packaging Your Panel</h4>
<p>Panels can be packaged as plugins or just files in your app.  For this example we&#8217;ll just put the files as part of the app.  Making your panel as a plugin is pretty much the same, you just need to put all the files in the plugin&#8217;s directory and include the plugin name as a prefix when setting which panels to use.  Check out the <a href="http://github.com/mcurry/click">click plugin</a> for an example.  I&#8217;m just going to cover the requestAction approach today.  Look for another post of using Ajax soon.</p>
<h1>The requestAction Way</h1>
<h4>The Element</h4>
<p>Let&#8217;s build a panel that shows the last 10 users that signed up for your app.  The first thing you need is an element.  In /app/views/elements/panels (note the extra directory level &#8211; this is optional, but helps to keep things clean) create a file called &#8216;latest_users.ctp&#8217;.  In that file put:</p>
<pre name="code" class="php">
&lt;?php
  $users = $this->requestAction(array('controller' => 'users', 'action' => 'latest'));
?>
</pre>
<h4>The Controller</h4>
<p>In the users controller we now need to add an action called latest that will get the user data and pass it back to the element.  </p>
<pre name="code" class="php">
function latest() {
  return $this->User->find('all', array('order' => 'created desc', 'limit' => 10));
}
</pre>
<p>Since there is no view associated with this action anyone trying to access it directly with just get an error.  If you wanted to extra sure that no one unauthorized could exploit this action you could add this to the beginning:</p>
<pre name="code" class="php">
if (!Configure::read('Status.allow')) {
  die;
}
</pre>
<h4>Back To The Element</h4>
<p>Now you have a list of $users so it&#8217;s just a matter of displaying them.  Here&#8217;s the complete element:</p>
<pre name="code" class="php">
&lt;?php
  $users = $this->requestAction(array('controller' => 'users', 'action' => 'latest'));
?>

&lt;h1>&lt;?php __('Latest Users') ?>&lt;/h1>
&lt;?php if($users) { ?>
  &lt;table>
    &lt;?php foreach($users as $user) { ?>
      &lt;tr>
        &lt;td>&lt;?php echo $user['User']['email'] ?>&lt;/td>
        &lt;td>&lt;?php echo $time->timeAgoInWords($user['User']['created']) ?>&lt;/td>
      &lt;/tr>
    &lt;?php } ?>
  &lt;/table>
&lt;?php } else { ?>
  &lt;p>Your app has no users...loser!&lt;/p>
&lt;?php } ?>
</pre>
<h4>Including Your Panel</h4>
<p>Now you just have to include your panel on the status dashboard.  In /app/bootstrap.php add the line:</p>
<pre name="code" class="php">
Configure::write('Status.panels', array('panels/latest_users'));
</pre>
<h4>Here&#8217;s What It Looks Like</h4>
<p><img src="http://www.pseudocoder.com/wp-content/uploads/2009/08/status-latest-users.jpg" alt="status-latest-users" title="status-latest-users" width="439" height="306" class="alignleft size-full wp-image-1006" /></p>
<img src="http://feeds.feedburner.com/~r/pseudocoder/~4/PJQjMBIw_DM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.pseudocoder.com/archives/2009/08/06/adding-custom-panels-to-the-cakephp-status-plugin/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>6 More Questions With Nate Abele – Lead Developer of CakePHP</title>
		<link>http://www.pseudocoder.com/archives/2009/08/06/6-more-questions-with-nate-abele-%e2%80%93-lead-developer-of-cakephp/</link>
		<comments>http://www.pseudocoder.com/archives/2009/08/06/6-more-questions-with-nate-abele-%e2%80%93-lead-developer-of-cakephp/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 11:39:59 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://www.pseudocoder.com/?p=988</guid>
		<description><![CDATA[If you missed part 1 you can check it out here.
From what I&#8217;ve seen the relationship between the maintainers of the top JavaScript frameworks is pretty friendly.  How would characterize the relationship between the top PHP frameworks?
While there&#8217;s been a fair bit of professional rivalry between different frameworks at different times, for the most [...]]]></description>
			<content:encoded><![CDATA[<p>If you missed <a href="http://www.pseudocoder.com/archives/2009/08/05/9-questions-with-nate-abele-lead-developer-of-cakephp/">part 1 you can check it out here</a>.</p>
<p><strong>From what I&#8217;ve seen the relationship between the maintainers of the top JavaScript frameworks is pretty friendly.  How would characterize the relationship between the top PHP frameworks?</strong></p>
<p>While there&#8217;s been a fair bit of professional rivalry between different frameworks at different times, for the most part I&#8217;d say it&#8217;s all in good fun.  I&#8217;ve been fortunate enough to have met lead developers / prominent representatives from all the major PHP frameworks.  They&#8217;re all really great guys and I get along with all of them quite well, especially Paul M. Jones (of SolarPHP) and Matthew Weier O&#8217;Phinney (of Zend Framework).  They&#8217;re both very insightful, and I&#8217;ve never had an uninteresting conversation with either of them.</p>
<p><strong>If you weren&#8217;t the lead dev of CakePHP and Cake didn&#8217;t exist what other framework would you be using (any language)?</strong></p>
<p>Since we&#8217;re going with any language, I&#8217;d have to say <a href="http://tinyclouds.org/node/">Node.js, which is (wait for it&#8230;) a JavaScript framework</a>.  I&#8217;ve always loved JavaScript, and it&#8217;s probably the only language that would tempt me away from PHP for server-side development.</p>
<p><strong>Do you get to code Cake apps at your day job?  Are you able to work on the Cake core during the day or do you do everything off hours.</strong></p>
<p>Well, my current job is with a startup, Hoopla Software, and I&#8217;m developing an app on Cake 1.3 that talks to SalesForce.  I even wrote a database driver that speaks SalesForce SQL, which we plan on releasing later on.  At my previous job with OmniTI, I&#8217;d say about 50% of my projects were in Cake.  In both cases, work on the core itself usually happens in conjunction with something specifically work-related, with the occasional quick bugfix during the day.  Both my current and previous employer are very supportive of Open Source, so I&#8217;ve been fortunate in that regard.</p>
<p><strong>Favorite coding beverage during the day?  for after hours?</strong></p>
<p>I&#8217;d have to go with Coke for both.  I was recently introduced to a drink called Club-Mate in Germany, but that stuff is dangerously powerful.</p>
<p><strong>Favorite music to code to?</strong></p>
<p>Well, I don&#8217;t really have a favorite, and my musical tastes are pretty varied, so this list could go on for a while.  Some of the highlights: The Who, Switchfoot, G. Love, The Police, Weezer, Bowie, The Beatles, Simon &#038; Garfunkel, Guster, Jet, Sinatra, Death Cab, Café Tacuba, Cheap Trick, Cake (!), U2, Peter Gabriel, Relient K, The Proclaimers, The Caesars, The Specials, The Cure, Citizen Cope, Sanctus Real, Bob Marley, Elvis Costello, more Switchfoot, and Garrett&#8217;s favorite: Oasis.</p>
<p><strong>What apps have you built using the CakePHP framework?</strong></p>
<p>Besides the one I&#8217;m working on right now, most of what I&#8217;ve worked on I&#8217;m not technically supposed to discuss, particularly not in print (see! if you were at CakeFest, you&#8217;d have heard the stories).  In very general terms, I&#8217;ve written a tool related to security testing, a very big and high-profile tracking tool for a company that everybody&#8217;s heard of, a bunch of smaller sites and tools around a database and suite of analytics tools for helping political campaigns analyze several terabytes of voter data, a portal for a football magazine, a couple of smaller, more personal CMS-y type stuff, mainly for the heck of it, a very JavaScript-heavy calendar app with iCal syncing, and a couple dozen smaller for-fun side-projects, most of which will probably never see the light of day.</p>
<p>Aside from those projects, on which I&#8217;ve been the principal developer (or one of), I&#8217;ve had my hands in or on several other CakePHP projects (and non-Cake / non-PHP projects), public, private and Open Source.</p>
<h1>The End</h1>
<p>Thanks to Nate for being so open and giving some awesome answers.  I will now freeze myself, <a href="http://www.southparkstudios.com/guide/1012/">Cartman stlye</a>, rather then endure the wait for Cake3.  Someone please remember to dig me out when it&#8217;s released.</p>
<img src="http://feeds.feedburner.com/~r/pseudocoder/~4/a3mina_3E-A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.pseudocoder.com/archives/2009/08/06/6-more-questions-with-nate-abele-%e2%80%93-lead-developer-of-cakephp/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>9 Questions With Nate Abele – Lead Developer of CakePHP</title>
		<link>http://www.pseudocoder.com/archives/2009/08/05/9-questions-with-nate-abele-lead-developer-of-cakephp/</link>
		<comments>http://www.pseudocoder.com/archives/2009/08/05/9-questions-with-nate-abele-lead-developer-of-cakephp/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 10:30:13 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://www.pseudocoder.com/?p=975</guid>
		<description><![CDATA[Intro
Yeah, yeah, I know.  This has been done before.  What can I say &#8211; I had questions, Nate had answers.  This is part one and covers general Cake and Cake3 questions.  Look for part two tomorrow, which has a bunch of random questions.  
General Cake Questions
The end game looks like [...]]]></description>
			<content:encoded><![CDATA[<h1>Intro</h1>
<p>Yeah, yeah, I know.  This has <a href="http://debuggable.com/posts/Cake_3_interview_with_Nate_Abele:4a665a5e-5bfc-4e42-96ee-6d284834cda3">been done before</a>.  What can I say &#8211; I had questions, <a href="http://twitter.com/nateabele">Nate</a> had answers.  This is part one and covers general Cake and Cake3 questions.  Look for part two tomorrow, which has a bunch of random questions.  </p>
<h1>General Cake Questions</h1>
<p><strong>The end game looks like there will be three CakePHP versions, which can be confusing to new developers.  I haven&#8217;t seen this explicitly defined, so stop me if I&#8217;m wrong:<br />
The 1.3 branch is for anyone developing for PHP4<br />
The v2 branch is for anyone developing new projects for PHP5-5.2 OR for PHP 5.3 users looking for an easier upgrade for a 1.2 app.<br />
The v3 branch is for 5.3 apps.</strong></p>
<p>That&#8217;s about right.  Once the 1.3 branch goes stable, that&#8217;ll close off principle development on the 1.x branch, barring bug and security fixes and so forth.  We haven&#8217;t completely ruled out the possibility of back-porting future 2.x features, but that will largely depend on demand, which at this point we don&#8217;t expect; and yes, 2.0 should be a direct upgrade from 1.3 (which has very few API changes from 1.2).  3.0, on the other hand, is still under pretty heavy development, so it isn&#8217;t recommended for anything other than experimental applications just yet.</p>
<p><strong>How many people are actively contributing to the three new versions of Cake.  Whats the breakdown in terms of # of developers working on each branch or does everyone work a bit on each branch?</strong></p>
<p>Well, in total I think we have something like 16 active team members working on various different things, including things other than the code itself.  1.3 has had about a half-dozen active developers, with the bulk of the work being done by the Canuckistani dream team: <a href="http://twitter.com/mark_story">Mark Story</a> and <a href="http://twitter.com/jperras">Joël Perras</a>.  In order to manage the extra work, Larry has brought in a few developers from the Cake Development Corporation to help out on the 2.x branch, particularly Graham Weldon (a.k.a. <a href="http://twitter.com/predominant">Predominant</a>) who&#8217;s been doing a lot of the heavy lifting to get the current code base fully strict-mode compatible.</p>
<p>Finally, I&#8217;m leading development on the 3.0 branch, with Joël, Garrett, <a href="http://twitter.com/nperson">David Persson</a>, and <a href="http://twitter.com/DarkAngelBGE">Tim</a> &#038; <a href="http://twitter.com/felixge">Felix</a> (of <a href="http://debuggable.com/">Debuggable</a>) contributing.</p>
<h1>Cake3 Questions</h1>
<p><strong>Right now 1.3 and 2 are still licensed as MIT.  Cake3 is BSD licensed (although some files are still MIT (stuff in app) and the license.txt file doesn&#8217;t specify any particular license).  Whats the deal with the change?  How will this affect developers?</strong></p>
<p>Practically speaking, this won&#8217;t affect developers at all.  In terms of what you can do with the software, the BSD license is just as permissive if not more so than MIT.  The change was mainly due to my own personal preference: the BSD is an older license with a more distinguished Open Source history.  Garrett was also very supportive of the change, as the BSD license includes a specific clause that shields the CakePHP brand and the CSF from being abused for commercial purposes, which we&#8217;ve always been very much against.  We&#8217;re really excited to see people building businesses off of the code we write, but people using our name to promote themselves is just not in the spirit of what we&#8217;re trying to do.</p>
<p>As for the places where the MIT license still appears, that&#8217;s just some cleaning up we have left to do from the old CakePHP distribution.  It&#8217;ll be all BSD all the time before a release goes out.</p>
<p><strong>Cake3 is switching to returning objects for result sets instead of array.  I&#8217;m probably remembering wrong, but I thought you preferred the array approach.  Was this change something need to be convinced about or was it something planned all along</strong>.</p>
<p>Well, that&#8217;s close.  My position was always that I preferred the array approach in context.  Since the context at the time was PHP4, and PHP4 had all the array-hacking functions you could ever hope for and a crippled object model, it was the natural choice.  Now that we&#8217;ve progressed beyond that, there&#8217;s just no need to stick with arrays anymore, which I&#8217;m all for, as it frees us from a lot of the restrictions we had on how we design things.</p>
<p><strong>Was there anything that came from the <a href="http://groups.google.com/group/cake-php/browse_thread/thread/134b180ce477b9ef/7868d41614958d02?q=#7868d41614958d02">google group &#8220;hate&#8221; thread</a> that you hadn&#8217;t planned to implement or prefer a different approach, but were swayed by the community?</strong></p>
<p>Probably my biggest reversal of position (and this is in general, not only regarding the &#8216;hate&#8217; thread) has been regarding multi-column key support.  The thing about single-column keys is that they make things consistent and easy all the way up and down the stack (REST APIs, etc.), and that&#8217;s great.  But what I realize is that there are often (again, in context) some good arguments for using multi-column keys, and even if we don&#8217;t support them at higher levels, this is something that any well-designed data abstraction layer should support.</p>
<p><strong>Say I&#8217;m a pretty good developer, whose willing to dig through code, submit patches for bugs and I&#8217;m starting a project that won&#8217;t be launched for at least a year.  Would I be crazy to start that project in Cake3 right now?</strong></p>
<p>Well, it depends on the app.  For most things, I&#8217;d say it&#8217;d be a pretty big commitment, since right now a lot of basic things like pagination and session handling are still missing.  A lot of that doesn&#8217;t matter though, since with Cake&#8217;s new structure, you can load in other classes and libraries fairly easily, eventually including things like using Doctrine in place of the default ORM.  Also, a lot of the API should be pretty familiar to you if you&#8217;re already a Cake developer, and much of that is unlikely to change.</p>
<p>If anyone has a really experimental app in the works and would like to contribute to the 3.0 branch, I&#8217;d be interesting in talking with them about contributing. The biggest thing that this new version has going for it is that the plugin architecture is already pretty well-developed, and plugins are handled in almost exactly the same way as an app, and even the core itself, so everything is very interchangeable.  Another major architectural difference is that most class dependencies in the core can be swapped out for classes in a plugin or in your app.</p>
<p>What we&#8217;re hoping to achieve with this is that once the core becomes more stabilized, all the interesting development can happen in plugins.  This is really important, because the barrier to entry on contributing to a smaller project with a more constrained feature set is much lower.  Development can happen in parallel, and features can be moved in and out of the core distribution with relatively little impact on application code.</p>
<p><strong>What&#8217;s going on with unit testing in Cake3?  It looks like SimpleTest is being dropped and instead Cake3 will have it&#8217;s own unit test tools.</strong></p>
<p>Again, this is one of those decisions which was made for us previously, as SimpleTest was the only viable option for PHP4, short of writing our own test suite, which we&#8217;ve decided to bite the bullet on this time around.  Several factors went into that decision, but mainly (a) that we wanted people to be able to run tests right out of the box, and (b) we wanted a testing infrastructure that was tailored to our needs and allowed us to measure things in a way that we wanted; things that would help people judge the quality of software distributions.  Not just Cake itself, but plugins and applications.  I&#8217;ll be talking more about this later on.</p>
<p>However, we plan to keep our test suite fairly lightweight, and one thing that&#8217;ll be revisited before a release is the API; specifically bringing it more in-line with PHPUnit, to streamline the upgrade process for those with more heavy-duty testing needs.</p>
<p><strong>The filter system looks pretty sweet and has been talked about a bit.  What Cake3 feature are you most excited about that hasn&#8217;t received much attention?</strong></p>
<p>At this point, I guess the biggest thing that I haven&#8217;t talked very much about yet is the Media class.  The Media class is interesting because it takes out a lot of the work that was previously required when serving or handling different content types.  It sits between the controller and view layers, and allows you to attach different handlers for each content type, both input and output.  This means that instead of having to create a view every time you want a controller method to render as JSON, you can just attach one handler, once, that tells all JSON responses to automatically assemble themselves from the variables you set in the controller.  For HTML on the other hand, a view class is attached (by default) that works as normal, rendering templates from your views/ directory as normal; but even with in that there&#8217;s an incredible amount of flexibility, and you now have one place to configure it, application-wide.</p>
<p><strong>I&#8217;m still a little confused about how filters work.  You tie a filter to a method, but don&#8217;t have to specify if it&#8217;s a &#8220;before&#8221; or &#8220;after&#8221; filter, right?  If you want it to act as &#8220;before&#8221; you just run your code before calling <code>return $chain->next(...)</code>.  How would you do an after filter?  Like this?</strong></p>
<pre name="code" class="php">
$ret = $chain->next($self, $params, $chain);
//my code
return $ret;
</pre>
<p>Yup, that&#8217;s exactly right.  You can think of writing a filter a lot like you&#8217;d think of overriding a method in a subclass, but instead of calling the parent method (i.e<code>. $result = parent::methodName()</code>), you&#8217;re calling <code>$chain->next(...)</code>.  This has a lot of notable advantages over simple before and after filter methods, probably the biggest being that all related operations are kept together in the same scope.  Not having to split things up between two methods means you don&#8217;t have to worry about persisting things through parameters or object state (or worse, global state).  Everything is neatly atomic and isolated.  It also makes a lot more sense when you&#8217;re browsing through code.</p>
<h1>To Be Continued&#8230;</h1>
<p>More from Nate tomorrow when we cover what music he codes to and much more.  I bet you just can&#8217;t wait for that.</p>
<img src="http://feeds.feedburner.com/~r/pseudocoder/~4/wwV7Z-mZZlE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.pseudocoder.com/archives/2009/08/05/9-questions-with-nate-abele-lead-developer-of-cakephp/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>CakePHP Digest #18 – The CakeFest Edition</title>
		<link>http://www.pseudocoder.com/archives/2009/07/21/cakephp-digest-18-the-cakefest-edition/</link>
		<comments>http://www.pseudocoder.com/archives/2009/07/21/cakephp-digest-18-the-cakefest-edition/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 03:16:02 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[CakePHP Digest]]></category>

		<guid isPermaLink="false">http://www.pseudocoder.com/?p=961</guid>
		<description><![CDATA[CakeFest
Big News
The big news everyone is talking about from CakeFest is Cake3 &#8211; a completely overhauled version of CakePHP geared towards PHP5.3.  Unfortunately I was stuck watching over little one (by that I mean my co-workers&#8230;I kid&#8230;you guys are the best) and didn&#8217;t make it to Berlin.  Plus, ustream.tv ate the keynote videos, [...]]]></description>
			<content:encoded><![CDATA[<h1>CakeFest</h1>
<h4>Big News</h4>
<p>The big news everyone is talking about from CakeFest is <a href="http://code.cakephp.org/cake3">Cake3 &#8211; a completely overhauled version of CakePHP geared towards PHP5.3</a>.  Unfortunately I was stuck watching over little one (by that I mean my co-workers&#8230;I kid&#8230;you guys are the best) and didn&#8217;t make it to Berlin.  Plus, <a href="http://www.ustream.tv/channel/cakephpstudy">ustream.tv ate the keynote videos</a>, so I probably have less details then anyone.  Of course it didn&#8217;t take much <a href="http://www.archive.org/search.php?query=cakephp%20AND%20mediatype%3Amovies&#038;sort=-date">detective work to find the processed versions of the keynotes</a> that will probably soon be seen on <a href="http://live.cakephp.org/">live.cakephp.org</a>.  In other news <a href="http://code.cakephp.org/cakephp2">CakePHP2, a PHP5 version</a>, was also announced, but was so overshadowed by Cake3 that it resorted to cutting itself for attention.</p>
<h4>The Show</h4>
<p><a href="http://live.cakephp.org/shows/view/11">Nate Abele, Garrett Woodworth, and Jeff Loiselle did a podcast</a> recently discussing what went down at CakeFest.  Nothing too earth shattering was revealed, but it clocks in at a trim 27 mins, so it&#8217;s worth a listen.  Thankfully they didn&#8217;t answer any questions from the IRC channel, so I didn&#8217;t feel so bad that I didn&#8217;t waste an hour figuring out how to use IRC.</p>
<h4>Interviews</h4>
<p>Also on live.cakephp.org are three interviews.  I haven&#8217;t had a chance to check any of these out yet, so I&#8217;ll just throw out the links, with a description of what I think they are talking about based on the preview image:<br />
<a href="http://live.cakephp.org/shows/view/14">Nate Abele and Jeff Loiselle discuss various leg crossing positions</a>.  Nate prefers the traditional over the top (The Orwellian), while Jeff tends towards the perpendicular tuck.<br />
<a href="http://live.cakephp.org/shows/view/12">Gwoo and Jeff Loiselle don&#8217;t actually talk in this one</a>.  They just flex for the camera for 13 mins.<br />
<a href="http://live.cakephp.org/shows/view/13">Mariano Iglesias explains the dangers of hat head to Joël Perras</a></p>
<h4>Recaps</h4>
<p><a href="http://twitter.com/predominant">Graham Weldon</a> has <a href="http://cakedc.com/developer/graham_weldon">recaps of each of the talks</a> posted on CakeDC.com.</p>
<p><a href="http://www.cake-toppings.com/2009/07/15/cakefest-berlin/">Cake Toppings has a short post</a>, which includes the bit: &#8220;That saterday had a few interesting talks and also some not interesting ones.&#8221;  Unfortunately, no further details where given.  DRAMA!</p>
<p>Kevin van Zonneveld has a <a href="http://kevin.vanzonneveld.net/techblog/article/notes_on_cakefest_3/">pretty long post on some of the tips</a> he picked up.  </p>
<p>Felix Geisendörfer <a href="http://debuggable.com/posts/summary_of_cakefest_3_berlin:4a5ca8fe-0f50-49fe-afc3-3d584834cda3">posted his summary</a> on the newly re-designed debuggable.com.</p>
<p><a href="http://twitter.com/alkemann">@alkemann</a> has a post covering some of the <a href="http://illustrata.no/blog/2009/07/cakefest-3-roundup/">out of conference shenanigans</a>, including <a href="http://forkmaster.com/">Fork Master</a> (co-created by gwoo), which is kind of like horseshoes but with less of a chance of breaking a toe and a greater risk of losing an eye.</p>
<h4>Slides</h4>
<p>A bunch of the <a href="http://cakephp.org/downloads/CakeFest/CakeFest%203%20-%20Berlin%202009">slides for the talks</a> are posted.  Oddly the files are all exactly the same size (512.0 Byte).  Really impressive that all the presenters could coordinate and pull that off.  </p>
<h4>Mind Map (whatever the heck that is)</h4>
<p>Not really sure what the point of these things are&#8230;<a href="http://www.mindmeister.com/24339080">but here is one for CakeFest</a>.  </p>
<h4>Random Video</h4>
<p>I leave no stone unturned.  No link unhyperlinked.  Here is <a href="http://www.youtube.com/watch?v=TGEDxgBUxEQ">49 seconds of dimly lit bowling</a> that <a href="http://twitter.com/pierremartin/statuses/2670197310">@pierremartin claims</a> came from CakeFest, but could easily be a night at rock and bowl from three years ago.</p>
<h4>Photos</h4>
<p>There were a bunch of <a href="http://twitpic.com/9ry25">random single shots</a> <a href="http://twitter.com/predominant/statuses/2540276749">posted on twitter</a>, but I&#8217;ll stick to the galleries here.</p>
<p><a href="http://picasaweb.google.com/alek.morland/CakeFest2009?authkey=Gv1sRgCNjC66Sgwty-mwE&#038;feat=directlink#">A bunch of iPhone shots</a> from <a href="http://twitter.com/alkemann">@alkemann</a>.</p>
<p>Graham Weldon also has a <a href="http://picasaweb.google.com/predominant/CakeFestBerlin2009#">picasa gallery</a>, which includes some moderately NSFW shots.  Someone should do A/B testing on the NSFW tag.  I bet click throughs jump like 100000% with it.</p>
<p>And finally <a href="http://twitter.com/pierremartin">@pierremartin</a> has a <a href="http://picasaweb.google.fr/real34/20090711CakeFest">picasa gallery as well</a>.</p>
<h4>That&#8217;s It</h4>
<p>Sorry if I missed your blog recap, photo set, drunken video, or whatever.  Feel free to leave a link in the comments.</p>
<img src="http://feeds.feedburner.com/~r/pseudocoder/~4/zHq0MBC9Upw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.pseudocoder.com/archives/2009/07/21/cakephp-digest-18-the-cakefest-edition/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>CakePHP Digest #17 – Non-CakeFest Edition</title>
		<link>http://www.pseudocoder.com/archives/2009/07/13/cakephp-digest-17-non-cakefest-edition/</link>
		<comments>http://www.pseudocoder.com/archives/2009/07/13/cakephp-digest-17-non-cakefest-edition/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 03:06:20 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[CakePHP Digest]]></category>

		<guid isPermaLink="false">http://www.pseudocoder.com/?p=954</guid>
		<description><![CDATA[News
CakeFest&#8230;
&#8230;won&#8217;t be mentioned in this digest.  Look for a special CakeFest Edition later in the week once all the posts are in and ustream gets around to processing the keynotes.  
CakeFest Conference Pass Winner
Congrats to Paul R. Zwiers on winning the free conference pass to CakeFest.  I&#8217;m sure he had an awful [...]]]></description>
			<content:encoded><![CDATA[<h1>News</h1>
<h4>CakeFest&#8230;</h4>
<p>&#8230;won&#8217;t be mentioned in this digest.  Look for a special CakeFest Edition later in the week once all the posts are in and <a href="http://www.ustream.tv/channel/cakephpstudy">ustream gets around to processing the keynotes</a>.  </p>
<h4>CakeFest Conference Pass Winner</h4>
<p>Congrats to <a href="http://www.paulzwiers.nl/blog/">Paul R. Zwiers</a> on <a href="http://twitter.com/cakephp/status/2278676569">winning the free conference pass to CakeFest</a>.  I&#8217;m sure he had an awful time and wish he had just sold it on eBay.  </p>
<h1>In The Wild</h1>
<h4>Dead Michael Jackson Jokes</h4>
<p>I think <a href="http://deadmichaeljacksonjokes.com">this site</a> proves what I&#8217;ve been saying all along: If you need to quickly put up a site to capitalize on the death of celebrity, then CakePHP is your framework.</p>
<h4>Dos Equis Academy</h4>
<p>Part of Dos Equis &#8220;Most Interesting&#8221; marketing campaign, the <a href="http://dosequis.com/academy/">academy site</a> is a bunch of mini flash games.  The games aren&#8217;t what you would call &#8220;good&#8221; or &#8220;entertaining&#8221; or even &#8220;moving at an acceptable framerate.&#8221;  They were probably coded by the same guys who did ustream.tv&#8217;s video processing program.</p>
<h4>JumboTweet</h4>
<p><a href="http://www.jumbotweet.com/">jumbotweet.com</a> allows you to post tweets longer then 140 characters to twitter.  Basically you make your tweet through the site and the message will be shortened a link to the full message will be included.  </p>
<h4>Pixelglo</h4>
<p><a href="http://www.pixelglo.com/">Pixelglo.com</a> is a monthly photo competition.  The <a href="http://wine.pixelglo.com/">theme of the first contest is &#8220;Wine&#8221;</a>.  Surprisingly, the rules are fairly open: &#8220;Our first contest is about anything wine. Vineyards, bottles, taste or anything else that reminds you of wine.&#8221;  I think we have a <a href="http://www.killsometime.com/Pictures/Picture.asp?ID=257">winner right here</a>. </p>
<h4>unameen</h4>
<p><a href="http://www.unaneem.com/">unameen.com</a> is a &#8220;community website which helps people to share and organize events.&#8221;  You can <a href="http://bakery.cakephp.org/articles/view/unaneem-com-a-community-website-built-on-cakephp-with-extensive-use-of-ajax">read more in the Bakery article</a>.</p>
<h1>In The Blogs</h1>
<h4>exclusive option</h4>
<p><a href="http://dsi.vozibrale.com/articles/view/simple-tweak-for-model-relations-in-cakephp">lecterror has a post about the exclusive option</a>, which can be applied to <a href="http://book.cakephp.org/view/82/hasMany">hasMany relationships</a>.  Doing this can save a bunch of queries when doing a delete.  I actually ran into this issue shortly before lecterror&#8217;s post, so it was a very timely read for me.</p>
<h4>Tutorials</h4>
<p>Jamie Nay has a a couple roundups on useful CakePHP tutorials (<a href="http://jamienay.com/2009/06/useful-cakephp-tutorial-roundup-for-june-26-2009/">here</a> and <a href="http://jamienay.com/2009/07/useful-cakephp-tutorial-roundup-for-july-03-2009/">here</a>).  He&#8217;s trying to post at least 5 links every week, so check it out.  </p>
<h1>Code</h1>
<h4>Another CMS</h4>
<p>This one&#8217;s called <a href="http://code.google.com/p/camiro-cms/">Camiro</a>.  It&#8217;s not yet at stable release, but there&#8217;s some stuff there now if you want to check it out.</p>
<h4>RSS Datasource</h4>
<p>Another <a href="http://blog.loadsys.com/2009/06/19/cakephp-rss-feed-datasource/">nice piece of code</a> from the Loadsys team.  </p>
<h4>ClamAV Plugin</h4>
<p>Not really a true CakePHP implementation, <a href="http://www.jejik.com/articles/2009/07/scanning_files_with_clamav_from_cakephp/">this code is more of a straight PHP class</a> with a Cake shell.  All the actual ClamAV stuff is implemented as a PHP class, rather then as a datasource.  Still might be helpful to some people.</p>
<h4>Uploader Plugin</h4>
<p>Miles Johnson released his <a href="http://www.milesj.me/resources/script/uploader-plugin">uploader component</a>.</p>
<h4>Named Routes</h4>
<p>Mark Gandolfo released a <a href="http://github.com/markgandolfo/cakephp_named_route/tree/master">named router class</a> which makes it easier to create links in views.</p>
<pre name="code" class="php">
//the normal way:
$html->link('Edit User', array('controller' => 'users', 'action' => 'edit', 5))

//with named routes
$html->link('Edit User', url('edit_user_path(5)'));
</pre>
<h1>I&#8217;m Out!</h1>
<p>And on that note don&#8217;t forget to <a href="http://feeds.feedburner.com/pseudocoder">subscribe to my feed</a> or <a href="http://twitter.com/mcurry">follow me on twitter</a>.</p>
<p>As always if you think I missed something leave a comment.  Or if you do something interesting and want it included in the next digest, <a href="mailto:matt@pseudocoder.com">send me an email</a>.</p>
<img src="http://feeds.feedburner.com/~r/pseudocoder/~4/BelJ_rsd-jo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.pseudocoder.com/archives/2009/07/13/cakephp-digest-17-non-cakefest-edition/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CakePHP Status Dashboard – Everything You Need To Know About Your App On One Page</title>
		<link>http://www.pseudocoder.com/archives/2009/07/06/cakephp-status-dashboard-everything-you-need-to-know-about-your-app-on-one-page/</link>
		<comments>http://www.pseudocoder.com/archives/2009/07/06/cakephp-status-dashboard-everything-you-need-to-know-about-your-app-on-one-page/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 02:23:32 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[GitHub]]></category>

		<guid isPermaLink="false">http://www.pseudocoder.com/?p=943</guid>
		<description><![CDATA[Beta
First off this thing is still pretty rough.  I don&#8217;t have any unit tests at the moment and I&#8217;m likely to make huge, wholesale changes on a whim.
Download
Get it at GitHub
What The Heck Is This Thing?
You build a cool CakePHP app and now you have to maintain it.  You go to Google to [...]]]></description>
			<content:encoded><![CDATA[<h1>Beta</h1>
<p>First off this thing is still pretty rough.  I don&#8217;t have any unit tests at the moment and I&#8217;m likely to make huge, wholesale changes on a whim.</p>
<h1>Download</h1>
<p><a href="http://github.com/mcurry/status">Get it at GitHub</a></p>
<h1>What The Heck Is This Thing?</h1>
<p>You build a cool CakePHP app and now you have to maintain it.  You go to Google to check your analytics; you SSH to your system to check log files; You log into your web admin to check affiliate clicks&#8230; Wouldn&#8217;t it be cool if you could check all this (and more) from one page?  That&#8217;s what this status plugin does.  Check out the screenshot:<br />
<a href="http://sandbox2.pseudocoder.com/status"><img src="http://www.pseudocoder.com/wp-content/uploads/2009/07/status.jpg" alt="CakePHP Status Dashboard" title="CakePHP Status Dashboard" width="600" height="561" class="alignnone size-full wp-image-944" /></a></p>
<p>Or <a href="http://sandbox2.pseudocoder.com/status">visit this live (but admittedly boring) example</a>.</p>
<h1>What Are The Different Panels Available?</h1>
<p>Right now there are four &#8220;core&#8221; widgets, some of which have multiple options, so they can produce multiple panels.</p>
<h4>Google Analytics</h4>
<p>Multiple panels for quick info on your visits, referrers and search engine keywords using the Google Analytics API.  Adjustable timeframes to get a recent or long range snapshot.</p>
<h4>Shells</h4>
<p>Add logging to your shells to capture info when they run &#8211; great for shells that run from cron.  Clicking on the shell link in the panel pops open a window with detailed information.  Requires integrating the log task in your shell.</p>
<h4>System</h4>
<p>Basic information about the system hardware, including disk space and uptime.</p>
<h4>Logs</h4>
<p>Show Cake&#8217;s log files.  Can be used on any log file in /app/tmp/logs, including custom ones.  Just pass the log file name(s).</p>
<h1>Extending For Custom Panels</h1>
<p>It&#8217;s pretty easy to write your own custom panels.  Check out the <a href="http://github.com/mcurry/click/">click plugin</a>, which tracks outbound clicks and displays the results via panels in the status dashboard.  I&#8217;ll write full post on how to code your own panels in bit.</p>
<img src="http://feeds.feedburner.com/~r/pseudocoder/~4/ot2oj1P5H0o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.pseudocoder.com/archives/2009/07/06/cakephp-status-dashboard-everything-you-need-to-know-about-your-app-on-one-page/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 0.664 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-11-08 02:29:53 -->
