<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Danceric</title>
	<atom:link href="http://www.danceric.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.danceric.net</link>
	<description>Web Application Developer in Ottawa</description>
	<lastBuildDate>Thu, 04 Feb 2010 02:24:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Propaganda</title>
		<link>http://www.danceric.net/2010/01/18/propaganda/</link>
		<comments>http://www.danceric.net/2010/01/18/propaganda/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 14:13:16 +0000</pubDate>
		<dc:creator>danceric</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://www.danceric.net/?p=681</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.confoo.ca/en/"><img alt="confoo.ca Web Techno Conference" style="border:0" width="150" height="100" src="http://confoo.ca/images/advertise/en/150x100_going.jpg" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danceric.net/2010/01/18/propaganda/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Standards Working&#160;Group</title>
		<link>http://www.danceric.net/2009/11/10/php-standards-working-group/</link>
		<comments>http://www.danceric.net/2009/11/10/php-standards-working-group/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 01:08:57 +0000</pubDate>
		<dc:creator>danceric</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.danceric.net/2009/11/10/php-standards-working-group/</guid>
		<description><![CDATA[It&#8217;s great to see that PHP is gaining maturity lately. After the release of version 5.3 that have introduced namespaces, it&#8217;s now time for some of the biggest php projects to get together to discuss and agree on a common autoloader standard. This really nice project would allow interoperability between frameworks/projects.

Take a look at the [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s great to see that PHP is gaining maturity lately. After the release of version 5.3 that have introduced namespaces, it&#8217;s now time for some of the biggest php projects to get together to discuss and agree on a common autoloader standard. This really nice project would allow interoperability between frameworks/projects.</p>

<p>Take a look at the proposal <a href="http://groups.google.com/group/php-standards/web/psr-0-final-proposal">PSR-0</a> and try the autoloader on your new project. The more people using it, the easier our life will be as a PHP developer.</p>

<p><strong>Note</strong>: <strike>if you want to give feedback to the group about the proposed standard, you&#8217;d better do it on twitter or on your blog, because there seem to be some <em>not so clearly defined</em> rules to be able to join the group&#8230;</strike> <strong>update 2009-11-11</strong>: thanks to Nate Abel there is now a public <a href="http://groups.google.com/group/php-standards/web/project-acceptance-guidelines">Project Acceptance Guidelines</a> posted so this comment doesn&#8217;t hold true anymore. Thanks Nate.</p>

<p><strong>Note 2:</strong>: if you&#8217;re wondering how nice your code could look by using namespaces in php, check out the <a href="http://li3.rad-dev.org/">lithium framework</a> (<a href="http://twitter.com/#search?q=%23li3">#li3</a>) for a good example.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danceric.net/2009/11/10/php-standards-working-group/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Doctrine 1.2 is Zend Framework&#160;friendly</title>
		<link>http://www.danceric.net/2009/10/29/doctrine-1-2-is-zend-framework-friendly/</link>
		<comments>http://www.danceric.net/2009/10/29/doctrine-1-2-is-zend-framework-friendly/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 00:37:35 +0000</pubDate>
		<dc:creator>danceric</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.danceric.net/?p=628</guid>
		<description><![CDATA[I&#8217;ve talked about that before on this blog. Using Doctrine 1.1 with ZendFramework 1.8 and using both with ZFDebug. Now things will only get better as both project will officially play nice together. Here&#8217;s the announcement on the Zend Framework mailing list.

This is some pretty good news, the other good news is that you don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve talked about that before on this blog. Using <a href="/2009/06/06/doctrine-orm-and-zend-framework/">Doctrine 1.1 with ZendFramework 1.8</a> and <a href="/2009/06/06/zfdebug-and-doctrine-orm/">using both with ZFDebug</a>. Now things will only get better as both project will officially play nice together. Here&#8217;s the <a href="http://www.nabble.com/Discontinuing-Zend-Entity-in-favour-of-Doctrine-integration-to26117819.html">announcement on the Zend Framework mailing list</a>.</p>

<p>This is some pretty good news, the other good news is that you don&#8217;t have to wait until the integration is ready to start playing with both. I&#8217;ve been testing out the alpha3 release of Doctrine 1.2 and I&#8217;m pleased to see that it&#8217;s really PEAR friendly, which make it a breeze to use it with the Zend Framework (that wasn&#8217;t <em>as</em> easy with Doctrine 1.1).</p>

<p><em>you can follow along with the code on github of my demo app: <a href="http://github.com/danceric/zfdebugdoctrine">github.com/danceric/zfdebugdoctrine</a></em></p>

<p>First thing, the base doctrine class have been moved from <code>/Doctrine.php</code> to <code>/Doctrine/Core.php</code>, which mean that the Zend autoloader can now find it without special config/hack, just add <code>Doctrine_</code> as a namespace and let ZF do the magic. This can be done in your <code>application.ini</code> with this single line</p>

<pre><code>autoloaderNamespaces[] = "Doctrine_"
</code></pre>

<p>Second thing, which is the nice part, is that there is now a <a href="http://www.doctrine-project.org/upgrade/1_2#PEAR Style Model Loading and Generation">PEAR Style Model Loading and Generation</a>, which means that the Doctrine cli can now generate models that can be autoloaded by ZF too. To generate your model from a yaml file (in ./doctrine/schema/schema.yaml`, you can run the doctrine-cli script like this</p>

<pre><code>php ./scripts/doctrine-cli generate-models-yaml
</code></pre>

<p>and they will be generated in <code>./application/models</code>.  Note the <code>generate_models_options</code> array of options that define how the model classes will be named. Now, If you wish, you can move the models around to put them in a module by prefixing the classname with <code>modulename_</code> as you would normally do. If you love spending more time in php land, you can build your model directly in php instead of the yaml file, just by extending the <code>Doctrine_Record</code> class. Check out the Doctrine Documentation, it&#8217;s really easy to do.</p>

<p>One thing to keep in mind, just as your web pages read the environment setting (APPLICATION_ENV) from <code>./public/.htaccess</code> or <code>./public/index.php</code>, the command line script for doctrine have to be set to use the expected environment too (3rd line of the script).</p>

<p>Once again, here&#8217;s the link to the working application that use Doctrine 1.2alpha3, Zend Framework 1.9.5 and ZFDebug 1.5</p>

<p><a href="http://github.com/danceric/zfdebugdoctrine">github.com/danceric/zfdebugdoctrine</a></p>

<h3>Short &#8216;n Sweet Version</h3>

<ul>
<li>start a ZF project</li>
<li><p>add the doctrine namespace to your autoloader in your <code>application.ini</code></p>

<pre class="ini" style="font-family:monospace;">autoloaderNamespaces<span style="">&#91;</span><span style="">&#93;</span> <span style="color: #000066; font-weight:bold;">=</span> <span style="color: #933;">&quot;Doctrine_&quot;</span></pre></li>
<li><p>connect to a database in your boostrap as</p>

<pre class="php" style="font-family:monospace;"><span style="color: #000088;">$manager</span> <span style="color: #339933;">=</span> Doctrine_Manager<span style="color: #339933;">::</span><span style="color: #004000;">getInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$manager</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">openConnection</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'your-connection-dsn'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></li>
<li><p>Create your models in the <code>application/models</code> folder by having class that extends <code>Doctrine_Record</code></p>

<pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Model_Base_Post <span style="color: #000000; font-weight: bold;">extends</span> Doctrine_Record
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setTableDefinition<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setTableName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'post'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">hasColumn</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'id'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'integer'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
             <span style="color: #0000ff;">'primary'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span>
             <span style="color: #0000ff;">'autoincrement'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span>
             <span style="color: #0000ff;">'type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'integer'</span><span style="color: #339933;">,</span>
             <span style="color: #0000ff;">'length'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'4'</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">hasColumn</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'content'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'string'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setUp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        parent<span style="color: #339933;">::</span><span style="color: #004000;">setUp</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$timestampable0</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Doctrine_Template_Timestampable<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">actAs</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$timestampable0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span> </pre></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.danceric.net/2009/10/29/doctrine-1-2-is-zend-framework-friendly/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>How to waste time on google&#160;wave</title>
		<link>http://www.danceric.net/2009/10/21/how-to-waste-time-on-google-wave/</link>
		<comments>http://www.danceric.net/2009/10/21/how-to-waste-time-on-google-wave/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 02:31:32 +0000</pubDate>
		<dc:creator>danceric</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.danceric.net/?p=622</guid>
		<description><![CDATA[You really want to do that? Easy enough, just add danceric-hangman[at]appspot.com to any wave, and start playing hangman game in text mode.

The code is on github at: http://github.com/danceric/wave-hangman

P.S.: As always, keep in mind that this was done to learn a little more bit about Google Wave and Python, so don&#8217;t expect the best game ever.

P.P.S.: [...]]]></description>
			<content:encoded><![CDATA[<p>You really want to do that? Easy enough, just add danceric-hangman[at]appspot.com to any wave, and start playing hangman game in text mode.</p>

<p>The code is on github at: <a href="http://github.com/danceric/wave-hangman">http://github.com/danceric/wave-hangman</a></p>

<p>P.S.: As always, keep in mind that this was done to learn a little more bit about Google Wave and Python, so don&#8217;t expect the best game ever.</p>

<p>P.P.S.: I know the name <code>danceric-hangman</code> may sound self-centered, but it&#8217;s hard to find a free appID on appspot nowadays.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danceric.net/2009/10/21/how-to-waste-time-on-google-wave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coworker</title>
		<link>http://www.danceric.net/2009/10/07/coworker/</link>
		<comments>http://www.danceric.net/2009/10/07/coworker/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 18:30:58 +0000</pubDate>
		<dc:creator>danceric</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://www.danceric.net/?p=614</guid>
		<description><![CDATA[If you are a web developer and:


you have interest in all aspect of web dev. ie: design, css, javascript, html, xss, crsf, rest, etc
you know how to use the command line and how to setup/configure your own dev server 
you have some code of yours on a public repository (github, sourceforge, bitbucket, etc)
you understand the [...]]]></description>
			<content:encoded><![CDATA[<p>If you are a web developer and:</p>

<ul>
<li>you have interest in all aspect of web dev. ie: design, css, javascript, html, xss, crsf, rest, etc</li>
<li>you know how to use the command line and how to setup/configure your own dev server </li>
<li>you have some code of yours on a public repository (github, sourceforge, bitbucket, etc)</li>
<li>you understand the bus factor and make sure your code/app can survive without you</li>
<li>you’re taking a little bit more time to make sure you will save time in the long run</li>
<li>you express your opinion/ideas publicly and appreciate/want feedback</li>
<li>you aim for &#8220;The Simplest Thing That Could Possibly Work&#8221;</li>
<li>you know that learning is part of your everyday job</li>
<li>you have a technical blog/twitter/whatever trendy</li>
<li>you are reading web development news website</li>
<li>you are reading some general tech sites too</li>
<li>you know that you don’t know everything</li>
<li>you go out to local tech event</li>
<li>you are open to new idea</li>
</ul>

<p>and most importantly</p>

<ul>
<li>you’re not doing it only to pay your bills</li>
</ul>

<p>If you answered &#8220;yes&#8221;, or better &#8220;of course&#8221; to most of these, then you&#8217;re probably an interesting coworker to have for a web developer. <em>(this is only true, of course, if you don&#8217;t think you&#8217;re better than everyone because you&#8217;ve answered yes to these questions)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danceric.net/2009/10/07/coworker/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Update On My Python&#160;Learning</title>
		<link>http://www.danceric.net/2009/10/06/update-on-my-python-learning/</link>
		<comments>http://www.danceric.net/2009/10/06/update-on-my-python-learning/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 16:39:56 +0000</pubDate>
		<dc:creator>danceric</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.danceric.net/?p=599</guid>
		<description><![CDATA[Some other projects haves slowed down my Python learning progress, but things are now geting back to normal. I&#8217;ve read a lot of documentation on Python (the official tutorial, PQR, diveintopython2-3, etc), and now it&#8217;s time to get my hands dirty.

I&#8217;ve build a simple blog (you know, &#8216;blog&#8217; is the new &#8216;hello, world!&#8217;) using the [...]]]></description>
			<content:encoded><![CDATA[<p>Some other projects haves slowed down my Python learning progress, but things are now geting back to normal. I&#8217;ve read a lot of documentation on Python (the official tutorial, PQR, diveintopython2-3, etc), and now it&#8217;s time to get my hands dirty.</p>

<p>I&#8217;ve build a simple blog (you know, &#8216;blog&#8217; is the new &#8216;hello, world!&#8217;) using the webapp framework on Google Appengine (<a href="http://github.com/danceric/pythonorbust">code</a>/<a href="http://pythonorbust.appspot.com/">demo</a>). Next planned steps are, in no particular order:</p>

<ul>
<li>finish reading (the dead tree version of) <a href="http://djangobook.com/en/2.0/">The Django Book</a> and port a web app of mine to Django</li>
<li>take the <a href="http://www.pythonchallenge.com/">Python Challenge</a></li>
<li>read <a href="http://www.greenteapress.com/thinkpython/thinkpython.html">Think Python</a>
<br /><br /></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.danceric.net/2009/10/06/update-on-my-python-learning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Move That&#160;Bus!</title>
		<link>http://www.danceric.net/2009/08/28/move-that-bus/</link>
		<comments>http://www.danceric.net/2009/08/28/move-that-bus/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 19:22:56 +0000</pubDate>
		<dc:creator>danceric</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://www.danceric.net/?p=595</guid>
		<description><![CDATA[A lot have been said about the PHP Community this year, and the latest article on Zend Developer Zone is the perfect example of why it&#8217;s important to take part in this community. If you&#8217;re still wondering why you should get involved, take some time to read Move That Bus!.
]]></description>
			<content:encoded><![CDATA[<p>A lot have been said about the PHP Community this year, and the latest article on Zend Developer Zone is the perfect example of why it&#8217;s important to take part in this community. If you&#8217;re still wondering why you should get involved, take some time to read <a href="http://devzone.zend.com/article/8385-Move-That-Bus">Move That Bus!</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danceric.net/2009/08/28/move-that-bus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Secret Pathway to the Zend&#160;Framework</title>
		<link>http://www.danceric.net/2009/08/18/my-secret-pathway-to-the-zend-framework/</link>
		<comments>http://www.danceric.net/2009/08/18/my-secret-pathway-to-the-zend-framework/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 16:57:08 +0000</pubDate>
		<dc:creator>danceric</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.danceric.net/?p=574</guid>
		<description><![CDATA[I now mainly develop web applications using the Zend Framework, but some years ago, I was really grumbling about it, for what I thought was over-engineered structure and useless MVC crap&#8230; things have changed since then&#8230;

To make a long story short, I&#8217;ve started doing PHP when it was at version 3. No need to say [...]]]></description>
			<content:encoded><![CDATA[<p>I now mainly develop web applications using the Zend Framework, but some years ago, I was really grumbling about it, for what I thought was over-engineered structure and useless MVC crap&#8230; things have changed since then&#8230;</p>

<p>To make a long story short, I&#8217;ve started doing PHP when it was at version 3. No need to say that my programming style has evolved since. Back in the day, spaghetti was trendy and cool&#8230; When I was a mediocre programmer, I&#8217;ve tried the early releases of Symfony and Zend Framework (before their 1.0 release). My first experience was rather unpleasant. All these useless bloated object standing in the way of fast development&#8230; I&#8217;ve seen the light since, but with the help of a lesser known/used framework. The first framework that really helped me change my mindset from spaghetti programming mode to the framework way was CodeIgniter. This is a small framework with a really clean documentation. I know that some other frameworks have excellent documentation too (hello Symfony), but the codeigniter documentation is (was?) so small and concise that you can go through it in an afternoon and find out what are the MVC, ORM, and all the other goodies the cool kids are talking about.</p>

<p>Let me emphasis this important part:</p>

<blockquote>
  <p>I had to change my mindset to the framework way of doing things</p>
</blockquote>

<p>And CodeIgniter was really helpful for that. I don&#8217;t use it anymore though, I don&#8217;t think it&#8217;s a bad framework, but I prefer OOP and I don&#8217;t need PHP4 support on my projects. My favorite PHP framework nowadays (ie: the one I can develop faster with) is Symfony, but I work with Zend Framework on a day to day basis now, and the learning curve for these two was way smoother after playing with CodeIgniter. Why I&#8217;ve chosen to focus on ZF instead of Sf? This will be the subject of a future blog post&#8230;</p>

<p>To summarize my advice: If you have tried Zend Framework and it appeared too big and useless to you, start with a smaller full-stack framework, just to get in the mood. You&#8217;re journey&#8217;s gonna be way easier starting from there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danceric.net/2009/08/18/my-secret-pathway-to-the-zend-framework/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
