<?xml version="1.0" encoding="iso-8859-1"?>



<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:cc="http://web.resource.org/cc/"
  xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://blogs.codehaus.org/people/theboxx/">
<title>theboxx</title>
<link>http://blogs.codehaus.org/people/theboxx/</link>
<description>theboxx</description>
<dc:language>en-us</dc:language>
<dc:creator></dc:creator>
<dc:date>2008-02-17T01:18:05+00:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=2.661" />


<items>
<rdf:Seq><rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001663_bye_bye_codehaus.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001646_stacktraceit_is_live.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001619_standup_meeting_variations.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001510_create_them_let_them_grow_healthy_and_shiny_and_then_replace_them_with_droids.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001451_no_id_call_it_silly_joel.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001419_no_fluff_just_stuff_tour_hit_toronto.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001412_japanese_centenarians_and_maslow.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001407_i_feel_free.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001394_qixweb_home_page.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001333_june_kim_about_appreciative_inquiry_with_400_people.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001318_several_teams_in_a_room.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001315_an_experiment_in_free_software_development.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001312_tdd_live_demo_in_ruby.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001302_lost_in_time_lost_in_space.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001288_everyday_ruby.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001292_agile_day_feedback.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001289_jim_freeze_talking_about_writing_dsls_in_ruby.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001279_is_it_possible_to_have_tdd_without_oo.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001278_how_to_run_fitnesse_inside_the_container.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001265_flexus_points.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001266_why_ruby_is_an_acceptable_lisp.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001253_lean_manufacturing_in_italy.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001255_john_vlissides_passed_away.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001254_from_sidewalk_to_sanctity.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001250_2nd_italian_agile_day.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/theboxx/archives/001247_acceptance_test_patterns.html" />
</rdf:Seq>
</items>

</channel>

