<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Chatterbox, Reloaded</title>
	<atom:link href="http://pauleveritt.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://pauleveritt.wordpress.com</link>
	<description>Paul's ramblings about projects and Python/Zope/Plone/Repoze/BFG technologies.</description>
	<lastBuildDate>Fri, 30 Oct 2009 14:09:05 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='pauleveritt.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/b4345850285023fbd98c4a40e02f7cbd?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Chatterbox, Reloaded</title>
		<link>http://pauleveritt.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://pauleveritt.wordpress.com/osd.xml" title="Chatterbox, Reloaded" />
		<item>
		<title>I admit it, Deco looks pretty nice</title>
		<link>http://pauleveritt.wordpress.com/2009/10/30/i-admit-it-deco-looks-pretty-nice/</link>
		<comments>http://pauleveritt.wordpress.com/2009/10/30/i-admit-it-deco-looks-pretty-nice/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 14:09:05 +0000</pubDate>
		<dc:creator>Paul Everitt</dc:creator>
				<category><![CDATA[Plone]]></category>

		<guid isPermaLink="false">http://pauleveritt.wordpress.com/?p=52</guid>
		<description><![CDATA[This post has the jaded volume turned to eleven but even so, I&#8217;m impressed.
I watched the video of Rob Gietema&#8217;s presentation on Deco, the &#8220;new way to manage page layout, composite pages and rich content in Plone 4&#8243;.  I approach the entire topic with cynicism, dread, and exhaustion on a number of fronts.
Well, color me [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=52&subd=pauleveritt&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This post has the jaded volume <a href="http://www.youtube.com/watch?v=EbVKWCpNFhY">turned to eleven</a> but even so, I&#8217;m impressed.</p>
<p>I watched <a href="http://blog.fourdigits.nl/tinymce-and-deco-at-the-plone-conference-2009">the video</a> of <a href="http://blog.fourdigits.nl/robgietema">Rob Gietema&#8217;s</a> presentation on <a href="http://code.google.com/p/plone-deco/">Deco</a>, the &#8220;new way to manage page layout, composite pages and rich content in Plone 4&#8243;.  I approach the entire topic with cynicism, dread, and exhaustion on a number of fronts.</p>
<p>Well, color me intrigued.  I&#8217;ll probably clutch tightly to my bitter, curmudgeonly outlook.  But I must confess to being impressed, in a number of ways.  I think they&#8217;ve done a good job thinking about the problem.  It looks like they&#8217;re going slow and being unafraid to refactor ideas and implementations.  It also has, already, a nice visual appeal along with some clever simplifying assumptions to keep the congitive overload under control.  Finally, this is a hard space to work in, technically, and it seems like they have some mad skillz.</p>
<p>There&#8217;s still a lot of challenge ahead.  The biggest is what I view as the chief paradox confronting Plone.  On one hand, a significant portion of people are fed up with how some of the features are implemented.  But on the other hand, they&#8217;re burned out by a legacy of undead overhauls and don&#8217;t have much patience for revolution.  (Sidebar: my opinion is, I sympathize but The Time Has Come.)</p>
<p>Additionally, while it&#8217;s a lot of work to do the product, it&#8217;s a lot more work to do the &#8220;whole&#8221; product: documentation, bug fixing, ongoing compatibility, performance, and other stuff over the long haul.  Letting Deco have a long gestation period <em>outside</em> the core would be advisable.  The more baked it is, the more legitimate it will feel when added to Plone, and the less resistance from the undead-overhaul-worriers.</p>
<p>So good luck Deco.  If even 2/3 of the features are implemented, but implemented superbly over the long haul, then Plone will have something sweet to hang its hat on.  (All of the above applies equally to <a href="http://maurits.vanrees.org/weblog/archive/2009/10/david-glick-building-content-types-with-dexterity/view?set_language=nl">Dexterity</a>, the new content type system.)</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pauleveritt.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pauleveritt.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pauleveritt.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pauleveritt.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pauleveritt.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pauleveritt.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pauleveritt.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pauleveritt.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pauleveritt.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pauleveritt.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=52&subd=pauleveritt&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pauleveritt.wordpress.com/2009/10/30/i-admit-it-deco-looks-pretty-nice/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/997998127a1b170dadd043e5474ab0db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pauleveritt</media:title>
		</media:content>
	</item>
		<item>
		<title>Congrats new Plone Foundation board</title>
		<link>http://pauleveritt.wordpress.com/2009/10/30/congrats-new-plone-foundation-board/</link>
		<comments>http://pauleveritt.wordpress.com/2009/10/30/congrats-new-plone-foundation-board/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 13:36:06 +0000</pubDate>
		<dc:creator>Paul Everitt</dc:creator>
				<category><![CDATA[Plone]]></category>

		<guid isPermaLink="false">http://pauleveritt.wordpress.com/?p=48</guid>
		<description><![CDATA[Strong ongoing board of directors and big turnaround on finances make Plone's community-owned non-profit quite a success story.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=48&subd=pauleveritt&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Per <a href="http://plone.org/foundation/newsitems/plone-foundation-board-election-results-2009">the announcement</a>, congrats to the new board of directors for the Plone Foundation.  I really, really like that lineup of people. It&#8217;s amazing, though, that there were at least five others in the election that would also have been strong to have on the board.</p>
<p>A particular thanks to Hanno Schlichting for once again conducting the election.  I have utter confidence in the things he does, be it Plone Foundation process stuff or gradually untangling years of technical cruft as part of his Plone 5 release manager duties.</p>
<p>I saw the minutes of the <a href="http://maurits.vanrees.org/weblog/archive/2009/10/plone-foundation-meeting">Plone Foundation annual member&#8217;s meeting</a> (thanks Maurits for the writeup.)  Toby reported that, after spending half of the original CA donation of $100k, the PF in one year has its bank account back to the original amount.  This is primarily due to the <a href="http://plone.org/foundation/newsitems/plone-foundation-launches-sponsorship-program-for-plone-consulting-firms">sponsorship plan</a> that Jon Stahl helped kick off, tied to the excellent work the Plone.net team at Pilot Sytems (plus Reinout, plus others) have done over the years.</p>
<p>The price point for sponsorship makes it easy to get companies in, and the allocation of funds (e.g. release managers, promotion) makes it very easy to justify.  Since the price point is a yearly fee, I suspect that you&#8217;ll see another $50k come in during the next half year, meaning&#8230;</p>
<p>&#8230;the Plone Foundation is a very successful community-managed outfit.  Congrats to the previous board for orchestrating this turnaround on finances, and here&#8217;s to a good 2010 for the Plone Foundation.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pauleveritt.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pauleveritt.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pauleveritt.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pauleveritt.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pauleveritt.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pauleveritt.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pauleveritt.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pauleveritt.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pauleveritt.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pauleveritt.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=48&subd=pauleveritt&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pauleveritt.wordpress.com/2009/10/30/congrats-new-plone-foundation-board/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/997998127a1b170dadd043e5474ab0db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pauleveritt</media:title>
		</media:content>
	</item>
		<item>
		<title>Why does Planet Python bork my WordPress links?</title>
		<link>http://pauleveritt.wordpress.com/2009/07/22/why-does-planet-python-bork-my-wordpress-links/</link>
		<comments>http://pauleveritt.wordpress.com/2009/07/22/why-does-planet-python-bork-my-wordpress-links/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 14:56:40 +0000</pubDate>
		<dc:creator>Paul Everitt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://pauleveritt.wordpress.com/?p=45</guid>
		<description><![CDATA[Dear Lazyweb,
Marius (and others) reported that Planet Python screws up the links on my articles.  Instead of a full link to the article, it instead does a href="".  Looking at my RSS feed, I see that it correctly has link&#62;http://pauleveritt.wordpress.com/2009/07/15/kudos-to-malthe-for-chameleon/ in the item entries.  My feed URL passes the validator test as well.
As you [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=45&subd=pauleveritt&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Dear Lazyweb,</p>
<p>Marius (and others) <a href="http://pauleveritt.wordpress.com/2009/07/14/ternary-like-operation-in-zpt/#comment-41">reported</a> that <a href="http://planet.python.org/">Planet Python</a> screws up the links on my articles.  Instead of a full link to the article, it instead does <code>a href=""</code>.  Looking at <a href="http://pauleveritt.wordpress.com/feed/">my RSS feed</a>, I see that it correctly has <code>link&gt;http://pauleveritt.wordpress.com/2009/07/15/kudos-to-malthe-for-chameleon/</code> in the <code>item</code> entries.  My feed URL passes the validator test as well.</p>
<p>As you well know, Lazyweb, I switched to WordPress (hosted!) so I wouldn&#8217;t have to think, as I&#8217;m not very good at that particular trait.  Any ideas on the cause of this?</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pauleveritt.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pauleveritt.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pauleveritt.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pauleveritt.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pauleveritt.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pauleveritt.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pauleveritt.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pauleveritt.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pauleveritt.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pauleveritt.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=45&subd=pauleveritt&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pauleveritt.wordpress.com/2009/07/22/why-does-planet-python-bork-my-wordpress-links/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/997998127a1b170dadd043e5474ab0db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pauleveritt</media:title>
		</media:content>
	</item>
		<item>
		<title>Early impressions on modwsgi in production</title>
		<link>http://pauleveritt.wordpress.com/2009/07/21/early-impressions-on-modwsgi-in-production/</link>
		<comments>http://pauleveritt.wordpress.com/2009/07/21/early-impressions-on-modwsgi-in-production/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 15:59:36 +0000</pubDate>
		<dc:creator>Paul Everitt</dc:creator>
				<category><![CDATA[KARL]]></category>
		<category><![CDATA[WSGI]]></category>

		<guid isPermaLink="false">http://pauleveritt.wordpress.com/?p=42</guid>
		<description><![CDATA[At the end of May we made the KARL cutover from KARL2 to KARL3.  We have now had almost 8 weeks in production, so we can form impressions about some of the decisions.
For example, we&#8217;re using modwsgi as a WSGI server.  In a way, this was a surprising decision.  Chris and I were both a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=42&subd=pauleveritt&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>At the end of May we made the <a href="http://www.karlproject.org/">KARL</a> cutover from KARL2 to KARL3.  We have now had almost 8 weeks in production, so we can form impressions about some of the decisions.</p>
<p>For example, we&#8217;re using <a href="http://code.google.com/p/modwsgi/">modwsgi</a> as a WSGI server.  In a way, this was a surprising decision.  Chris and I were both a bit skeptical about whether it was a risk worth taking, as we hadn&#8217;t used it &#8220;in anger&#8221; beyond the repoze.org site.  As somewhat a throwaway test, I set it up on the test site we used for OSI to do the user acceptance testing for the 15 or so milestone deliverables on KARL, but with the idea that it wasn&#8217;t a permanent decision.</p>
<p>By the time we setup the deployment server, we had months of living with modwsgi under our belt, somewhat by accident.  Far more important, we added <a href="http://shane.willowrise.com/">Shane Hathaway</a> to the project.  Like Chris Rossi, Shane has been a boon for KARL in many ways.  In this case, Shane had <a href="http://shane.willowrise.com/archives/the-fastest-wsgi-server-for-zope/">experience with modwsgi</a> and said he would make sure we could stand behind it.</p>
<p>So we put it into production.  We&#8217;re running on an 8-core box setup as a Xen server, with the OSI instance getting 3 CPUs.  We started with modwsgi setup to run 2 BFG application processes (and thus ZEO clients), each with 2 threads.  modwsgi gave us some simplification: we didn&#8217;t need Apache/mod_proxy + BFG/Paster, with the latter managed by supervisor, possibly with a load balancer in between.  Instead, we let modwsgi in daemon mode handle that.</p>
<p>We also found that we could upgrade the software on the server, send a -GRACEFUL restart to Apache, and have a zero-downtime update to the server.  Which was nice.</p>
<p>Later, though, we found a really useful benefit to having modwsgi in the equation.  We then found that our LiveSearch implementation (and another part of the application) were slower (up to a second for a request) than other parts.  So we put in an Apache alias that matched on those URL types and sent them to a separately-configured BFG instance we call the &#8220;ghetto&#8221;.  This instance is primarily for catalog requests, so we changed the ZEO cache to be *very* high, but we also flush from the cache on each request any object that isn&#8217;t in the catalog.  This has been a boon.</p>
<p>I have an interest in looking later at some more options we gain from modwsgi.  For example, file delivery using <a href="http://www.python.org/dev/peps/pep-0333/#optional-platform-specific-file-handling">wsgi.file_wrapper</a> (which modwsgi <a href="http://code.google.com/p/modwsgi/issues/detail?id=132">fixed</a> its implementation <a href="http://groups.google.com/group/modwsgi/browse_frm/thread/e7111816e70d236a">bugs</a> in later releases.)  Also, modwsgi has some facilities for setting limits on the life of a request.</p>
<p>Still, regarding just the basics, we haven&#8217;t had much of a hitch at all.  So far, so good.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pauleveritt.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pauleveritt.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pauleveritt.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pauleveritt.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pauleveritt.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pauleveritt.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pauleveritt.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pauleveritt.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pauleveritt.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pauleveritt.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=42&subd=pauleveritt&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pauleveritt.wordpress.com/2009/07/21/early-impressions-on-modwsgi-in-production/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/997998127a1b170dadd043e5474ab0db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pauleveritt</media:title>
		</media:content>
	</item>
		<item>
		<title>Belated happy first birthday, BFG</title>
		<link>http://pauleveritt.wordpress.com/2009/07/21/belated-happy-first-birthday-bfg/</link>
		<comments>http://pauleveritt.wordpress.com/2009/07/21/belated-happy-first-birthday-bfg/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 15:07:50 +0000</pubDate>
		<dc:creator>Paul Everitt</dc:creator>
				<category><![CDATA[BFG]]></category>
		<category><![CDATA[WSGI]]></category>

		<guid isPermaLink="false">http://pauleveritt.wordpress.com/?p=39</guid>
		<description><![CDATA[While I was on vacation, Chris McDonough wrapped up work on BFG 1.0.  The BFG elevator speech hits the nail on the head:
BFG is a &#8220;pay only for what you eat&#8221; Python web framework. You can get started easily and learn new concepts as you go, and only if you need them. It&#8217;s simple, well [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=39&subd=pauleveritt&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>While I was on vacation, Chris McDonough <a href="http://plope.com/Members/chrism/repoze-bfg-1.0">wrapped up</a> work on <a href="http://bfg.repoze.org/">BFG</a> 1.0.  The BFG elevator speech hits the nail on the head:</p>
<div style="margin-left:2em;font-style:italic;">BFG is a &#8220;pay only for what you eat&#8221; Python web framework. You can get started easily and learn new concepts as you go, and only if you need them. It&#8217;s simple, well tested, well documented, and fast.</div>
<p>I&#8217;ve used BFG on <a href="http://www.karlproject.org/">KARL</a> for the last 9 or so months and have found almost everything about it to be a relief.  With this 1.0 release, BFG has achieved a sweet spot of stability and maturity combined with ongoing vitality. While BFG is particularly attractive to Zope developers looking for a modern alternative, it is also attractive more generally to Python web developers.  It&#8217;s hard to imagine there still being unmet needs, but BFG stands out for people who take the points in the elevator speech above seriously.</p>
<p>All of this due to the massive effort Chris put into it.  Not just making it, but mega-documenting it, 100% coverage on tests, answering questions, sample applications, keeping everything up to date on every change, etc.  There are quite a few people participating in BFG, but these efforts are generously given because Chris is there to integrate them.</p>
<p>So congrats Chris, and thanks.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pauleveritt.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pauleveritt.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pauleveritt.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pauleveritt.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pauleveritt.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pauleveritt.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pauleveritt.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pauleveritt.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pauleveritt.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pauleveritt.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=39&subd=pauleveritt&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pauleveritt.wordpress.com/2009/07/21/belated-happy-first-birthday-bfg/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/997998127a1b170dadd043e5474ab0db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pauleveritt</media:title>
		</media:content>
	</item>
		<item>
		<title>Kudos to Malthe for Chameleon</title>
		<link>http://pauleveritt.wordpress.com/2009/07/15/kudos-to-malthe-for-chameleon/</link>
		<comments>http://pauleveritt.wordpress.com/2009/07/15/kudos-to-malthe-for-chameleon/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 13:01:24 +0000</pubDate>
		<dc:creator>Paul Everitt</dc:creator>
				<category><![CDATA[BFG]]></category>

		<guid isPermaLink="false">http://pauleveritt.wordpress.com/?p=36</guid>
		<description><![CDATA[A blog post that I&#8217;ve thought about many times and, shamefully, never quite got around to posting.
For the last 18+ months, Malthe Borch has been working on templating for Python.  Not the traditional mode of blank-slate-write-my-own, boy-this-is-fun.  But instead, superfast implementations of existing templating languages (ZPT, Genshi) with lots of tests and rapid bug fixing.
First [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=36&subd=pauleveritt&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A blog post that I&#8217;ve thought about many times and, shamefully, never quite got around to posting.</p>
<p>For the last 18+ months, <a href="http://mockit.blogspot.com/">Malthe Borch</a> has been working on templating for Python.  Not the traditional mode of blank-slate-write-my-own, boy-this-is-fun.  But instead, superfast implementations of existing templating languages (ZPT, Genshi) with lots of tests and rapid bug fixing.</p>
<p>First with <a href="http://pypi.python.org/pypi/z3c.pt">z3c.pt</a> and then Chameleon (<a href="http://pypi.python.org/pypi/chameleon.core">core</a> and <a href="http://pypi.python.org/pypi/chameleon.zpt">zpt</a>), the amount of work he has done is staggering.  Look at the changelogs on those PyPI pages: 26 releases for z3c.pt, 41 for chameleon.core, 19 for chameleon.zpt, and 18 for sourcecodegen.  Big-time numbers.</p>
<p>If you&#8217;ve followed what he&#8217;s done, it&#8217;s even more than that.  He&#8217;s done quite a number of &#8220;well, that&#8217;s not working out, let&#8217;s discuss a re-implementation&#8221; (e.g. ditching lxml as a troublesome dependency via libxml2) efforts.  He spent a ton of time working with <a href="http://sidnei-da-silva.blogspot.com/">Sidnei da Silva</a> on unit tests and test breakage for ZPT conformance.  He participates heavily in discussions not just about Chameleon, but also projects that interact with it or depend on it (Repoze, Plone, Zope.)</p>
<p>Our <a href="http://www.karlproject.org/">KARL</a> project has been based on Chameleon from the beginning, ever since <a href="http://plope.com/">Chris McDonough</a> went down the rabbit hole one weekend, off the clock, experimenting with a port to then-nascent BFG. Basing an application rewrite on a new template implementation would normally be a red flag.  But with Malthe&#8217;s attention to detail (plus Chris working on Chameleon too), everything was very smooth.  We got the huge benefit without much downside.</p>
<p>We as a community have some core software that we all use, over and over, without much thought to its provenance.  A lot of it comes from Jim Fulton (ZODB, buildout, etc.)  Chameleon has become like that.  It&#8217;s almost like the electricity: we all use it, it&#8217;s super-reliable, and we&#8217;ll never appreciate it enough until something goes wrong.</p>
<p>Here&#8217;s to some rightful appreciation for Malthe&#8217;s work.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pauleveritt.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pauleveritt.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pauleveritt.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pauleveritt.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pauleveritt.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pauleveritt.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pauleveritt.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pauleveritt.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pauleveritt.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pauleveritt.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=36&subd=pauleveritt&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pauleveritt.wordpress.com/2009/07/15/kudos-to-malthe-for-chameleon/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/997998127a1b170dadd043e5474ab0db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pauleveritt</media:title>
		</media:content>
	</item>
		<item>
		<title>Update on KARL: Migration, enhancements</title>
		<link>http://pauleveritt.wordpress.com/2009/07/14/update-on-karl-migration-enhancements/</link>
		<comments>http://pauleveritt.wordpress.com/2009/07/14/update-on-karl-migration-enhancements/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 14:47:08 +0000</pubDate>
		<dc:creator>Paul Everitt</dc:creator>
				<category><![CDATA[KARL]]></category>

		<guid isPermaLink="false">http://pauleveritt.wordpress.com/?p=32</guid>
		<description><![CDATA[In late May I made a brief blog post announcing KARL prior to the Plone Symposium talk I gave.  Since then, quite a bit has gone on with KARL:

The migration went super-smooth.  We did 5 trial runs of gradually larger audiences, fixing bugs in between.  By the time of launch, Chris Rossi and Lars Nolan [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=32&subd=pauleveritt&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In late May I made a brief blog post <a href="http://pauleveritt.wordpress.com/2009/05/21/some-info-about-karl-the-project-ive-been-working-on/">announcing KARL</a> prior to the Plone Symposium talk I gave.  Since then, quite a bit has gone on with <a href="http://www.karlproject.org/">KARL</a>:</p>
<ul>
<li>The migration went super-smooth.  We did 5 trial runs of gradually larger audiences, fixing bugs in between.  By the time of launch, Chris Rossi and Lars Nolan had the process down pat.  No surprises.</li>
<li>We did a KARL 3.1 development cycle in support of hosting KARL for 2 more organizations.  In this process we did a good amount of refactoring, including parameterizing some customization points that previously required overriding via ZCML.</li>
<li>Shane added an in-the-core People Directory.</li>
<li>Fixed bugs that got overlooked.  This also went very smooth: most bugs got fixed within a day or two, and none piled up for more than a week, even the small ones.</li>
<li>During the next two weeks, we are migrating the other two organizations from their existing KARL2 over to their new KARL3.  All hosted in the same environment with OSI, which makes operations far better.</li>
<li>We&#8217;re also in the 3.2 development cycle.  We updated TinyMCE and landed profile picture resizing (via PIL).  We&#8217;re doing spellchecking, improvements to the email alerting, and a good number of other enhancements during the next few weeks.</li>
<li>There are also plans for a big KARL meeting at OSI later this month, to include some other organizations.</li>
</ul>
<p>All in all, we&#8217;ve really hit our stride.  Not just on development, but increasingly on operations.  We&#8217;re getting into a mode that is very measured, methodical, quality, responsive, etc.  As Jeffrey Shell always said: no alarms, no surprises.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pauleveritt.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pauleveritt.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pauleveritt.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pauleveritt.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pauleveritt.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pauleveritt.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pauleveritt.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pauleveritt.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pauleveritt.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pauleveritt.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=32&subd=pauleveritt&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pauleveritt.wordpress.com/2009/07/14/update-on-karl-migration-enhancements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/997998127a1b170dadd043e5474ab0db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pauleveritt</media:title>
		</media:content>
	</item>
		<item>
		<title>Ternary-like operation in ZPT (updated)</title>
		<link>http://pauleveritt.wordpress.com/2009/07/14/ternary-like-operation-in-zpt/</link>
		<comments>http://pauleveritt.wordpress.com/2009/07/14/ternary-like-operation-in-zpt/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 14:21:06 +0000</pubDate>
		<dc:creator>Paul Everitt</dc:creator>
				<category><![CDATA[BFG]]></category>

		<guid isPermaLink="false">http://pauleveritt.wordpress.com/?p=29</guid>
		<description><![CDATA[Warning: blog abuse.  Just a permanent reminder to self.
A while back I asked Tres how to do a ternary-like operation in ZPT.  I needed to assign a value for a CSS class, where the value was one string in one case and another string for all other cases.
Tres gave me:
&#60;div
class="blogEntry ${repeat['entry'].start and 'noborder' or ''}"
tal:repeat="entry [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=29&subd=pauleveritt&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Warning: blog abuse.  Just a permanent reminder to self.</p>
<p>A while back I asked Tres how to do a ternary-like operation in ZPT.  I needed to assign a value for a CSS class, where the value was one string in one case and another string for all other cases.</p>
<p>Tres gave me:</p>
<p><code>&lt;div<br />
class="blogEntry ${repeat['entry'].start and 'noborder' or ''}"<br />
tal:repeat="entry entries"&gt;</code></p>
<p>(Updated July 15) Malthe wrote in a comment that he just changed Chameleon to allow the ternary syntax of <code>${'foo' if bar else 'boo'}</code> ).  Look in the sourcecodegen 0.6.11 release.)</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pauleveritt.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pauleveritt.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pauleveritt.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pauleveritt.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pauleveritt.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pauleveritt.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pauleveritt.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pauleveritt.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pauleveritt.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pauleveritt.wordpress.com/29/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=29&subd=pauleveritt&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pauleveritt.wordpress.com/2009/07/14/ternary-like-operation-in-zpt/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/997998127a1b170dadd043e5474ab0db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pauleveritt</media:title>
		</media:content>
	</item>
		<item>
		<title>Back from vacation, KARL install docs fixed</title>
		<link>http://pauleveritt.wordpress.com/2009/07/14/back-from-vacation-karl-install-docs-fixed/</link>
		<comments>http://pauleveritt.wordpress.com/2009/07/14/back-from-vacation-karl-install-docs-fixed/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 14:12:08 +0000</pubDate>
		<dc:creator>Paul Everitt</dc:creator>
				<category><![CDATA[KARL]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://pauleveritt.wordpress.com/?p=26</guid>
		<description><![CDATA[Got back from 9 days with my wife&#8217;s family in France.  Wonderful vacation, especially for the kids (who went before us and stayed after us.)  We both got a head cold just before returning, so the two flights and aftermath were south of pleasant.
While out, longtime-friend Seb Bacon pointed out that the installation docs for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=26&subd=pauleveritt&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Got back from 9 days with my wife&#8217;s family in France.  Wonderful vacation, especially for the kids (who went before us and stayed after us.)  We both got a head cold just before returning, so the two flights and aftermath were south of pleasant.</p>
<p>While out, longtime-friend Seb Bacon pointed out that the installation docs for <a href="http://www.karlproject.org/">KARL</a> had bitrotted, a point which Chris had to cover for me on the latest <a href="http://blog.repoze.org/repozecast-4-20090710.html">repozecast</a>.  Now fixed, and sorry!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pauleveritt.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pauleveritt.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pauleveritt.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pauleveritt.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pauleveritt.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pauleveritt.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pauleveritt.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pauleveritt.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pauleveritt.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pauleveritt.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=26&subd=pauleveritt&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pauleveritt.wordpress.com/2009/07/14/back-from-vacation-karl-install-docs-fixed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/997998127a1b170dadd043e5474ab0db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pauleveritt</media:title>
		</media:content>
	</item>
		<item>
		<title>Fun and profit with middleware</title>
		<link>http://pauleveritt.wordpress.com/2009/06/03/fun-and-profit-with-middleware/</link>
		<comments>http://pauleveritt.wordpress.com/2009/06/03/fun-and-profit-with-middleware/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 19:32:16 +0000</pubDate>
		<dc:creator>Paul Everitt</dc:creator>
				<category><![CDATA[KARL]]></category>
		<category><![CDATA[WSGI]]></category>

		<guid isPermaLink="false">http://pauleveritt.wordpress.com/?p=23</guid>
		<description><![CDATA[Yesterday we were working on the KARL project, doing some post-deployment housekeeping.  Specifically, we had a checkout of the templates that had a local customization (injecting Google Analytics) that we didn&#8217;t want to check in.  At least not to the software repository itself.  We wanted building a demo KARL to have no analytics, certainly not [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=23&subd=pauleveritt&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Yesterday we were working on the <a href="http://www.karlproject.org/">KARL</a> project, doing some post-deployment housekeeping.  Specifically, we had a checkout of the templates that had a local customization (injecting Google Analytics) that we didn&#8217;t want to check in.  At least not to the software repository itself.  We wanted building a demo KARL to have no analytics, certainly not OSI&#8217;s account.</p>
<p>The most logical thing would have been to throw ZPT at it and get a little snippet of HTML to jam in just before closing the body tag.  But that would mean going to a number of places and injecting calls, plus we&#8217;d have to grab the configuration data from somewhere for the right snippet.</p>
<p>Tres and Chris Rossi argued for middleware: something that would watch the outgoing HTML and inject Google Analytics in the appropriate circumstances.  An hour later, Tres had written <a href="http://svn.repoze.org/repoze.urchin/trunk/README.txt">repoze.urchin</a> that parameterized in the Paste configuration file the data, then hacked the HTML on the way out.</p>
<p>When to use and not use middleware is an art that I&#8217;m still learning about.  The biggest two rules appear to be, don&#8217;t solve a problem with middleware if the application won&#8217;t run without it, or if the middleware requires access to information inside the application.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pauleveritt.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pauleveritt.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pauleveritt.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pauleveritt.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pauleveritt.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pauleveritt.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pauleveritt.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pauleveritt.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pauleveritt.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pauleveritt.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pauleveritt.wordpress.com&blog=5206833&post=23&subd=pauleveritt&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pauleveritt.wordpress.com/2009/06/03/fun-and-profit-with-middleware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/997998127a1b170dadd043e5474ab0db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pauleveritt</media:title>
		</media:content>
	</item>
	</channel>
</rss>