<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.jazkarta.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://blog.jazkarta.com/wp-atom.php">
	<title type="text">Jazkarta Blog</title>
	<subtitle type="text">Creating web applications with Python, Plone, Pyramid and Django</subtitle>

	<updated>2013-05-10T22:00:21Z</updated>

	<link rel="alternate" type="text/html" href="http://blog.jazkarta.com" />
	<id>http://blog.jazkarta.com/feed/atom/</id>
	

	<generator uri="http://wordpress.com/">WordPress.com</generator>
<link rel="search" type="application/opensearchdescription+xml" href="http://blog.jazkarta.com/osd.xml" title="Jazkarta Blog" />
<link rel="search" type="application/opensearchdescription+xml" href="http://wordpress.com/opensearch.xml" title="WordPress.com" />
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.jazkarta.com/JazkartaBlog" /><feedburner:info uri="jazkartablog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://blog.jazkarta.com/?pushpress=hub" /><geo:lat>42.364347</geo:lat><geo:long>-71.104319</geo:long><feedburner:emailServiceId>JazkartaBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
		<author>
			<name>Sally Kleinfeldt</name>
					</author>
		<title type="html"><![CDATA[Plone+Salesforce: What&#8217;s Next?]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.jazkarta.com/~r/JazkartaBlog/~3/PqPYi0dV_cs/" />
		<id>http://blog.jazkarta.com/?p=731</id>
		<updated>2013-05-10T22:00:20Z</updated>
		<published>2013-05-10T22:00:20Z</published>
		<category scheme="http://blog.jazkarta.com" term="Conferences" /><category scheme="http://blog.jazkarta.com" term="Content Management Systems" /><category scheme="http://blog.jazkarta.com" term="Plone" /><category scheme="http://blog.jazkarta.com" term="Salesforce" />		<summary type="html"><![CDATA[A big thank you to the Salesforce Foundation for inviting me to contribute a post on Plone+Salesforce integration to their blog. It was fun to reacquaint myself with all the tools and learn what&#8217;s new. Timely too, since we have just started work on a new Plone site for The Mountaineers which will include integration [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&#038;blog=11374782&#038;post=731&#038;subd=jazkarta&#038;ref=&#038;feed=1" width="1" height="1" />]]></summary>
		<content type="html" xml:base="http://blog.jazkarta.com/2013/05/10/plonesalesforce-whats-next/">&lt;p&gt;&lt;a href="http://blogs.salesforcefoundation.org/2013/05/07/how-to-integrate-plone-cms-and-salesforce/"&gt;&lt;img class="size-full wp-image-732 alignright" alt="Plone Plus Salesforce" src="http://jazkarta.files.wordpress.com/2013/05/plonesalesforce.png?w=600"   /&gt;&lt;/a&gt;A big thank you to the &lt;a title="Salesforce Foundation " href="http://www.salesforcefoundation.org/"&gt;Salesforce Foundation&lt;/a&gt; for inviting me to contribute a &lt;a title="How to Integrate Plone CMS and Salesforce" href="http://blogs.salesforcefoundation.org/2013/05/07/how-to-integrate-plone-cms-and-salesforce/"&gt;post on Plone+Salesforce integration&lt;/a&gt; to their blog. It was fun to reacquaint myself with all the tools and learn what&amp;#8217;s new. Timely too, since we have just started work on a new Plone site for &lt;a title="The Mountaineers" href="http://www.mountaineers.org"&gt;The Mountaineers&lt;/a&gt; which will include integration of all their custom content with Salesforce.com. We are working on this project in partnership with &lt;a title="Percolator Consulting" href="http://percolatorconsulting.com/"&gt;Percolator Consulting&lt;/a&gt;. They are engagement strategists and Salesforce specialists and are creating the CRM back end while we are creating the Plone site.&lt;/p&gt;
&lt;p&gt;In the process of writing and discussing this post, I discovered that David Glick, who is working on The Mountaineers project with us, and Jason Lantz, from the &lt;a href="http://www.innocenceproject.org/"&gt;Innocence Project&lt;/a&gt;, were having similar thoughts about the Plone+Salesforce toolkit. This week we had a chat to explore ways in which we might collaborate.&lt;/p&gt;
&lt;p&gt;There are two main areas in need of improvement.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Salesforce.com API integration &amp;#8211; The current Python library used by Plone is &lt;a title="Beatbox Python Library" href="https://pypi.python.org/pypi/beatbox"&gt;Beatbox&lt;/a&gt;, which is a wrapper for the Salesforce.com SOAP API. We now have &lt;a title="Simple Salesforce" href="https://pypi.python.org/pypi/simple-salesforce/"&gt;Simple Salesforce&lt;/a&gt;, a Python library providing a low level interface to the Salesforce.com REST API (it returns a dictionary of the API&amp;#8217;s JSON response).  There is also a new socket-based &lt;a title="Salesforce.com Streaming API" href="http://www.salesforce.com/us/developer/docs/api_streaming/"&gt;streaming API&lt;/a&gt;. David and Jason are evaluating replacing Beatbox with one of these more modern components.&lt;/li&gt;
&lt;li&gt;Message queuing &amp;#8211; The current set of Plone+Salesforce tools rely on real-time communication with Salesforce.com, which slows performance and does not recover gracefully from network errors. A message queuing approach is sorely needed, where API requests can be queued for delivery and automatically retried. David and Jason are evaluating our options for Python message queuing. This includes but is not limited to &lt;a title="plone.app.async" href="https://pypi.python.org/pypi/plone.app.async"&gt;plone.app.async&lt;/a&gt;. We would like the Plone implementation to build on a pure Python layer that could be used in any Python web framework (such as Django or Pyramid).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These items are critical to the success of The Mountaineers&amp;#8217; and the Innocence Project&amp;#8217;s Plone+Salesforce integrations. In both cases the volume of API calls will be great enough that asynchronous communication is a must-have. Over the next few weeks we hope to create a plan that our two projects can collaborate on, for drastically improving the Plone+Salesforce infrastructure. This will benefit the entire Plone+Salesforce ecosystem &amp;#8211; for example, the message queuing system could be used as the basis for a form-to-Salesforce solution that is more responsive and robust.&lt;/p&gt;
&lt;p&gt;We would also like to improve the administrative tools that are available. Site admins will need a control panel that allows them to monitor and retry messages in the queue. Down the road it would be great to provide a way for integrators to define Plone to Salesforce content mappings through the web. Today it is necessary to do Python development to implement anything other than a fairly simple Plone+Salesforce web-to-lead form.&lt;/p&gt;
&lt;p&gt;Our goal is to flesh out a plan by June 5th, when David, Jason and I will all be at &lt;a title="Plone Symposium Midwest" href="https://midwest.plonesymp.org/"&gt;Plone Symposium Midwest&lt;/a&gt;. Please contact me if you&amp;#8217;d like to join our conversations, and maybe even sprint on an improved Plone+Salesforce infrastructure!&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jazkarta.wordpress.com/731/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jazkarta.wordpress.com/731/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&amp;#038;blog=11374782&amp;#038;post=731&amp;#038;subd=jazkarta&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=PqPYi0dV_cs:9K_YTwIfYSs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=PqPYi0dV_cs:9K_YTwIfYSs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=PqPYi0dV_cs:9K_YTwIfYSs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=PqPYi0dV_cs:9K_YTwIfYSs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=PqPYi0dV_cs:9K_YTwIfYSs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=PqPYi0dV_cs:9K_YTwIfYSs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JazkartaBlog/~4/PqPYi0dV_cs" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.jazkarta.com/2013/05/10/plonesalesforce-whats-next/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.jazkarta.com/2013/05/10/plonesalesforce-whats-next/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.jazkarta.com/2013/05/10/plonesalesforce-whats-next/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Sally Kleinfeldt</name>
					</author>
		<title type="html"><![CDATA[Responsive Design Made Easy with Plone]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.jazkarta.com/~r/JazkartaBlog/~3/tDX8Iw-0fmw/" />
		<id>http://blog.jazkarta.com/?p=702</id>
		<updated>2012-12-20T22:02:51Z</updated>
		<published>2012-12-20T22:02:51Z</published>
		<category scheme="http://blog.jazkarta.com" term="Diazo" /><category scheme="http://blog.jazkarta.com" term="Mobile" /><category scheme="http://blog.jazkarta.com" term="Plone" /><category scheme="http://blog.jazkarta.com" term="Responsive Design" />		<summary type="html"><![CDATA[Last week Marianne Kay tweeted that the Dumbarton Oaks site was a &#8220;beautiful example of responsive design&#8221;. (Thanks Marianne!) Kudos for the beautiful Dumbarton Oaks graphic design go to the design firm Might &#38; Main. But kudos for the responsive behavior go to Plone and the Plone community, which made implementation easy. Here&#8217;s how we [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&#038;blog=11374782&#038;post=702&#038;subd=jazkarta&#038;ref=&#038;feed=1" width="1" height="1" />]]></summary>
		<content type="html" xml:base="http://blog.jazkarta.com/2012/12/20/responsive-design-made-easy-with-plone/">&lt;p&gt;Last week &lt;a href="https://twitter.com/marianne_ua/status/278439307738480641"&gt;Marianne Kay tweeted&lt;/a&gt; that the &lt;a title="Dumbarton Oaks" href="http://www.doaks.org"&gt;Dumbarton Oaks&lt;/a&gt; site was a &amp;#8220;beautiful example of responsive design&amp;#8221;. (Thanks Marianne!) Kudos for the beautiful Dumbarton Oaks graphic design go to the design firm &lt;a title="Might &amp;amp; Main" href="http://www.might-main.com/"&gt;Might &amp;amp; Main&lt;/a&gt;. But kudos for the responsive behavior go to Plone and the Plone community, which made implementation easy. Here&amp;#8217;s how we did it.&lt;/p&gt;
&lt;p&gt;A responsive design provides an optimal viewing experience across a wide range of devices, from large desktop monitors to mobile phones. It uses CSS3 media queries, fluid, proportion-based grids, and flexible images to adapt the layout to the browser width. Normally, adding responsiveness to a website&amp;#8217;s design means multiplying theming time by a factor of 2 or 3. But for the Dumbarton Oaks site responsiveness didn&amp;#8217;t add much time because we used Plone&amp;#8217;s built-in &lt;a title="Diazo" href="http://diazo.org"&gt;Diazo&lt;/a&gt; theming tool and started with a theme that provided responsive behavior out of the box. We didn&amp;#8217;t have to write the code that (for example) makes images re-size, portlets change position, and menu tabs transform into drop downs for smaller screens. The Plone UI/CSS integration was already done for us.&lt;/p&gt;
&lt;p&gt;Diazo is a fantastic tool that lets you map dynamic web page content from any CMS or web application into an HTML design. The mapping is done via a set of rules that define how to move elements from the content page into placeholders in the theme. Plone provides nicely integrated Diazo theming, soon to get even better with a through-the-web theme editor that will come with Plone 4.3. You can see a preview of it in this &lt;a title="Diazo theme editor demo" href="http://willrantforbeer.com/post/23672738069/a-short-screencast-of-the-diazo-theme-editor"&gt;screencast made by Eric Steele&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here is our recommended Diazo theming process.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Choose a Diazo Plone theme that provides the desired responsive behavior. For the Dumbarton Oaks project we used &lt;a title="beyondskins.responsive Plone theme" href="http://plone.org/products/beyondskins.responsive"&gt;beyondskins.responsive&lt;/a&gt; by &lt;a title="Simples Consultoria" href="http://www.simplesconsultoria.com.br/"&gt;Simples Consultoria&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Create a static theme package to contain the designer&amp;#8217;s HTML templates (including header and footer code), CSS, Javascript, and graphic assets. Diazo themes are pure HTML/CSS, so there is no need for designers to learn a special templating language.&lt;/li&gt;
&lt;li&gt;Have the designer base his or her HTML templates on the ones provided in the responsive theme.&lt;/li&gt;
&lt;li&gt;Add CSS files to the static theme that provide the responsive UI (from the responsive theme package), the Plone editing interface, IE fixes, and any special features provided by add-ons that are used on the site. Extract the contents of these files from the CSS that Plone serves with all products installed. Plone&amp;#8217;s large CSS payload can be significantly pruned, only provide what&amp;#8217;s needed.&lt;/li&gt;
&lt;li&gt;To style the HTML, have the designer supplement this CSS in a way that doesn&amp;#8217;t interfere with necessary UI elements or harm the responsiveness. It is helpful to add this graphic-design-specific CSS in a separate file.&lt;/li&gt;
&lt;li&gt;Apply the static theme to the Plone site with Diazo rules.&lt;/li&gt;
&lt;li&gt;Plone’s markup consistency and quality is a huge benefit during this process. Just give the designer sample HTML and let them do what’s needed in the theme&amp;#8217;s CSS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When we engaged Might &amp;amp; Main to do the Dumbarton Oaks design, we forgot to tell them it was going to be responsive. They were very perturbed when they found out, since they had not budgeted to do the extra work that is normally required. We told them not to worry because that extra work had already been done in beyondskins.responsive. And sure enough, Dumbarton Oaks got a responsive design with very little effort from Might &amp;amp; Main.&lt;/p&gt;
&lt;p&gt;Here is what the site looks like without the Diazo theme applied.&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;img class="aligncenter  wp-image-707" alt="Unthemed doaks.org screenshot" src="http://jazkarta.files.wordpress.com/2012/12/unthemed.png?w=655&amp;#038;h=422" width="655" height="422" /&gt;&lt;/p&gt;
&lt;p style="text-align:left;"&gt;Here is what the themed site looks like on the desktop.&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;img class="aligncenter  wp-image-708" alt="Screenshot of doaks.org on a desktop" src="http://jazkarta.files.wordpress.com/2012/12/desktop.png?w=655&amp;#038;h=420" width="655" height="420" /&gt;&lt;/p&gt;
&lt;p style="text-align:left;"&gt;And here is what it looks like on a mobile device.&lt;/p&gt;
&lt;p style="text-align:left;"&gt;&lt;img class="aligncenter size-medium wp-image-709" alt="Screenshot of doaks.org on phone" src="http://jazkarta.files.wordpress.com/2012/12/phone.png?w=238&amp;#038;h=300" width="238" height="300" /&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jazkarta.wordpress.com/702/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jazkarta.wordpress.com/702/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&amp;#038;blog=11374782&amp;#038;post=702&amp;#038;subd=jazkarta&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=tDX8Iw-0fmw:91fOmExPuSg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=tDX8Iw-0fmw:91fOmExPuSg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=tDX8Iw-0fmw:91fOmExPuSg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=tDX8Iw-0fmw:91fOmExPuSg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=tDX8Iw-0fmw:91fOmExPuSg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=tDX8Iw-0fmw:91fOmExPuSg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JazkartaBlog/~4/tDX8Iw-0fmw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.jazkarta.com/2012/12/20/responsive-design-made-easy-with-plone/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.jazkarta.com/2012/12/20/responsive-design-made-easy-with-plone/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.jazkarta.com/2012/12/20/responsive-design-made-easy-with-plone/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Sally Kleinfeldt</name>
					</author>
		<title type="html"><![CDATA[Plone-Salesforce Integration Just Got More Powerful]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.jazkarta.com/~r/JazkartaBlog/~3/J2_MdYBRuv8/" />
		<id>http://blog.jazkarta.com/?p=684</id>
		<updated>2012-10-05T03:30:47Z</updated>
		<published>2012-10-05T03:30:47Z</published>
		<category scheme="http://blog.jazkarta.com" term="Plone" /><category scheme="http://blog.jazkarta.com" term="Salesforce" />		<summary type="html"><![CDATA[We recently helped the Innocence Project finish collective.salesforce.fundraising, an open source fundraising package designed to help non-profit organizations raise money online. The system is designed to function either as a standalone donation system or to be integrated into a larger Plone website. The Innocence Project is currently using it as a standalone donation system. collective.salesforce.fundraising [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&#038;blog=11374782&#038;post=684&#038;subd=jazkarta&#038;ref=&#038;feed=1" width="1" height="1" />]]></summary>
		<content type="html" xml:base="http://blog.jazkarta.com/2012/10/05/plone-salesforce-integration-just-got-more-powerful/">&lt;p&gt;We recently helped the &lt;a title="Innocence Project" href="http://www.innocenceproject.org"&gt;Innocence Project&lt;/a&gt; finish &lt;a title="collective.salesforce.fundraising" href="https://github.com/innocenceproject/collective.salesforce.fundraising"&gt;collective.salesforce.fundraising&lt;/a&gt;, an open source fundraising package designed to help non-profit organizations raise money online. The system is designed to function either as a standalone donation system or to be integrated into a larger Plone website. The Innocence Project is currently using it as a standalone donation system.&lt;/p&gt;
&lt;h2&gt;&lt;a href="https://secure.innocenceproject.org"&gt;&lt;img class="aligncenter size-full wp-image-690" title="Innocence Project Donations" src="http://jazkarta.files.wordpress.com/2012/09/innocence-project-donations1.png?w=600&amp;#038;h=388" alt="Innocence Project Donations Site" width="600" height="388" /&gt;&lt;/a&gt;&lt;br /&gt;
collective.salesforce.fundraising&lt;/h2&gt;
&lt;p&gt;The brainchild of the Innocence Project&amp;#8217;s Jason Lantz, who developed the package with help from Groundwire and Jazkarta, this plugin adds significantly to the Salesforce.com functionality that can be tapped from the Plone content management system. The &lt;a title="About Plone+Salesforce" href="http://www.jazkarta.com/cms/salesforce"&gt;Plone CMS/Salesforce.com CRM&lt;/a&gt; integration capabilities previously consisted of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Submitting form information from a Plone form into Salesforce.com (web-to-lead forms)&lt;/li&gt;
&lt;li&gt;Adding a new lead to a Salesforce.com account when a new Paypal payment is made&lt;/li&gt;
&lt;li&gt;Making Events in your Plone site &amp;#8220;RSVP-able&amp;#8221; with data saved directly to Salesforce.com campaigns&lt;/li&gt;
&lt;li&gt;Authenticating in Plone with account information (login, password and properties) which is from Salesforce.com&lt;/li&gt;
&lt;li&gt;Dynamically displaying Salesforce.com data in Plone&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&amp;#8217;s already a darn good package, but collective.salesforce.fundraising adds features that take things to a whole new level:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The ability to take &lt;strong&gt;one time and recurring donations&lt;/strong&gt; through an uncluttered, modern UI. All donations are sent directly to the payment processor (Authorize.net or Recurly), no credit card data is stored or transmitted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integration with Salesforce.com campaigns&lt;/strong&gt;. They can be created in Salesforce.com or Plone, and all changes and donations made in Plone are added to the Salesforce.com campaign.&lt;/li&gt;
&lt;li&gt;The ability to create &lt;strong&gt;campaign timelines and goals&lt;/strong&gt;. Progress indicators in the UI show progress towards the goal and the time remaining.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personal fundraising&lt;/strong&gt;, which allows users to create personal campaign pages for any campaign. Users can set a goal and promote their campaign to their friends; all donations roll up to the parent campaign in Salesforce.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Social integration&lt;/strong&gt; via Janrain, a social login and sharing service. This is important for personal fundraisers, since it allows login through a variety of social accounts, and sharing on multiple social networks to help spread the word about personal campaigns.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And there are many smaller features, like memorial donations, donor testimonials, fundraising &amp;#8220;seals&amp;#8221; providing third party analysis and endorsements, and an easy way for users to share campaigns with their social networks via &amp;#8220;share messages&amp;#8221; which can be tracked for effectiveness.&lt;/p&gt;
&lt;h2&gt;How Jazkarta Helped&lt;/h2&gt;
&lt;p&gt;The Innocence Project engaged Jazkarta to help with the donation and personal fundraising capabilities. This included selling tickets to events, adding campaign landing pages and personal fundraising pages, and working out some of the details of the social login process. Personal fundraising is a compelling addition to the package. The ability it provides for individuals to set themselves up as fundraisers under an umbrella project puts collective.safesforce.fundraising head and shoulders above many of the other solutions available to non-profits.&lt;/p&gt;
&lt;h2&gt;Convio Common Ground Customers Take Note&lt;/h2&gt;
&lt;p&gt;The addition of personal fundraising to collective.salesforce.fundraising comes at a particularly opportune moment. Only days after Jazkarta&amp;#8217;s work was done, Blackbaud announced it was &lt;a title="Blackbaud Discontinues Convio Common Ground" href="http://groundwire.org/blog/major-fundraising-application-canned-what2019s-next-for-non-profit-databases"&gt;discontinuing Convio Common Ground&lt;/a&gt;, a fundraising and donor management application built on top of Salesforce.com and used by many small to mid-sized non-profits. A Plone+Salesforce.com powered fundraising site offers a great option for the 400 or so Common Ground clients that have to make a decision and migrate to a new system within the next 19 months. The Plone CMS and all of the plugins mentioned in this post are open source software with no licensing fees, and Salesforce.com is a great deal for small to mid-size non-profits. Through the &lt;a title="Salesforce Foundation: The Power Of Us" href="http://www.salesforcefoundation.org/powerofus"&gt;Power of Us&lt;/a&gt; program, the Salesforce Foundation will donate 10 enterprise licenses worth $1600/month to 501(c)3 organizations, and any additional licenses are 80% off. There is also a 50% discount for in-person training and the customer portal is priced at $24/user/year.&lt;/p&gt;
&lt;p&gt;&lt;a title="Contact Jazkarta" href="http://www.jazkarta.com/contact"&gt;Contact Jazkarta&lt;/a&gt; if you&amp;#8217;d like more information about Plone-Salesforce powered online fundraising solutions.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jazkarta.wordpress.com/684/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jazkarta.wordpress.com/684/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&amp;#038;blog=11374782&amp;#038;post=684&amp;#038;subd=jazkarta&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=J2_MdYBRuv8:ZTICQkz3PXc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=J2_MdYBRuv8:ZTICQkz3PXc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=J2_MdYBRuv8:ZTICQkz3PXc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=J2_MdYBRuv8:ZTICQkz3PXc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=J2_MdYBRuv8:ZTICQkz3PXc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=J2_MdYBRuv8:ZTICQkz3PXc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JazkartaBlog/~4/J2_MdYBRuv8" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.jazkarta.com/2012/10/05/plone-salesforce-integration-just-got-more-powerful/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.jazkarta.com/2012/10/05/plone-salesforce-integration-just-got-more-powerful/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.jazkarta.com/2012/10/05/plone-salesforce-integration-just-got-more-powerful/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Sally Kleinfeldt</name>
					</author>
		<title type="html"><![CDATA[Go Botany!]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.jazkarta.com/~r/JazkartaBlog/~3/e7Ojr5XWMwY/" />
		<id>http://blog.jazkarta.com/?p=664</id>
		<updated>2012-07-16T18:55:29Z</updated>
		<published>2012-07-16T18:55:29Z</published>
		<category scheme="http://blog.jazkarta.com" term="Agile" /><category scheme="http://blog.jazkarta.com" term="Django" /><category scheme="http://blog.jazkarta.com" term="Python" />		<summary type="html"><![CDATA[We&#8217;ve been having classic summer weather here in New England &#8211; gardens, fields and forests are exploding with lush vegetation. It brings out my inner botanist &#8211; something I actually have advanced training in. These days botany is usually a hobby for me, but two years ago my Jazkarta world and my botanist world came [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&#038;blog=11374782&#038;post=664&#038;subd=jazkarta&#038;ref=&#038;feed=1" width="1" height="1" />]]></summary>
		<content type="html" xml:base="http://blog.jazkarta.com/2012/07/16/go-botany/">&lt;p&gt;We&amp;#8217;ve been having classic summer weather here in New England &amp;#8211; gardens, fields and forests are exploding with lush vegetation. It brings out my inner botanist &amp;#8211; something I actually have advanced training in. These days botany is usually a hobby for me, but two years ago my Jazkarta world and my botanist world came together on an amazing project &amp;#8211; &lt;a title="Go Botany" href="http://gobotany.newenglandwild.org/"&gt;Go Botany&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In 2009 the &lt;a title="New England Wild Flower Society" href="http://www.newenglandwild.org/"&gt;New England Wild Flower Society&lt;/a&gt; was awarded a major grant from the National Science Foundation to develop an innovative suite of tools to teach botany and plant identification. This multi-year project has many deliverables, but the overarching goal is to develop radical new web-based tools for identifying plants that will improve botanical knowledge and science education for novices and citizen scientists. In other words, get more people hooked on plants!&lt;/p&gt;
&lt;h2&gt;Discovery&lt;/h2&gt;
&lt;p&gt;NEWFS selected Jazkarta to be their technology partner and we worked on the project throughout 2010. We started with a discovery phase, during which we sorted out the various tools, prioritized requirements, defined the technology platform, and created a plan for tackling development. Our plan relied on an agile, iterative approach; the project owner &amp;#8211; Elizabeth Farnsworth, NEWFS Senior Research Ecologist and PI on the NSF grant &amp;#8211; was always in charge of what we delivered next. This was essential since at the beginning of the project no one had a very clear idea of what the tools should look like. By working in an agile way we were able to easily adjust the plan as we learned more. This quote from the book &lt;a title="The Art of Agile Development" href="http://www.amazon.com/Art-Agile-Development-James-Shore/dp/0596527675"&gt;&lt;em&gt;The Art of Agile Development&lt;/em&gt;&lt;/a&gt;, by James Shore and Shane Warden (O&amp;#8217;Reilly) summarizes the situation nicely.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;em&gt;The beginning of every software project is when you know the least about what will make the software valuable. You might know a lot about its value, but you will always know &lt;/em&gt;more&lt;em&gt; after you talk with stakeholders, show them demos, and conduct actual releases. As you continue, you will discover that some of your initial opinions about value were incorrect. No plan is perfect, but if you change your plan to reflect what you&amp;#8217;ve learned &amp;#8211; if you adapt &amp;#8211; you create more value.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Technology Platform&lt;/h2&gt;
&lt;p&gt;&lt;a title="Python" href="http://www.python.org"&gt;&lt;strong&gt;Python&lt;/strong&gt;&lt;/a&gt; was a natural choice for implementation language because NEWFS IT staff were already using it. In addition to being mature, powerful, secure, open source, and object oriented, Python has a wide array of libraries available for scientific computing and GIS.&lt;/p&gt;
&lt;p&gt;We considered several Python web frameworks that were popular at the time. &lt;a title="Plone" href="http://plone.org"&gt;Plone&lt;/a&gt; (the CMS in use at NEWFS) is not well suited to building the sort of custom applications we needed, but some of the other frameworks (like Grok and repoze.bfg) didn&amp;#8217;t have enough functionality. We chose &lt;a title="Django" href="http://www.djangoproject.com/"&gt;&lt;strong&gt;Django&lt;/strong&gt;&lt;/a&gt;, which had gained traction in the Python community because of its simplicity, admin features, form technology, and the availability of numerous add-ons. Two of those add-ons were particularly critical to the success of the project: &lt;a title="GeoDjango" href="http://geodjango.org/"&gt;&lt;strong&gt;GeoDjango&lt;/strong&gt;&lt;/a&gt; for adding GIS features, and &lt;a title="Pinax" href="http://pinaxproject.com/"&gt;&lt;strong&gt;Pinax&lt;/strong&gt;&lt;/a&gt; for adding social networking features.&lt;/p&gt;
&lt;p&gt;We had a lengthy in-house debate over the choice of database technology. &lt;a title="PostGIS" href="http://www.postgis.org/"&gt;PostGIS&lt;/a&gt; (the spatially enabled version of &lt;a title="PostgreSQL" href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt;, an industrial-strength open source relational database) was the clear winner for its compatibility with the Django ORM, and it was required for GeoDjango. But the data model for the botanical information was essentially a star schema (one table in the middle looking up information in dozens of auxiliary tables for attributes and vocabularies), which is much more efficient to implement in an object database than in a relational database. In the end, we chose to use &lt;strong&gt;PostgreSQL/PostGIS&lt;/strong&gt; for everything, mostly because we knew it would make life easier for future developers and sysadmins on the project.&lt;/p&gt;
&lt;p&gt;We needed one more component to implement the Go Botany tools, which were going to rely heavily on various types of search. We chose &lt;a title="Solr" href="http://lucene.apache.org/solr/"&gt;&lt;strong&gt;Solr&lt;/strong&gt;&lt;/a&gt;, an open source search server based on the Lucene Java search library, to provide indexing and search services for all tools. It provides cross database search functionality over a REST interface, including features like custom query structures, common document type extraction, geographic searches, and search facets.&lt;/p&gt;
&lt;h2&gt;Implementation&lt;/h2&gt;
&lt;p&gt;By May we had put together a team and launched into release planning and implementation. The team consisted of Jazkarta developers and NEWFS developers working together on the project, with me as the PM and Elizabeth as the project owner. We like to have joint, collaborative teams with our clients whenever we can, it&amp;#8217;s a great way to get their IT staff up to speed quickly. We also spent some time teaching Elizabeth about agile development practices, which helped her do a great job supplying us with the information we needed, when we needed it (user stories, feedback, etc.)&lt;/p&gt;
&lt;h3&gt;Database and API&lt;/h3&gt;
&lt;p&gt;Our first project was to design and implement the PostgreSQL database of botanical information that would drive all the Go Botany tools. NEWFS had previously built a Microsoft Access-based tool for entering the copious amounts of botanical data required for the project &amp;#8211; dozens of characteristics for each of the thousands of species of New England plants. A time consuming part of building the database involved automating the import of all the MS Access data. We also implemented an API wrapper around the database that was optimized for the kinds of queries and transactions that would be required. The API calls were largely implemented as json web services for ease of integration into Javascript user interfaces.&lt;/p&gt;
&lt;p&gt;The database plus API was the most technologically challenging part of the project. It had to provide a flexible and fast foundation for the entire family of Go Botany tools. It was also interesting to write &amp;#8220;user stories&amp;#8221; for this part of the project &amp;#8211; the &amp;#8220;users&amp;#8221; were all the Go Botany tools, which would need to get information from the API.&lt;/p&gt;
&lt;h3&gt;Simple Key&lt;/h3&gt;
&lt;p&gt;Once the database and API foundation was laid, we began work on the Simple Key &amp;#8211; an interactive, online guide to identifying 1,200 of the more common New England plants. This was the most challenging part of the project from a user interface point of view. It needed to be fun and exciting to seduce novices into learning about plants and botany, while at the same time being useful to pros. NEWFS engaged user experience designer Matt Belge (&lt;a title="Vision &amp;amp; Logic" href="http://visionlogic.com/"&gt;Visionlogic.com&lt;/a&gt;) to help them define the tool we would be building. Based on lots of interviews and other research, Matt produced wireframes for successive bits of Simple Key functionality, and we figured out how to implement them.&lt;/p&gt;
&lt;p&gt;The result is unlike any previous plant identification tool. The Simple Key presents the user with a series of questions about their plant&amp;#8217;s characteristics that are designed to home in on the species identification as efficiently as possible. It does this based on the questions that have already been answered and the features that the user is able to observe. The secret behind this behavior is an information gain algorithm that generates optimal decision trees.&lt;/p&gt;
&lt;p&gt;When the user has identified their plant, they can go to a species page with a wealth of information &amp;#8211; including maps of its geographic range, diagnostic characteristics, memorable facts, and gorgeous color photographs of the plant and its leaves, flowers, bark, etc. in different seasons. A fitting end to a successful quest.&lt;/p&gt;
&lt;h3&gt;And It&amp;#8217;s Open Source&lt;/h3&gt;
&lt;p&gt;Because taxpayer dollars through the National Science Foundation supported this project, the software and data on plant characteristics will be open sourced. Details are still being worked out, but the goal is to enable others to contribute and improve the code over the long-term. Stay tuned to the Go Botany site for an announcement of the details. NEWFS staff are also engaged in adapting the database to allow other botanical institutions to customize the data for their particular region.&lt;/p&gt;
&lt;h2&gt;But This Is 2012!&lt;/h2&gt;
&lt;p&gt;Yes, all of our Go Botany work was done in 2010, so why am I blogging about this now?&lt;/p&gt;
&lt;p&gt;We got Go Botany tool development off to a good start, but a lot of work remained after we were done. Seven botanical data specialists did a massive amount of manual data entry: scores of characteristics for thousands of plant species. Four image collectors scoured the web, publishers, and individual contacts for the gorgeous photographs used on the site. Botanists developed technical descriptions of the New England plant families and genera. Many NEWFS staff created videos, help pages, an illustrated glossary of terms, and other content. A web design firm, &lt;a title="Fresh Tilled Soil" href="http://www.freshtilledsoil.com/"&gt;Fresh Tilled Soil&lt;/a&gt;, was hired to create the graphic design for the Go Botany website, including the Simple Key. NEWFS developers applied the theme to the Django site, as well as continuing to refine and fix the Python and Javascript code.&lt;/p&gt;
&lt;p&gt;All of this hard work came to fruition in April: the Go Botany website is now live at &lt;a title="Go Botany" href="http://gobotany.newenglandwild.org/"&gt;http://gobotany.newenglandwild.org/&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://jazkarta.files.wordpress.com/2012/07/go-botany.png"&gt;&lt;img class="aligncenter  wp-image-665" title="Go Botany Website" src="http://jazkarta.files.wordpress.com/2012/07/go-botany.png?w=556&amp;#038;h=326" alt="Screen shot of the Go Botany website" width="556" height="326" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So if you live in the northeast and you sometimes wonder what the name of a plant is, please try it out! Go Botany works best with Firefox, Safari, and Chrome on iPads, tablet and desktop computers (and the UI is being adapted for phones) so you can take it with you on walks and have an expert assistant for your botanizing. If you have comments, NEWFS would love to get your feedback at gobotany@newenglandwild.org.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jazkarta.wordpress.com/664/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jazkarta.wordpress.com/664/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&amp;#038;blog=11374782&amp;#038;post=664&amp;#038;subd=jazkarta&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=e7Ojr5XWMwY:2Jj4Eh_X57k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=e7Ojr5XWMwY:2Jj4Eh_X57k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=e7Ojr5XWMwY:2Jj4Eh_X57k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=e7Ojr5XWMwY:2Jj4Eh_X57k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=e7Ojr5XWMwY:2Jj4Eh_X57k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=e7Ojr5XWMwY:2Jj4Eh_X57k:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JazkartaBlog/~4/e7Ojr5XWMwY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.jazkarta.com/2012/07/16/go-botany/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://blog.jazkarta.com/2012/07/16/go-botany/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://blog.jazkarta.com/2012/07/16/go-botany/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Sally Kleinfeldt</name>
					</author>
		<title type="html"><![CDATA[Templer and ZopeSkel]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.jazkarta.com/~r/JazkartaBlog/~3/UBPh0ISePS8/" />
		<id>http://blog.jazkarta.com/?p=652</id>
		<updated>2012-07-12T16:37:32Z</updated>
		<published>2012-07-12T16:37:32Z</published>
		<category scheme="http://blog.jazkarta.com" term="Django" /><category scheme="http://blog.jazkarta.com" term="Plone" /><category scheme="http://blog.jazkarta.com" term="Python" />		<summary type="html"><![CDATA[At the sprint following Plone Symposium East, I helped Cris Ewing write documentation for Templer, a Python code generation system that was derived from the older ZopeSkel application. I knew very little about Templer before the sprint, but the experience taught me that it is an incredibly useful tool for Python developers working with Plone, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&#038;blog=11374782&#038;post=652&#038;subd=jazkarta&#038;ref=&#038;feed=1" width="1" height="1" />]]></summary>
		<content type="html" xml:base="http://blog.jazkarta.com/2012/07/12/templer-and-zopeskel/">&lt;p&gt;At the sprint following Plone Symposium East, I helped &lt;a title="crisewing.com" href="http:///www.crisewing.com"&gt;Cris Ewing&lt;/a&gt; write &lt;a title="Templer System Manual" href="http://templer-manual.readthedocs.org/en/latest/"&gt;documentation for Templer&lt;/a&gt;, a Python code generation system that was derived from the older &lt;a title="ZopeSkel on pypi" href="http://pypi.python.org/pypi/ZopeSkel"&gt;ZopeSkel&lt;/a&gt; application. I knew very little about Templer before the sprint, but the experience taught me that it is an incredibly useful tool for Python developers working with Plone, Django, Pyramid, or any other Python framework. Whether you are a freelancer or part of a larger web development organization, Templer can make you more productive.&lt;/p&gt;
&lt;p&gt;Templer is a general-purpose system for generating code skeletons from pre-defined templates. End users provide information through an interactive interface, which is used to generate a skeleton of files and folders that make up a Python project. The projects that can be built with Templer today are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python namespace and nested namespace packages&lt;/li&gt;
&lt;li&gt;Buildouts and recipes to extend the zc.buildout system&lt;/li&gt;
&lt;li&gt;Namespace and nested namespace packages for &lt;a title="Zope" href="http://www.zope.org/"&gt;Zope&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add-on packages for the &lt;a title="Plone" href="http://www.plone.org/"&gt;Plone&lt;/a&gt; CMS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are also commands (based on &lt;a title="Python Paste" href="http://pythonpaste.org/"&gt;Python Paste&lt;/a&gt;) for adding features to Plone software projects that were created with Templer, such as browser views and Archetypes content types.&lt;/p&gt;
&lt;p&gt;The functionality that Templer provides is very handy, but the thing that makes it a Python developer&amp;#8217;s secret weapon is the fact that it can be extended and used to build applications focused on particular problems. ZopeSkel, which provides a suite of templates for generating Zope and Plone projects (buildouts, themes, add-ons, etc.), is one example of a Templer application. During the sprint, &lt;a title="andersonleeb.com" href="http://andersonleeb.com/"&gt;Ian Anderson&lt;/a&gt;  began work on &lt;a title="templer.django" href="https://github.com/ianderso/templer.django"&gt;templer.django&lt;/a&gt;, a new Templer package to provide templates for Django projects. This package could form the basis of DjangoSkel, an application to quick-start Django projects. If you are in the business of creating Plone or Django websites, you can quick-start your own projects with a Templar based application. For example, MyPloneSkel could set up your production and development buildout configs just the way you like them, plus optional packages for Generic Setup policies, a Diazo or standard theme, and custom content types.&lt;/p&gt;
&lt;p&gt;Thanks to everyone who has worked on ZopeSkel and Templer over the years to make such a useful suite of tools.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jazkarta.wordpress.com/652/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jazkarta.wordpress.com/652/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&amp;#038;blog=11374782&amp;#038;post=652&amp;#038;subd=jazkarta&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=UBPh0ISePS8:-F04Jj6nWXo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=UBPh0ISePS8:-F04Jj6nWXo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=UBPh0ISePS8:-F04Jj6nWXo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=UBPh0ISePS8:-F04Jj6nWXo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=UBPh0ISePS8:-F04Jj6nWXo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=UBPh0ISePS8:-F04Jj6nWXo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JazkartaBlog/~4/UBPh0ISePS8" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.jazkarta.com/2012/07/12/templer-and-zopeskel/#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://blog.jazkarta.com/2012/07/12/templer-and-zopeskel/feed/atom/" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:origLink>http://blog.jazkarta.com/2012/07/12/templer-and-zopeskel/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Sally Kleinfeldt</name>
					</author>
		<title type="html"><![CDATA[Kale Will Save the World]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.jazkarta.com/~r/JazkartaBlog/~3/tgf0SwnD1J0/" />
		<id>http://blog.jazkarta.com/?p=638</id>
		<updated>2012-07-12T22:31:17Z</updated>
		<published>2012-06-26T22:20:03Z</published>
		<category scheme="http://blog.jazkarta.com" term="Plone" />		<summary type="html"><![CDATA[I have to hand it to the University of Minnesota Press, they do a great job keeping their homepage fresh. It has lots of portlets around the edges, and a big slot in the middle to hold a featured image.  Every few weeks they swap a new image into that slot, and voilà! new homepage. [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&#038;blog=11374782&#038;post=638&#038;subd=jazkarta&#038;ref=&#038;feed=1" width="1" height="1" />]]></summary>
		<content type="html" xml:base="http://blog.jazkarta.com/2012/06/26/kale-will-save-the-world/">&lt;p&gt;I have to hand it to the University of Minnesota Press, they do a great job keeping their homepage fresh. It has lots of portlets around the edges, and a big slot in the middle to hold a featured image.  Every few weeks they swap a new image into that slot, and &lt;em&gt;voilà!&lt;/em&gt; new homepage. This week&amp;#8217;s &lt;a title="University of Minnesota Press" href="http://www.upress.umn.edu/"&gt;UMP homepage features kale&lt;/a&gt;. Really. It made me both laugh and click (which took me to a page featuring local food writers and their books.) Their first hompage featured rock music (captured in the &lt;a title="Jazkarta client: University of Minnesota Pres" href="http://www.jazkarta.com/recent-clients/university-of-minnesota-press"&gt;client blurb on our website&lt;/a&gt;), and by the time you read this it will probably be featuring something else. But whatever is featured, you can bet it will be intriguing and will draw you into exploring UMP&amp;#8217;s amazing catalog of books.&lt;/p&gt;
&lt;p&gt;Kudos to our partners, &lt;a title="Might &amp;amp; Main" href="http://www.might-main.com/"&gt;Might &amp;amp; Main&lt;/a&gt;, for a compelling design (it even looks good on mobile devices) that can be refocused with a single image upload.  And kudos to the &lt;a title="Plone" href="http://plone.org"&gt;Plone CMS&lt;/a&gt; for making this so easy to implement. We used &lt;a title="Plone product: ContentWellPortlets" href="http://plone.org/products/contentwellportlets/"&gt;ContentWellPortlets&lt;/a&gt; to provide the bottom porlet slots. The central image goes into the homepage body, and the rest of the content comes from normal Plone text, RSS, and collection portlets. The site is themed using &lt;a title="Diazo - We Write XSLT, So You Don’t Have To" href="http://diazo.org"&gt;Diazo&lt;/a&gt; (via &lt;a title="plone.app.theming" href="http://pypi.python.org/pypi/plone.app.theming/"&gt;plone.app.theming&lt;/a&gt;), but the homepage magic is mostly CSS. The various portlets are styled depending on their location (right, left, bottom), plus there is extra CSS for the Twitter and New Releases portlets. This tyling is made possible by the fact that Plone provides CSS identifiers for just about everything on the page.&lt;/p&gt;
&lt;p&gt;The result? A homepage that keeps surprising me.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jazkarta.wordpress.com/638/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jazkarta.wordpress.com/638/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&amp;#038;blog=11374782&amp;#038;post=638&amp;#038;subd=jazkarta&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=tgf0SwnD1J0:XhwPNubyGYU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=tgf0SwnD1J0:XhwPNubyGYU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=tgf0SwnD1J0:XhwPNubyGYU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=tgf0SwnD1J0:XhwPNubyGYU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=tgf0SwnD1J0:XhwPNubyGYU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=tgf0SwnD1J0:XhwPNubyGYU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JazkartaBlog/~4/tgf0SwnD1J0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.jazkarta.com/2012/06/26/kale-will-save-the-world/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.jazkarta.com/2012/06/26/kale-will-save-the-world/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.jazkarta.com/2012/06/26/kale-will-save-the-world/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Sally Kleinfeldt</name>
					</author>
		<title type="html"><![CDATA[Managing Agile Plone Projects]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.jazkarta.com/~r/JazkartaBlog/~3/TC_cZBgAAQQ/" />
		<id>http://blog.jazkarta.com/?p=629</id>
		<updated>2012-03-01T17:50:30Z</updated>
		<published>2012-03-01T17:50:30Z</published>
		<category scheme="http://blog.jazkarta.com" term="Agile" /><category scheme="http://blog.jazkarta.com" term="Plone" />		<summary type="html"><![CDATA[If you liked the post I wrote last month about agile development with Plone, you might be interested in an upcoming class called Managing Agile Plone Projects that I&#8217;m teaching at Plone Symposium East. Consider this scenario: All the pieces have fallen into place for that big website project. You&#8217;ve chosen Plone, you&#8217;ve lined up the [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&#038;blog=11374782&#038;post=629&#038;subd=jazkarta&#038;ref=&#038;feed=1" width="1" height="1" />]]></summary>
		<content type="html" xml:base="http://blog.jazkarta.com/2012/03/01/managing-agile-plone-projects/">&lt;p&gt;If you liked the post I wrote last month about &lt;a title="Agile Development with Plone, Revisited" href="http://blog.jazkarta.com/2012/01/20/agile-development-with-plone-revisited/"&gt;agile development with Plone&lt;/a&gt;, you might be interested in an upcoming class called &lt;em&gt;Managing Agile Plone Projects&lt;/em&gt; that I&amp;#8217;m teaching at &lt;a title="Plone Symposium East" href="http://weblion.psu.edu/symposium"&gt;Plone Symposium East&lt;/a&gt;. Consider this scenario:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;em&gt;All the pieces have fallen into place for that big website project. You&amp;#8217;ve chosen Plone, you&amp;#8217;ve lined up the budget, you&amp;#8217;ve gathered a team of developers, you&amp;#8217;ve selected a design firm. You&amp;#8217;ve worked with all the stakeholders and come up with a long list of features. Plone and its add-ons will provide many of them, but some will need custom development. How are you going to manage the project? You have a part time team and the project is part design. part configuration, and part development &amp;#8211; how can you use agile techniques?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you find yourself in this situation, consider joining me at Penn State on May 21st. I&amp;#8217;ll use a combination of lectures, discussions and group exercises to share the approach I&amp;#8217;ve developed to manage this type of project. You can read more details and &lt;a title="Managing Agile Plone Projects" href="http://agileplone.eventbrite.com/"&gt;register here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Symposium East is always a great conference and a great time. If managing projects is not your thing, there are other excellent classes that may interest you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://weblion.psu.edu/symposium/training/theming-plone-4"&gt;&lt;em&gt;Theming Plone 4&lt;/em&gt;&lt;/a&gt; with Chrissy Wainwright&lt;/li&gt;
&lt;li&gt;&lt;a href="http://weblion.psu.edu/symposium/training/creating-plone-content-types-with-dexterity"&gt;&lt;em&gt;Creating Plone Content Types with Dexterity&lt;/em&gt;&lt;/a&gt; with Steve McMahon&lt;/li&gt;
&lt;li&gt;&lt;a href="http://weblion.psu.edu/symposium/training/getting-off-the-ground-with-plone-1"&gt;&lt;em&gt;Getting off the Ground with Plone&lt;/em&gt;&lt;/a&gt; with Cris Ewing&lt;/li&gt;
&lt;li&gt;&lt;a href="http://weblion.psu.edu/symposium/training/python-fundamentals"&gt;&lt;em&gt;Python Fundamentals&lt;/em&gt;&lt;/a&gt; with Chris Calloway&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope to see you there!&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jazkarta.wordpress.com/629/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jazkarta.wordpress.com/629/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&amp;#038;blog=11374782&amp;#038;post=629&amp;#038;subd=jazkarta&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=TC_cZBgAAQQ:jE-htXF6n0w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=TC_cZBgAAQQ:jE-htXF6n0w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=TC_cZBgAAQQ:jE-htXF6n0w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=TC_cZBgAAQQ:jE-htXF6n0w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=TC_cZBgAAQQ:jE-htXF6n0w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=TC_cZBgAAQQ:jE-htXF6n0w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JazkartaBlog/~4/TC_cZBgAAQQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.jazkarta.com/2012/03/01/managing-agile-plone-projects/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.jazkarta.com/2012/03/01/managing-agile-plone-projects/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.jazkarta.com/2012/03/01/managing-agile-plone-projects/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Sally Kleinfeldt</name>
					</author>
		<title type="html"><![CDATA[Agile Development with Plone, Revisited]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.jazkarta.com/~r/JazkartaBlog/~3/Fqq1xMtva3E/" />
		<id>http://jazkarta.wordpress.com/?p=615</id>
		<updated>2012-01-20T18:39:54Z</updated>
		<published>2012-01-20T15:58:10Z</published>
		<category scheme="http://blog.jazkarta.com" term="Agile" /><category scheme="http://blog.jazkarta.com" term="Plone" />		<summary type="html"><![CDATA[The announcement of the 2012 Plone Symposium East (thank you Weblion! always a great gathering) is reminding me of the talk I gave there last year on Agile Development with Plone. Here at Jazkarta we&#8217;re engaged in another large project, similar in many ways to the one that inspired that talk. Because our project management [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&#038;blog=11374782&#038;post=615&#038;subd=jazkarta&#038;ref=&#038;feed=1" width="1" height="1" />]]></summary>
		<content type="html" xml:base="http://blog.jazkarta.com/2012/01/20/agile-development-with-plone-revisited/">&lt;p&gt;The announcement of the &lt;a title="2012 Plone Symposium East" href="http://weblion.psu.edu/events/plone/symposium"&gt;2012 Plone Symposium East&lt;/a&gt; (thank you Weblion! always a great gathering) is reminding me of the talk I gave there last year on &lt;a href="http://www.jazkarta.com/news/agile-development-with-plone"&gt;&lt;em&gt;Agile Development with Plone&lt;/em&gt;&lt;/a&gt;. Here at Jazkarta we&amp;#8217;re engaged in another large project, similar in many ways to the one that inspired that talk. Because our project management tools and techniques have evolved a bit since last year, I figured it was time for an update.&lt;/p&gt;
&lt;h2&gt;The Projects&lt;/h2&gt;
&lt;p&gt;Last year at this time, we were just getting started on a major website redesign for the &lt;a href="http://www.upress.umn.edu/"&gt;University of Minnesota Press&lt;/a&gt;. There&amp;#8217;s lots of information about this project in my Plone Conference presentation &lt;a href="http://www.jazkarta.com/news/how-to-get-a-fabulous-website-on-a-modest-budget-using-plone"&gt;&lt;em&gt;How To Get a Fabulous Website on a Modest Budget Using Plone&lt;/em&gt;&lt;/a&gt;. Briefly, it involved a major data conversion from a FileMaker database into Plone, a small number of complex custom content types, extensive design work, and a featured &amp;#8220;explore&amp;#8221; section powered by eea.facetednavigation.&lt;/p&gt;
&lt;p&gt;Our new project is a major website redesign for &lt;a href="http://doaks.org/"&gt;Dumbarton Oaks Research Library and Collection&lt;/a&gt;, a research institute of Harvard University and the home of a little known but outstanding museum and garden in Washington, D.C. We began with a discovery phase last summer, and have been working on implementation since November.&lt;/p&gt;
&lt;h2&gt;What&amp;#8217;s the Same&lt;/h2&gt;
&lt;p&gt;Both of these are fixed budget projects with a large number of desired features, and at the outset many of these were inadequately defined for development purposes. In both cases there are multiple stakeholders with differing priorities, but there is an intelligent, proactive project owner who is trusted and empowered to make decisions. The Jazkarta team is the same &amp;#8211; Carlos de la Guardia in Mexico, Alec Mitchell in California, and me in Massachusetts &amp;#8211; and none of us ever work full time on any of our projects.&lt;/p&gt;
&lt;p&gt;This all adds up to the same basic project management challenge: how to adapt agile techniques to manage a fixed price, flexible scope project with a distributed, part time team.&lt;/p&gt;
&lt;h2&gt;What&amp;#8217;s Different&lt;/h2&gt;
&lt;p&gt;Happily, the Dumbarton Oaks project does not involve a complicated data import from a FileMaker database. For UMP this required a &lt;a href="http://pypi.python.org/pypi/collective.transmogrifier"&gt;collective.transmogrifier&lt;/a&gt; script, many many many trial and error imports, and over 60 hours of Jazkarta development time. Dumbarton Oaks currently has a static HTML website, which is much simpler to import. &lt;a href="http://pypi.python.org/pypi/funnelweb"&gt;Funnelweb&lt;/a&gt; made this easy &amp;#8211; only a few trial imports and some content massaging were required. We&amp;#8217;re not a quarter through the project but all the old content is already on staging. Total development effort: 10 hours.&lt;/p&gt;
&lt;p&gt;Because the content import was relatively easy and the project mostly requires custom features and content types that are independent of each other, we have been able to divide up the work into several releases. This gives us a series of smaller planning horizons and allows us to be more agile (more on this later). Each release can potentially be deployed to production &amp;#8211; and even if we decide not to, new content is developed on staging which gives the new features a thorough vetting. No matter how much you thought you tested, there are always problems that don&amp;#8217;t get discovered until the software sees serious use. Having a series of small production deployments avoids piling all the bug fixes and theme tweaks into a single mega deployment phase at the end of the project.&lt;/p&gt;
&lt;h2&gt;Our Evolving Agile Development Practices&lt;/h2&gt;
&lt;p&gt;Our basic development process remains the same:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Discovery&lt;/li&gt;
&lt;li&gt;Define schedule and resources (how the budget will get spent)&lt;/li&gt;
&lt;li&gt;User story development&lt;/li&gt;
&lt;li&gt;Story estimation (we use &lt;a href="http://en.wikipedia.org/wiki/Planning_poker"&gt;planning poker&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;A series of development iterations alternated with evaluation periods&lt;/li&gt;
&lt;li&gt;Production deployment&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;During discovery the project owner and I distributed the feature requirements into a series of releases, based on a combination of priorities and keeping all the stakeholders happy. (Everyone got something in almost every release.) This high level release plan allows us to do our story development and estimation one release at a time, which saves time and money &amp;#8211; especially considering that &lt;em&gt;all&lt;/em&gt; the developers participate in planning poker sessions. Since we know the customer wants more than their fixed budget will get them, and we also know they will change their mind about what they want as the project progresses, it makes sense to postpone the effort of writing and estimating stories we may never get to.&lt;/p&gt;
&lt;p&gt;As in previous projects, I took the first cut at turning the project requirements into stories, then discussed and revised the stories with the project owner. Because I have intimate knowledge of Plone, I can translate requirements into stories that make sense to develop. For example, we don&amp;#8217;t need to spend time defining stories for CMS functionality or for things that Plone has great add-ons for (like staff directories and bibliographies). Some things may turn out to need tweaking, but it is better to give the customer stock Plone and add-on features to try out first. They may decide to live with the stock features and put their development dollars into new features instead of making changes.&lt;/p&gt;
&lt;p&gt;Our communication tools remain the same: Skype, IRC, chat, Google Calendar, and Google Documents. This combination is the secret sauce that allows a distributed team to work as if they were in the same room. We did switch from &lt;a href="http://pypi.python.org/pypi/ClueMapper"&gt;ClueMapper&lt;/a&gt; (based on svn and trac) to &lt;a href="https://github.com/"&gt;github&lt;/a&gt; for source code repository and ticket tracking. We miss a few management features, but the developers are much happier working in a dvcs.&lt;/p&gt;
&lt;p&gt;Our development iterations remain the same &amp;#8211; one week each, followed by a week of evaluation during which the customer has time to test and reflect on what they want to do next. We kick off each iteration with a planning meeting, which surfaces any questions about the stories we&amp;#8217;re tackling and allows us to do task breakdown and assignment while we are all in the virtual room of a Skype conference call. During the iteration we have a short standup meeting every day to keep things on track &amp;#8211; everyone says what they did yesterday, what they&amp;#8217;ll do today, and raises any blocking issues. My notes from the standups are written in a Google spreadsheet which is shared with everyone. This gives the project owner access to detailed information about how things are going, if they miss a standup meeting.&lt;/p&gt;
&lt;p&gt;The biggest change we&amp;#8217;ve made for this project is to adopt &lt;a href="http://scrumdo.com"&gt;ScrumDo&lt;/a&gt; for story development and iteration planning. ScrumDo is an &lt;a href="http://scrumdo.org/"&gt;open source&lt;/a&gt; agile project management tool that&amp;#8217;s written in Python. We are using the hosted, SaaS version that&amp;#8217;s at &lt;a href="http://scrumdo.com"&gt;scrumdo.com&lt;/a&gt; &amp;#8211; accounts are free for up to 10 users and 10 projects. ScrumDo has a friendly drag and drop UI that makes it easy for for project owners to plan iterations, edit stories, add comments, and see results. Unlike &lt;a href="http://www.pivotaltracker.com/"&gt;Pivotal Tracker&lt;/a&gt;, it allows flexible iteration scheduling and story and task assignments. Google Docs provide better simultaneous editing for multiple users and more flexible formatting, but ScrumDo makes it really easy to add and change tasks, assign them, and mark them as complete. If it managed estimated and actual hours I&amp;#8217;d totally love it.&lt;/p&gt;
&lt;p&gt;ScrumDo added a Planning Poker tool last March, and this has been a real time saver. It&amp;#8217;s a web page where the scrum master selects a story to size and everyone puts down a story point card. Once you play your card you can see the others, and after discussion and reaching consensus, the scrum master assigns the winning value to the story. What set of cards to use is one of the ScrumDo project settings (we use modified Fibonacci).&lt;/p&gt;
&lt;div class="mceTemp mceIEcenter"&gt;
&lt;div id="attachment_623" class="wp-caption aligncenter" style="width: 610px"&gt;&lt;img class="wp-image-623 " title="ScrumDo Planning Poker" src="http://jazkarta.files.wordpress.com/2012/01/planning-poker1.png?w=600&amp;#038;h=335" alt="Screenshot of ScrumDo Planning Poker interface" width="600" height="335" /&gt;&lt;p class="wp-caption-text"&gt;ScrumDo Planning Poker interface&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;The Value of Agile Project Management&lt;/h2&gt;
&lt;p&gt;The planning and standup meetings required by an agile approach do take time. For the UMP project, the meetings and project management activities combined used almost 40% of the total budget. But what is the alternative? Written requirements &amp;#8220;thrown over the wall&amp;#8221; to developers are a recipe for failure. The customers and the developers have to talk to each other to understand the project and its development trade offs. I&amp;#8217;ve never had a customer complain that I&amp;#8217;m using too much project management time when I&amp;#8217;m running a project in this way. The value of open and frequent communications and iterative development cycles is very clear to them. They get full ownership of the project, choose exactly what it will deliver at every step along the way, and in the end they are delighted to get the system they envisioned.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jazkarta.wordpress.com/615/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jazkarta.wordpress.com/615/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&amp;#038;blog=11374782&amp;#038;post=615&amp;#038;subd=jazkarta&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=Fqq1xMtva3E:XI9JU-Muqg0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=Fqq1xMtva3E:XI9JU-Muqg0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=Fqq1xMtva3E:XI9JU-Muqg0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=Fqq1xMtva3E:XI9JU-Muqg0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=Fqq1xMtva3E:XI9JU-Muqg0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=Fqq1xMtva3E:XI9JU-Muqg0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JazkartaBlog/~4/Fqq1xMtva3E" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.jazkarta.com/2012/01/20/agile-development-with-plone-revisited/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://blog.jazkarta.com/2012/01/20/agile-development-with-plone-revisited/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://blog.jazkarta.com/2012/01/20/agile-development-with-plone-revisited/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>carlosdelaguardia</name>
					</author>
		<title type="html"><![CDATA[Plone Quick Start for EC2 now available in all regions]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.jazkarta.com/~r/JazkartaBlog/~3/sxHRCdgTjY0/" />
		<id>http://blog.jazkarta.com/?p=611</id>
		<updated>2011-01-20T08:25:18Z</updated>
		<published>2011-01-20T08:25:18Z</published>
		<category scheme="http://blog.jazkarta.com" term="Uncategorized" />		<summary type="html"><![CDATA[Our Plone Quick Start Amazon EC2 machine images have been in enough demand to warrant availability in all four EC2 regions. We have responded to that demand and now anyone can test drive Plone 4 easily in their preferred region. Just go to our free signup page and fill out the form. You will receive [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&#038;blog=11374782&#038;post=611&#038;subd=jazkarta&#038;ref=&#038;feed=1" width="1" height="1" />]]></summary>
		<content type="html" xml:base="http://blog.jazkarta.com/2011/01/20/plone-quick-start-for-ec2-now-available-in-all-regions/">&lt;p&gt;Our Plone Quick Start Amazon EC2 machine images have been in enough demand to warrant availability in all four EC2 regions. We have responded to that demand and now anyone can test drive Plone 4 easily in their preferred region. Just go to our &lt;a title="Jazkarta Plone Quick Start AMI Signup" href="http://www.jazkarta.com/plone-ami-signup"&gt;free signup page&lt;/a&gt; and fill out the form. You will receive a confirmation email and will be able to create your instance immediately after that.&lt;/p&gt;
&lt;p&gt;The Plone 4 Quick Start gives you a fully working Plone 4.0.2 site, running on Ubuntu 10.10. The site has two instances in a high availability configuration using Nginx as an HTTP frontend, Varnish for caching and HAProxy for load balancing. Supervisor is used for starting and stopping the Plone instances and ZEO.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;ve been wanting to try out Plone or know someone who is, this is probably as easy as it gets. Give Plone a chance.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jazkarta.wordpress.com/611/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jazkarta.wordpress.com/611/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&amp;#038;blog=11374782&amp;#038;post=611&amp;#038;subd=jazkarta&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=sxHRCdgTjY0:XHkVhRbdWoU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=sxHRCdgTjY0:XHkVhRbdWoU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=sxHRCdgTjY0:XHkVhRbdWoU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=sxHRCdgTjY0:XHkVhRbdWoU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=sxHRCdgTjY0:XHkVhRbdWoU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=sxHRCdgTjY0:XHkVhRbdWoU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JazkartaBlog/~4/sxHRCdgTjY0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.jazkarta.com/2011/01/20/plone-quick-start-for-ec2-now-available-in-all-regions/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.jazkarta.com/2011/01/20/plone-quick-start-for-ec2-now-available-in-all-regions/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.jazkarta.com/2011/01/20/plone-quick-start-for-ec2-now-available-in-all-regions/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Nate Aune</name>
						<uri>http://www.nateaune.com</uri>
					</author>
		<title type="html"><![CDATA[Plone on WSGI sprint report]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.jazkarta.com/~r/JazkartaBlog/~3/dRBV3ceNn_k/" />
		<id>http://blog.jazkarta.com/?p=515</id>
		<updated>2010-11-22T21:45:11Z</updated>
		<published>2010-11-22T21:44:55Z</published>
		<category scheme="http://blog.jazkarta.com" term="Conferences" /><category scheme="http://blog.jazkarta.com" term="Content Management Systems" /><category scheme="http://blog.jazkarta.com" term="Plone" />		<summary type="html"><![CDATA[Two laptops, two sprinters and two bottles of whiskey. What could possibly go wrong? This is my attempt to document what I can only describe as the &#8220;Plone on Whisk-gi&#8221; sprint&#8230; As part of the Plone deployment sprint at the recent Plone Conference in Bristol, Reed O&#8217;Brien and I decided to try to get Plone [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&#038;blog=11374782&#038;post=515&#038;subd=jazkarta&#038;ref=&#038;feed=1" width="1" height="1" />]]></summary>
		<content type="html" xml:base="http://blog.jazkarta.com/2010/11/22/plone-on-wsgi-sprint-report/">&lt;h2&gt;Two laptops, two sprinters and two bottles of whiskey. What could possibly go wrong?&lt;/h2&gt;
&lt;h2&gt;&lt;span style="font-weight:normal;font-size:13px;"&gt;&lt;a href="http://jazkarta.files.wordpress.com/2010/11/p1040977.jpg"&gt;&lt;img class="alignright size-medium wp-image-569" title="P1040977" src="http://jazkarta.files.wordpress.com/2010/11/p1040977.jpg?w=225&amp;#038;h=300" alt="" width="225" height="300" /&gt;&lt;/a&gt;This is my attempt to document what I can only describe as the &amp;#8220;Plone on Whisk-gi&amp;#8221; sprint&amp;#8230; As part of the &lt;a href="http://coactivate.org/projects/ploneconf2010-sprints/deployment"&gt;Plone deployment sprint&lt;/a&gt; at the recent &lt;a href="http://ploneconf2010.org"&gt;Plone Conference&lt;/a&gt; in Bristol, Reed O&amp;#8217;Brien and I decided to try to get Plone 4 working on WSGI. &lt;/span&gt;&lt;/h2&gt;
&lt;h2&gt;&lt;span style="font-weight:normal;font-size:13px;"&gt;Why is this important? Hanno Schlichting (current Zope2 release manager) tells us on his &lt;a href="http://blog.hannosch.eu/2010/06/zope-213-alpha-imminent.html"&gt;blog post&lt;/a&gt; about the recent &lt;a href="http://docs.zope.org/zope2/releases/2.13/WHATSNEW.html#wsgi"&gt;Zope 2.13 release&lt;/a&gt;:&lt;/span&gt;&lt;/h2&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-weight:normal;font-size:13px;"&gt;Zope 2.13 comes with native &lt;a href="http://wsgi.org/wsgi/"&gt;WSGI&lt;/a&gt; support. First pioneered in the &lt;a href="http://repoze.org/about.html"&gt;repoze.zope2&lt;/a&gt; project, this capability finally found its way back into the core and obsoletes the externally managed project. With WSGI, Zope 2 can natively talk to a variety of web servers and isn&amp;#8217;t restricted to its own ZServer anymore. It also opens up new possibilities for writing or reusing &lt;a href="http://wsgi.org/wsgi/Middleware_and_Utilities"&gt;middleware&lt;/a&gt; in Zope 2 or factoring out capabilities into WSGI endware. It&amp;#8217;s expected that this new deployment model will over time become the default and the old ZServer implementation will be deprecated. There&amp;#8217;s no concrete timeline for this yet.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;What is Hanno saying here? Basically, it means that Zope 2.13 (and subsequently Plone) can run on a server without the added complexity of a long-running process (ZServer). Just as PHP-based applications enjoy ease of deployment since Apache already has mod_php enabled, so too could Zope-based applications be easily deployed if mod_wsgi were enabled.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:normal;font-size:13px;"&gt;In thinking about how Plone and Zope can be more accessible to systems administrators and hosting companies, moving to a scenario in which Zope does not require a separate long-running process, and can be deployed essentially at the Apache layer is a step in the right direction.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:normal;font-size:13px;"&gt;As Hanno alludes to above, with the WSGI deployment model, Zope/Plone are able to tap into a whole ecosystem of 3rd party WSGI middleware tools. &lt;a href="http://repoze.org/"&gt;Repoze&lt;/a&gt; is an initiative to extract many of the core Zope technologies into reusable &lt;a href="http://repoze.org/repoze_components.html#middleware"&gt;WSGI middleware components&lt;/a&gt;, that can be used in other Python web application frameworks. More WSGI components can be found on PyPi by &lt;a href="http://pypi.python.org/pypi?:action=search&amp;amp;term=wsgi"&gt;searching for &amp;#8220;wsgi&amp;#8221;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:normal;font-size:13px;"&gt;Also, by adopting a more typical deployment method, Zope will not seem so exotic to developers coming to Zope from other Python web frameworks. For example, the official Django documentation recommends &lt;a href="http://docs.djangoproject.com/en/1.2/howto/deployment/"&gt;deploying Django using mod_wsgi&lt;/a&gt;, so Django developers will likely already be familiar with this way of deploying Python web applications. Incidentally, if you&amp;#8217;re doing Django development, check out &lt;a href="http://packages.python.org/twod.wsgi/"&gt;twod.wsgi&lt;/a&gt; which makes WSGI a first-class citizen in Django applications.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;How does Plone fit in this picture?&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://jazkarta.files.wordpress.com/2010/11/p1040976.jpg"&gt;&lt;img class="alignright size-medium wp-image-570" title="P1040976" src="http://jazkarta.files.wordpress.com/2010/11/p1040976.jpg?w=225&amp;#038;h=300" alt="" width="225" height="300" /&gt;&lt;/a&gt;Plone, arguably being the most popular Zope2 application on the market, can stand to benefit from the WSGI deployment strategy. There have already been some efforts to do so with repoze.plone and repoze.zope2 (now deprecated with the release of Zope 2.13).&lt;/p&gt;
&lt;p&gt;Calvin Hendrix Parker blogged about &lt;a href="http://www.sixfeetup.com/blog/deploying-plone-and-zine-together-with-deliverance-using-repoze"&gt;deploying Plone and Zine together with Deliverance using Repoze&lt;/a&gt;, and Wojciech Lichota blogged about his &lt;a href="http://lichota.pl/blog/2009/07/12/buildout-for-plone-3-with-deliverance-on-wsgi"&gt;buildout for Plone 3 with Deliverance on WSGI&lt;/a&gt;. Nathan Van Gheem has also written a couple blog posts about his experiences &lt;a href="http://nathanvangheem.com/news/running-plone-4-with-a-zope2-wsg"&gt;running Plone 4 with a Zope2 WSGI&lt;/a&gt; and &lt;a href="http://nathanvangheem.com/news/running-plone-4b4-with-zope-2.13.0a1"&gt;running Plone 4b4 with Zope 2.13.0a1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now that Plone 4 is officially out and &lt;a href="http://pypi.python.org/pypi/Zope2/2.13.0"&gt;Zope 2.13 has had a final release&lt;/a&gt;, the instructions for getting this working are considerably easier.&lt;/p&gt;
&lt;p&gt;Here are the steps required to get Plone 4 running under WSGI using paster.&lt;/p&gt;
&lt;h3&gt;1. Create a buildout.cfg file with the following:&lt;/h3&gt;
&lt;pre&gt;
[buildout]
extends =

http://dist.plone.org/release/4.0.1/versions.cfg


http://download.zope.org/zopetoolkit/index/1.0/zopeapp-versions.cfg


http://download.zope.org/Zope2/index/2.13.0/versions.cfg

parts =
    instance
    paster

versions = versions

eggs +=
    roman
    Products.ZSQLMethods

[versions]
Zope2=2.13.0
Products.ZSQLMethods = 2.13.3

[instance]
recipe = plone.recipe.zope2instance
user = admin:admin
eggs +=
    ${buildout:eggs}
    Plone
    Paste
    PasteScript
    PasteDeploy
    repoze.tm2
    repoze.retry

[paster]
recipe = repoze.recipe.egg
scripts = paster
eggs = ${instance:eggs}
&lt;/pre&gt;
&lt;h3&gt;2. Create a zope2.ini file:&lt;/h3&gt;
&lt;pre&gt;
[DEFAULT]
debug = True

[app:zope]
use = egg:Zope2#main
zope_conf = %(here)s/parts/instance/etc/zope.conf

[pipeline:main]
pipeline =
    egg:paste#evalerror
    egg:repoze.retry#retry
    egg:repoze.tm2#tm
    zope

[server:main]
use = egg:paste#http
host = localhost
port = 8080
&lt;/pre&gt;
&lt;h3&gt;3. Run the buildout and modify the zope.conf file:&lt;/h3&gt;
&lt;p&gt;Run the buildout which will generate the paster script in the bin dir and the zope.conf file in parts/instance/etc. You then need to comment out the &amp;lt;http-server&amp;gt; part in this file. If you don&amp;#8217;t comment out these lines, then paster will complain that there is already a server running on port 8080.&lt;/p&gt;
&lt;pre&gt;#&amp;lt;http-server&amp;gt;
# valid keys are "address" and "force-connection-close"
#  address 8080#
#&amp;lt;/http-server&amp;gt;&lt;/pre&gt;
&lt;h3&gt;4. Start up paster using the zope2.ini file:&lt;/h3&gt;
&lt;pre&gt;$ paster serve zope2.ini
Starting server in PID 4666.
serving on http://127.0.0.1:8080&lt;/pre&gt;
&lt;p&gt;You can now go to &lt;a href="http://127.0.0.1:8080" rel="nofollow"&gt;http://127.0.0.1:8080&lt;/a&gt; to see your Plone site served up by Zope on WSGI!&lt;/p&gt;
&lt;p&gt;In the next blog post, we will describe how to get this semi-working in a production environment using mod_wsgi. For a sneak preview you can check out &lt;a href="http://svn.plone.org/svn/plone/sandbox/wsgi-plone4.1-devel/wsgi/"&gt;this buildout &lt;/a&gt;that Reed put together at the sprint. Note that there are a few patches that must be applied to Zope2, and hopefully Tres Seaver is reading this and will respond to them. &lt;img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;h2&gt;&lt;a href="http://jazkarta.files.wordpress.com/2010/11/p1040975.jpg"&gt;&lt;img class="alignright size-medium wp-image-572" title="P1040975" src="http://jazkarta.files.wordpress.com/2010/11/p1040975.jpg?w=300&amp;#038;h=225" alt="" width="300" height="225" /&gt;&lt;/a&gt;What&amp;#8217;s the official word on WSGI support for Plone 4?&lt;/h2&gt;
&lt;p&gt;Plone 4.1 will ship with Zope 2.13, but as Hanno states in &lt;a href="http://dev.plone.org/plone/ticket/10776"&gt;PLIP #10776&lt;/a&gt;:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;While Zope 2.13 provides native WSGI functionality, it is outside of this PLIP to make use of this in any way. There&amp;#8217;s a large number of open questions around WSGI and the changes it requires to instance creation and setup, which warrant their own PLIP. A good number of those will also have an impact on the Zope 2 codebase itself, which is going to be already past a beta release by the time this PLIP gets started and thus will have to wait for Zope 2.14. I expect to see more community experimentation being done with WSGI once the capability is there. We might see a PLIP for Plone 4.2 to see those experimentations being solidified into good practice, standards and documentation.&lt;/p&gt;
&lt;p&gt;So in other words, it&amp;#8217;s still on the bleeding edge to try to use it, and probably not advised for production use just yet. As Hanno mentions, it&amp;#8217;s expected that there will be more experimentation around WSGI, and as a community, we can come up with some best practices and documentation for how to do it in a sane way. Please let me know if you have done any experimentation with WSGI already, or if you&amp;#8217;re interested in getting involved in these efforts.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jazkarta.wordpress.com/515/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jazkarta.wordpress.com/515/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jazkarta.com&amp;#038;blog=11374782&amp;#038;post=515&amp;#038;subd=jazkarta&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=dRBV3ceNn_k:asYS8LRqUKg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=dRBV3ceNn_k:asYS8LRqUKg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=dRBV3ceNn_k:asYS8LRqUKg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=dRBV3ceNn_k:asYS8LRqUKg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.jazkarta.com/~ff/JazkartaBlog?a=dRBV3ceNn_k:asYS8LRqUKg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JazkartaBlog?i=dRBV3ceNn_k:asYS8LRqUKg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JazkartaBlog/~4/dRBV3ceNn_k" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.jazkarta.com/2010/11/22/plone-on-wsgi-sprint-report/#comments" thr:count="8" />
		<link rel="replies" type="application/atom+xml" href="http://blog.jazkarta.com/2010/11/22/plone-on-wsgi-sprint-report/feed/atom/" thr:count="8" />
		<thr:total>8</thr:total>
	<feedburner:origLink>http://blog.jazkarta.com/2010/11/22/plone-on-wsgi-sprint-report/</feedburner:origLink></entry>
	</feed>