<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001663_bye_bye_codehaus.html">
<title>Bye bye codehaus</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001663_bye_bye_codehaus.html</link>
<description><![CDATA[<p>Bye bye codehaus, welcome wordpress: I've moved this blog to <a href="http://thinkingbox.wordpress.com">thinkingbox.wordpress.com</a>. If you care, please update your feed reader to <a href="http://thinkingbox.wordpress.com/feed/">wordpress</a>.</p>

<p>Thanks codehaus and all the best!</p>]]></description>
<dc:subject>events</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2008-02-17T01:18:05+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001646_stacktraceit_is_live.html">
<title>stacktrace.it is live!</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001646_stacktraceit_is_live.html</link>
<description><![CDATA[<p>Yesterday, December 16th 2007, at 16:16:16 <a href="http://stacktrace.it">stacktrace.it</a> has officially gone live.</p>]]></description>
<dc:subject>XP</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2007-12-17T12:05:49+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001619_standup_meeting_variations.html">
<title>Standup meeting variations</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001619_standup_meeting_variations.html</link>
<description><![CDATA[<p>Some time ago I have joined a team that was practicing a standup meeting more or less <i>by the book</i>: everybody is standing up in a circle, each one taking turn to update everybody else about what has been done and what's left on her own user story, some people are observers and they just listen without intervene. The meeting was always short and sometimes it triggered discussions to be followed up shortly after. Everybody was happy. </p>

<p>It's a wonderful life, isn't it? Well, not exactly...</p>]]></description>
<dc:subject>XP</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2007-10-12T05:31:22+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001510_create_them_let_them_grow_healthy_and_shiny_and_then_replace_them_with_droids.html">
<title>Create them, let them grow healthy and shiny and then replace them with droids</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001510_create_them_let_them_grow_healthy_and_shiny_and_then_replace_them_with_droids.html</link>
<description><![CDATA[<p>A few days ago I attended a webinar from <a href="http://www.agitar.com">Agitar</a> on <a href="http://www.junitfactory.com/">JUnitFactory</a>,  that is an experimental test-generation service intended mainly for universities and research institutions. The aim of the service is to generate unit tests automatically starting from the code that requires to be tested. To keep the story short: unit tests retrofitting for legacy code.<br />
I was waiting for the webinar to be published, but nevermind, this is what I remember about it.</p>]]></description>
<dc:subject>XP</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2007-02-10T15:43:16+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001451_no_id_call_it_silly_joel.html">
<title>No, I&apos;d call it silly, Joel</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001451_no_id_call_it_silly_joel.html</link>
<description><![CDATA[<p>I can't believe that this time I agree with yet another <a href="http://joelonsoftware.com/items/2006/11/15.html">Joel's rant about agile</a>. How can it possibly be? I'm becoming old... that must be it!</p>

<p>Well, maybe.</p>

<p>Maybe there's something true about what Joel writes and it reminds me a lot about many situations that I have experienced directly. Hypothetical examples really suck because they are never contextualized and characterized well enough, but loosing a lucrative deal or, even worse, loosing an existing customer in order to stick to the plan very rarely seems a good call to me. Agile or not. </p>]]></description>
<dc:subject>XP</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2006-11-22T04:58:34+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001419_no_fluff_just_stuff_tour_hit_toronto.html">
<title>No Fluff, Just Stuff tour hit Toronto</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001419_no_fluff_just_stuff_tour_hit_toronto.html</link>
<description><![CDATA[<p>Last weekend I went to the <a href="http://www.nofluffjuststuff.com/show_view.jsp?showId=73">Greater Toronto Software Symposium</a>, part of the <a href="http://www.nofluffjuststuff.com">No Fluff, Just Stuff</a> tour. It is the first time that they hit Toronto and just to go straight to the point I think it will be a huge success in the years to come. Here are my impressions and my feedback about it.</p>]]></description>
<dc:subject>events</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2006-10-29T23:34:21+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001412_japanese_centenarians_and_maslow.html">
<title>Japanese centenarians and Maslow</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001412_japanese_centenarians_and_maslow.html</link>
<description><![CDATA[<p>I've just finished watching a documentary about centenarian japanese people in relation to how the brain works. These people are amazing, they keep their brain and their body very active and they can do things that a healthy 60-70 year old person can find difficult sometimes. Why has it anything to deal with Maslow? Be patient and follow me for a second, please.</p>]]></description>
<dc:subject>XP</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2006-10-24T23:40:51+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001407_i_feel_free.html">
<title>I feel free</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001407_i_feel_free.html</link>
<description><![CDATA[<p>I have to admit that in a very twisted way I should really thank Steve Yegge, because he has basically set me free. I really <b>do</b> feel free now. His (in)famous blog about <a href="http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html">good agile vs bad agile</a> has definitely opened my mind.</p>

<p>Well, if you know me you may probably think that I'm just a sarcastic bastard, but I swear, that's not the case. If you hate me, you may probably think that, as a typical XP obtuse zealot that has spent every single day of his last 5 years by implementing, studying, refining all that agile crap without selling 1 single day of consultancy, I've just got what I deserve... maybe you're right, I don't know, I'm not that <i>enlightened</i> like Steve, but that's not the point.</p>]]></description>
<dc:subject>XP</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2006-10-23T00:27:13+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001394_qixweb_home_page.html">
<title>qixweb home page</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001394_qixweb_home_page.html</link>
<description><![CDATA[<p>Thanks to Andrea Vaccaro, finally qixweb has its own <a href="http://qixweb.codehaus.org">home page</a> at codehaus. It's pretty simple and basic, but it gives you an idea.</p>]]></description>
<dc:subject>XP</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2006-09-04T13:07:37+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001333_june_kim_about_appreciative_inquiry_with_400_people.html">
<title>June Kim about appreciative Inquiry with 400 people</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001333_june_kim_about_appreciative_inquiry_with_400_people.html</link>
<description><![CDATA[<p>A couple of days ago June Kim has posted in the XP mailing list a message about <a title="extremeprogramming : Message: Appreciative Inquiry with 400 people" href="http://groups.yahoo.com/group/extremeprogramming/message/117604">Appreciative Inquiry with 400 people</a></p>

<blockquote>I gave a talk on the 7th Java Developers' Conference in Korea yesterday. The conference is annually held and it is one of the biggest IT conferences here. This time about 3000 people attended.</blockquote>

<p>This is an amazing report, worth to read and many things to remember if you want to propose a lively talk to your next conference.</p>]]></description>
<dc:subject>XP</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2006-02-28T21:05:19+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001318_several_teams_in_a_room.html">
<title>Several teams in a room</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001318_several_teams_in_a_room.html</link>
<description><![CDATA[<p>Starting from this <a href="http://groups.yahoo.com/group/extremeprogramming/message/116776">post</a>, Gary Brown and others have related on the XP mailing list how multiple XP teams may work sharing the same open workspace. </p>

<blockquote>Each team has a 4' x 6' rolling white board on one side with cork board on the other side, plus we have a couple of spares when needed. Some of the teams use XPlanner, some use Excel, some use cards, most use multiple methods to maintain stories. Most of our charts and graphs are on the intranet, so our remote customers can see them.</blockquote>]]></description>
<dc:subject>XP</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2006-02-02T03:57:30+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001315_an_experiment_in_free_software_development.html">
<title>An experiment in free software development</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001315_an_experiment_in_free_software_development.html</link>
<description><![CDATA[<p>Hugo Garcia has started an experiment in free software development, accepting and implementing user stories for free. He has received a first request from Jeff Langr through the XP mailing list. Check his blog, <a title="ooGo" href="http://oogo.blogspot.com/">ooGo</a></p>

<blockquote>I am following the <a href="http://en.wikipedia.org/wiki/Erdos">Erdos</a> model and have decided to donate my brain to the <a href="http://groups.yahoo.com/group/extremeprogramming/">XP board.</a> I have posted a <a href="http://groups.yahoo.com/group/extremeprogramming/message/116641">message</a> on the board offering my free services. I cannot find a position as a developer so might as well give it for free in order to do what I enjoy the most.</blockquote>

<p>I'll keep and interested eye on it.</p>]]></description>
<dc:subject>XP</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2006-01-27T05:21:43+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001312_tdd_live_demo_in_ruby.html">
<title>TDD live demo in ruby</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001312_tdd_live_demo_in_ruby.html</link>
<description><![CDATA[<p>Marco Abis has published all the <a href="http://www.agileday.it/index.php?page=program">stuff</a> related to the <a href="http://blogs.codehaus.org/people/theboxx/archives/001292_agile_day_feedback.html">Second Italian Agile day</a>. This means that there's also the <a href="http://www.agileday.it/slides/PiergiulianoBossi.zip">zip file</a> of all the steps related to my session.</p>

<p>I have collected all the different versions of the code that I was developing during my session, I have cleared them a bit (ie: I have removed insignificant steps, typos, etc.) and I have written a small comment for each step. What I have obtained is a sequence of <b>49</b> steps, made by 42 live steps and 7 offline to complete the work. What's interesting is that first file was saved at 3:40:48 PM, while the last file at 4:41:06 PM ==> it means <b>42 steps in 62 minutes</b>. Steps have not all the same length of course, but I can assure you that there are always less than 3 minutes between one step and the next one.</p>]]></description>
<dc:subject>XP</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2006-01-15T23:19:45+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001302_lost_in_time_lost_in_space.html">
<title>Lost in time, lost in space</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001302_lost_in_time_lost_in_space.html</link>
<description><![CDATA[<p>Yesterday I've forgotten to add one important point to my post about <a href="http://blogs.codehaus.org/people/theboxx/archives/001288_everyday_ruby.html">"Everyday ruby"</a>: after developing the script under Windows with ruby 1.8.2 I recognized I could have put it in crontab on a linux server, where several metrics are already gained or calculated every night. When I tried I had a bad surprise: our old linux server was running <a href="http://www.debian.org/releases/woody/">debian woody</a>, an old stable release dated 2002, on which only ruby 1.6.7 is available. Hence, some of the libraries that I used were not available. For example, I have used new <a href="http://www.ruby-doc.org/stdlib/libdoc/fileutils/rdoc/">FileUtils module</a>. After 5 seconds of panic I've thought that the script could easily recognize which ruby version is running, deciding to redefine a few methods for backward compatibility. It took me 10 minutes to understand what I was missing and write the following:<br />
<pre><br />
	def is_old_ruby?<br />
	  VERSION < "1.8.0"<br />
	end<br />
	<br />
	require is_old_ruby? ? 'ftools' : 'fileutils'<br />
	<br />
	if is_old_ruby?<br />
	  def pwd<br />
	    Dir.pwd<br />
	  end<br />
	  def mkdir_p(path)<br />
	    Dir.mkdir(path) if !File.exist? path<br />
	  end<br />
	  def cd(path)<br />
	    Dir.chdir(path)<br />
	  end<br />
	else<br />
	  include FileUtils::Verbose<br />
	end<br />
</pre></p>

<p>Ugly, but it saved my day.</p>

<p>It took me some more minutes to understand that I needed to invoke shell commands or external programs differently between Windows and linux. Therefore, with a little help from the following method, I've simply modified a few invocations accordingly:<br />
<pre><br />
	def is_win?<br />
	  is_old_ruby? ? PLATFORM =~ "mswin" : PLATFORM.match("mswin")<br />
	end<br />
</pre></p>

<p>I know I could have done it the same way with other languages, but believe me when I tell you that backward compatibility with statically typed language is a lot more harder, even in the simplest case like this one.</p>

<p>This is another good reason why choosing ruby for your everyday tasks at the border of your programming environment may be a good idea. Even when java pays the bills.</p>]]></description>
<dc:subject>ruby</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2006-01-09T10:44:27+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001288_everyday_ruby.html">
<title>Everyday ruby</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001288_everyday_ruby.html</link>
<description><![CDATA[<p>Some week ago I was doing a peer review of one of my team-mates. We came across one of the objectives that he had since our last review (more than one year and a half ago): P. should have deepen his knowledge and practice of the ruby language. The idea here was partially inspired by PragProg's concept of <a href="http://www.pragmaticprogrammer.com/loty/">"learn a new language every year"</a>. Another source of inspiration came from the hacker's culture as described by <a href="http://www.paulgraham.com/gba.html">Paul Graham articles</a>.<br />
P. wholeheartly agreed with the objective and slowly started devoting some spare time to study ruby, mainly by means of reading the PragProg's so called <a href="http://www.pragmaticprogrammer.com/titles/ruby/index.html">PickAxe book</a>, at that time at his first edition, freely available on the <a href="http://www.ruby-doc.org/find/pickaxe">web</a> and automatically installed with ruby. The problem is that everyday job is to develop in java, there is really a little space for ruby in everyday activities.<br />
Infact, P. clearly missed his objective, as he recognized himself as well. I wouldn't blame him, I know and I have seen that he tried. Apparently there was really no time, nor any significant occasion.</p>

<p>But is this really true?</p>]]></description>
<dc:subject>ruby</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2006-01-08T23:46:05+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001292_agile_day_feedback.html">
<title>Agile Day feedback</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001292_agile_day_feedback.html</link>
<description><![CDATA[<p>December Friday 16th we have had our second <a href="http://www.agileday.it">Italian Agile Day</a>. It was a tough day for me, I had some flu and bad temperature the 2 days before. Luckily, some paracetamol and antibiotics helped me carry on until the end of the day.<br />
I'm really satisfied by this year's edition. Compared to 1 year ago, this year we have had less presentations, no parallel sessions, but more insight and more depth IMHO. I was particularly impressed by Ferrari Racing Development Team and <a href="http://c2.com/cgi/wiki?FrancescoCirillo">Francesco Cirillo</a>.</p>]]></description>
<dc:subject>events</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2005-12-30T14:34:54+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001289_jim_freeze_talking_about_writing_dsls_in_ruby.html">
<title>Jim Freeze talking about writing DSLs in ruby</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001289_jim_freeze_talking_about_writing_dsls_in_ruby.html</link>
<description><![CDATA[<p>Jim Freeze has an interesting post about writing DSLs in ruby. Check <a title="What is a DSL? - O'Reilly Ruby" href="http://www.oreillynet.com/ruby/blog/2005/12/what_is_a_dsl.html">What is a DSL? - O'Reilly Ruby</a>:</p>

<blockquote>The third time around, after the Ruby DSL hype had been going around for a while, I decided to use Ruby. This time, I was able to create the DSL in about five minutes. It was readable, and I was able to focus on the end users frame of reference.

<p>The moral of this story is, don't write a mini language if you don't have too. And, don't settle for a simple DSL when a full featured one is needed. Consider extending a GPL into a DSL. Particularly an expressive language that is good at creating a readable DSL -- like Ruby.</blockquote></p>]]></description>
<dc:subject>ruby</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2005-12-29T10:43:48+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001279_is_it_possible_to_have_tdd_without_oo.html">
<title>Is it possible to have TDD without OO?</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001279_is_it_possible_to_have_tdd_without_oo.html</link>
<description><![CDATA[<p>On the <a href="http://groups.yahoo.com/group/extremeprogramming-it/">Italian Extreme Programming mailing list</a> there was a discussion originated from my TDD live demo held on the <a href="http://www.agileday.it/EN">Second Italian Agile Day</a> (more on this in a later post). At a certain point of the discussion it came up the idea that TDD and OO design are not necessarily tightly connected. Well, I disagree and here's my take on that.</p>

<p>Let's put it simple: there is no TDD without refactoring, that is refactoring is a constituent part of TDD, not something beyond TDD that I can consider as an option. TDD micro-cycle is: test => red bar => code => green bar => refactor => green bar. If you don't refactor you are not following TDD.</p>

<p>Period.</p>

<p>Let's consider now that refactoring is OO. There is no refactoring without OO. The smells that you recognize into code are another symptoms for <a href="http://www.objectmentor.com/resources/articles/dip.pdf">rigidity, fragility, immobility</a>. Every refactoring move is justified by 3 criterias:<br />
<ul><br />
<li>enhance code <b>readability</b><br />
<li>reduce <b>coupling</b> between classes/modules<br />
<li>enhance <b>cohesion</b> of classes/modules<br />
</ul></p>

<p>Apart from readability, every refactoring move if correctly applied brings to OO design. What means <i>correctly applied</i>? It means if applying that move is appropriate, that is if it doesn't increase rigidity, fragility or immobility, that is if it doesn't introduce new smells. Refactoring means applying <i>ex-post</i> OO design principles.</p>

<p>Because of these reasons design is typically decomposed in several classes and responsibilities are fine-graned assigned.</p>

<p>Another period.</p>

<p>Is it possible to apply TDD following the functional paradigm? I don't know, my lisp reminiscences are too old. Today I would tend to write OO lisp code, merging together the good of both functional and OO paradigm. I'm quite sure that I would end doing something that is not TDD, probably closely related to, but not exactly TDD for what is commonly meant.</p>]]></description>
<dc:subject>XP</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2005-12-22T23:30:57+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001278_how_to_run_fitnesse_inside_the_container.html">
<title>How to run Fitnesse inside the container</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001278_how_to_run_fitnesse_inside_the_container.html</link>
<description><![CDATA[<p><a title="Naresh Jain's Weblog : Running Fitnesse inside the container" href="http://jroller.com/page/njain?entry=running_fitnesse_inside_the_container">Naresh Jain's Weblog : Running Fitnesse inside the container</a></p>

<p>Simple and easy to follow steps to run Fitnesse inside the container:<br />
<blockquote>We want the FitServer class to be invoked inside the web container. Then we can setup remote debugging on the web container and easily debug the fixture, business delegate and actual EJB code. This also helps us to avail all the EJB ref look ups and other container provided services.</blockquote></p>]]></description>
<dc:subject>Fitnesse</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2005-12-20T16:26:07+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001265_flexus_points.html">
<title>Flexus points</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001265_flexus_points.html</link>
<description><![CDATA[<p>A few days ago I found myself implementing fixtures where some fields where date-liked typed. To be precise, the customer was specifying dates in Italian format (ie: <i>DD/MM/YYYY</i>, like 24/11/2005), and corresponding fields in domain objects were typed with custom-type dates, incapsulating java.util.Calendar (to be honest, java.util.Calendar defines one of the worst hierarchies in whole jdk libraries; I still wonder what was <i>drinking </i>or <i>smoking </i>the designer of that hierarchy - but that's another story).</p>

<p>Fit has parsing facilities built-in for java scalar types and a few others (ie: java.util.Date). Therefore when you specify values of custom types you have a few alternatives:<ul><li>don't use custom types in fixtures, but rely on some other standard representation (ie: a date may be decomposed in 3 integer fields) ==> this seem somehow unnatural and cunning<br />
<li>the fixture can override method <code>public Object parse(String s, Class type)
</code>
, which will be called polymorphically by <code>TypeAdapter
</code>
 while parsing table contents ==> this is very good when you want to confine parsing facilities in fixtures only, but has the drawback of being limited to one hierarchy line only (unless duplicated in many fixtures, of course)<br />
<li>the custom object T may define a static method like <code>public static T parse(String s)
</code>
, which will be called via reflection by <code>TypeAdapter
</code>
 ==> this is best choice when you want to reuse the parsing facilities among different fixtures, but has the drawback of pollute application code with parsing services just for testing purposes<br />
</ul></p>

<p>Third option was perfectly suited for the situation I was facing. As a side-effect I have redefined toString method such that for every T t instance <code>t.equals(T.parse(t.toString()))
</code>
.</p>

<p>Some months ago there was a <a href="http://groups.yahoo.com/group/fitnesse/message/3784">discussion</a> on the <a href="http://groups.yahoo.com/group/fitnesse">Fitnesse group</a> concerning the possibility of having pluggable custom <code>TypeAdapter
</code>
 classes, so that every fitnesse project can define its own parsing rules, common for all the fixtures, without polluting domain objects: I think it would be the best possible option, but we have to wait until a plug-in architecture will be defined in <a href="http://fit.c2.com/">Fit</a> for that.</p>

<p>In the end the message is: you can put a lot of extension points (or <i>flexus points</i>) in your design, especially if you are developing a framework. Nevertheless there will always be situations that your design is not able to tackle out of the box. That is to say, your design cannot be <b>closed</b> (in <a href="http://c2.com/cgi/wiki?OpenClosedPrinciple">OCP</a> sense) against any changes no matter what. This is true whether you are developing in a traditional, prescriptive manner or if you are an agile, evolutive follower.</p>]]></description>
<dc:subject>Fitnesse</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2005-12-13T17:17:54+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001266_why_ruby_is_an_acceptable_lisp.html">
<title>Why Ruby is an acceptable LISP</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001266_why_ruby_is_an_acceptable_lisp.html</link>
<description><![CDATA[<p><a title="Why Ruby is an acceptable LISP" href="http://randomhacks.net/articles/2005/12/03/why-ruby-is-an-acceptable-lisp">Why Ruby is an acceptable LISP</a>, by Eric Kidd</p>

<p>Eric Kidd makes a few fair and thoughtful points about ruby and lisp. </p>

<blockquote><ol>
<li>LISP is a dense functional language.  </li>
<li>LISP has programmatic macros.</li>
</ol></blockquote>

<p>This post has been recognized as well in <a title= "LEMONODOR" href="http://lemonodor.com/archives/001299.html">one of the most important blog</a> of the lisp community. Very good news for ruby diffusion!</p>

<p>Credits to cas for mentioning it.</p>]]></description>
<dc:subject>ruby</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2005-12-06T12:32:42+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001253_lean_manufacturing_in_italy.html">
<title>Lean Manufacturing in Italy</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001253_lean_manufacturing_in_italy.html</link>
<description><![CDATA[<p>A few days ago I have spoken with the Industrial Director of an important manufacturing multinational company based in Italy. To give you an idea, they have several factories in Italy and a few in other countries, typically in the developing world. They are clearly a worldwide <i>leader</i> in their business.</p>

<p>He's a friend of mine, so the conversation was without any limitation and absolutely confidential. Of course, I cannot disclouse his name, nor company's one.</p>

<p>He is responsible for all factories production. He was helding a similar position at a local level in a much bigger US multinational company, a very very well known one, where he had the opportunity to see lean manufacturing in practice. Before that, he had just studied about lean, but nothing beyond that.</p>

<p>I was asking him: "How much is lean adopted in Italy?"<br />
"Not that much", he said. "There are managers that don't know about it, even if the majority probably knows it. But the problem is that in reality it is not put in practice. There are companies that <i>talk</i> about lean concepts, but they are keeping it only at the surface."<br />
Me: "Does it mean that almost all manufacturing companies are still sticking to Fordism and Taylorism? Or better, are they <i>imitating</i> Taylorism?"<br />
Him: "Yes, sort of. If you are lucky you find somebody who has read something about lean, but not more. To give you an example, I'm looking for 2 Quality Managers for 2 factories, one here in Italy and the other one in <i><b>[CLASSIFIED]</b></i>: I'm not able to find anybody with practical experience in lean manufacturing. Only talking about it, trying to picture themselves in good shapes because they have read a couple of books. By the way the position is lucrative, the role is ambitous, but that doesn't help either!"</p>

<p>This situation is pretty common in Italy. There are many sectors where we are simply following many steps back behind other leading nations. This is sad, because there are capable people, willing to try new things, but not enough entrepreneurs or venture capitalists willing to take some risks. In theory we are prepared. In practice we are sleeping. We don't risk that much, but we are constantly declining away. There's an atmosphere that reminds me the fall of an empire, but without any imperial heritage. Well, not recent anyway.</p>]]></description>
<dc:subject>lean</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2005-12-01T23:30:04+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001255_john_vlissides_passed_away.html">
<title>John Vlissides passed away</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001255_john_vlissides_passed_away.html</link>
<description><![CDATA[<p>I've just read from <a href="http://martinfowler.com/bliki/JohnVlissides.html">Martin Fowler blog</a> that John Vlissides died a few days ago. This is really sad and bitter.</p>

<p>If you are developing software for a living you typically <a href="http://www.c2.com/cgi/wiki?JohnVlissides">know who he was</a> and how important his contribution to software design has been in the past.</p>]]></description>
<dc:subject>memory</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2005-11-29T09:20:54+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001254_from_sidewalk_to_sanctity.html">
<title>From sidewalk to sanctity</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001254_from_sidewalk_to_sanctity.html</link>
<description><![CDATA[<p>Yesterday evening Rai1 (most important channel of <a href="http://www.rai.it/">Italian public television</a>) has transmitted a fiction about last years of Pope John Paul II. Of course it has got the biggest share of yesterday's prime time.</p>

<p>Try to guess who is the actor acting the part of Karol Wojtyla: got it? It's Jon Voight!</p>

<p>I was just thinking how <i>curious</i> is Jon Voight's career, from <a href="http://imdb.com/title/tt0064665/">Midnight Cowboy</a> to the Pope... :-)</p>]]></description>
<dc:subject>life</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2005-11-29T09:01:47+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001250_2nd_italian_agile_day.html">
<title>2nd Italian Agile Day</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001250_2nd_italian_agile_day.html</link>
<description><![CDATA[<p>On December 16th 2005 there will be the <a href="http://www.agileday.it/EN">2nd Italian Agile Day</a> in Milan. I'll make some noise about TDD in the afternoon with a live demonstration called <i>"TDD: how to handle explosive code without being hurt"</i></p>]]></description>
<dc:subject>events</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2005-11-25T13:10:36+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/theboxx/archives/001247_acceptance_test_patterns.html">
<title>Acceptance Test Patterns</title>
<link>http://blogs.codehaus.org/people/theboxx/archives/001247_acceptance_test_patterns.html</link>
<description><![CDATA[<p>Recently I have spent some time writing many acceptance tests (AT) in a row for a project while working at <a href="http://www.quinary.com">Quinary</a>. Usually I spend not too much time with the customer, helping her writing a few AT for each iteration. It can be 30' or 1 hour a week on average, rarely more than that (and only at the beginning of the project or a new release). Working that way you end up writing AT in little bursts.</p>

<p>This time it was different. We were using <a href="http://www.fitnesse.org">Fitnesse</a> like a tool for writing <i>executable specifications</i> (more on this in further posts). It is not interesting here to discuss why we were doing that, but in the end it meant writing tens of AT without even a single line of code. The project itself was just a brainstorming about a possible product, therefore there was no intention (yet) to really code anything. But writing executable specs helped understanding the different areas and functionalities that we eventually need to address.</p>

<p>Whatever the reason, I now have many AT, some of which are really similar to each other. Even more: some of those tests are slightly equal, they look to be different instances of the same <b>pattern</b>. For example: whenever we have forms used to enter new <i>entities</i> (ala <a href="http://domaindrivendesign.org/book/PatternSummariesUnderCreativeCommons.doc">DDD</a>), there is always a test that tries to insert duplicated data, check that it fails and check the actual error. </p>

<p>This is just a simple example, but it already contains all the elements that are typical of a pattern language, expressed in the vocabulary of functional elements.</p>

<p>While I'm pretty sure that this concept isn't really new, it seems that it is different from what specified for example with the <a href="http://fitnesse.org/FitNesse.BuildOperateCheck">BuildOperateCheck</a> pattern: this pattern works at the Fit level, and it is so general to comprise almost any <a href="http://fit.c2.com/">Fit</a> test that doesn't follow the other well-known pattern represented by  flow-style actions in <a href="http://www.cs.auckland.ac.nz/~rick/FitLibrary/">FitLibrary</a>.</p>

<p>To put it simpler, what I'm trying to say is that there seems to be emerging patterns at the functional level, working at a lower level than general-purpose Fit/Fitnesse patterns. It may also be that specific domains will have their own (even more) concrete patterns.</p>

<p>This opens interesting possibilities.</p>]]></description>
<dc:subject>Fitnesse</dc:subject>
<dc:creator>theboxx</dc:creator>
<dc:date>2005-11-24T16:52:06+00:00</dc:date>
</item>


</rdf:RDF>
