<?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>Evolving Bits &#187; Django</title>
	<atom:link href="http://www.evolvingbits.com/category/django/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.evolvingbits.com</link>
	<description>JavaScript. iOS (iPhone/iPad). Django. Python. Physical Computing.</description>
	<lastBuildDate>Wed, 12 Jan 2011 12:48:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Highlights from DjangoCon 2010 (and videos to watch)</title>
		<link>http://www.evolvingbits.com/2010/09/14/djangocon-2010-highlights-videos/</link>
		<comments>http://www.evolvingbits.com/2010/09/14/djangocon-2010-highlights-videos/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 23:33:03 +0000</pubDate>
		<dc:creator>Brian Gershon</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://www.evolvingbits.com/?p=202</guid>
		<description><![CDATA[Here were some DjangoCon 2010 highlights for me, along with talk titles so you can find the full presentations online at http://djangocon.blip.tv/posts?view=archive &#8220;Creating better apps&#8221; Both Eric Florenzano (&#8220;Why Django Sucks, and How We Can Fix It&#8221;) and Alex Gaynor (&#8220;Rethinking the Reusable Application Paradigm&#8221;) had many useful things to say about creating better and [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Here were some DjangoCon 2010 highlights for me, along with talk titles so you can find the full presentations online at http://djangocon.blip.tv/posts?view=archive</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8220;Creating better apps&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Both Eric Florenzano (&#8220;Why Django Sucks, and How We Can Fix It&#8221;) and Alex Gaynor (&#8220;Rethinking the Reusable Application Paradigm&#8221;) had many useful things to say about creating better and more reusable apps.  The videos are worth watching, here are some highlights:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">* Narrower abstractions would make apps suck less &#8212; such as not directly exposing models (create an API) so you can swap out model or implementation.  This was also a big part of Alex&#8217;s talk.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">* Class-based views are a nice way of creating an API and allow implementations to change over time.  There are various ways of doing class-based views and there isn&#8217;t an official blessed way, but class-based views would be an improvement (and offer more flexibility) than current function-based views in Django.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8220;Databases other than SQL&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">With the growth in non-relational databases out there, I enjoyed starting to play with MongoDB (pyMongo and django-nonrel).  After hearing experiences from the &#8220;NoSQL and Django Panel&#8221; it&#8217;s obvious that these are new technologies (relative to SQL) and that they are quite varied in what they support and the problems they solve.  There are also pros and cons with schemaless databases.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Andrew Godwin (&#8220;Step Away From That Database&#8221;) also presented a nice range of databases &#8212; Document databases (MongoDB, CouchDB), Key-value stores (Cassandra, Redis), Message Queues (AMQP, Celery), Graph databases &#8212; and reminds us that filesystems are also key-value stores, and that version-control systems can provide a versioned storage.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8220;Data Migration&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Brian Luft&#8217;s talk (&#8220;Data Herding: How to Shepherd Your Flock Through Valleys of Darkness&#8221;) will resonate with anyone looking for better methods of moving from a legacy system to Django. He also highlights the opportunity and flexibility that Django framework provides for clients in moving them off of their desktop and legacy systems.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8220;Website Security&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Adam Baldwin (&#8220;Pony Pwning&#8221;) gave a great talk on website security and things to be thinking about while building Django sites.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Cross-Site Scripting (&#8220;xss&#8221;) vulnerability are alive and well. Though Django offers protections, these can be turned off or it&#8217;s easy to make a mistake in the template layer and open yourself up. You can learn more and play with xss vulnerabilities: http://owasp-esapi-python-swingset.appspot.com/xss/django</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Adam suggests considering OWASP ESAPI, auditing templates, auditing reusable snippets, and educating designers.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">For REST services, good to consider django-piston rather than writing your own.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Other things include checking upload extensions to avoid running arbitrary code, e.g. Django ImageField doesn&#8217;t check extensions and could possibly run embedded code.  Apache &#8220;mod_security&#8221; as a nice monitoring tool that can let you know what&#8217;s happening, as well as prevent some issues.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8220;Exclusionary Establishment&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Eric Florenzano hit on some issues on the social engineering side of Django.  Examples were presented that send messages of &#8220;your contributions aren&#8217;t important&#8221; out to the larger Django community &#8212; enhancements that went through all the steps but didn&#8217;t make it into core (eg truncatechars), key contributors not given committer rights (eg Alex Gaynor), no non-core developer code accepted into django.contrib.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">James Bennett&#8217;s (&#8220;Topics of Interest&#8221;) reflected some of this too in the fact that there are very few core committers (14) and even fewer than understand the ORM and that they&#8217;re having a hard time growing core-committers.  Eric&#8217;s mention of Guido van Rossum&#8217;s quote (creator of Python) &#8220;give out more commit privileges sooner&#8221;.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Participation could be easier and more inviting if more core devs are added and there is also less concern about breaking trunk.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Something I&#8217;ll add to this is that there were many talks submitted for DjangoCon so some were turned away, yet some presenters had 3 slots.  Many of the talks were very good, but I think it would be healthy to have some opportunities for new faces to present, and not the same ones each year. (transparency note: our talk was one that wasn&#8217;t accepted)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8220;Become a Django Core Developer&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Given the concern about lack of core committers, Russell Keith-Magee (&#8220;So you want to be a core developer?&#8221;) was timely. In addition to going through the process of contributing code, he also mentioned that contributing to the Django community in the form of help (django-user list, stack overflow, etc) and writing new docs (tutorials, howtos, elaborating on existing docs) is key.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8220;Interesting Apps and Projects&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The lightning talks and Eric Holscher&#8217;s talk (&#8220;Large Problems in Django, Mostly Solved&#8221;) were a good source of Django apps to try if you&#8217;re not already using them.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Eric also shares his measure of what makes a solid reusable app &#8212; needs to have an easy setup, a good upgrade path, good documentation and well-tested.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Apps he mentioned were Haystack (search), Sphinx (documentation), South (db migration), Celery (delayed execution), Fabric (deployment), gunicorn.org (async server), pip and virtualenv (packaging), TastyPie and Piston (RESTful), Taggit (tagging), Hudson (continuous integration tool), django-filter (django admin filtering), djangopackages.com (for finding new apps).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Some interesting things from the lightning talks:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">* http://djangopackages.com (a Django Dash project)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">* http://readthedocs.org  (a Django Dash project)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">* logbook &#8211; http://github.com/mitsuhiko/logbook</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8220;Performance&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Frank Wiles&#8217; talk (&#8220;Alice in Performanceland &#8212; Down the Rabbit Hole&#8221;) was full of a lot of tasty morsels to help you &#8220;do less&#8221; and &#8220;remove pressure on your server&#8221; that ultimately increases the performance and responsiveness of your site.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8220;Code Quality&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Human code review is best says Peter Baumgartner in his talk (&#8220;Monitoring Code Quality in Your Django Project&#8221;). There are also many great code quality tools out there that many of us use: test suites, code coverage, link/pep8, profiling, code complexity metrics, value &#8212; and pulling this together via Hudson.  Also, creating a build in one step is offers new developers a fast way to get started on a project.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8220;Managed Django Hosting&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">I missed Nate Aune&#8217;s lightning talk on his DjangoZoom.com cloud deployment solution, but looks interesting. http://djangozoom.com/ponyexpress/</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">One of the lightning talks discussed the django-servee project: http://www.servee.com/features/ http://github.com/servee/servee</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8220;Seeing some New Faces&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">It was nice meeting new people who are using Django in Washington State outside of Seattle, such as in Richland and Spokane, and reconnecting with friends from the Plone and greater Python communities.</div>
<p>Here were some DjangoCon 2010 highlights for me, along with talk titles so you can find the full <a title="DjangoCon 2010 Videos" href="http://djangocon.blip.tv/posts?view=archive" target="_blank">presentation videos online</a>.</p>
<h2>Creating better apps</h2>
<p>Both Eric Florenzano (&#8220;Why Django Sucks, and How We Can Fix It&#8221;) and Alex Gaynor (&#8220;Rethinking the Reusable Application Paradigm&#8221;) had many useful things to say about creating better and more reusable apps.  The videos are worth watching, here are some highlights:</p>
<ul>
<li>Narrower abstractions would make apps suck less &#8212; such as not directly exposing models (create an API) so you can swap out model or implementation.  This was also a big part of Alex&#8217;s talk.</li>
<li>Class-based views are a nice way of creating an API and allow implementations to change over time.  There are various ways of doing class-based views and there isn&#8217;t an official blessed way, but class-based views would be an improvement (and offer more flexibility) than current function-based views in Django.</li>
</ul>
<h2>Databases other than SQL</h2>
<p>With the growth in non-relational databases out there, I enjoyed starting to play with djangon-nonrel with MongoDB.  This project also supports Google App Engine.</p>
<p>After hearing experiences from the &#8220;NoSQL and Django Panel&#8221; it&#8217;s obvious that these are new technologies (relative to SQL) and that they are quite varied in what they support and the problems they solve.  There are also pros and cons with schemaless databases that you should be aware of when picking your solution.</p>
<p>Andrew Godwin (&#8220;Step Away From That Database&#8221;) also presented a nice range of databases &#8212; Document databases (MongoDB, CouchDB), Key-value stores (Cassandra, Redis), Message Queues (AMQP, Celery), Graph databases &#8212; and reminds us that filesystems are also key-value stores, and that version-control systems can provide a versioned storage.</p>
<h2>Data Migration to Django</h2>
<p>Brian Luft&#8217;s talk (&#8220;Data Herding: How to Shepherd Your Flock Through Valleys of Darkness&#8221;) will resonate with anyone looking for better methods of moving from a legacy system to Django. He also highlights the opportunity and flexibility that Django framework provides for clients in moving them off of their desktop and legacy systems.</p>
<h2>Website Security</h2>
<p>Adam Baldwin (&#8220;Pony Pwning&#8221;) gave a great talk on website security and things to be thinking about while building Django sites.</p>
<p>Cross-Site Scripting (&#8220;xss&#8221;) vulnerability are alive and well. Though Django offers protections, these can be turned off or it&#8217;s easy to make a mistake in the template layer and open yourself up. You can learn more and play with xss vulnerabilities: <a href="http://owasp-esapi-python-swingset.appspot.com/xss/django" target="_blank">http://owasp-esapi-python-swingset.appspot.com/xss/django</a></p>
<p>Adam suggests considering OWASP ESAPI, auditing templates, auditing reusable snippets, and educating designers.</p>
<p>For REST services, good to consider django-piston rather than writing your own.</p>
<p>Other things include checking upload extensions to avoid running arbitrary code, e.g. Django ImageField doesn&#8217;t check extensions and could possibly run embedded code.  Apache &#8220;mod_security&#8221; as a nice monitoring tool that can let you know what&#8217;s happening, as well as prevent some issues.</p>
<h2>An Exclusionary Establishment?</h2>
<p>Eric Florenzano hit on some issues on the social engineering side of Django.  He provided examples of situations that can send the messages of &#8220;your contributions aren&#8217;t important&#8221; out to the larger Django community &#8212; enhancements that went through all the steps but didn&#8217;t make it into core (eg truncatechars), key contributors not given committer rights (eg Alex Gaynor), no non-core developer code accepted into django.contrib.</p>
<p>James Bennett&#8217;s (&#8220;Topics of Interest&#8221;) reflected some of this too in the fact that there are very few core committers (14) and even fewer than understand the ORM and that they&#8217;re having a hard time growing core-committers.  Eric&#8217;s mention of Guido van Rossum&#8217;s quote (creator of Python) &#8220;give out more commit privileges sooner&#8221;.</p>
<p>Participation could be easier and more inviting if more core devs are added and there is also less concern about breaking trunk.</p>
<p>Something I&#8217;ll add: My understanding is that too many talks were submitted for DjangoCon so of course some were turned away, yet some presenters had more than 1 slot.  Many of the talks were very good, but I think it would be healthy to open up more opportunities for community members to present.</p>
<h2>Improving Django and Becoming Core Developer</h2>
<p>Given the concern about lack of core committers, Russell Keith-Magee (&#8220;So you want to be a core developer?&#8221;) was timely. In addition to going through the process of contributing code, he also mentioned that contributing to the Django community in the form of help (django-user list, stack overflow, etc) and writing new docs (tutorials, howtos, elaborating on existing docs) is key.</p>
<h2>Interesting Apps and Projects</h2>
<p>The lightning talks and Eric Holscher&#8217;s talk (&#8220;Large Problems in Django, Mostly Solved&#8221;) were a good source of Django apps to try if you&#8217;re not already using them.</p>
<p>Eric also shares his measure of what makes a solid reusable app &#8212; needs to have an easy setup, a good upgrade path, good documentation and well-tested.</p>
<p>Apps he mentioned were Haystack (search), Sphinx (documentation), South (db migration), Celery (delayed execution), Fabric (deployment), gunicorn.org (async server), pip and virtualenv (packaging), TastyPie and Piston (RESTful), Taggit (tagging), Hudson (continuous integration tool), django-filter (django admin filtering), djangopackages.com (for finding new apps).</p>
<p>Some interesting things from the lightning talks:</p>
<ul>
<li><a href="http://djangopackages.com" target="_blank">http://djangopackages.com</a> (reusable apps, sites, tools &#8212; a Django Dash project. Nice work <a href="http://pydanny.com/" target="_blank">Daniel Greenfeld</a>!)</li>
<li><a href="http://readthedocs.org" target="_blank">http://readthedocs.or</a>g  (hosted help documents &#8212; a Django Dash project)</li>
<li><a href="http://github.com/mitsuhiko/logbook" target="_blank">logbook</a> &#8211; an easier way to add logging to Django</li>
</ul>
<h2>Performance</h2>
<p>Frank Wiles&#8217; talk (&#8220;Alice in Performanceland &#8212; Down the Rabbit Hole&#8221;) was full of a lot of tasty morsels to help you &#8220;do less&#8221; and &#8220;remove pressure on your server&#8221; that ultimately increases the performance and responsiveness of your site.</p>
<h2>Improving your Code Quality</h2>
<p>Human code review is best says Peter Baumgartner in his talk (&#8220;Monitoring Code Quality in Your Django Project&#8221;). There are also many great code quality tools out there that many of us use: test suites, code coverage, link/pep8, profiling, code complexity metrics, value &#8212; and pulling this together via Hudson.  Also, creating a build in one step is offers new developers a fast way to get started on a project.</p>
<h2>Managed Django Hosting</h2>
<p>I missed Nate Aune&#8217;s lightning talk on his DjangoZoom.com cloud deployment solution, but looks interesting. <a href="http://djangozoom.com/ponyexpress/" target="_blank">http://djangozoom.com/ponyexpress/</a></p>
<p>One of the lightning talks discussed the django-servee project: <a href="http://www.servee.com/" target="_blank">http://www.servee.com/</a></p>
<h2>Thanks DjangoCon!</h2>
<p>It was nice meeting new people using Django in Seattle and in other areas of Washington State, such as in Richland, Wenatchee and Spokane &#8212; and reconnecting with friends from the Plone and greater Python communities.</p>
<p>Thank you to the organizers, presenters and supporters for another great DjangoCon!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evolvingbits.com/2010/09/14/djangocon-2010-highlights-videos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DjangoCon 2009 Recap</title>
		<link>http://www.evolvingbits.com/2009/09/14/djangocon-2009-recap/</link>
		<comments>http://www.evolvingbits.com/2009/09/14/djangocon-2009-recap/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 01:21:10 +0000</pubDate>
		<dc:creator>Brian Gershon</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.evolvingbits.com/?p=127</guid>
		<description><![CDATA[After catching the great videos from last year&#8217;s first DjangoCon I looked forward to attending this year.  I&#8217;m glad I went. We&#8217;ll be discussing &#8220;What did we learn at DjangoCon?&#8221; at this Thursday&#8217;s Django Seattle. See http://www.djangoseattle.org for more details. In the meantime, here are some high-level take-aways: Should JavaScript and RESTful services be part [...]]]></description>
			<content:encoded><![CDATA[<p>After catching the great videos from last year&#8217;s first DjangoCon I looked forward to attending this year.  I&#8217;m glad I went.</p>
<p>We&#8217;ll be discussing &#8220;What did we learn at DjangoCon?&#8221; at this Thursday&#8217;s Django Seattle. See <a href="http://www.djangoseattle.org" target="_blank">http://www.djangoseattle.org</a> for more details.</p>
<p>In the meantime, here are some high-level take-aways:</p>
<ul>
<li>Should JavaScript and RESTful services be part of the Django core?  JS is even more useful/powerful with the latest fast JS engines in Chrome, Firefox and Safari/Webkit. Competitor Rails builds in RESTful features &#8211; some promising ones for Django include django-piston and django-roa.  I liked how Ted Leung talked about &#8220;science experiments&#8221; and posed many ideas on what we may want to experiment with to get right before approaching Django core.</li>
<li>Git &#8211; Though this doesn&#8217;t directly relate to Django, DVCS systems like Git and Mercurial are in wide use.  SVN is a given, but now feel I need to know Git and Mercurial well &#8211; since popular projects are using these.  I also wanted to pick a &#8220;pet&#8221; DVCS to use as my default too.  I&#8217;ve chosen Git (mainly because of git-svn and GitHub), but will be using Mercurial as well.</li>
<li>Django Tips and Tricks &#8211; Many to pick from, but I liked Query.as_sql() method to show the SQL the Django ORM generates on your behalf, the flexibility of using &#8220;signals&#8221; to loosely couple functionality (see django-signals-ahoy on bithub), reusing other Python WSGI middleware (such as repoze.bitblt, repoze.squeeze, repoze.profile), pylint/djangolint, class-based views, db schema migrations with South, much faster test speeds in Django 1.1, various test utilities floating around, talks on performance, etc.</li>
</ul>
<p>* Django jobs are growing, and <a href="http://ping.fm/WpCf4" target="_blank">Django also a popular platform for Start-ups</a>.</p>
<p>* Check out the <a href="http://djangocon.pbworks.com/Slides" target="_blank">DjangoCon2009 Wiki</a> for slides and presentations.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evolvingbits.com/2009/09/14/djangocon-2009-recap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Snow Leopard Smooth Except Python 32/64 Cocktail</title>
		<link>http://www.evolvingbits.com/2009/09/02/snow-leopard-smooth-except-python-3264-cocktail/</link>
		<comments>http://www.evolvingbits.com/2009/09/02/snow-leopard-smooth-except-python-3264-cocktail/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 05:11:57 +0000</pubDate>
		<dc:creator>Brian Gershon</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Plone]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Snow Leopard]]></category>
		<category><![CDATA[Zope3]]></category>

		<guid isPermaLink="false">http://www.evolvingbits.com/?p=88</guid>
		<description><![CDATA[UPDATE: Thanks to the helpful commenters, I found success getting an older Zope instance running on Python 2.4 on Snow Leopard using buildout. NOTE: This post is for installing Python 2.4 on a brand new Snow Leopard Instance. If upgrading on top of Leopard, you may have to update easy_install, macports, etc.  More Googling around [...]]]></description>
			<content:encoded><![CDATA[<p><strong>UPDATE: Thanks to the helpful commenters, I found success getting an older Zope instance running on Python 2.4 on Snow Leopard using buildout.</strong></p>
<p><strong>NOTE: This post is for installing Python 2.4 on a brand new Snow Leopard Instance.</strong> If upgrading on top of Leopard, you may have to update easy_install, macports, etc.  More Googling around may be required.<strong><br />
</strong></p>
<p>Though I had to create two buildouts to get this to work &#8212; is there a way to get this into one buildout?</p>
<p>I first tried to create one buildout by combining  Florian Schulze&#8217;s buildout recipe with a standard Zope recipe &#8212; but since initial bootstrap was run by Python 2.5, I couldn&#8217;t get the Zope instance to use the new Python 2.4. <strong>So I first ran a buildout to build Python 2.4 (using OSX-installed Python 2.5), then used that new Python 2.4 to run bootstrap.py on the Zope 2.8.x buildout.</strong></p>
<p>Here&#8217;s the recipe I used to just build Python 2.4 (requires Florian&#8217;s buildout, see Alexander Limi&#8217;s comment below for where to find this):</p>
<pre>[buildout]
#extends = src/snowleopard.cfg     # no longer required as Joe mentions below
python-buildout-root = ${buildout:directory}/src
parts -=
   ${buildout:python25-parts}
   ${buildout:python26-parts}

[install-links]
prefix = /opt/local</pre>
<p>Then I ran a simple Zope 2.8 buildout to see if it would compile (using new Python 2.4 to bootstrap), and it did!</p>
<pre>[buildout]
parts =
   zope2
   instance

[zope2]
recipe = plone.recipe.zope2install
url = http://www.zope.org/Products/Zope/2.8.9.1/Zope-2.8.9.1-final.tgz

[instance]
recipe = plone.recipe.zope2instance
zope2-location = ${zope2:location}
user = admin:admin
http-address = 8080
debug-mode = on
verbose-security = on</pre>
<hr />
<p>Here is my initial post:</p>
<p>I have to say &#8212; most everything I&#8217;ve installed on a fresh Snow Leopard install has worked flawlessly and swiftly &#8212; except for (the minor inconvenience of) iStat not working.  <strong>UPDATE: iStat 2.0 is available for Snow Leopard now.</strong> <em>There&#8217;s a new beta of MenuMeters too for Snow Leopard</em>.</p>
<p>There are also nice subtle improvements, see Mac Life&#8217;s <a href="http://www.maclife.com/article/feature/100_snow_leopard_tips_tricks_and_features" target="_blank">100 Top Snow Leopard Tips, Trick and Features</a> for improvements to Preview, Expose, Stacks, etc.  I&#8217;ve very happy with the upgrade.</p>
<p>Now for the bad news for those like myself who depend on Python 2.4 for Plone, since many versions of Zope require Python 2.4.  <em>I also use Python for Django, though that should run fine on Python that shipped with Snow Leopard.</em></p>
<p>You can read many of the initial details around the web, but here&#8217;s what I&#8217;ve experienced and have been able to put together:</p>
<ul>
<li>Note that these details are for a fresh Snow Leopard install &#8211; there are a different set of issues if you&#8217;re upgrading over your existing Leopard.  <strong>NEW:<span style="font-weight: normal;"> &#8220;Clark&#8217;s Tech Blog&#8221; has a nice write-up about </span></strong><a href="http://www.libertypages.com/clarktech/?p=719" target="_blank">upgrading Python after upgrading Leopard to Snow Leopard</a>.</li>
<li>Snow Leopard ships with Python 2.5.4, and this runs as a 32-bit application.</li>
<li>I also need 2.4 branches of Python too, so I tried rolling my own (as usual) and it didn&#8217;t compile.  I then followed that thread for awhile.</li>
<li>I then thought I pulled a fast one when I compiled from MacPorts and everything ran great!</li>
<li>&#8230; but then I compiled Zope, and attempted to run an instance.  I saw a mysterious &#8220;No such file or directory&#8221; error.  Hmmm, I can navigate to that file, but running the script with my new Python interpretor was causing this error.</li>
<li>After digging around with Activity Monitor, I discovered that the Python I built from scratch was running as a 64-bit app &#8212; while the Python that comes with Snow Leopard was only running 32-bit &#8212; which is telling, since most everything else on Snow Leopard is running 64-bit.</li>
<li>Guessing that the the mysterious &#8220;No such file or directory&#8221; (when the file and directory did indeed exist) was due to a <strong>weird cocktail of 32-bit pieces living with 64-bit pieces</strong>.</li>
<li>My latest theory was that I needed to figure out how to build Python as 32-bit.  I played with Macports and various architecture settings to hardwire this, but long-story-short &#8212; the architecture override isn&#8217;t used everywhere &#8212; so parts still compile natively as 64-bit on Snow Leopard.</li>
<li><strong>The best thread on the topic (that&#8217;s steadily growing) is here: <a href="http://bugs.python.org/issue6802" target="_blank">http://bugs.python.org/issue6802</a> with msg92153 left today</strong>, which basically offers some additional settings for compiling Python as a 32-bit app (for Python 2.6).  Also mentions that Snow Leopard did some magic to get Python 2.5 working as a 32-bit app.<strong><br />
</strong></li>
<li>My hope is that once &#8220;32-bit&#8221; Python 2.4 happens, the rest of the Zope install, etc, will be back to the good ol&#8217; days in Leopard.</li>
</ul>
<p><strong>Plan B&#8217;s:</strong></p>
<p>Otherwise, to save some headache, I&#8217;m wondering about installing a small Linux distro on VMWare as a local mini web-server where I can easily install Python and Zope &#8212; though that&#8217;s a bit of a pain too.</p>
<p>Luckily I also have my old Leopard in a separate partition (see my <a href="http://www.evolvingbits.com/2009/08/29/extra-life-for-my-macbook-pro-with-snow-leopard-and-inexpensive-hardware/" target="_blank">Extra life for my MacBook Pro with Snow Leopard and inexpensive hardware</a> blog entry) and can boot that if necessary to work on various Zope/Plone sites (that required Python 2.4) while this is all being sorted out.</p>
<p>Now time to see if I can get 32-bit Python 2.4.6 compiled and installed, while waiting for more patches and information to appear&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evolvingbits.com/2009/09/02/snow-leopard-smooth-except-python-3264-cocktail/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Django Seattle&#8217;s Website Barn Raising Sprint: A Recap</title>
		<link>http://www.evolvingbits.com/2009/07/27/django-seattles-website-barn-raising-sprint-a-recap/</link>
		<comments>http://www.evolvingbits.com/2009/07/27/django-seattles-website-barn-raising-sprint-a-recap/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 08:00:56 +0000</pubDate>
		<dc:creator>Brian Gershon</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Seattle]]></category>
		<category><![CDATA[Web Collective Inc]]></category>

		<guid isPermaLink="false">http://www.evolvingbits.com/?p=57</guid>
		<description><![CDATA[New Django Seattle Website Thanks to 14 Sprinters who came together on July 25, we now have a Django Seattle Website at http://www.djangoseattle.org There was a lot of infrastructure work done at the sprint which is still in development and didn&#8217;t make it to the live site yet &#8212; but the experience of getting to [...]]]></description>
			<content:encoded><![CDATA[<h2>New Django Seattle Website</h2>
<p>Thanks to 14 Sprinters who came together on July 25, we now have a Django Seattle Website at <a href="http://www.djangoseattle.org" target="_blank">http://www.djangoseattle.org</a></p>
<div id="attachment_60" class="wp-caption alignright" style="width: 650px"><img class="size-full wp-image-60" title="django-seattle-sprint-group" src="http://www.evolvingbits.com/wp-content/uploads/2009/07/django-seattle-sprint-group.jpg" alt="Some of our Django Seattle Sprinters" width="640" height="480" /><p class="wp-caption-text">Some of our Django Seattle Sprinters</p></div>
<p>There was a lot of infrastructure work done at the sprint which is still in development and didn&#8217;t make it to the live site yet &#8212; but the experience of getting to know each other, and learning/sharing Django knowledge was another fine Sprint accomplishment.</p>
<p>Here&#8217;s a brief summary of what people worked on:</p>
<ul>
<li>Integrated in Blogging, Profile and Calendar functionality from <a href="http://code.google.com/p/django-basic-apps/" target="_blank">django-basic-apps</a>. <em>Initially Pinax was explored, but had a lot of dependencies and seemed better for creating specific sites genres, but was challenging to incorporate into our existing site.</em></li>
<li>Created a Twitter portlet that shows live #djangoseattle Tweets.</li>
<li>Setup Flatpages for core content, and creating a database-driven menu</li>
<li>Created a logo and initial site design and templates</li>
<li>Setup Django on live server</li>
<li>Used the Django Debug Toolbar while developing the site</li>
<li>Some were playing with Django for the first time</li>
<li>Some floated around to help diagnose problems and help those new to Django</li>
</ul>
<div id="attachment_59" class="wp-caption alignright" style="width: 650px"><img class="size-full wp-image-59" title="django-seattle-sprint-whiteboard" src="http://www.evolvingbits.com/wp-content/uploads/2009/07/django-seattle-sprint-whiteboard.jpg" alt="Functionality brainstorm" width="640" height="480" /><p class="wp-caption-text">Functionality brainstorm</p></div>
<h2>Thank you Sprinters</h2>
<p>Our sprinters (in alphabetical order) were: Andrew Beyer, Jon Callahan, Jesse Franceschini, Doug, Brian Gershon, Johann Heller, Paul Pham, Micah Ransdell, Leo Shklovskii, Trevor Smith, Jesse Snyder, Alex Tokar, Ragan Webber, Ben Wilber</p>
<h2>Thank you Sponsors</h2>
<p>Also a <strong>Big Thank You</strong> to our sponsors, hosts and organizers.</p>
<ul>
<li>Jon Callahan at <a href="http://mazamascience.com/" target="_blank">Mazama Science</a> treated all 14 of us to a tasty <a href="http://www.pccnaturalmarkets.com/" target="_blank">PCC Natural Markets</a> lunch, coffee, drinks and snacks.</li>
<li>Michael Kim at <a href="http://grapevyn.com" target="_blank">Grapevyn</a> brought in Top Pot Doughnuts.</li>
<li>Paul Pham hosted us at his coworking space <a href="http://www.officenomads.com/" target="_blank">Office Nomads</a> which was a great place to have a sprint.</li>
<li>Leo Shklovskii at <a href="http://www.evoworx.com/" target="_blank">Evoworx</a> and Brian Gershon at <a href="http://www.webcollective.coop" target="_blank">Web Collective</a> had a great time organizing the sprint.</li>
</ul>
<p>We look forward to our next sprint!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evolvingbits.com/2009/07/27/django-seattles-website-barn-raising-sprint-a-recap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyCon2009 Tutorial Recap: Real World Django / Optimizations in Python</title>
		<link>http://www.evolvingbits.com/2009/03/25/pycon2009-tutorials-real-world-django-optimizations-in-python/</link>
		<comments>http://www.evolvingbits.com/2009/03/25/pycon2009-tutorials-real-world-django-optimizations-in-python/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 03:54:27 +0000</pubDate>
		<dc:creator>Brian Gershon</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Plone]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Zope3]]></category>

		<guid isPermaLink="false">http://www.evolvingbits.com/?p=54</guid>
		<description><![CDATA[I primed the pump on the flight to PyCon by catching up on my reading. &#8220;Expert Python Programming&#8221; (Tarek Ziade) reminded me that I wanted to play with ipython shell and virtualenv (just learned today about the handy extension &#8220;virtualenvwrapper&#8221;), and reinforced and offered many great Best Practices. Optimization Tutorial I then got on my [...]]]></description>
			<content:encoded><![CDATA[<p>I primed the pump on the flight to PyCon by catching up on my reading. &#8220;Expert Python Programming&#8221; (Tarek Ziade) reminded me that I wanted to play with ipython shell and virtualenv (just learned today about the handy extension &#8220;virtualenvwrapper&#8221;), and reinforced and offered many great Best Practices.</p>
<p><strong>Optimization Tutorial</strong></p>
<p>I then got on my geek at &#8220;Faster Python Programs through Optimization&#8221; (Mike Müller of Python Academy), where we dove deeper into profiling and tips on improving speed or saving memory.</p>
<p>Some paraphrased guidelines to consider before you start optimizing (which were also reinforced in the &#8220;Real World Django&#8221; tutorial which I&#8217;ll chat about next):</p>
<ul>
<li>Make sure your program is really too slow &#8211; could be other factors like network traffic, database, etc.</li>
<li>Don&#8217;t optimize as you go &#8211; might ultimately not need to spend that time.  Also working code is always important first.</li>
<li>Only consider realistic use cases and user experience</li>
</ul>
<p>We played with the profiling tools (profile, cProfile, time, pystone, heapy) and used them to compare various techniques:</p>
<ul>
<li>xrange and also Generators shaved off time by not having to allocate memory for large data sets.</li>
<li>use built-in types as much as possible (including some newer collection classes)</li>
<li>iterating and appending strings by first appending to lists, then using a join statement to create large strings (versus building strings via += and loops)</li>
<li>One new one for me was converting lists to Sets before testing for membership of an item in the list, which is fast due to Set optimizations.</li>
<li>The tutorial also covered pysco, processing and numpy modules, as well as caching techniques.</li>
</ul>
<p><strong>Real-world Django Tutorial</strong></p>
<p>This very aptly named presentation by Jacob Kaplan-Moss and James Bennett was excellent for those of us who develop and deploy Django websites.  The full skinny (with link to slides) is here: <a href="http://jacobian.org/speaking/2009/real-world-django/" target="_blank">http://jacobian.org/speaking/2009/real-world-django/</a></p>
<p>Some highlights for me included:</p>
<ul>
<li>Focus on tight Django Applications that promote reuse while also breaking a website into components. Benefits of also leveraging packaging up your own components.</li>
<li>Gain flexibility by leveraging Django Managers, and they help encapsulate behavior behind an API.</li>
<li>Can extend models via new (in Django 1.1) Proxy subclasses.</li>
<li>Lots of discussion and recommendations for testing &#8212; from unit testing, through functional testing, and then browser-based functional testing. Yep, you need them all. I&#8217;d like to play more with Twill and Windmill.</li>
<li>Automating deployment &#8211; including options like virtualenv (and virtualenvwrapper), Ian Bicking&#8217;s <a href="http://blog.ianbicking.org/2008/10/28/pyinstall-is-dead-long-live-pip/" target="_blank">pip</a> (&#8220;pip installs packages&#8221;), zc.buildout, and <a href="http://pypi.python.org/pypi/Fabric/" target="_blank">Fabric</a>.  <em>zc.buildout&#8217;s power was emphasized (with its recipes, etc) was a bit overshadowed by comments on lack of documentation.</em> I&#8217;d like to give pip and Fabric a try.</li>
<li>Apache + mod_wsgi is now a preferred platform for server Django sites (or at least much more consistent performance and memory-usage wise than Apache + mod_python).</li>
<li>Definitely flip through the session slides!  <em>These were just some highlights for me out of 189 slides of useful information.</em></li>
</ul>
<p>Various tidbits for the next few days here at PyCon:</p>
<ul>
<li>Open Space sessions come highly recommended</li>
<li>There&#8217;s a <a href="http://us.pycon.org/2009/conference/talks/?filter=testing" target="_blank">heavy testing thread</a> throughout conference (10 sessions worth!)</li>
<li><a href="http://us.pycon.org/2009/conference/schedule/event/P37/" target="_blank">Friday 11am</a>: Using Windmill</li>
<li><a href="http://us.pycon.org/2009/conference/schedule/event/76/" target="_blank">Saturday 4:15p</a>: Ian Bicking&#8217;s session (creator of PIP and virtualenv, among many other topics)</li>
<li><a href="http://us.pycon.org/2009/conference/schedule/event/88/" target="_blank">Sunday 10:35a</a>: Panel: Functional Testing Tools in Python</li>
<li>&#8230; though it will ultimately be tough to pick and choose from all the great topics!</li>
</ul>
<p>Time for some sleep&#8230; more tutorials tomorrow, then 3 days of conference, then 4 days of sprints!</p>
<p>ps: It&#8217;s been great to see familiar faces from the Zope and Plone communities, which is often where I &#8220;get my Python on&#8221;.  Lately I&#8217;m also doing a lot of Django, so enjoying all the synergy around Python here at PyCon2009!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evolvingbits.com/2009/03/25/pycon2009-tutorials-real-world-django-optimizations-in-python/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enjoying the DjangoCon2008 Keynote Videos</title>
		<link>http://www.evolvingbits.com/2008/09/20/enjoying-the-djangocon2008-keynote-videos/</link>
		<comments>http://www.evolvingbits.com/2008/09/20/enjoying-the-djangocon2008-keynote-videos/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 00:41:22 +0000</pubDate>
		<dc:creator>Brian Gershon</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Zope3]]></category>

		<guid isPermaLink="false">http://www.evolvingbits.com/?p=43</guid>
		<description><![CDATA[Scale and Performance &#8211; Being Awesome After Web Collective just finished a Django website that needed to scale to 12,000 simultaneous peak users, Flickr architect Cal Henderson&#8217;s keynote was timely and very entertaining &#8211; particularly his commentary on &#8220;serious&#8221; frameworks and essentially a comic roasting of all of the major ones. Since most of us [...]]]></description>
			<content:encoded><![CDATA[<h3>Scale and Performance &#8211; Being Awesome</h3>
<p>After <a href="http://www.webcollective.coop/" target="_blank">Web Collective</a> just finished a Django website that needed to scale to 12,000 simultaneous peak users, Flickr architect <a href="http://www.youtube.com/watch?v=i6Fr65PFqfk" target="_blank">Cal Henderson&#8217;s keynote</a> was timely and very entertaining &#8211; particularly his commentary on &#8220;serious&#8221; frameworks and essentially a comic roasting of all of the major ones.</p>
<p>Since most of us are building &#8220;houses and not skyscrapers&#8221; there is some question as to whether Django should introduce all of Cal&#8217;s suggestions (<em>who is a &#8220;scale&#8221; geek working with on a very large website</em>), but how can you argue with his three major focus areas of scale, performance and <strong>&#8220;being awesome</strong>&#8220;.</p>
<p>Discussions of &#8220;scale&#8221; and &#8220;Django&#8221; remind me to play with Google App Engine soon. I also just discovered <a href="http://swik.net/django/Django+Community+Aggregator/Rob+Hudson:+Introducing+the+Django+Debug+Toolbar/cfbmq" target="_blank">Django Debug Toolbar</a> and other interesting things reading through Cal&#8217;s <a href="http://www.iamcal.com/" target="_blank">blog</a>.</p>
<h3>Learning from other Python Frameworks (Django and Zope)</h3>
<p>With Zope (and Plone) being the platform I&#8217;ve used for some time now, I found <a href="http://www.youtube.com/watch?v=fipFKyW2FA4" target="_blank">Mark Ramm&#8217;s perspective</a> on how to learn from all the smart folks in various Python (and other) frameworks a good 10,000 ft reminder.</p>
<p>He highlights that Zope3, Turbogears, and Pylons have learned some of the lessons of old Zope2 in that they are frameworks that strive to use community components that work with each other in multiple contexts.  They also are trying not to isolate themselves from the Python web community by building functionality specific to just one platform.</p>
<p>He wasn&#8217;t saying Django was far afloat in these areas, but rather that Django could make some of its innovations available more easily to other frameworks (e.g. Django&#8217;s ORM, and Django&#8217;s template engine), and that it should maybe use some of the Python components from other frameworks (e.g. Django middleware and WSGI middleware compatibility).</p>
<p>I look forward to poking around the rest of the DjangoCon 2008 videos, such as <a href="http://www.youtube.com/watch?v=CmyFcChTc4M" target="_blank">Guido van Rossum&#8217;s keynote</a> and others on <a href="http://www.youtube.com/view_play_list?p=D415FAF806EC47A1" target="_blank">YouTube&#8217;s DjangoCon 2008 Session&#8217;s playlist</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evolvingbits.com/2008/09/20/enjoying-the-djangocon2008-keynote-videos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Plone, Zope3 and Django Love Fest</title>
		<link>http://www.evolvingbits.com/2008/04/18/plone-zope3-and-django-love-fest/</link>
		<comments>http://www.evolvingbits.com/2008/04/18/plone-zope3-and-django-love-fest/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 16:36:46 +0000</pubDate>
		<dc:creator>Brian Gershon</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Plone]]></category>

		<guid isPermaLink="false">http://www.evolvingbits.com/2008/04/18/plone-zope3-and-django-love-fest/</guid>
		<description><![CDATA[Justin James and I presented our talk &#8220;Plone and Django: Comparing Tools for Python Web Developers&#8221; at Seattle Plone last night to an enthused audience. Most were familiar with just one platform or the other, so it was a great opportunity to ask questions and learn about the strengths of each platform. http://presentations.webcollective.coop/django-plone]]></description>
			<content:encoded><![CDATA[<p>Justin James and I presented our talk &#8220;<strong>Plone and Django: Comparing Tools for Python Web Developers</strong>&#8221; at Seattle Plone last night to an enthused audience.</p>
<p>Most were familiar with just one platform or the other, so it was a great opportunity to ask questions and learn about the strengths of each platform.</p>
<p><a href="http://presentations.webcollective.coop/django-plone" class="external-link">http://presentations.webcollective.coop/django-plone</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.evolvingbits.com/2008/04/18/plone-zope3-and-django-love-fest/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

