<?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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Ryan Cromwell</title>
	
	<link>http://cromwellhaus.com</link>
	<description>Improving my craft...</description>
	<lastBuildDate>Thu, 03 May 2012 02:15:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/RyanCromwell" /><feedburner:info uri="ryancromwell" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>39.557096</geo:lat><geo:long>-84.22688</geo:long><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
		<title>Build once, MSDeploy all over the place</title>
		<link>http://feedproxy.google.com/~r/RyanCromwell/~3/KlTiHqnopTM/</link>
		<comments>http://cromwellhaus.com/2012/05/build-once-msdeploy-all-over-the-place/#comments</comments>
		<pubDate>Wed, 02 May 2012 19:05:43 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://cromwellhaus.com/?p=1146</guid>
		<description>There are about 3 dozen ways to automate web app deployment.&amp;#160; All have their candy and their evil.&amp;#160; MSDeploy is one of the more intense tools, but if you don’t collapse at the command line syntax you’ll find it can be pretty sweet. It’s rather easy to create a basic package, but step beyond the [...]</description>
			<content:encoded><![CDATA[<p>There are about 3 dozen ways to automate web app deployment.&#160; All have their candy and their evil.&#160; MSDeploy is one of the more intense tools, but if you don’t collapse at the command line syntax you’ll find it can be pretty sweet.</p>
<p>It’s rather easy to create a basic package, but step beyond the basics and the story isn’t laid out clearly before you.&#160; Many jump on the Config Transform wagon, building 9 versions of their app for each environment they may target.&#160; Transforms look good at first, but then you’re compiling your app 20 times and it just get’s annoying.&#160; I’d much rather build once and specify the parameter transformations at deploy time.&#160; That’s what I’ve got for you today.</p>
<p>Here I’ll walk you through creating custom parameters for deploy time change via MSDeploy.</p>
<p>I’m using an ASP.Net MVC 4 Internet Project, but it’s not critical.</p>
<p><a href="http://cromwellhaus.com/wp-content/uploads/2012/05/image.png"><img style="background-image: none; border-right-width: 0px; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://cromwellhaus.com/wp-content/uploads/2012/05/image_thumb.png" width="224" height="244" /></a></p>
<h1></h1>
<p><strong>Environment Specific Settings</strong></p>
<p>To emulate an environment specific setting, I’ve added appsetting <em>EnvironmentImIn.</em>&#160; I’ll commit this with the Get Latest and Go™ value of <em>LocalDev.&#160; </em></p>
<p><a href="http://cromwellhaus.com/wp-content/uploads/2012/05/image1.png"><img style="background-image: none; border-right-width: 0px; margin: 4px 10px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://cromwellhaus.com/wp-content/uploads/2012/05/image_thumb1.png" width="231" height="244" /></a><a href="http://cromwellhaus.com/wp-content/uploads/2012/05/image2.png"><img style="background-image: none; border-right-width: 0px; margin: 4px 10px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://cromwellhaus.com/wp-content/uploads/2012/05/image_thumb2.png" width="225" height="244" /></a></p>
<p>&#160;</p>
<p><strong>Building the Package (Manually)</strong></p>
<p>Right click the project MVC project and click <em>Build Deployment Package</em>.&#160; </p>
<p><a href="http://cromwellhaus.com/wp-content/uploads/2012/05/image3.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://cromwellhaus.com/wp-content/uploads/2012/05/image_thumb3.png" width="244" height="89" /></a></p>
<p>This will create your package as a folder with a series of files under &lt;Project&gt;\obj\package.</p>
<p><a href="http://cromwellhaus.com/wp-content/uploads/2012/05/image4.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://cromwellhaus.com/wp-content/uploads/2012/05/image_thumb4.png" width="189" height="244" /></a></p>
<p>Great, but we don’t deploy from dev machines ‘cause we have a habit of installing crazy stuff.&#160; You should…</p>
<p><strong>Build the Package (Automation)</strong></p>
<p>ASP.Net project files, being MSBuild files, have a target called <em>Package.</em>&#160; This will first compile the project and then generate the package folder just like VS did above (<a href="http://vishaljoshi.blogspot.com/2009/02/web-packaging-creating-web-packages.html" target="_blank">Details</a>).&#160; You can adapt this with ease to TFS, TeamCity, etc.<a href="http://cromwellhaus.com/wp-content/uploads/2012/05/SNAGHTML46e20cf.png"><img style="background-image: none; border-right-width: 0px; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML46e20cf" border="0" alt="SNAGHTML46e20cf" src="http://cromwellhaus.com/wp-content/uploads/2012/05/SNAGHTML46e20cf_thumb.png" width="644" height="327" /></a></p>
<p><strong>Deployment Parameters</strong></p>
<p>MSDeploy uses a parameters.xml file to determine what is “changeable” at deploy time.&#160; This file is consumed at package <u>creation</u> time.&#160; I consider this a good thing since you end up committing the file and are explicit about what’s changeable.&#160; </p>
<p>If you look in the .zip file in your package directory you’ll find a default parameters.xml.&#160; This is because VS/MSBuild makes <a href="http://vishaljoshi.blogspot.com/2010/07/web-deploy-parameterization-in-action.html" target="_blank">certain things changeable by default</a>.&#160; If you drop a parameters.xml file into your project root, MSBuild will use that.&#160; Coolio.&#160; Here’s ours:</p>
<p><a href="http://cromwellhaus.com/wp-content/uploads/2012/05/image5.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://cromwellhaus.com/wp-content/uploads/2012/05/image_thumb5.png" width="644" height="278" /></a></p>
<p>Vishal Joshi does all the hard work of explaining what the elements all mean <a href="http://vishaljoshi.blogspot.com/2010/07/web-deploy-parameterization-in-action.html" target="_blank">here</a>.&#160; Vishal is the man!&#160; What we’re doing is adding a parameter EnvironmentImIn, giving it a description, and then telling MSDeploy how to find the entry.&#160; Beware, there be regex in them thar hills. </p>
<p>&#160;</p>
<p><strong>Changeable Package Settings</strong></p>
<p>If you build your Deployment Package now (msbuild /t:Package) you’ll find the *.SetParameters.xml file now contains our <em>EnvironmentImIn</em> setting where before it only had IIS Web Application Name and DefaultConnection.&#160; Saweeet!</p>
<p><a href="http://cromwellhaus.com/wp-content/uploads/2012/05/image6.png"><img style="background-image: none; border-right-width: 0px; margin: 4px 10px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://cromwellhaus.com/wp-content/uploads/2012/05/image_thumb6.png" width="644" height="198" /></a></p>
<p>The *.zip file will also have a parameters.xml file like this:</p>
<p><a href="http://cromwellhaus.com/wp-content/uploads/2012/05/image7.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://cromwellhaus.com/wp-content/uploads/2012/05/image_thumb7.png" width="644" height="261" /></a></p>
<p><strong>Deployment (IIS Manager)</strong></p>
<p>I find many deployment teams like to do their magic manually.&#160; These are often the infrastructure or a Release management group.&#160; They spurn the console at their own peril.&#160; IIS is cool with that though.&#160; </p>
<p>You can import packages through IIS Manager and you’ll be presented a UI to change your setting.&#160; #huzzuh!</p>
<p><a href="http://cromwellhaus.com/wp-content/uploads/2012/05/SNAGHTML4c25a19.png"><img style="background-image: none; border-right-width: 0px; margin: 4px 10px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML4c25a19" border="0" alt="SNAGHTML4c25a19" src="http://cromwellhaus.com/wp-content/uploads/2012/05/SNAGHTML4c25a19_thumb.png" width="644" height="469" /></a></p>
<p>Set it to “Staging” and Finish click Finish results in:</p>
<p><a href="http://cromwellhaus.com/wp-content/uploads/2012/05/SNAGHTML66b5a51.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 4px 10px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML66b5a51" border="0" alt="SNAGHTML66b5a51" src="http://cromwellhaus.com/wp-content/uploads/2012/05/SNAGHTML66b5a51_thumb.png" width="644" height="442" /></a></p>
<p><strong>Deployment (Command line)</strong></p>
<p>One of the convenient pieces created for you by msbuild /t:Package is the <em>MSDeploySample.deploy.cmd</em> file.&#160; It helps parse parameters and construct the not so straight forward msdeploy.exe command line.</p>
<p>If you don’t want to mess with msdeploy.exe directly, you can customize the SetParameters.xml file and just run the cmd file like this:</p>
<blockquote><p>MSDeploySample.deploy.cmd [/T|/Y]</p>
</blockquote>
<p>/T means tell me what’s gonna happen, but don’ t actually do anything yet.</p>
<p>/Y is for the big kids.&#160; Applies the changes.</p>
<p>&#160;</p>
<p>The alternative is to supply –setParam like this</p>
<blockquote><p><font color="#000000">–setParam:EnvironmentImIn=Staging</font></p>
</blockquote>
<p>Easiest way to construct an MSDeploy.exe command line is to use the .cmd and modify what it gives you.&#160; Look <a href="http://technet.microsoft.com/en-us/library/dd569084(WS.10).aspx#BKMK_ParameterKindSettings" target="_blank">here</a> for detailed –setParam options.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=KlTiHqnopTM:Yy0UKQPSuhU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=KlTiHqnopTM:Yy0UKQPSuhU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=KlTiHqnopTM:Yy0UKQPSuhU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=KlTiHqnopTM:Yy0UKQPSuhU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=KlTiHqnopTM:Yy0UKQPSuhU:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/RyanCromwell/~4/KlTiHqnopTM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cromwellhaus.com/2012/05/build-once-msdeploy-all-over-the-place/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://cromwellhaus.com/2012/05/build-once-msdeploy-all-over-the-place/</feedburner:origLink></item>
		<item>
		<title>Better than your average programmer…</title>
		<link>http://feedproxy.google.com/~r/RyanCromwell/~3/23NkGUsgSUA/</link>
		<comments>http://cromwellhaus.com/2012/04/better-than-your-average-programmer/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 18:59:39 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://cromwellhaus.com/?p=1087</guid>
		<description>There was a minor discussion about enums, constants and branching on a project discussion forum recently.&amp;#160; Alternative options suggested included polymorphism, delegate hashes and factories.&amp;#160; One of the responses suggested these were beyond “the average programmer”. &amp;#160; That’s crazy talk that leads straight to the ivory-tower. We just need to expose people to the alternatives [...]</description>
			<content:encoded><![CDATA[<p>There was a minor discussion about enums, constants and branching on a project discussion forum recently.&#160; Alternative options suggested included polymorphism, delegate hashes and factories.&#160; One of the responses suggested these were beyond “the average programmer”.</p>
<p>&#160;</p>
<blockquote><p><em><span style="font-size: medium">That’s crazy talk that leads straight to the ivory-tower.</span></em></p>
</blockquote>
<p>We just need to expose people to the alternatives as often as we can.&#160; <a title="Expand Your Normal" href="http://cromwellhaus.com/2012/01/expand-your-normal/">Expand their normal</a>.&#160; </p>
<p>&#160;</p>
<p>So here I want talk about evolving towards a more change friend solution using the scenario of calculating bonuses that is similar to what was being discussed in the forum.</p>
<p><em>Warning: the code below was not run.&#160; While it’s meant to be javascript, it’s not meant for copy, paste, execute.</em></p>
<p><strong>The YAGNI Solution</strong></p>
<p><script src="https://gist.github.com/2313236.js?file=bad.js"></script></p>
<p>&#160;</p>
<p>This is certainly readable and understandable.&#160; It’s also crazy simple and likely to get more complicated.&#160; When that happens, how do we transform the problem?&#160; How do we use the alternatives so that when one part of the problem changes, the entire solution does not in churn?</p>
<p><strong>The Less Cohesive Solution</strong></p>
<p><script src="https://gist.github.com/2313236.js?file=better.js"></script></p>
<p>&#160;</p>
<p>We’ve moved the calculation into it’s own area.&#160; That’s pretty nice.&#160; But it seems likely that when criteria change, so will the calculations.&#160; When one thing churns so will all others.&#160; We’ve spread around what it means to get a “Great” review.</p>
<p><strong>A More Balanced Solution</strong></p>
<p>What would be nice is if adding, changing or removing any single bonus category was self contained.</p>
<p><script src="https://gist.github.com/2313236.js?file=muchbetter.js"></script></p>
<p>&#160;</p>
<p>At this point, what we find as the point of churn (each business decision) is now isolated.&#160; The contract between the entry point of calculating the bonus and the actual calculators is in the registerCalculator implementation.&#160; We’re assuming that won’t change much.</p>
<p><strong>More Code != Better</strong></p>
<p>This is not a hammer for all of your business decision nails.&#160; It is certainly more complex.&#160; But we must balance complexity, cohesiveness, and correctness with all the other things we value.</p>
<p>The first solution is not “bad”.&#160; I would ship that first solution.&#160; I’d adjust my system over time so that change was enabled in my architecture.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=23NkGUsgSUA:YvVXA6jZDNU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=23NkGUsgSUA:YvVXA6jZDNU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=23NkGUsgSUA:YvVXA6jZDNU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=23NkGUsgSUA:YvVXA6jZDNU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=23NkGUsgSUA:YvVXA6jZDNU:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/RyanCromwell/~4/23NkGUsgSUA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cromwellhaus.com/2012/04/better-than-your-average-programmer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://cromwellhaus.com/2012/04/better-than-your-average-programmer/</feedburner:origLink></item>
		<item>
		<title>Double Super Secret Github Feature</title>
		<link>http://feedproxy.google.com/~r/RyanCromwell/~3/osRZucJ9taQ/</link>
		<comments>http://cromwellhaus.com/2012/03/double-super-secret-github-feature/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 02:05:58 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://blog.cromwellhaus.com/?p=1073</guid>
		<description>@aaronjensen pointed this out in response to the Comparing Github Forks post. &amp;#160; ZOINKS! We’re seeing the two commits that differentiate the upstream branch defunkt/master and plastictrophy/master. &amp;#160; You won’t find any link or button to get this view… it’s Double Super Secret.&amp;#160; Instead just construct the url as follows: http://github.com/&amp;#60;handle&amp;#62;/&amp;#60;repo/compare/&amp;#60;branch&amp;#62; If the handle/repo is [...]</description>
			<content:encoded><![CDATA[<p><a href="https://twitter.com/#!/aaronjensen" target="_blank">@aaronjensen</a> pointed this out in response to the <a href="http://blog.cromwellhaus.com/2012/03/comparing-github-forks/" target="_blank">Comparing Github Forks</a> post.</p>
<p><a href="http://blog.cromwellhaus.com/wp-content/uploads/2012/03/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 4px 10px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.cromwellhaus.com/wp-content/uploads/2012/03/image_thumb.png" width="644" height="362" /></a>&#160;</p>
<p>ZOINKS!</p>
<p>We’re seeing the two commits that differentiate the upstream branch defunkt/master and plastictrophy/master.</p>
<p>&#160;</p>
<p>You won’t find any link or button to get this view… it’s Double Super Secret.&#160; Instead just construct the url as follows:</p>
<blockquote><p>http://github.com/&lt;handle&gt;/&lt;repo/compare/&lt;branch&gt;</p>
</blockquote>
<p>If the handle/repo is a fork and the branch is owned by upstream, you’ll get what we see above.</p>
<p>&#160;</p>
<p>It appears to work on simple branches too:</p>
<p><a href="http://blog.cromwellhaus.com/wp-content/uploads/2012/03/image1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.cromwellhaus.com/wp-content/uploads/2012/03/image_thumb1.png" width="644" height="382" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=osRZucJ9taQ:NHA9J-5vDPc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=osRZucJ9taQ:NHA9J-5vDPc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=osRZucJ9taQ:NHA9J-5vDPc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=osRZucJ9taQ:NHA9J-5vDPc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=osRZucJ9taQ:NHA9J-5vDPc:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/RyanCromwell/~4/osRZucJ9taQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cromwellhaus.com/2012/03/double-super-secret-github-feature/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://cromwellhaus.com/2012/03/double-super-secret-github-feature/</feedburner:origLink></item>
		<item>
		<title>Comparing Github Forks</title>
		<link>http://feedproxy.google.com/~r/RyanCromwell/~3/gkKzse4JLto/</link>
		<comments>http://cromwellhaus.com/2012/03/comparing-github-forks/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 19:06:55 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://blog.cromwellhaus.com/?p=1064</guid>
		<description>[Update: Check the comments for even better alternatives from @jasonkarns and @aaronjensen] &amp;#160; For the purposes of this I’m using https://github.com/defunkt/resque. &amp;#160; &amp;#62; git clone git://github.com/defunkt/resque.git &amp;#62; git remote add plastic git://github.com/plastictrophy/resque.git &amp;#62; git fetch plastic &amp;#62; git diff origin/master plastic/master Comparing branches the same way, just remove the repository reference.  For instance, git diff [...]</description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000;">[Update: Check the comments for even better alternatives from </span><a href="http://twitter.com/jasonkarns" target="_blank"><span style="color: #ff0000;">@jasonkarns</span></a><span style="color: #ff0000;"> and </span><span style="color: #ff0000;"><a href="https://twitter.com/#!/aaronjensen">@aaronjensen</a></span><span style="color: #ff0000;">]</span></p>
<p>&nbsp;</p>
<p>For the purposes of this I’m using <a title="https://github.com/defunkt/resque" href="https://github.com/defunkt/resque">https://github.com/defunkt/resque</a>.</p>
<blockquote><p>&nbsp;</p>
<p><span style="color: #000000;">&gt; git clone <a title="git://github.com/plastictrophy/resque.git" href="git://github.com/plastictrophy/resque.git">git://github.com/defunkt/resque.git</a></span></p>
<p><span style="color: #000000;">&gt; git remote add plastic <a title="git://github.com/plastictrophy/resque.git" href="git://github.com/plastictrophy/resque.git">git://github.com/plastictrophy/resque.git</a></span></p>
<p><span style="color: #000000;">&gt; git fetch plastic</span></p>
<p><span style="color: #000000;">&gt; git diff origin/master plastic/master</span></p></blockquote>
<p>Comparing branches the same way, just remove the repository reference.  For instance,</p>
<blockquote><p><span style="color: #000000;">git diff master myfeature</span></p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=gkKzse4JLto:v-k_8Hqb_7k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=gkKzse4JLto:v-k_8Hqb_7k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=gkKzse4JLto:v-k_8Hqb_7k:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=gkKzse4JLto:v-k_8Hqb_7k:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=gkKzse4JLto:v-k_8Hqb_7k:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/RyanCromwell/~4/gkKzse4JLto" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cromwellhaus.com/2012/03/comparing-github-forks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://cromwellhaus.com/2012/03/comparing-github-forks/</feedburner:origLink></item>
		<item>
		<title>Create Github Gists without leaving Powershell</title>
		<link>http://feedproxy.google.com/~r/RyanCromwell/~3/u1hactmt-3s/</link>
		<comments>http://cromwellhaus.com/2012/03/create-github-gists-without-leaving-powershell/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 11:45:00 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://blog.cromwellhaus.com/?p=1055</guid>
		<description>I spend a lot of time in PowerShell.&amp;#160; A lot.&amp;#160; PoshGit, Vim, Chocolatey, and PsGet… it’ll get me through most of my dev day happily. One thing that was killing my workflow was leaving PowerShell to share some snippet of code or a file as a Gist.&amp;#160; In Visual Studio we have Gister, but when [...]</description>
			<content:encoded><![CDATA[<p><a href="http://blog.cromwellhaus.com/wp-content/uploads/2012/03/SNAGHTMLac570d4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 4px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTMLac570d4" border="0" alt="SNAGHTMLac570d4" src="http://blog.cromwellhaus.com/wp-content/uploads/2012/03/SNAGHTMLac570d4_thumb.png" width="354" height="193" /></a>I spend a lot of time in PowerShell.&#160; A lot.&#160; <a href="https://github.com/dahlbyk/posh-git" target="_blank">PoshGit</a>, <a href="http://vim.org" target="_blank">Vim</a>, <a href="http://chocolatey.org" target="_blank">Chocolatey</a>, and <a href="http://psget.net" target="_blank">PsGet</a>… it’ll get me through most of my dev day happily.</p>
<p>One thing that was killing my workflow was leaving PowerShell to share some snippet of code or a file as a <a href="http://gist.github.com" target="_blank">Gist</a>.&#160; In Visual Studio we have <a href="visualstudiogallery.msdn.microsoft.com/b31916b0-c026-4c27-9d6b-ba831093f6b2" target="_blank">Gister</a>, but when I’m in PS I hate having to break my cycle.&#160; </p>
<p>Well no longer…&#160; </p>
<p><strong></strong></p>
<p><strong>Introducing </strong><a href="https://github.com/cromwellryan/psgist" target="_blank"><strong>PsGist</strong></a></p>
<p>PsGist provides a PowerShell function called (wait for it) <font face="Consolas">gist</font>.&#160; Try not to forget that one, ok?&#160; The usage is simple:</p>
<blockquote><p>gist [[-File] &lt;FileInfo&gt;] [[-Description] &lt;String&gt;] [[-Username] &lt;String&gt;]</p>
</blockquote>
<p>Username is optional.&#160; If you don’t provide it your gist will be public and anonymous.&#160; If you do, you’ll be prompted for your password.&#160; This is different than <a href="visualstudiogallery.msdn.microsoft.com/b31916b0-c026-4c27-9d6b-ba831093f6b2" target="_blank">Gister</a> where I only prompt once and cache the creds.&#160; Here you’ll have to specify the password each time.&#160; Deal with it or <a href="https://github.com/cromwellryan/psgist/pulls" target="_blank">fix it</a>.</p>
<p>Here’s an example:&#160; </p>
<p><a href="http://blog.cromwellhaus.com/wp-content/uploads/2012/03/SNAGHTMLae19e88.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 4px 10px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTMLae19e88" border="0" alt="SNAGHTMLae19e88" src="http://blog.cromwellhaus.com/wp-content/uploads/2012/03/SNAGHTMLae19e88_thumb.png" width="729" height="244" /></a></p>
<p>Notice how after the gist is created the Url is written to the console/host?&#160; Well PsGist also puts the Url into your clipboard.&#160; So you can quickly go to IRC, IM, Twitter, etc and past the Url.&#160; Or you can use ALT+&lt;Space&gt;, E, P to paste it quickly into your console and open the gist.</p>
<p><strong>Needed: Pipe the output</strong></p>
<p>I’d like to be able to pipe the output to start, clip, out-file and other useful commands.&#160; For whatever reason powershell won’t wait on the gist being created before running the following command.&#160; If you know how to make this happen, hit me up on <a href="http://twitter.com/cromwellryan" target="_blank">Twitter</a>, send a pull request or leave it in the comments.</p>
<p>&#160;</p>
<p><strong>Needed: Multiple File Gists</strong></p>
<p>I’d like to be able to run <font face="Consolas">ls | gist<em>&#160;</em></font>and have all the files in the listing sent to a single gist, but there is a problem with convertfrom-json that I’m struggling with.&#160; I have a branch called pipelinesupport that you can try, but it takes single file gists away until I put that back and fix the json issue.</p>
<p>&#160;</p>
<p><strong>Needed: Make it a Module</strong></p>
<p>This should really be a module.&#160; I’m sure with another hour’s worth of research and effort I could make that happen, but, well, it works.&#160; If you like PsGist and want to make it a Module, I’ll gladly accept the pull request.</p>
<p>&#160;</p>
<p><strong>Thanks to <a href="http://twitter.com/jaykul" target="_blank">@Jaykul</a></strong></p>
<p>For providing the <a href="http://poshcode.org/2098" target="_blank">convertfrom-json</a> function used to handle the Github Api response.&#160; PowerShell 3 seems to have <a href="http://www.dougfinke.com/blog/index.php/2011/09/15/powershell-v3-and-json/" target="_blank">this support</a> built in, but that’s not here quite yet.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=u1hactmt-3s:j8C7NKy5kYE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=u1hactmt-3s:j8C7NKy5kYE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=u1hactmt-3s:j8C7NKy5kYE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=u1hactmt-3s:j8C7NKy5kYE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=u1hactmt-3s:j8C7NKy5kYE:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/RyanCromwell/~4/u1hactmt-3s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cromwellhaus.com/2012/03/create-github-gists-without-leaving-powershell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://cromwellhaus.com/2012/03/create-github-gists-without-leaving-powershell/</feedburner:origLink></item>
		<item>
		<title>ASP.Net Web Api Integration Tests With Self Hosting</title>
		<link>http://feedproxy.google.com/~r/RyanCromwell/~3/sWeySCTDz_o/</link>
		<comments>http://cromwellhaus.com/2012/02/asp-net-web-api-integration-tests-with-self-hosting/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 16:19:57 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://blog.cromwellhaus.com/?p=1040</guid>
		<description>I am trying to help out a team to verify some of their stuff works with the new ASP.Net Web API 4 Beta.&amp;#160; While they seem to have a number of unit tests of good quality, there was a dearth of integration tests.&amp;#160; I set out to resolve that as simply as possible. To clarify [...]</description>
			<content:encoded><![CDATA[<p>I am trying to help out a team to verify some of their stuff works with the new ASP.Net Web API 4 Beta.&#160; While they seem to have a number of unit tests of good quality, there was a dearth of integration tests.&#160; I set out to resolve that as simply as possible.</p>
<p>To clarify we are living here:</p>
<p>&#160;&#160; <a href="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image8.png"><img style="margin: 4px 0px; display: inline" title="image" alt="image" src="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image_thumb8.png" width="450" height="272" /></a></p>
<p>For full UI/user tests I’d deploy the whole app, but I still want my Functional Integration tests to be faster and run locally with ease if I can.&#160; For Web API, I was hoping for self hosting.&#160; WCF can do this, but WCF is a giant pile of mud that I’m not interested in attacking.&#160; So I went looking for Web API Self Hosting for Dummies.&#160; <a href="http://nuget.org/packages/AspNetWebApi.SelfHost" target="_blank">Found it</a>.</p>
<p>And here’s how you use it:<a href="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image9.png"><img style="margin: 4px 10px; display: inline" title="image" alt="image" src="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image_thumb9.png" width="674" height="489" /></a></p>
<p>Note: I’ve set the <em>folder = “”</em> in this sample since my ApiController is side-by-side with my test fixture.&#160; Assuming your ApiController is in a different assembly than your tests, you can sepcify the <em>namespace:</em> parameter in the MapHttpRoute like this:</p>
<blockquote><p><font color="#000000">namespaces: new[] { typeof(ThingsController).Namespace }</font></p>
</blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=sWeySCTDz_o:d_Hc5DUIKQk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=sWeySCTDz_o:d_Hc5DUIKQk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=sWeySCTDz_o:d_Hc5DUIKQk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=sWeySCTDz_o:d_Hc5DUIKQk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=sWeySCTDz_o:d_Hc5DUIKQk:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/RyanCromwell/~4/sWeySCTDz_o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cromwellhaus.com/2012/02/asp-net-web-api-integration-tests-with-self-hosting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://cromwellhaus.com/2012/02/asp-net-web-api-integration-tests-with-self-hosting/</feedburner:origLink></item>
		<item>
		<title>Better Burndown: Forecasts that reflect the Cone of Uncertainty</title>
		<link>http://feedproxy.google.com/~r/RyanCromwell/~3/cnMZrWKalMs/</link>
		<comments>http://cromwellhaus.com/2012/02/better-burndown-forecasts-that-reflect-the-cone-of-uncertainty/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 14:59:00 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://blog.cromwellhaus.com/?p=1028</guid>
		<description>The humble burndown is very easy to create, interpret, use and abuse.&amp;#160; They can be very simple, allowing for much discussion and interpretation (or just interpretation… tisk tisk): &amp;#160; or they can provide a pretty direct message: Less is More… During a course discussion with fellow PSD trainers a few years ago I made the [...]</description>
			<content:encoded><![CDATA[<p>The humble burndown is very easy to create, interpret, use and abuse.&#160; </p>
<p>They can be very simple, allowing for much discussion and interpretation (or just interpretation… tisk tisk):</p>
<p><a href="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image_thumb2.png" width="485" height="293" /></a></p>
<p>&#160;</p>
<p>or they can provide a pretty direct message:</p>
<p><a href="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image_thumb6.png" width="485" height="293" /></a></p>
<p><strong>Less is More…</strong></p>
<p>During a course discussion with fellow PSD trainers a few years ago I made the statement that I don’t like trend lines.&#160; They remove the discussion, the thought from this tool.&#160; I preferred NOT to have any forecasts provided by a burndown, because even when aggregated from many teams I can easily make these judgments on my own.&#160; In fact, I believe that, because the decision is not made fore me I actually come out understanding the nuances far better.</p>
<p>&#160;</p>
<p><strong>The Cut Line</strong></p>
<p>I do think there is a compromise though and it provides a much better basis for the discussion we should be having: what are the possible scenarios ahead.&#160; </p>
<p>Instead of a single trend line, provide at least 2, 3 if you must:</p>
<p><font color="#ff0000">Pessimistic</font><font color="#000000"> – What is may occur if things don’t continue to go our way.</font></p>
<p><font color="#008000">Optimistic</font><font color="#000000"> – What is may occur if luck is on our side.</font></p>
<p><font color="#8080ff">Cutline</font><font color="#000000"> – What we project might happen if things remain the same.&#160; (What’s the saying?)</font></p>
<p><a href="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image_thumb5.png" width="485" height="293" /></a></p>
<p><strong>Better Discussions</strong></p>
<p>This allows us to have the pointed conversation with our marketing, sales and business teams that we should not be promising, planning or basing important decisions on features that are close to the cut line for a particular sprint or feature.&#160; We probably can begin creating collateral and sales pitches for those features that are near the pessimistic line.&#160; We may also move some of the features near the cutline up if they will win us a customer or two.&#160; </p>
<p>The key is look at the range of scenarios possible and make informed decisions.</p>
<p>&#160;</p>
<p>All in all, I still don’t think we need the cutline projected, but I do believe that the coloring choices are important.&#160; Some may wish to color the cutline green.&#160; This is dangerous.&#160; It’s not your go line.&#160; The pessimistic line is the most risk averse forecast seen here.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=cnMZrWKalMs:ljcXvN5ApwA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=cnMZrWKalMs:ljcXvN5ApwA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=cnMZrWKalMs:ljcXvN5ApwA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=cnMZrWKalMs:ljcXvN5ApwA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=cnMZrWKalMs:ljcXvN5ApwA:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/RyanCromwell/~4/cnMZrWKalMs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cromwellhaus.com/2012/02/better-burndown-forecasts-that-reflect-the-cone-of-uncertainty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://cromwellhaus.com/2012/02/better-burndown-forecasts-that-reflect-the-cone-of-uncertainty/</feedburner:origLink></item>
		<item>
		<title>Time box: Get-Stuff-Done Tool for Risk Reduction, Focus, and Decision Making</title>
		<link>http://feedproxy.google.com/~r/RyanCromwell/~3/4Qv2UCIqY0I/</link>
		<comments>http://cromwellhaus.com/2012/02/time-box-get-stuff-done-tool-for-risk-reduction-focus-and-decision-making/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 10:07:00 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://blog.cromwellhaus.com/?p=1007</guid>
		<description>This is part two of a three part series Time box: A Holistic View on Sprints and Iterations Work expands so as to fill the time available for its completion. ~ Parkinson’s Law, Cyril Northcote Parkinson On Risk Reduction Teams talk some good game when they sell Agile to their organizational leaders: real software in [...]</description>
			<content:encoded><![CDATA[<p><em>This is part two of a three part series <a href="http://blog.cromwellhaus.com/2012/01/time-box-a-holistic-view-on-sprints-and-iterations/" target="_blank">Time box: A Holistic View on Sprints and Iterations</a></em></p>
<blockquote><p>Work expands so as to fill the time available for its completion. ~ <a href="http://en.wikipedia.org/wiki/Parkinson's_law" target="_blank">Parkinson’s Law</a>, Cyril Northcote Parkinson</p></blockquote>
<p><strong>On Risk Reduction</strong></p>
<p><a href="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image.png"><img style="background-image: none; margin: 4px 7px 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border-width: 0px;" title="image" src="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image_thumb.png" alt="image" width="244" height="159" align="left" border="0" /></a>Teams talk some good game when they sell Agile to their organizational leaders: real software in a few weeks, higher quality, and, if they’re really good, risk reduction.  “See, if we build these features early,” they say, “and people don’t like it, we’ve saved you 13 months of wasted effort and costs.  How can you not love this stuff?”  Sign me up Johnny!</p>
<p>It’s true, if you build done software in 30 days or less, you do get the opportunity to inspect the output determining whether to stay the course or correct.  You can even begin taking on more creative, innovative, industry shaking adventures knowing they are limited to a few weeks or months.</p>
<p>Looking to become strategic and not just tactical with technology… this is your ticket.</p>
<p>But it’s not all roses. You must expect that some adventures will not end with a pot of real gold. Instead, our gold is measured in learning; new information which can be taken back and used to concoct the next ground shaking advance.  If you allow the fear of failure to drive your decisions you will grind to a halt.  Instead, create a system based on learning and encourage the free communication of that information as a value neutral asset.</p>
<p><strong>On Focus</strong></p>
<p>Tell me you didn’t see this coming.</p>
<p>Every team feels the pressure of a time box.  It’s natural and it can be used wisely.  It can also be abused.  Terribly, terribly abused.  I have good news though!  Corporate evolution is on the side of the wise.</p>
<p>Those who follow the <a href="http://www.pomodorotechnique.com/" target="_blank">Pomodoro Technique</a> create short, focused 30 minute durations to accomplish activities.  25 minutes exist for actually working the task at hand and 5 are meant to provide the necessary, human break needed to <em>maintain</em> focus over extended periods.</p>
<p>Our Sprints must consciously reflect this same human capacity for focus in a creative environment like software development.  As outlined in <a href="http://blog.cromwellhaus.com/2012/01/time-box-safety-zone-for-creativity-cleanliness-and-sausage-stuffing/" target="_blank">our previous part of this series</a> we can easily turn a space for focus and creativity into a pressure box of panic, frustration, and corner cutting.</p>
<p><a href="http://blog.cromwellhaus.com/2012/01/time-box-safety-zone-for-creativity-cleanliness-and-sausage-stuffing/" target="_blank">Sausage stuffing</a> is the two steps back to your previous step forward.</p>
<p><strong>On Decision Making</strong></p>
<p><a href="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image1.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="image" src="http://blog.cromwellhaus.com/wp-content/uploads/2012/02/image_thumb1.png" alt="image" width="244" height="202" align="right" border="0" /></a>To support a team in delivering functioning, ship-quality software in 30 days or less, organizations must provide them with timely, informed decisions to questions and alternatives.  Authoritative and informed decisions which take into account the political and user environment are necessary within minutes and hours, not days or weeks.</p>
<p>Would you ever consider the impact of removing 10% of an existing project’s schedule?  In delaying a decision for steering committee or general approval by 1 day, a two week iteration is similarly delayed.  In the absence of responsive decision making and an open social environment for voicing questions and concerns, teams will make decisions and assumptions on their own.</p>
<p>In many of these cases, we may have the best people on the team to make those decisions!  Time boxes demand that our teams be composed of or have direct access to those skills necessary to make decisions quickly.  This includes domain experts such as lawyers, accountants, marketing, design, etc.  With “done” software in 30 days we cannot hide the impact of delayed decisions.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=4Qv2UCIqY0I:Hc0C1EhOCFs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=4Qv2UCIqY0I:Hc0C1EhOCFs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=4Qv2UCIqY0I:Hc0C1EhOCFs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=4Qv2UCIqY0I:Hc0C1EhOCFs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=4Qv2UCIqY0I:Hc0C1EhOCFs:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/RyanCromwell/~4/4Qv2UCIqY0I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cromwellhaus.com/2012/02/time-box-get-stuff-done-tool-for-risk-reduction-focus-and-decision-making/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://cromwellhaus.com/2012/02/time-box-get-stuff-done-tool-for-risk-reduction-focus-and-decision-making/</feedburner:origLink></item>
		<item>
		<title>Code Kata Constraints</title>
		<link>http://feedproxy.google.com/~r/RyanCromwell/~3/ETTXZ2ZAZJk/</link>
		<comments>http://cromwellhaus.com/2012/01/code-kata-constraints/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 10:37:49 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://blog.cromwellhaus.com/?p=983</guid>
		<description>I&amp;#8217;ve accumulated a number of great constraints over the moderate time I&amp;#8217;ve been involved with katas.  With Cincy Clean Coders and Dayton Clean Coders new constraints keep coming both creative participants and crazy things I pull from the morass between my ears.  I can&amp;#8217;t imagine this will stop for reasons I&amp;#8217;ve already mentioned. To help me keep [...]</description>
			<content:encoded><![CDATA[<p>I&#8217;ve accumulated a number of great constraints over the moderate time I&#8217;ve been involved with katas.  With <a title="Cincy Clean Coders" href="http://cincycleancoders.com">Cincy Clean Coders</a> and <a title="Dayton Clean Coders" href="http://daytoncleancoders.com">Dayton Clean Coders</a> new constraints keep coming both creative participants and crazy things I pull from the morass between my ears.  I can&#8217;t imagine this will stop for reasons <a title="Expand Your Normal" href="http://blog.cromwellhaus.com/2012/01/expand-your-normal/">I&#8217;ve already mentioned</a>.</p>
<p>To help me keep track of them and to help others I’m going to catalog them here.</p>
<ul>
<li>Methods no more than 3 lines</li>
<li>No mouse</li>
<li>No moving cursor more than 2 lines with the arrow keys</li>
<li>Test Method names at least 40</li>
<li>All methods/properties names at least 30 characters</li>
<li>No Classes</li>
<li>No Mutable State</li>
<li>No Exposed State</li>
<li>3 Refactorings after each passing test</li>
<li>No If, Else, Switch Statements</li>
<li>TDD as if you mean it</li>
<li>No Frameworks</li>
<li>No IDE</li>
</ul>
<p>* <em>Replace any number with your preference</em></p>
<p>If you have ideas for others, put them in the comments and I&#8217;ll update the list.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=ETTXZ2ZAZJk:yQ2QV28QLgE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=ETTXZ2ZAZJk:yQ2QV28QLgE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=ETTXZ2ZAZJk:yQ2QV28QLgE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=ETTXZ2ZAZJk:yQ2QV28QLgE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=ETTXZ2ZAZJk:yQ2QV28QLgE:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/RyanCromwell/~4/ETTXZ2ZAZJk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cromwellhaus.com/2012/01/code-kata-constraints/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://cromwellhaus.com/2012/01/code-kata-constraints/</feedburner:origLink></item>
		<item>
		<title>Expand Your Normal</title>
		<link>http://feedproxy.google.com/~r/RyanCromwell/~3/FANnIfBxjbU/</link>
		<comments>http://cromwellhaus.com/2012/01/expand-your-normal/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 15:36:00 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://blog.cromwellhaus.com/?p=988</guid>
		<description>I went for beers with a couple of coworkers today and a question came up that I get a lot.&amp;#160; What’s the point of a kata?&amp;#160; That’s an answer for you to come up with for yourself, but I’ll let you in on my secret obsession: I want to expand my normal. TL;DR I have [...]</description>
			<content:encoded><![CDATA[<p>I went for beers with a couple of coworkers today and a question came up that I get a lot.&#160; What’s the point of a <a href="http://daytoncleancoders.com" target="_blank">kata</a>?&#160; That’s an answer for you to come up with for yourself, but I’ll let you in on my secret obsession: I want to expand my normal.</p>
<p>TL;DR</p>
<p>I have an insatiable thirst for new information.&#160; It can be quite frustrating and, at times, debilitating.&#160; The neat thing about new information, is it changes what you consider normal.&#160; Common sense is a bunch of crap.&#160; Using a fork is common sense… until you move to India.&#160; We should all move to India (or vice versa) for a while.</p>
<p>Not to long ago someone described an art course in which many of the lessons included drawing 50 different types of circles or straight lines.&#160; I imagine around 10 or 20 you start struggling a wee bit.&#160; I was reminded of this while reading <a href="https://twitter.com/holman" target="_blank">Zach Holman’s</a> <a href="http://zachholman.com/posts/slide-design-for-developers/" target="_blank">Slide Design for Developers</a>.&#160; He writes:</p>
<blockquote><p>I took one design class in college. One of the most fascinating assignments they gave us was a study of shape: you get one letter, in one typeface… do something with it. The idea was that <u>the severe limitation forced you to be creative</u> with duplication, rotation, scale, alignment, and whitespace.</p>
</blockquote>
<p>Katas give us a silly background story like <a href="http://onestepback.org/vital_testing/" target="_blank">Triangle Classification</a>, <a href="http://codingdojo.org/cgi-bin/wiki.pl?KataRomanNumerals">Roman Numerals</a>, or <a href="http://codingdojo.org/cgi-bin/wiki.pl?KataPotter" target="_blank">Harry Potter</a>, but those aren’t the point.&#160; The point is not making the next test pass.&#160; In fact, don’t write any tests next time.&#160; They’re getting in your way.&#160; Pick some other area that you feel comfortable in and come up with a constraint outside your Normal so that when you’re done you’ve moved normal a little bit.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=FANnIfBxjbU:gskXbZLMif4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=FANnIfBxjbU:gskXbZLMif4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=FANnIfBxjbU:gskXbZLMif4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RyanCromwell?a=FANnIfBxjbU:gskXbZLMif4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/RyanCromwell?i=FANnIfBxjbU:gskXbZLMif4:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/RyanCromwell/~4/FANnIfBxjbU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://cromwellhaus.com/2012/01/expand-your-normal/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://cromwellhaus.com/2012/01/expand-your-normal/</feedburner:origLink></item>
	</channel>
</rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: cromwellhaus.com @ 2012-05-18 21:41:46 -->

