<?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>Jabbering Giraffe &#187; catalyst</title>
	<atom:link href="http://happygiraffe.net/blog/tag/catalyst/feed/" rel="self" type="application/rss+xml" />
	<link>http://happygiraffe.net/blog</link>
	<description></description>
	<lastBuildDate>Tue, 07 Feb 2012 20:49:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Web Frameworks Evening</title>
		<link>http://happygiraffe.net/blog/2005/11/19/web-frameworks-evening/</link>
		<comments>http://happygiraffe.net/blog/2005/11/19/web-frameworks-evening/#comments</comments>
		<pubDate>Sat, 19 Nov 2005 23:35:00 +0000</pubDate>
		<dc:creator>Dominic Mitchell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[catalyst]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[london]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://happygiraffe.net/2005/11/19/web-frameworks-evening/</guid>
		<description><![CDATA[On thursday, I attended the London Web Frameworks evening, basically because of the large london.pm contingent. There were three speakers for the evening: Matt Trout on Catalyst; Simon Willison showing off Django and Matt Biddulph exploring Rails. All this was &#8230; <a href="http://happygiraffe.net/blog/2005/11/19/web-frameworks-evening/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On thursday, I attended the <a href="http://blog.unixdaemon.net/cgi-bin/blosxom.pl/events/frameworks_2005_11_annoucement.html">London Web Frameworks</a> evening, basically because of the large <a href="http://london.pm.org/">london.pm</a> contingent.  There were three speakers for the evening: <a href="http://www.trout.me.uk/">Matt Trout</a> on <a href="http://catalyst.perl.org/">Catalyst</a>; <a href="http://simon.incutio.com/">Simon Willison</a> showing off <a href="http://www.djangoproject.com/">Django</a> and <a href="http://www.hackdiary.com/">Matt Biddulph</a> exploring <a href="http://www.rubyonrails.org/">Rails</a>.  All this was happening in the large lecture theatre (really!  That&#8217;s its name!) at the University of  Westminster.</p>
<p>First up was Matt Trout.  He pointed out that there are over 120 <a href="http://search.cpan.org/search?query=Catalyst&#38;mode=dist"><span class="caps">CPAN</span> modules</a> covering Catalyst, and only 25 minutes for the presentation, so he skipped a few.  <img src='http://happygiraffe.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   Catalyst is billed as an &#8220;Elegant <span class="caps">MVC</span> web framework.&#8221;  In practise, it seems to be somewhat Rails-like (it has the standalone web servers, the testing stuff and the generator scripts), apart from the fact that it&#8217;s more or less completely agnostic about the Model and View bits (and the environment in which it runs).  And it likes plugins.  A lot.</p>
<p>For the Model stuff, the most popular plugins are <a href="http://search.cpan.org/dist/Class-DBI/">Class::DBI</a> and <a href="http://search.cpan.org/dist/DBIx-Class/">DBIx::Class</a>.  But there are more, including stuff like <span class="caps">LDAP</span>, Subversion and Plucene.</p>
<p>The views are a similiar situation.  The most common plugin is <a href="http://tt2.org/">Template Toolkit</a>, but there&#8217;s also support for <a href="http://www.masonhq.com/">Mason</a> and <a href="http://search.cpan.org/dist/HTML-Template/"><span class="caps">HTML</span>::Template</a>, as well as a lot of other less used stuff, including <a href="http://search.cpan.org/dist/PHP/"><span class="caps">PHP</span></a>!</p>
<p>Again for authorization and authentication, there are plugins for pretty much anything that you would want: Databases, <span class="caps">LDAP</span>, PAM, Radius, Samba.  The list goes on.  Apparently, Catalyst has its own internal implementation of Roles and ACLs, but Matt didn&#8217;t go into much detail on that.  When it comes to deployment, there are plugins for every option (Catalyst calls them Engines): Apache, Apache2, FastCGI, and a standalone server using <span class="caps">HTTP</span>::Daemon.</p>
<p>Probably the most important plugin mentioned was Config::YAML, which lets you configure the site using textual config files.</p>
<p>Other good points include the nice use of subroutine attributes and excellent testing support.  And the packaging support making it very easy to distribute your applications.</p>
<p>Second was Simon Willison.  Django is a relatively new Open Source project, but it&#8217;s been in development for about two years.  It seems to be more designed around <span class="caps">CMS</span> needs, although it&#8217;s pretty flexible.  Simon was a co-creator on his placement year.  It was originally designed for running <a href="http://www.lawrence.com/">lawrence.com</a>, an entertainment site for a small university town in Kansas.</p>
<p>Much of Django appears to have parallel evolution with Rails.  They&#8217;re about the same age and they seem to have more-or-less independently arrived at the same solution.</p>
<p>Django philosophy: Less code; Loose coupling; Explicit over implicit (very pythonic); Consistency; Efficient <span class="caps">SQL</span> (raw <span class="caps">SQL</span> is encouraged where it provides benefits); Cool URLs.</p>
<p>Interestingly, Django implements its own <span class="caps">ORM</span>, instead of using something like <a href="http://sqlobject.org/">SQLObject</a>.  As part of this, it does all the schema definition in Python, so it should be readily portable between databases.  Apparently it already does the usual suspects: MySQL, PostgreSQL, SQLite.</p>
<p>One tiny feature which I really like is the ability to raise an <span class="caps">HTTP</span> status as an exception.</p>
<p>The templating language they use is something that was written specifically for Django.  Apparently it was &#8220;inspired by <a href="http://smarty.php.net/">Smarty</a>&#8221; which in turn was inspired by Template Toolkit.  How the wheels turn&#8230;</p>
<p>They have this feature called &#8220;Middleware&#8221;, which basically looks like stackable input/output filters.</p>
<p>The Django people are really big on getting the community involved in the design.  They&#8217;ve already had a lot of translations and a large refactoring of the admin screens from the community.  Because the deployment of Django is so small at this stage, they&#8217;re quite willing to break backwards compatibility if you can argue a good case.</p>
<p>Simon went on to give a fantastic demo of the admin interface for lawrence.com.  It&#8217;s very slick indeed, with lots of Ajax and JavaScript goodness.  Only one thing caused an <span class="caps">SQL</span> error, which isn&#8217;t bad for a live demo.  <img src='http://happygiraffe.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Lastly, Matt Biddulph came up to talk about Rails.  This was particularly interesting because unlike the other two people, he&#8217;s not a rails developer at all, he&#8217;s a rails user.  And only for 3 months at that.  This gave him a very good perspective on it, as opposed to &#8220;it&#8217;s all shiny!&#8221;  He also acknowledged how good the Rails people are at marketing&#8212;nearly everybody in the audience knew something about it.</p>
<p>Rather than specific technical details, he talked more about the Rails philosophy.  Stuff like &#8220;Convention over Configuration&#8221; and Rails being &#8220;Opinionated Software.&#8221;  He came up with the phrase &#8220;The golden path&#8221;&#8212;which is how to develop in a Rails like manner.  It&#8217;s possible to stray from it, but your life gets harder.  Rails is very well integrated, with a clear direction.</p>
<p>Bits that he noted as being particularly useful:  The Generators, which help point you in the right direction.  The ease of Ajax integration.  The really useful console and breakpointer scripts (which I wish I had in Perl for work).</p>
<p>He also outlined some good &#8220;Gotchas&#8221; for Rails.  Stuff like the pluralisation sometimes being surprising&#8212;&#8220;try adding or removing an S if something doesn&#8217;t work.&#8221;  The fact that Rails lazy loading can lead to some really inefficient <span class="caps">SQL</span>.  Generally, Rails can be quite slow (compared to MySQL).  And Ruby in the templates, which could end up being very chaotic (although he did point at <a href="http://home.leetsoft.com/liquid">Liquid</a> as a new and better alternative).</p>
<p>Matt had a demo app with him&#8212;the <span class="caps">BBC</span> Programme Catalogue.  This is a new interface to all the <span class="caps">BBC</span>&#8217;s programme metadata.  The <span class="caps">BBC</span> librarians have been maintaining this enourmous amount of information for <em>years</em>, and it&#8217;s now getting a shiny new web frontend.  Did you know it takes 8 hours for a single person to fill in the data for a single episode of <a href="http://news.bbc.co.uk/1/hi/programmes/newsnight/default.stm">Newsnight</a>?  Incredible.  Anyway, he&#8217;s done an incredible job of getting all that data into Rails.  The interface is still sucky, but will get a makeover before being released to the hounds^Wpublic early next year.  I can&#8217;t wait to get my hands on that data.</p>
<p>After that, there was really only time for one question.  Muttley piped up with &#8220;What do each one of you guys want to steal from each other?&#8221;  Djangos admin screen&#8217;s were the main ones.  Generally, they all feel that they would steal any useful features that they could from each other.  Isn&#8217;t cross fertilisation great?</p>
<p>Unfortunately, I had to rush off afterwards to catch a train.  Otherwise I would have enjoyed going to the pub with them all to talk over the bits some more.  Anyway, my thanks to Dean Wilson for organising all this.  Great to hear about things going on out there.  See you all next weekend at the <a href="http://london.pm.org/lpw/">London Perl Workshop</a>, I guess!</p>
]]></content:encoded>
			<wfw:commentRss>http://happygiraffe.net/blog/2005/11/19/web-frameworks-evening/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

