<?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; Python</title>
	<atom:link href="http://www.evolvingbits.com/category/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.evolvingbits.com</link>
	<description>Django. Python. iPhone. Plone. Physical Computing. Worker Owned Cooperatives.</description>
	<lastBuildDate>Sun, 20 Jun 2010 09:12:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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 of the Django [...]]]></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 may [...]]]></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 know each [...]]]></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 geek at [...]]]></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> (&#8221;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>Packed House at Northwest Python Day 2009</title>
		<link>http://www.evolvingbits.com/2009/02/01/packed-house-at-northwest-python-day-2009/</link>
		<comments>http://www.evolvingbits.com/2009/02/01/packed-house-at-northwest-python-day-2009/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 00:18:44 +0000</pubDate>
		<dc:creator>Brian Gershon</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Seattle]]></category>
		<category><![CDATA[Web Collective Inc]]></category>

		<guid isPermaLink="false">http://www.evolvingbits.com/?p=52</guid>
		<description><![CDATA[I enjoyed hanging with the local Python crowd yesterday in Seattle for Northwest Python Day 2009.
As usual, Python is popular in many realms.
Who attended?
We started with quick introductions &#8211; a nice mix of folks with some traveling from Portland OR, Vancouver BC and even one from Chicago and DC.  Many folks using Python &#8212; several [...]]]></description>
			<content:encoded><![CDATA[<p>I enjoyed hanging with the local Python crowd yesterday in Seattle for <a href="http://www.seapig.org/NorthwestPythonDay" target="_blank">Northwest Python Day 2009</a>.</p>
<p>As usual, Python is popular in many realms.</p>
<h2>Who attended?</h2>
<p>We started with quick introductions &#8211; a nice mix of folks with some traveling from Portland OR, Vancouver BC and even one from Chicago and DC.  Many folks using Python &#8212; several announcing Python job openings.  People were from various organizations such as University of Washington, NOAA, ONENW, Web Collective, NPower, LexisNexis, Microsoft, Sun, and many interesting companies I didn&#8217;t catch the names of.</p>
<h2>Quick Highlights</h2>
<p>We started with a lightning talk with tips on moving your code toward Python 3.0 (running Python 2.6 with -3 option; using __future__, running 2to3).</p>
<p>Then saw a light-weight web framework called <a href="http://werkzeug.pocoo.org/" target="_blank">Werkzeug</a> &#8211; I like its idea of decorating a Python view function with its URL mapping [e.g. @expose('/') to connect a view with the root of the site].</p>
<p>We then heard about the ease of leveraging <a href="http://buildbot.net/trac" target="_blank">buildbot</a> for testing.</p>
<p>NOAA started the presentations with their CAMEO Chemical modeling application, &#8220;a Pylons-based web app wrapped in a wxPython interface for desktop use.&#8221;  There were various complications making this work cross-platform on both IE and Safari, but overall successful.  Chris has high hopes for upcoming wxWebKit (which wasn&#8217;t quite mature enough at the time they were developing their app), and might consider pyQT or pyGTK for future projects.</p>
<p>University of Washington&#8217;s Beraber was interesting &#8211; a way to offer open source cloud computing (via a Python-based VM) by sharing your computer safely with others, and being able to run programs on many computers around the world.</p>
<p>After lunch, lightning talks resumed with Sphinx, an RST based system for writing documentation for your code (used for Python&#8217;s documentation).</p>
<p>We then saw NodeBox, &#8220;a Mac OS X application that lets you create 2D visuals (static, animated or interactive) using Python programming code and export them as a PDF or a QuickTime movie.&#8221;  I checked out their website &#8212; some cool plugins like modeling of flocks.  You could probably make some very cool desktop wallpapers with this too.</p>
<p>If you&#8217;d like to play with virtualization and open source, <a href="http://cool-st.com/wordpress/" target="_blank">Derek Simkowiak</a> is working on a program called &#8220;vmshell&#8221; that allows you to more easily manage virtual sandboxes.  Management of VMs was mentioned as something missing from many open source VM solutions.</p>
<p>Our first afternoon presentation talked about the benefits of high-level languages like Python and benefits over lower-level languages like C++ or Java.  Mark McWiggins presented good arguments for why organizations may want to consider Python over these other languages.</p>
<p><a href="http://www.sagemath.org/" target="_blank">Sage</a>, and its 5+ million lines of code, offers open source math modeling.  For those that need Mathematica, Magma, Maple, or Matlab power, Sage was impressive &#8212; from interacting with and showing complex math formulas in Python and Javascript, to live 2D/3D plotting, to importing the library into your own Python program and going to town.  One of its innovative features (from a web dev perspective) is writing a math function (in Python) which you want to interact with it on the web &#8212; instead of creating your own web form, you can decorate your function with @interact, which introspects the function parameters and automatically creates a web form for that function.</p>
<p>After having played a bit with Google App Engine, it was nice to hear a real-world experience about using this in a production project.  Web 2.0 apps can be a sweet spot for GAE, though there are differences with other traditional web development methods that may help determine if your app fits GAE or not.  I won an online O&#8217;Reilly book on this topic.</p>
<p>I had seen mention of Cython, but hadn&#8217;t investigated.  Cython is a way to compile your Python code in C code for major speed improvements.  It has some cool profiling features like an interactive web-based code display that uses light-to-dark color-coding to show which Python code lines are the slowest, and allows you to click on the line to see the actual C code that was generated.</p>
<p>The last presentation was by Sun, who are investing in Python (and other languages in addition to Java) due to their popularity by programmers.  They are also investing in Jython (adding more resources than before) to bring this up to latest versions of Python 2.x, and some work on the JVM to support languages other than Java.</p>
<h2>Pycon</h2>
<p><a href="http://us.pycon.org/2009/about/" target="_blank">Registration just opened for PyCon 2009</a> (in March) in Chicago.</p>
<p>I plan on attending this year, hope to see you there!</p>
<h2>Thanks!</h2>
<p>Thank you Seattle Python and the University of Washington for hosting!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evolvingbits.com/2009/02/01/packed-house-at-northwest-python-day-2009/feed/</wfw:commentRss>
		<slash:comments>0</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 are building [...]]]></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>What about Django for Seattle Startup Weekend?</title>
		<link>http://www.evolvingbits.com/2008/01/26/what-about-django-for-seattle-startup-weekend/</link>
		<comments>http://www.evolvingbits.com/2008/01/26/what-about-django-for-seattle-startup-weekend/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 09:07:20 +0000</pubDate>
		<dc:creator>Brian Gershon</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Seattle]]></category>
		<category><![CDATA[Seattle Startup Weekend]]></category>

		<guid isPermaLink="false">http://www.evolvingbits.com/2008/01/26/what-about-django-for-seattle-startup-weekend/</guid>
		<description><![CDATA[We&#8217;ve picked our company product, and have 2 days to finish it during Startup Weekend.
The dev team inventoried its skills and discovered the expected diversity of platforms, skills and languages for the 30+ back-end developers &#8211; PHP, Python, Ruby, and .NET.  What strategy do we use to merge our skills and get the product [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve picked our company product, and have 2 days to finish it during <a href="http://seattle.startupweekend.com/" title="Seattle Startup Weekend" target="_blank">Startup Weekend</a>.</p>
<p>The dev team inventoried its skills and discovered the expected diversity of platforms, skills and languages for the 30+ back-end developers &#8211; PHP, Python, Ruby, and .NET.  What strategy do we use to merge our skills and get the product developed?</p>
<p>I suggest Django for its easy of adoption possibilities among a very diverse technical crowd, and I provide a bit of rationale for others to consider:</p>
<ul>
<li>We&#8217;ve setup a Linux server which likely means LAMP development (PHP, Python, Apache, MySQL) or Ruby on Rails for the final platform this will run on.</li>
<li>All developers could <strong>get setup and be running quickly on all major operating systems</strong> with a standard install of Python, Django and any SQL server one wanted, such as the quick-to-install SQLite.   I plan on developing completely on my laptop, and getting code to the server via subversion updates.</li>
<li>I&#8217;m a strong Python developer who spends my time primarily in Zope and Plone &#8211; and haven&#8217;t yet used Django &#8211; but there are experts in the room, and <strong>anyone who can write an object class and learn some basic Python</strong> can get something up and running &#8211; or at minimum could read someone else&#8217;s code and become productive.  <em>I gained some quick familiarity by reading a Django book on the bus ride home tonight!</em></li>
<li>There are no technology majorities in the group &#8212; but I think everyone ramping up on Ruby on Rails, .NET (if someone brings a Windows Server) or Zope/Plone seem slim for a 2-day event.  <strong>Django seems like only an hour or two away from general productivity. </strong> Plus documentation is on the web.</li>
<li>PHP could also be possibility, but not sure what framework we&#8217;d use.</li>
<li>Ruby on Rails may also fall into the camp of non-Ruby developers being able to hack existing code setup by Ruby on Rails experts, but I still think it may require more learning than we have.</li>
</ul>
<p>I&#8217;ve been enjoying all the conversations, idea brainstorming, and seeing some familiar faces (such as Josh Livni and Brian Dorsey) while also meeting many new people!</p>
<p>What do you think?  Have a look at Django here: <a href="http://www.djangoproject.com/" title="Django" target="_blank">http://www.djangoproject.com/</a></p>
<p>I look forward to seeing what direction we take tomorrow when coding commences!</p>
<p><em>And special thanks to those who stayed late to setup the server, trac and subversion.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.evolvingbits.com/2008/01/26/what-about-django-for-seattle-startup-weekend/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Collaborative GTD for Python and Plone</title>
		<link>http://www.evolvingbits.com/2007/09/21/collaborative-gtd-for-python-and-plone/</link>
		<comments>http://www.evolvingbits.com/2007/09/21/collaborative-gtd-for-python-and-plone/#comments</comments>
		<pubDate>Fri, 21 Sep 2007 15:00:38 +0000</pubDate>
		<dc:creator>Brian Gershon</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.evolvingbits.com/2007/09/21/collaborative-gtd-for-python-and-plone/</guid>
		<description><![CDATA[A roundtrip flight from Seattle to the East Coast is all you need to start your next Python pet project.  (Remember to take some vacation in between though!)
I used this time to start development on a python library for the Getting Things Done (GTD) methodology.  I&#8217;ve been practicing GTD over the last couple [...]]]></description>
			<content:encoded><![CDATA[<p>A roundtrip flight from Seattle to the East Coast is all you need to start your next Python pet project.  (Remember to take some vacation in between though!)</p>
<p>I used this time to start development on a python library for the Getting Things Done (GTD) methodology.  I&#8217;ve been practicing GTD over the last couple of years using a variety of tools, but just haven&#8217;t found the right one &#8211; my current favorite is iGTD (OSX).  There are <a href="http://en.wikipedia.org/wiki/Comparison_of_GTD_software" target="_blank">several others</a>.  I also use tools that have some parallels, like Basecamp.</p>
<p>The GTD apps I&#8217;ve used are missing one major feature. They&#8217;re sophisticated but not open source, which means I can&#8217;t tweak it to do what I <strong>really</strong> want, and have been waiting awhile for some fixes that I need.</p>
<p>The idea is to build a pure python library, which could be used by itself if desired. On top of this we plan to build a Plone 3.0 version.</p>
<p>Currently the Python library (in alpha, licensed under GPL3) handles core GTD tasks and some early task management.  Derek Hoshiko (also an owner at Web Collective, Inc) and I have been brainstorming some ideas for a web-based multi-user version of the GTD framework.</p>
<p>Ultimately, GTD is great for individuals but what might a web-based version of GTD look like in a multi-user team environment, where you could also see and interact with others&#8217; tasks?  Can we use this for our internal team project scheduling, availability, task management, and status reporting?  We plan to find out.</p>
<p>If you&#8217;re interested in collaborating on this project, please contact us.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evolvingbits.com/2007/09/21/collaborative-gtd-for-python-and-plone/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
