<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>heisel.org</title>
	
	<link>http://heisel.org/blog</link>
	<description>Musings for those in the media who grok, grep, and otherwise get the Web.</description>
	<lastBuildDate>Sun, 05 Sep 2010 10:00:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<feedburner:info uri="heisel/kdql" /><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="self" type="application/rss+xml" href="http://heisel.org/index.xml" /><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Fheisel.org%2Findex.xml" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Fheisel.org%2Findex.xml" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Fheisel.org%2Findex.xml" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.addtoany.com/?linkname=heisel.org&amp;linkurl=http%3A%2F%2Fheisel.org%2Findex.xml&amp;type=feed" src="http://www.addtoany.com/addfr-b.gif">Add to Any Feed Reader</feedburner:feedFlare><item>
		<title>500 Internal Server Error</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/TGRvXLowVL8/</link>
		<comments>http://heisel.org/blog/2010/09/05/500-internal-server-error-4/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 10:00:11 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2010/09/05/500-internal-server-error-4/</guid>
		<description><![CDATA[500 Inter&#173;nal Server Error &#8211; 500 Inter&#173;nal Server Error]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://feeds.delicious.com/v2/rss/chris.heisel">500 Inter&shy;nal Server Error</a> &#8211; 500 Inter&shy;nal Server Error</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=TGRvXLowVL8:QcCV8Hb5M7I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=TGRvXLowVL8:QcCV8Hb5M7I:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=TGRvXLowVL8:QcCV8Hb5M7I:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/TGRvXLowVL8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/09/05/500-internal-server-error-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/09/05/500-internal-server-error-4/</feedburner:origLink></item>
		<item>
		<title>Django template tag namespaces</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/0VBBe-Hrl9M/</link>
		<comments>http://heisel.org/blog/2010/08/10/django-template-tag-namespaces/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 12:00:03 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2010/08/10/django-template-tag-namespaces/</guid>
		<description><![CDATA[Django tem&#173;plate tag name&#173;spaces &#8211; Cody Soy&#173;land fixed one of my major nits to pick [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://codysoyland.com/2010/aug/9/django-template-tag-namespaces-now-possible/">Django tem&shy;plate tag name&shy;spaces</a> &#8211; Cody Soy&shy;land fixed one of my major nits to pick with Django&#039;s tem&shy;plate system. In a cul&shy;ture of reusable apps we&#039;ve got to account for name&shy;space col&shy;li&shy;sions through&shy;out the stack. &quot;Namespaces are one honk&shy;ing great idea &#8212; let&#039;s do more of those!&quot;</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=0VBBe-Hrl9M:AjOKo7Bha0o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=0VBBe-Hrl9M:AjOKo7Bha0o:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=0VBBe-Hrl9M:AjOKo7Bha0o:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/0VBBe-Hrl9M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/08/10/django-template-tag-namespaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/08/10/django-template-tag-namespaces/</feedburner:origLink></item>
		<item>
		<title>Recipe for success</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/BJw-1N9isFo/</link>
		<comments>http://heisel.org/blog/2010/06/17/recipe-for-success/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 13:02:24 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2010/06/17/recipe-for-success/</guid>
		<description><![CDATA[Recipe for suc&#173;cess &#8211; &#34;Focus on Qual&#173;ity, Reduce Work-&#8203;in-&#8203;Progress, Bal&#173;ance Capac&#173;ity against Demand, Prioritize&#34;]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.agilemanagement.net/index.php/blog/Recipe_For_Success">Recipe for suc&shy;cess</a> &#8211; &quot;Focus on Qual&shy;ity, Reduce Work-&#8203;in-&#8203;Progress, Bal&shy;ance Capac&shy;ity against Demand, Prioritize&quot;</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=BJw-1N9isFo:2uFHDKUYfbo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=BJw-1N9isFo:2uFHDKUYfbo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=BJw-1N9isFo:2uFHDKUYfbo:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/BJw-1N9isFo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/06/17/recipe-for-success/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/06/17/recipe-for-success/</feedburner:origLink></item>
		<item>
		<title>The tablet isn’t the new print</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/3fjYuIBOKjE/</link>
		<comments>http://heisel.org/blog/2010/06/17/the-tablet-isnt-the-new-print/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 12:00:49 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2010/06/17/the-tablet-isnt-the-new-print/</guid>
		<description><![CDATA[The tablet isn&#8217;t the new print &#8211; &#8230;but it&#39;s also not the new Web either]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.yelvington.com/content/whack-head-maslows-hammer">The tablet isn&#8217;t the new print</a> &#8211; &#8230;but it&#39;s also not the new Web either</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=3fjYuIBOKjE:a0noh3hysJE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=3fjYuIBOKjE:a0noh3hysJE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=3fjYuIBOKjE:a0noh3hysJE:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/3fjYuIBOKjE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/06/17/the-tablet-isnt-the-new-print/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/06/17/the-tablet-isnt-the-new-print/</feedburner:origLink></item>
		<item>
		<title>AJ Jacobs: My colossal task burden | Life and style | The Guardian</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/yeT3TrSDa7A/</link>
		<comments>http://heisel.org/blog/2010/06/05/aj-jacobs-my-colossal-task-burden-life-and-style-the-guardian/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 19:08:39 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2010/06/05/aj-jacobs-my-colossal-task-burden-life-and-style-the-guardian/</guid>
		<description><![CDATA[AJ Jacobs: My colos&#173;sal task burden &#124; Life and style &#124; The Guardian &#8211;]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.guardian.co.uk/lifeandstyle/2010/may/22/multitaking-unitasking-aj-jacobs/print">AJ Jacobs: My colos&shy;sal task burden | Life and style | The Guardian</a> &#8211; </li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=yeT3TrSDa7A:mo2FfqwwrTY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=yeT3TrSDa7A:mo2FfqwwrTY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=yeT3TrSDa7A:mo2FfqwwrTY:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/yeT3TrSDa7A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/06/05/aj-jacobs-my-colossal-task-burden-life-and-style-the-guardian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/06/05/aj-jacobs-my-colossal-task-burden-life-and-style-the-guardian/</feedburner:origLink></item>
		<item>
		<title>Five Core Properties of a Kanban Implementation</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/Fl7pCruR_Dw/</link>
		<comments>http://heisel.org/blog/2010/04/11/five-core-properties-of-a-kanban-implementation/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 13:00:22 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2010/04/11/five-core-properties-of-a-kanban-implementation/</guid>
		<description><![CDATA[Five Core Prop&#173;er&#173;ties of a Kanban Imple&#173;men&#173;ta&#173;tion &#8211; Another good break&#173;down of Kanban.]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.limitedwipsociety.org/2010/04/11/five-core-properties-of-a-kanban-implementation/">Five Core Prop&shy;er&shy;ties of a Kanban Imple&shy;men&shy;ta&shy;tion</a> &#8211; Another good break&shy;down of Kanban.</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=Fl7pCruR_Dw:53bWw5mAFC0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=Fl7pCruR_Dw:53bWw5mAFC0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=Fl7pCruR_Dw:53bWw5mAFC0:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/Fl7pCruR_Dw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/04/11/five-core-properties-of-a-kanban-implementation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/04/11/five-core-properties-of-a-kanban-implementation/</feedburner:origLink></item>
		<item>
		<title>Teabonics</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/rzpvxnluZtU/</link>
		<comments>http://heisel.org/blog/2010/04/03/teabonics/#comments</comments>
		<pubDate>Sat, 03 Apr 2010 18:00:06 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2010/04/03/teabonics/</guid>
		<description><![CDATA[Teabon&#173;ics &#8211; &#34;Say No to Socilism&#34;]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.flickr.com/photos/pargon/4469682774/in/set-72157623594187379/">Teabon&shy;ics</a> &#8211; &quot;Say No to Socilism&quot;</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=rzpvxnluZtU:rXbvOEyJvoY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=rzpvxnluZtU:rXbvOEyJvoY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=rzpvxnluZtU:rXbvOEyJvoY:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/rzpvxnluZtU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/04/03/teabonics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/04/03/teabonics/</feedburner:origLink></item>
		<item>
		<title>The Collapse of Complex Business Models</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/i_yIMeFhfYI/</link>
		<comments>http://heisel.org/blog/2010/04/01/the-collapse-of-complex-business-models/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 02:03:35 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2010/04/01/the-collapse-of-complex-business-models/</guid>
		<description><![CDATA[The Col&#173;lapse of Com&#173;plex Busi&#173;ness Models &#8211; Clay Shirky. &#39;Nuff said]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.shirky.com/weblog/2010/04/the-collapse-of-complex-business-models/">The Col&shy;lapse of Com&shy;plex Busi&shy;ness Models</a> &#8211; Clay Shirky. &#39;Nuff said</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=i_yIMeFhfYI:3zrU6Efflhw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=i_yIMeFhfYI:3zrU6Efflhw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=i_yIMeFhfYI:3zrU6Efflhw:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/i_yIMeFhfYI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/04/01/the-collapse-of-complex-business-models/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/04/01/the-collapse-of-complex-business-models/</feedburner:origLink></item>
		<item>
		<title>Boil the ocean</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/6K2uYdEZPIo/</link>
		<comments>http://heisel.org/blog/2010/03/25/boil-the-ocean/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 18:01:54 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2010/03/25/boil-the-ocean/</guid>
		<description><![CDATA[Boil the ocean &#8211; The origin of the phrase came from WWI amazingly.]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.bobcongdon.net/blog/2004/06/boil-ocean.html">Boil the ocean</a> &#8211; The origin of the phrase came from WWI amazingly.</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=6K2uYdEZPIo:QglE91JQSCw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=6K2uYdEZPIo:QglE91JQSCw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=6K2uYdEZPIo:QglE91JQSCw:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/6K2uYdEZPIo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/03/25/boil-the-ocean/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/03/25/boil-the-ocean/</feedburner:origLink></item>
		<item>
		<title>Why writing software is not like engineering</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/m59cst17G1Q/</link>
		<comments>http://heisel.org/blog/2010/03/23/why-writing-software-is-not-like-engineering/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 15:00:56 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2010/03/23/why-writing-software-is-not-like-engineering/</guid>
		<description><![CDATA[Why writ&#173;ing soft&#173;ware is not like engi&#173;neer&#173;ing &#8211; &#34;The answer lies in a single fun&#173;da&#173;men&#173;tal [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.cs.usfca.edu/~parrt/doc/software-not-engineering.html">Why writ&shy;ing soft&shy;ware is not like engi&shy;neer&shy;ing</a> &#8211; &quot;The answer lies in a single fun&shy;da&shy;men&shy;tal dif&shy;fer&shy;ence with far-&#8203;reaching ram&shy;i&shy;fi&shy;ca&shy;tions: engi&shy;neer&shy;ing is con&shy;strained by the real, phys&shy;i&shy;cal world and soft&shy;ware is not.&nbsp;&quot;</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=m59cst17G1Q:j8_E9eSo818:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=m59cst17G1Q:j8_E9eSo818:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=m59cst17G1Q:j8_E9eSo818:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/m59cst17G1Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/03/23/why-writing-software-is-not-like-engineering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/03/23/why-writing-software-is-not-like-engineering/</feedburner:origLink></item>
		<item>
		<title>The Panic Status Board</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/Hvg1cPFvTsQ/</link>
		<comments>http://heisel.org/blog/2010/03/08/the-panic-status-board/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 04:00:35 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2010/03/08/the-panic-status-board/</guid>
		<description><![CDATA[The Panic Status Board &#8211; I &#60;3 infor&#173;ma&#173;tion radiations]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.panic.com/blog/2010/03/the-panic-status-board/">The Panic Status Board</a> &#8211; I &lt;3 infor&shy;ma&shy;tion radiations</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=Hvg1cPFvTsQ:PMH9MxWPxM0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=Hvg1cPFvTsQ:PMH9MxWPxM0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=Hvg1cPFvTsQ:PMH9MxWPxM0:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/Hvg1cPFvTsQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/03/08/the-panic-status-board/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/03/08/the-panic-status-board/</feedburner:origLink></item>
		<item>
		<title>The Nature of the Business</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/izYUVLfTd08/</link>
		<comments>http://heisel.org/blog/2010/02/07/the-nature-of-the-business/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 22:00:09 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2010/02/07/the-nature-of-the-business/</guid>
		<description><![CDATA[The Nature of the Busi&#173;ness &#8211; A great post how (and how not) to manage [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://imagineerebirth.blogspot.com/2007/06/nature-of-business.html">The Nature of the Busi&shy;ness</a> &#8211; A great post how (and how not) to manage a cre&shy;ative agency cov&shy;er&shy;ing one of my other great loves, the Disney parks and Imagineering</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=izYUVLfTd08:88zcrJesbsg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=izYUVLfTd08:88zcrJesbsg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=izYUVLfTd08:88zcrJesbsg:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/izYUVLfTd08" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/02/07/the-nature-of-the-business/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/02/07/the-nature-of-the-business/</feedburner:origLink></item>
		<item>
		<title>Saints, Colts Hoping To Resolve Super Bowl Through Diplomacy</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/9ct-9YEvy0U/</link>
		<comments>http://heisel.org/blog/2010/02/04/saints-colts-hoping-to-resolve-super-bowl-through-diplomacy/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 14:00:30 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2010/02/04/saints-colts-hoping-to-resolve-super-bowl-through-diplomacy/</guid>
		<description><![CDATA[Saints, Colts Hoping To Resolve Super Bowl Through Diplo&#173;macy &#8211; &#34;Absolutely no one wants to [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.theonion.com/content/news/saints_colts_hoping_to_resolve">Saints, Colts Hoping To Resolve Super Bowl Through Diplo&shy;macy</a> &#8211; &quot;Absolutely no one wants to see these teams forced to take the field and play 60 min&shy;utes of brutal foot&shy;ball against each another.&quot;</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=9ct-9YEvy0U:vl590sFDG4c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=9ct-9YEvy0U:vl590sFDG4c:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=9ct-9YEvy0U:vl590sFDG4c:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/9ct-9YEvy0U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/02/04/saints-colts-hoping-to-resolve-super-bowl-through-diplomacy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/02/04/saints-colts-hoping-to-resolve-super-bowl-through-diplomacy/</feedburner:origLink></item>
		<item>
		<title>Solving for the iron triangle with kanban and scrumban</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/f0q31ds38Fw/</link>
		<comments>http://heisel.org/blog/2010/01/10/iron-triangle-kanban-scrumban/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 21:59:42 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Management]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/?p=1618</guid>
		<description><![CDATA[Scope, quality, schedule -- pick two. Hint: Quality is fixed.]]></description>
			<content:encoded><![CDATA[<p>Life is full of lim&shy;i&shy;ta&shy;tions: No park&shy;ing, no run&shy;ning, no diving, <a href="http://www.youtube.com/watch?v=WStE470Nu4s">no stair&shy;way</a> etc.</p>

<p>One of the keys to project man&shy;age&shy;ment is know&shy;ing and embrac&shy;ing the lim&shy;i&shy;ta&shy;tions of a project. One of the other keys is being able to help others see and embrace the same limitations.</p>

<p>In soft&shy;ware devel&shy;op&shy;ment there&#8217;s been a lot of talk about &#8220;Fast. Cheap. Good. Pick two&#8221;. But I think the most common <a href="http://en.wikipedia.org/wiki/Project_triangle">iron tri&shy;an&shy;gle</a> we face is actu&shy;ally <strong>&#8220;Scope. Sched&shy;ule. Qual&shy;ity. Pick two.&#8221;</strong></p>

<p>Very few clients would ever actu&shy;ally pick Scope and Sched&shy;ule, and say &#8220;Meh. To hell with quality.&#8221;</p>

<p>So the real lim&shy;i&shy;ta&shy;tions of our dis&shy;ci&shy;pline are <strong>Scope</strong> and <strong>Sched&shy;ule</strong>, because almost no one wants an on-&#8203;time piece of garbage, or an incom&shy;plete piece of garbage.</p>

<p>There are two strate&shy;gies that I use to embrace these limitations:</p>

<h3>Kanban (fixed scope)</h3>

<p>If you haven&#8217;t heard of Kanban, I rec&shy;om&shy;mend you read up on it as it really is a great system. Here&#8217;s just <a href="http://www.kanbandistilled.com/">one quick tuto&shy;r&shy;ial</a>, and my <a href="http://delicious.com/chris.heisel/kanban">run&shy;ning list of links</a>.</p>

<p>For me, the essence of Kanban is fixed scope, but flex&shy;i&shy;ble sched&shy;ule. Sure, you can quote a <a href="http://leanandkanban.wordpress.com/2009/04/18/lead-time-vs-cycle-time/">lead time</a> &#8212; an aver&shy;age of how long it&#8217;s taken fea&shy;tures to go from the back&shy;log all the way to done in the past &#8212; but that&#8217;s an esti&shy;mate, not a commitment.</p>

<p>This works great if you&#8217;ve got clients who are flex&shy;i&shy;ble enough to accept a fairly open-&#8203;ended deliv&shy;ery&nbsp;date.</p>

<h3>Scrumban (fixed schedule)</h3>

<p><a href="http://leansoftwareengineering.com/ksse/scrum-ban/">Scrum&shy;ban</a> is a great tran&shy;si&shy;tional step for teams and clients when trying to go from Scrum/Agile or, <em>shud&shy;der</em> <a href="http://www.waterfall2006.com/">Water&shy;fall</a>, to Kanban.</p>

<p>In Scrum&shy;ban you&#8217;ll fix a sched&shy;ule, a release every two or three weeks sim&shy;i&shy;lar to Scrum. But unlike Scrum you <strong>don&#8217;t fix the scope</strong> for the sprint.</p>

<p>Instead you work with the client and the team to come up with a pri&shy;or&shy;i&shy;tized back&shy;log of items for that sprint.</p>

<p>Work during the sprint is popped off the top of the back&shy;log stack, so that the most impor&shy;tant work (as judged by the client) is done&nbsp;first.</p>

<p>If the back&shy;log stack gets too small, then, aside from cel&shy;e&shy;brat&shy;ing your pro&shy;duc&shy;tiv&shy;ity, the team and client can regroup and fill the back&shy;log up&nbsp;again.</p>

<p>If the back&shy;log isn&#8217;t com&shy;pleted by the end of the sprint, that&#8217;s OK because we decided to <strong>fix sched&shy;ule (and qual&shy;ity), not scope</strong>.</p>

<p>In con&shy;sul&shy;ta&shy;tion with the team and the client, you can take the remain&shy;ing items and start the next sprint with them, or throw them all out if pri&shy;or&shy;i&shy;ties have changed!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=f0q31ds38Fw:Uxzmqb2lKZs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=f0q31ds38Fw:Uxzmqb2lKZs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=f0q31ds38Fw:Uxzmqb2lKZs:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/f0q31ds38Fw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/01/10/iron-triangle-kanban-scrumban/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/01/10/iron-triangle-kanban-scrumban/</feedburner:origLink></item>
		<item>
		<title>A time to work, a time to slack</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/FA0OVtt5MRc/</link>
		<comments>http://heisel.org/blog/2010/01/03/slack-time/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 22:00:18 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Management]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/?p=1616</guid>
		<description><![CDATA[Why 100% utilization is an awful idea.]]></description>
			<content:encoded><![CDATA[<p>Show your system admin&shy;is&shy;tra&shy;tor a box run&shy;ning at <a href="http://www.google.com/search?sourceid=chrome&amp;ie=UTF-8&amp;q=100%25+cpu+utilization">100 per&shy;cent system uti&shy;liza&shy;tion</a>.</p>

<p>If you can find one who thinks it&#8217;s a good thing, then you&#8217;ve got your&shy;self a bad system admin&shy;is&shy;tra&shy;tor. A <strong>good</strong> sysad&shy;min knows that if a box is pegged at 100 per&shy;cent, then it <strong>can&#8217;t handle any more traf&shy;fic</strong> and it&#8217;s <strong>likely to fall over at any moment</strong>.</p>

<p>Show some man&shy;agers an employee work&shy;ing at 100 per&shy;cent. Many will say, while pat&shy;ting them&shy;selves on the back, that must be a great worker who&#8217;s been prop&shy;erly motived by a good manager&#8230; <em>wink</em>.</p>

<p>But some, myself included, would think &#8220;there&#8217;s an employee who <strong>can&#8217;t handle any more traf&shy;fic</strong> and is <strong>likely to fall over at any moment.</strong>&#8220;</p>

<p>Machines can&#8217;t run at 100 per&shy;cent all the time, and nei&shy;ther can humans. That&#8217;s why we have <strong>slack time.</strong></p>

<p>Slack time ben&shy;e&shy;fits employ&shy;ees by giving them time to cool down and recharge their cre&shy;ativ&shy;ity between projects. Man&shy;agers ben&shy;e&shy;fit by con&shy;stantly having a pool of refreshed, ready talent to han&shy;dling incom&shy;ing&nbsp;work.</p>

<p>Good man&shy;agers should have a pool of low pri&shy;or&shy;ity, deadline-&#8203;less, &#8220;it&#8217;d be nice if&#8221; projects and&nbsp;tasks.</p>

<p>That way, when higher pri&shy;or&shy;ity work has been com&shy;pleted and there&#8217;s down time, there&#8217;s some&shy;thing for folks to work on that can be easily set aside should an emer&shy;gency arise, or new work arrive.</p>

<p><strong>Editor&#8217;s note:</strong> This is the first in a <a href="http://heisel.org/blog/category/kanban/">series of posts</a> where I&#8217;ll try and espouse on the some of the prin&shy;ci&shy;pals and prac&shy;tices of <a href="http://www.limitedwipsociety.org/">Kanban</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=FA0OVtt5MRc:iSU6N1o-n60:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=FA0OVtt5MRc:iSU6N1o-n60:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=FA0OVtt5MRc:iSU6N1o-n60:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/FA0OVtt5MRc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2010/01/03/slack-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2010/01/03/slack-time/</feedburner:origLink></item>
		<item>
		<title>How to improve airports</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/_pWuXOtSjeo/</link>
		<comments>http://heisel.org/blog/2009/12/30/better-airports/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 21:44:54 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/?p=1614</guid>
		<description><![CDATA[Four gripes, and one crazy idea, to make flying just a little better.]]></description>
			<content:encoded><![CDATA[<p>After the most recent round of hol&shy;i&shy;day air&shy;borne bus rides that is our civil avi&shy;a&shy;tion system, I thought I&#8217;d jot down a few ideas I had that&#8217;d make the expe&shy;ri&shy;ence more pleasant&#8230; at least for&nbsp;me.</p>

<h3>1. Stop the repetitive announcements</h3>

<p>How many times do we need to announce over the <acroymn title="Public Address">PA</acronym> system that &#8220;the white zone is for load&shy;ing and unloading&#8221;, &#8220;passengers are only allowed one car&shy;ryon and one per&shy;sonal item&#8221;, and &#8220;the national threat level is orange.&#8221;</p>

<p>These announce&shy;ments appear to be on an inter&shy;val loop and never actu&shy;ally rep&shy;re&shy;sent a change in state. Tell me when the threat level goes up, tell me when it goes down, tell me when the white zone is for breakdancing.</p>

<p>Until then, stop with the damn &#8220;announcements&#8221; and print it on a&nbsp;sign.</p>

<h3>2. Mute the TVs</h3>

<p>I don&#8217;t know about your air&shy;port, but <a href="http://www.atlanta-airport.com/">Harts&shy;field</a>, espe&shy;cially the C con&shy;course, always seems to have the TVs turned way the hell&nbsp;up.</p>

<p>Why not offer a couple of options for watch&shy;ing&nbsp;TV:</p>

<ul>
<li><p>Broad&shy;cast the audio on an FM chan&shy;nel, and let those who want to, tune in with a&nbsp;radio.</p></li>
<li><p>Turn on the closed cap&shy;tions so folks can read it if they&nbsp;like</p></li>
<li><p>Sign a spon&shy;sor&shy;ship deal so folks can use air&shy;port WiFi free, or at least free if they want to watch stream&shy;ing video on CNN or Hulu or&nbsp;such.</p></li>
</ul>

<h3>3. Seats</h3>

<p>Again, it may only be a Harts&shy;field thing, but clearly the gate seat&shy;ing capac&shy;ity was scaled for a time when secu&shy;rity lines were shorter and folks could race to their plane right before takeoff.</p>

<p>Air&shy;ports should add more seat&shy;ing beyond the secu&shy;rity check point. I&#8217;d envi&shy;sion a large lounge in each con&shy;course, sur&shy;rounded by shops and dining with large status boards.</p>

<p>Even better than status boards, let me sign up for SMS noti&shy;fi&shy;ca&shy;tions for my flight. Alert me when there&#8217;s 15 min&shy;utes to go before board&shy;ing, or if my gate changes, etc.</p>

<h3>4. Bring your own bin</h3>

<p>People doff&shy;ing their shoes, taking their lap&shy;tops out, undo&shy;ing their belts (is this secu&shy;rity or striptease?) cause a bot&shy;tle&shy;neck at secu&shy;rity&nbsp;lines.</p>

<p>Why not give away/sell re-&#8203;usable heavy-&#8203;duty plas&shy;tic bags that are TSA-&#8203;approved &#8212; I&#8217;m think&shy;ing it&#8217;d be sim&shy;i&shy;lar to the <a href="http://www.brickfish.com/Pages/PhotosAlbums/PhotoView.aspx?picid=882879_33726280&amp;pid=2418852">Idea bag</a>.</p>

<p>Then folks could stop any place before the secu&shy;rity line, do the secu&shy;rity striptease shuf&shy;fle, put their items in the bag, and walk up to the line ready to&nbsp;go.</p>

<p>After the secu&shy;rity check&shy;point, people would don all their gear again and fold the bag up and be on their&nbsp;way.</p>

<h3>5. Sit, then board, then fly</h3>

<p>This is my cra&shy;zi&shy;est idea. But hear me&nbsp;out.</p>

<p>Instead of a seat&shy;ing area out&shy;side the gate, imag&shy;ine if you actu&shy;ally sat down in your assigned seat, in your assigned row, and could put your lug&shy;gage into the over&shy;head com&shy;part&shy;ments before your plane arrived at the airport?</p>

<p>Then when your plane arrived, the seat&shy;ing com&shy;part&shy;ment would slide out &#8212; allow&shy;ing the arrivals to &#8220;deplane&#8221;, and the depar&shy;ture seat&shy;ing sec&shy;tion would slide into the plane with every&shy;one and their belong&shy;ings stowed.</p>

<p>It&#8217;d reduce turn&shy;around time and garner the air&shy;lines more money &#8212; quicker turn, means more flights, which means more fares per&nbsp;day.</p>

<p>Of course it&#8217;d require redesign&shy;ing not just all the air&shy;planes, but all the air&shy;ports to make it happen, but hey wouldn&#8217;t it be&nbsp;cool!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=_pWuXOtSjeo:Lyt1oQkQLmM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=_pWuXOtSjeo:Lyt1oQkQLmM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=_pWuXOtSjeo:Lyt1oQkQLmM:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/_pWuXOtSjeo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/12/30/better-airports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/12/30/better-airports/</feedburner:origLink></item>
		<item>
		<title>TV of my life: A side trip down memory lane</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/bxj8c31ewHg/</link>
		<comments>http://heisel.org/blog/2009/12/20/tv-of-my-life/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 15:04:12 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/?p=1611</guid>
		<description><![CDATA[Announcing a new crappier blog!]]></description>
			<content:encoded><![CDATA[<p>This week I started a new blog called <a href="http://tvofmylife.com">TV of my life</a></p>

<p>I was think&shy;ing, in a bad way, about all the TV shows &#8212; some good, but most bad &#8212; that I watched in my childhood.</p>

<p>And then for some reason unbe&shy;knownst to me, I thought I&#8217;d start a blog and inflict this trip to nos&shy;tal&shy;giav&shy;ille on the rest of&nbsp;you.</p>

<p>There&#8217;s more about <a href="http://tvofmylife.com/post/289472147/about">why I started it</a> over at <a href="http://tvofmylife.com/">tvofmylife.com</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=bxj8c31ewHg:6mAebH5hjmw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=bxj8c31ewHg:6mAebH5hjmw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=bxj8c31ewHg:6mAebH5hjmw:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/bxj8c31ewHg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/12/20/tv-of-my-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/12/20/tv-of-my-life/</feedburner:origLink></item>
		<item>
		<title>Get XML coverage reports from nose</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/hzjVjdjFTeQ/</link>
		<comments>http://heisel.org/blog/2009/12/13/nose-xml-coverage/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 22:31:53 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/?p=1598</guid>
		<description><![CDATA[Quick recap of my tiny plugin for nose.]]></description>
			<content:encoded><![CDATA[<p>When <a href="http://heisel.org/blog/2009/11/21/django-hudson/">hook&shy;ing up Hudson and Django</a>, I needed a way to get XML cov&shy;er&shy;age reports.</p>

<p>At the time I <a href="http://bitbucket.org/cmheisel/nose/src/">forked nose</a> itself, but I wasn&#8217;t happy with the solu&shy;tion. Folks rightly wouldn&#8217;t want to use my fork; I don&#8217;t want to commit to keep&shy;ing up with nose&#8217;s devel&shy;op&shy;ment; and <a href="http://somethingaboutorange.com/mrl/projects/nose/0.11.1/plugins/writing.html">duh, they have a plugin archi&shy;tec&shy;ture</a>.</p>

<p>So I&#8217;m happy to announce <a href="http://github.com/cmheisel/nose-xcover">nose-&#8203;xcover</a>. Install it and it&#8217;ll add the &#8211;with-&#8203;xcoverage option which you can use along&shy;side the built-&#8203;in plugin like&nbsp;so:</p>

<pre><code>#nosetests --with-coverage {{ coverage options }} --with-xcoverage
nosetests --with-coverage --cover-package=myapp --cover-tests --with-xcoverage
</code></pre>

<p>I updated my <a href="http://heisel.org/blog/2009/11/21/django-hudson/">Django and Hudson guide</a> to use this instead of the&nbsp;fork.</p>

<p>I hope you find it useful!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=hzjVjdjFTeQ:yp0PO2TxAL8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=hzjVjdjFTeQ:yp0PO2TxAL8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=hzjVjdjFTeQ:yp0PO2TxAL8:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/hzjVjdjFTeQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/12/13/nose-xml-coverage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/12/13/nose-xml-coverage/</feedburner:origLink></item>
		<item>
		<title>Mathematical model for semi-sane redistricting</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/ORxp09P-CPk/</link>
		<comments>http://heisel.org/blog/2009/12/11/mathematical-model-for-semi-sane-redistricting/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 02:00:21 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2009/12/11/mathematical-model-for-semi-sane-redistricting/</guid>
		<description><![CDATA[Math&#173;e&#173;mat&#173;i&#173;cal model for semi-&#8203;sane redis&#173;trict&#173;ing &#8211; Fairly simple &#8212; make it a square, or as [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.boston.com/bostonglobe/ideas/articles/2009/11/22/squaresville_usa_how_to_fix_american_politics_one_right_angle_at_a_time/?page=full">Math&shy;e&shy;mat&shy;i&shy;cal model for semi-&#8203;sane redis&shy;trict&shy;ing</a> &#8211; Fairly simple &#8212; make it a square, or as square as it can be to avoid non-&#8203;competitive dis&shy;tricts. &#39;The &ldquo;Hill Ratio&rdquo; he devised involves divid&shy;ing a district&rsquo;s perime&shy;ter by four, and divid&shy;ing that by the square root of a district&rsquo;s area. The closer to 1 the result is, the more per&shy;fectly square the dis&shy;trict. Hill points out that in 1960, the aver&shy;age Hill Ratio was 1.526. It&rsquo;s now 2.1.&#39;</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=ORxp09P-CPk:Z-zTRFYjRv4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=ORxp09P-CPk:Z-zTRFYjRv4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=ORxp09P-CPk:Z-zTRFYjRv4:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/ORxp09P-CPk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/12/11/mathematical-model-for-semi-sane-redistricting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/12/11/mathematical-model-for-semi-sane-redistricting/</feedburner:origLink></item>
		<item>
		<title>django-grappelli</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/jbrAMKRjApM/</link>
		<comments>http://heisel.org/blog/2009/12/11/django-grappelli/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 02:00:20 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2009/12/11/django-grappelli/</guid>
		<description><![CDATA[django-&#8203;grappelli &#8211; The Django admin reskinned, and pretty (not that I dis&#173;like the cur&#173;rent design).]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://code.google.com/p/django-grappelli/wiki/screenshots">django-&#8203;grappelli</a> &#8211; The Django admin reskinned, and pretty (not that I dis&shy;like the cur&shy;rent design).</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=jbrAMKRjApM:UqM7zSGhfms:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=jbrAMKRjApM:UqM7zSGhfms:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=jbrAMKRjApM:UqM7zSGhfms:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/jbrAMKRjApM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/12/11/django-grappelli/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/12/11/django-grappelli/</feedburner:origLink></item>
		<item>
		<title>For Christmas, vintage photos</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/idOspLDdqlQ/</link>
		<comments>http://heisel.org/blog/2009/12/07/vintage-christmas-photos/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 02:57:16 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/?p=1574</guid>
		<description><![CDATA[My gift to you for the holidays, a photo edit.]]></description>
			<content:encoded><![CDATA[<p>Every year I like to dec&shy;o&shy;rate my com&shy;puter for the holidays.</p>

<p>In years past it took the form of <a href="http://osxdaily.com/2007/12/02/mac-os-x-christmas-holiday-desktop-app-fun/">holiday-&#8203;themed appli&shy;ca&shy;tions and dash&shy;board wid&shy;gets</a>.</p>

<p>But this year I&#8217;ve got a <a href="http://minimalmac.com/post/179603294/my-desktop-is-about-as-minimal-as-i-can-get-it">min&shy;i&shy;mal mac</a> thing going on. So I thought I&#8217;d &#8220;decorate&#8221; with some vin&shy;tage hol&shy;i&shy;day photos.</p>

<p>I ran across <a href="http://www.shorpy.com">Shorpy</a> which has a wealth of vin&shy;tage photos and thought I&#8217;d share my selects with you as a gift for the holidays:</p>

<ul>
<li><p><a href="http://www.shorpy.com/node/6826">Winter Palace: 1933</a> &mdash; Great com&shy;po&shy;si&shy;tion, and New York, espe&shy;cially, old New York, feels Christmassy.</p></li>
<li><p><a href="http://www.shorpy.com/node/6959">Sixth Avenue Shopp&shy;pers: 1903</a> &mdash; Mall schmall, these people shopped with horses!</p></li>
<li><p><a href="http://www.shorpy.com/node/7192">Broad&shy;way Santa: 1902</a> &mdash; A reminder that this is a time for giving. Also, Cubanola cigars and hats apparently.</p></li>
<li><p><a href="http://www.shorpy.com/node/5149">Wide Christ&shy;mas: 1920</a> &mdash; No matter how much you dec&shy;o&shy;rated your tree, these folks have you beat.&nbsp;Beat.</p></li>
<li><p><a href="http://www.shorpy.com/node/7050">Blade Run&shy;ners: 1919</a> &mdash; Great con&shy;trast with the white ice, and the blurry skater in the fore&shy;ground adds a hint of abstractness.</p></li>
<li><p><a href="http://www.shorpy.com/node/6299">Kay Jew&shy;lers: 1919</a> &mdash; Jane Sey&shy;mour and her open heart surger^H^H^H^H jew&shy;elry are nowhere to be&nbsp;found.</p></li>
<li><p><a href="http://www.shorpy.com/node/5170">Best Christ&shy;mas Ever: 1922</a> &mdash; That kid made out like a bandit, no matter what year it&nbsp;is.</p></li>
<li><p><a href="http://www.shorpy.com/node/5148">Five and Ten: 1921</a> &mdash; &#8220;Take a look in the five-&#8203;and-&#8203;ten, glis&shy;ten&shy;ing once again&#8221;</p></li>
<li><p><a href="http://www.shorpy.com/node/4609">Winter Won&shy;der&shy;land: 1908</a> &mdash; Tell me you don&#8217;t want to hop on one of those street&shy;cars with a parcel wrapped up in brown paper. Go on, tell&nbsp;me!</p></li>
<li><p><a href="http://www.shorpy.com/node/2196">Iowa City in the Snow: 1940</a>: Pos&shy;si&shy;bly my favorite. It&#8217;s straight out of &#8220;It&#8217;s a Won&shy;der&shy;ful Life.&#8221;</p></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=idOspLDdqlQ:VlBS0VUxBnE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=idOspLDdqlQ:VlBS0VUxBnE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=idOspLDdqlQ:VlBS0VUxBnE:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/idOspLDdqlQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/12/07/vintage-christmas-photos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/12/07/vintage-christmas-photos/</feedburner:origLink></item>
		<item>
		<title>How Necessary Is Stretching?</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/ahyOwc0XEqo/</link>
		<comments>http://heisel.org/blog/2009/11/25/how-necessary-is-stretching/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 18:00:04 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2009/11/25/how-necessary-is-stretching/</guid>
		<description><![CDATA[How Nec&#173;es&#173;sary Is Stretch&#173;ing? &#8211; Truth be told, I _never_ stretch before a run or [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://well.blogs.nytimes.com/2009/11/25/phys-ed-how-necessary-is-stretching/">How Nec&shy;es&shy;sary Is Stretch&shy;ing?</a> &#8211; Truth be told, I _never_ stretch before a run or any other workout.</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=ahyOwc0XEqo:shN6DV847U8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=ahyOwc0XEqo:shN6DV847U8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=ahyOwc0XEqo:shN6DV847U8:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/ahyOwc0XEqo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/11/25/how-necessary-is-stretching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/11/25/how-necessary-is-stretching/</feedburner:origLink></item>
		<item>
		<title>Django continuous integration with Hudson and Nose</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/l9NKSnVrHcs/</link>
		<comments>http://heisel.org/blog/2009/11/21/django-hudson/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 22:27:52 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/?p=1566</guid>
		<description><![CDATA[How to set up continuous testing, with coverage, of your Django project in Hudson.]]></description>
			<content:encoded><![CDATA[<p>At <a href="http://lincolnloop.com">work</a> we&#8217;ve decided to use <a href="http://hudson-ci.org/">Hudson</a> for our con&shy;tin&shy;u&shy;ous inte&shy;gra&shy;tion server.</p>

<p>I started off using <a href="http://www.rhonabwy.com/wp/2009/11/04/setting-up-a-python-ci-server-with-hudson/">Joe Heck&#8217;s great Python and Hudson writeup</a> as a&nbsp;guide.</p>

<p>But to get really good report&shy;ing, includ&shy;ing a cov&shy;er&shy;age report, you&#8217;re going to want to use <a href="http://somethingaboutorange.com/mrl/projects/nose/">Nose</a>, <a href="http://github.com/jbalogh/django-nose">django-&#8203;nose</a>, and my <a href="http://github.com/cmheisel/nose-xcover/">nose-&#8203;xcover</a> plugin.</p>

<p>Before you get <a href="http://hudson-ci.org/">Hudson</a> up and run&shy;ning, you&#8217;ll first want to create a test set&shy;tings module for your appli&shy;ca&shy;tion. Here&#8217;s a sample:</p>

<script src="http://gist.github.com/240285.js"></script>

<p>With that in place you&#8217;ll want to set up a sep&shy;a&shy;rate test require&shy;ments file for <a href="http://pypi.python.org/pypi/pip">pip</a>. If you&#8217;re not using <a href="http://pypi.python.org/pypi/pip">pip</a>, I can&#8217;t be held respon&shy;si&shy;ble if the <a href="http://s3.pixane.com/python_comrades.png">cen&shy;tral com&shy;mit&shy;tee</a> gets ahold of&nbsp;you.</p>

<script src="http://gist.github.com/240291.js"></script>

<p><strike>Why use <a href="http://bitbucket.org/cmheisel/nose/src/">my fork of nose</a>? We&#8217;ll get to that in a second.</strike> First let&#8217;s set up our build script.</p>

<script src="http://gist.github.com/240296.js"></script>

<ol>
<li>We change into Hudson work&shy;space set up for this&nbsp;build</li>
<li>Set up a <a href="http://pypi.python.org/pypi/virtualenv">vir&shy;tualenv</a> for our project</li>
<li>Acti&shy;vate&nbsp;it</li>
<li>Install our application&#8217;s requirements</li>
<li>Install our application&#8217;s test requirements</li>
<li>Assum&shy;ing you have a prop&shy;erly con&shy;structed setup.py, this com&shy;mand will sym&shy;link it into your virtualenv&#8217;s site packages</li>
<li>Finally run our tests, using our test settings.</li>
</ol>

<p>The &#8211;with-&#8203;coverage option tells nose we want to cap&shy;ture cov&shy;er&shy;age infor&shy;ma&shy;tion. The &#8211;cover-&#8203;package option tells nose we only want report&shy;ing on our appli&shy;ca&shy;tion. The &#8211;with-&#8203;xunit option will gen&shy;erte a nosetests.xml file in our work&shy;space with the results of the test&nbsp;run.</p>

<p><strike>Finally, the &#8211;with-&#8203;cover-&#8203;xml option is an option I added to nose&#8217;s cov&shy;er&shy;age plugin, and the reason why I&#8217;ve got <a href="http://bitbucket.org/cmheisel/nose/src/">my fork</a> listed in our test-requirements.pip.</strike> Finally, the &#8211;with-&#8203;xcoverage option acti&shy;vates my <a href="http://github.com/cmheisel/nose-xcover/">nose-&#8203;xcover</a> plugin. It out&shy;puts an XML cov&shy;er&shy;age report that Hudson can use, and it&#8217;ll honor the &#8211;cover-&#8203;package option you spec&shy;i&shy;fied ear&shy;lier, so your cov&shy;er&shy;age per&shy;cent&shy;age won&#8217;t be arti&shy;fi&shy;cially low&shy;ered, or inflated, by third-&#8203;party code you&nbsp;use.</p>

<p>Now let&#8217;s con&shy;fig&shy;ure Hudson to use the two XML reports we&#8217;re generating.</p>

<p>First the test pass/fail report.</p>

<p><img src="http://heisel.org/blog/wp-content/uploads/2009/11/Config-Hudson.jpg" alt="Config [Hudson].jpg" border="0" width="782" height="91" /></p>

<p>And then our cov&shy;er&shy;age report, you&#8217;ll need the <a href="http://wiki.hudson-ci.org/display/HUDSON/Cobertura+Plugin">Cober&shy;tura plugin</a> for&nbsp;this:</p>

<p><img src="http://heisel.org/blog/wp-content/uploads/2009/11/Config-Hudson-1.jpg" alt="Config [Hudson]-1.jpg" border="0" width="782" height="336" /></p>

<p>That&#8217;s right, you&#8217;ll also want the <a href="http://wiki.hudson-ci.org/display/HUDSON/ChuckNorris+Plugin">Chuck Norris plugin</a>. Why? Because Chuck Norris <strong>can</strong> divide by zero. That&#8217;s why.</p>

<p>Also, I&#8217;d highly rec&shy;om&shy;mend the <a href="http://wiki.hudson-ci.org/display/HUDSON/Green+Balls">Green balls</a> plugin, because Hudson&#8217;s default of blue == pass just doesn&#8217;t fly with me, or&nbsp;Chuck.</p>

<p>While we&#8217;ve been set&shy;ting up Hudson, I had another build in the oven baking using the recipe above. Let&#8217;s see how it turned out:</p>

<p><img src="http://heisel.org/blog/wp-content/uploads/2009/11/Dummy-Hudson.jpg" alt="Dummy [Hudson].jpg" border="0" width="861" height="550" /></p>

<p><strong>Editor&#8217;s note:</strong> I updated this post to use my <a href="http://github.com/cmheisel/nose-xcover/">nose-&#8203;xcover</a> plugin and not my <a href="http://bitbucket.org/cmheisel/nose/src/">fork of nose</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=l9NKSnVrHcs:W1DQB346Lws:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=l9NKSnVrHcs:W1DQB346Lws:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=l9NKSnVrHcs:W1DQB346Lws:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/l9NKSnVrHcs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/11/21/django-hudson/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/11/21/django-hudson/</feedburner:origLink></item>
		<item>
		<title>Chris Kelly sums up my feelings about unit tests</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/ybSTtDAMUUY/</link>
		<comments>http://heisel.org/blog/2009/11/20/chris-kelly-sums-up-my-feelings-about-unit-tests/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 18:00:19 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2009/11/20/chris-kelly-sums-up-my-feelings-about-unit-tests/</guid>
		<description><![CDATA[Chris Kelly sums up my feel&#173;ings about unit tests &#8211; &#34;I&#39;ve got a fever, and [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://twitter.com/ckelly/status/5894454585">Chris Kelly sums up my feel&shy;ings about unit tests</a> &#8211; &quot;I&#39;ve got a fever, and the only pre&shy;scrip&shy;tion is more Unit Tests.&quot;</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=ybSTtDAMUUY:mjjQ0nj-DNE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=ybSTtDAMUUY:mjjQ0nj-DNE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=ybSTtDAMUUY:mjjQ0nj-DNE:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/ybSTtDAMUUY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/11/20/chris-kelly-sums-up-my-feelings-about-unit-tests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/11/20/chris-kelly-sums-up-my-feelings-about-unit-tests/</feedburner:origLink></item>
		<item>
		<title>It’s Decorative Gourd Season, Motherfuckers.</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/2-C23mmbaxI/</link>
		<comments>http://heisel.org/blog/2009/10/27/its-decorative-gourd-season-motherfuckers/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 14:00:56 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2009/10/27/its-decorative-gourd-season-motherfuckers/</guid>
		<description><![CDATA[It&#8217;s Dec&#173;o&#173;ra&#173;tive Gourd Season, Moth&#173;er&#173;fuck&#173;ers. &#8211; Had me laugh&#173;ing so hard I cried. Reminds me [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.mcsweeneys.net/2009/10/20nissan.html">It&#8217;s Dec&shy;o&shy;ra&shy;tive Gourd Season, Moth&shy;er&shy;fuck&shy;ers.</a> &#8211; Had me laugh&shy;ing so hard I cried. Reminds me of the good old days with Her&shy;bert Korn&shy;feld at The&nbsp;Onion.</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=2-C23mmbaxI:_msq-DZR2fw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=2-C23mmbaxI:_msq-DZR2fw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=2-C23mmbaxI:_msq-DZR2fw:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/2-C23mmbaxI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/10/27/its-decorative-gourd-season-motherfuckers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/10/27/its-decorative-gourd-season-motherfuckers/</feedburner:origLink></item>
		<item>
		<title>Python complexity highlighling in Vim</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/jO79btz8g48/</link>
		<comments>http://heisel.org/blog/2009/10/26/python-complexity-highlighling-in-vim/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 22:01:20 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2009/10/26/python-complexity-highlighling-in-vim/</guid>
		<description><![CDATA[Python com&#173;plex&#173;ity high&#173;ligh&#173;ling in Vim &#8211; If you needed a reason to use Vim, this [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://blog.extracheese.org/2009/10/cyclomatic-complexity-in-vim-first-steps.html">Python com&shy;plex&shy;ity high&shy;ligh&shy;ling in Vim</a> &#8211; If you needed a reason to use Vim, this is it. And it is hot.&nbsp;Hot.</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=jO79btz8g48:IwagRSbOhkk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=jO79btz8g48:IwagRSbOhkk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=jO79btz8g48:IwagRSbOhkk:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/jO79btz8g48" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/10/26/python-complexity-highlighling-in-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/10/26/python-complexity-highlighling-in-vim/</feedburner:origLink></item>
		<item>
		<title>Why I like Redis</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/yeV0Xvpu56E/</link>
		<comments>http://heisel.org/blog/2009/10/22/why-i-like-redis/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 13:01:32 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2009/10/22/why-i-like-redis/</guid>
		<description><![CDATA[Why I like Redis &#8211; Redis is a sexy key/value store, sim&#173;i&#173;lar to mem&#173;cache but [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://simonwillison.net/2009/Oct/22/redis/">Why I like Redis</a> &#8211; Redis is a sexy key/value store, sim&shy;i&shy;lar to mem&shy;cache but suited for more of a no-&#8203;SQL appli&shy;ca&shy;tion. I like how Simon is using it for offline data pro&shy;cess&shy;ing and transformation.</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=yeV0Xvpu56E:gPoQFO2ww3Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=yeV0Xvpu56E:gPoQFO2ww3Q:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=yeV0Xvpu56E:gPoQFO2ww3Q:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/yeV0Xvpu56E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/10/22/why-i-like-redis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/10/22/why-i-like-redis/</feedburner:origLink></item>
		<item>
		<title>"The Office", deeper than you may think</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/Rk33AowGYdU/</link>
		<comments>http://heisel.org/blog/2009/10/14/the-office-deeper-than-you-may-think/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 19:02:19 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2009/10/14/the-office-deeper-than-you-may-think/</guid>
		<description><![CDATA[&#34;The Office&#34;, deeper than you may think &#8211; A great, and long, analy&#173;sis that feel [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.ribbonfarm.com/2009/10/07/the-gervais-principle-or-the-office-according-to-the-office/">&quot;The Office&quot;, deeper than you may think</a> &#8211; A great, and long, analy&shy;sis that feel unset&shy;tlingly accurate</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=Rk33AowGYdU:U_qrEiMa2H8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=Rk33AowGYdU:U_qrEiMa2H8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=Rk33AowGYdU:U_qrEiMa2H8:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/Rk33AowGYdU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/10/14/the-office-deeper-than-you-may-think/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/10/14/the-office-deeper-than-you-may-think/</feedburner:origLink></item>
		<item>
		<title>Django at the AJC</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/bCYTGUZWvi4/</link>
		<comments>http://heisel.org/blog/2009/10/09/django-at-the-ajc/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 16:00:13 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Blogmarks]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/2009/10/09/django-at-the-ajc/</guid>
		<description><![CDATA[Django at the AJC &#8211; Zellyn gave a great recap of all the Django work [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.slideshare.net/zellyn/django-at-the-ajc">Django at the AJC</a> &#8211; Zellyn gave a great recap of all the Django work we&#39;ve done at the AJC for the Python Atlanta Users&nbsp;Group.</li>

</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=bCYTGUZWvi4:hh0Eqdbkwm0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=bCYTGUZWvi4:hh0Eqdbkwm0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=bCYTGUZWvi4:hh0Eqdbkwm0:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/bCYTGUZWvi4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/10/09/django-at-the-ajc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/10/09/django-at-the-ajc/</feedburner:origLink></item>
		<item>
		<title>Setup Django with mod_wsgi on your Mac</title>
		<link>http://feedproxy.google.com/~r/heisel/kDqL/~3/k6aaHrTkwi0/</link>
		<comments>http://heisel.org/blog/2009/09/25/mod-wsgi-mac/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 23:09:22 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://heisel.org/blog/?p=1529</guid>
		<description><![CDATA[Logged for your pleasure, and mine: the steps I went through to setup mod_wsgi on my Mac for local development of Django apps.]]></description>
			<content:encoded><![CDATA[<p>In spirit of writ&shy;ing this down so I don&#8217;t forget, I humbly submit this to <a href="http://www.youtube.com/watch?v=iRmxXp62O8g&amp;feature=related">the Inter&shy;nets</a> in the vain hope that it helps some&shy;one&nbsp;else.</p>

<p>For the pur&shy;poses of this I&#8217;m assum&shy;ing that you have Python and Django installed. I use <a href="http://www.macports.org/">Mac&shy;ports</a> but feel free to use <a href="http://github.com/mxcl/homebrew">Home&shy;brew</a> or any other <a href="http://linux.die.net/man/8/apt-get">fine pack&shy;age man&shy;ager</a>.</p>

<ul>
<li>Install apache2 and mod_wsgi</li>
</ul>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">~ $ <span style="color: #c20cb9; font-weight: bold;">sudo</span> port <span style="color: #c20cb9; font-weight: bold;">install</span> apache2 mod_wsgi</pre></div></div>


<ul>
<li><p>You&#8217;ll prob&shy;a&shy;bly want to to add /opt/local/apache2/bin/ to your $PATH in ~/.profile</p></li>
<li><p>Create an httpd.conf file</p></li>
</ul>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>conf
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> httpd.conf.sample httpd.conf</pre></div></div>


<ul>
<li>Add the mod_wsgi module to httpd.conf</li>
</ul>


<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">LoadModule</span> wsgi_module modules/mod_wsgi.so</pre></div></div>


<ul>
<li>Make sure the vhosts config file is loaded in httpd.conf</li>
</ul>


<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">Include</span> conf/extra/httpd-vhosts.conf</pre></div></div>


<ul>
<li>Set up a vhost for your domain in /opt/local/apache2/conf/extra/httpd-vhosts.conf. Note the YOUR-&#8203;USERNAME-&#8203;HERE place holder.</li>
</ul>


<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">NameVirtualHost</span> *:<span style="color: #ff0000;">80</span>
&nbsp;
&lt;<span style="color: #000000; font-weight:bold;">VirtualHost</span> *:<span style="color: #ff0000;">80</span>&gt;
    <span style="color: #00007f;">ServerName</span> local.yourdomain.com
    <span style="color: #00007f;">ErrorLog</span> <span style="color: #7f007f;">&quot;/private/var/log/apache2/local.yourdomain.com-error_log&quot;</span>
&nbsp;
    &lt;<span style="color: #000000; font-weight:bold;">Directory</span> /Users/YOUR-USERNAME-HERE/Code/wsgi_apps&gt;
        <span style="color: #00007f;">AllowOverride</span> <span style="color: #00007f;">All</span>
        <span style="color: #00007f;">Options</span> <span style="color: #0000ff;">Indexes</span> <span style="color: #0000ff;">FollowSymLinks</span>
        <span style="color: #00007f;">Order</span> <span style="color: #00007f;">allow</span>,<span style="color: #00007f;">deny</span>
        <span style="color: #00007f;">Allow</span> <span style="color: #00007f;">from</span> <span style="color: #00007f;">all</span>
    &lt;/<span style="color: #000000; font-weight:bold;">Directory</span>&gt;
&nbsp;
    WSGIDaemonProcess local.yourdomain.com processes=<span style="color: #ff0000;">1</span> threads=<span style="color: #ff0000;">1</span> maximum-requests=<span style="color: #ff0000;">1</span>
    WSGIProcessGroup local.yourdomain.com
&nbsp;
    WSGIScriptAlias / <span style="color: #7f007f;">&quot;/Users/YOUR-USERNAME-HERE/Code/wsgi_apps/local.yourdomain.com.wsgi&quot;</span>
&lt;/<span style="color: #000000; font-weight:bold;">VirtualHost</span>&gt;</pre></div></div>


<p><strong>Note:</strong> I amended the WSGI&shy;Dae&shy;mon&shy;Process line above so your code would get refreshed with each new request.</p>

<p>The ~/Code/wsgi_apps path is arbi&shy;trary, that&#8217;s just where I keep&nbsp;mine.</p>

<p>Many folks like to keep their .wsgi files in a /public direc&shy;tory inside their Django project. I like to work with&shy;out a project folder, but either way, sub&shy;sti&shy;tute the path to your wsgi file for /Users/YOUR-USERNAME-HERE/Code/wsgi_apps.</p>

<ul>
<li>Check your Apache conf before your wreck your apache conf</li>
</ul>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> apachectl configtest
Syntax OK</pre></div></div>


<ul>
<li><p>Set up an alias for your domain in /etc/hosts</p>

<p><pre>
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost
127.0.0.1 local.yourdomain.com #Local Django server
</pre></p></li>
<li><p>Set up your actual wsgi&nbsp;file</p></li>
</ul>


<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">site</span>
<span style="color: #dc143c;">site</span>.<span style="color: black;">addsitedir</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'/Users/YOUR-USERNAME-HERE/.virtualenvs/YOUR-VIRTUALENV/lib/python2.4/site-packages'</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>
<span style="color: #dc143c;">os</span>.<span style="color: black;">environ</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'DJANGO_SETTINGS_MODULE'</span><span style="color: black;">&#93;</span> = <span style="color: #483d8b;">'mysettingsmodule.local'</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> django.<span style="color: black;">core</span>.<span style="color: black;">handlers</span>.<span style="color: black;">wsgi</span>
application = django.<span style="color: black;">core</span>.<span style="color: black;">handlers</span>.<span style="color: black;">wsgi</span>.<span style="color: black;">WSGIHandler</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>


<p>I&#8217;m using <a href="http://pypi.python.org/pypi/virtualenv">Ian Bicking&#8217;s vir&shy;tualenv</a> and <a href="http://www.doughellmann.com/projects/virtualenvwrapper/">Doug Hellmann&#8217;s kick-&#8203;ass vir&shy;tualen&shy;vwrap&shy;per</a>, and you should be&nbsp;too.</p>

<p>If you&#8217;re not <strong>and</strong> you&#8217;re able to ignore the cries of all the pup&shy;pies and bun&shy;nies you&#8217;re killing because you&#8217;re not, then you&#8217;ll want to remove the first two&nbsp;lines.</p>

<ul>
<li>Fire up Apache</li>
</ul>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> apachectl start</pre></div></div>


<p>That should be it! Go to http://&#8203;local.&#8203;your&#8203;do&#8203;main.com in your favorite browser and you should see your Django project.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=k6aaHrTkwi0:tF__AMglp3w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/heisel/kDqL?a=k6aaHrTkwi0:tF__AMglp3w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/heisel/kDqL?i=k6aaHrTkwi0:tF__AMglp3w:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/heisel/kDqL/~4/k6aaHrTkwi0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://heisel.org/blog/2009/09/25/mod-wsgi-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://heisel.org/blog/2009/09/25/mod-wsgi-mac/</feedburner:origLink></item>
	</channel>
</rss>
