<?xml version="1.0" encoding="UTF-8"?>
<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/"
	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/"
	>

<channel>
	<title>Giordano Scalzo&#039;s Personal Blog &#187; agile</title>
	<atom:link href="http://giordano.scalzo.biz/category/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://giordano.scalzo.biz</link>
	<description>Just another useless weblog</description>
	<lastBuildDate>Fri, 09 Jul 2010 09:41:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>&#8220;Better Software Developers&#8221; slides from Better Software 2010</title>
		<link>http://giordano.scalzo.biz/2010/05/10/better-software-developers-slides-from-better-software-2010/</link>
		<comments>http://giordano.scalzo.biz/2010/05/10/better-software-developers-slides-from-better-software-2010/#comments</comments>
		<pubDate>Mon, 10 May 2010 13:15:08 +0000</pubDate>
		<dc:creator>giordano scalzo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[bsw2010]]></category>
		<category><![CDATA[software craftsmanship]]></category>

		<guid isPermaLink="false">http://giordano.scalzo.biz/?p=307</guid>
		<description><![CDATA[Here are the slides from my presentation I gave at Better Software 2010: a humble attempt to spread the Software Craftsmanship philosophy among developers and managers.
Better Software Developers
View more presentations from giordano scalzo.




Technorati Tags: agile, bsw2010, software craftsmanship


]]></description>
			<content:encoded><![CDATA[<p>Here are the slides from my presentation I gave at Better Software 2010: a humble attempt to spread the Software Craftsmanship philosophy among developers and managers.</p>
<div style="width:425px" id="__ss_3989933"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/giordano/better-software-developers-3989933" title="Better Software Developers">Better Software Developers</a></strong><object id="__sse3989933" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=bettersoftwaredevelopers-100506042809-phpapp01&#038;rel=0&#038;stripped_title=better-software-developers-3989933" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse3989933" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=bettersoftwaredevelopers-100506042809-phpapp01&#038;rel=0&#038;stripped_title=better-software-developers-3989933" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/giordano">giordano scalzo</a>.</div>
</div>

<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/agile' rel='tag' target='_self'>agile</a>, <a class='technorati-link' href='http://technorati.com/tag/bsw2010' rel='tag' target='_self'>bsw2010</a>, <a class='technorati-link' href='http://technorati.com/tag/software+craftsmanship' rel='tag' target='_self'>software craftsmanship</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://giordano.scalzo.biz/2010/05/10/better-software-developers-slides-from-better-software-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AgileCamp 2010: richness of difference</title>
		<link>http://giordano.scalzo.biz/2010/03/17/agilecamp-2010-richness-of-differerence/</link>
		<comments>http://giordano.scalzo.biz/2010/03/17/agilecamp-2010-richness-of-differerence/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 13:59:01 +0000</pubDate>
		<dc:creator>giordano scalzo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[barcamp]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://giordano.scalzo.biz/?p=288</guid>
		<description><![CDATA[Some weeks ago, I has been lucky enough to attend to AgileCamp 2010, an awesome Barcamp organized by Sketchin, a Swiss UX and Web agency.
With my good fellows XpUg-gers Gabriele, Andrea and Indrit, we reached a lot of old and new friends, all of them caring about quality and &#8220;Things Got Right&#8221;.
I came back really [...]]]></description>
			<content:encoded><![CDATA[<p>Some weeks ago, I has been lucky enough to attend to <a href="http://barcamp.org/AgileCamp">AgileCamp 2010</a>, an awesome <a href="http://barcamp.org/">Barcamp </a>organized by <a href="http://www.sketchin.ch/it/blog/sketchin/vorremo-parlarvi-dellagilecamp2010.html">Sketchin</a>, a Swiss UX and Web agency.<br />
With my good fellows <a href="http://milano-xpug.pbworks.com/">XpUg-gers</a> <a href="http://www.gabrielelana.it/">Gabriele</a>, <a href="http://blog.andreafrancia.it/">Andrea</a> and <a href="http://it.linkedin.com/in/indritselimi">Indrit</a>, we reached a lot of old and new friends, all of them caring about quality and &#8220;<em>Things Got Righ</em>t&#8221;.<br />
I came back really enriched, mainly because I met people with experiences and point of view different than mine.</p>
<p>It has been my first <a href="http://barcamp.org/">Barcamp</a>, so I though it was necessary to present something, and I decided to assemble a little introduction to Tdd coding for Iphone.</p>
<p>Here there is the video of my presentation:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="320" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=10062595&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="320" src="http://vimeo.com/moogaloop.swf?clip_id=10062595&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/10062595">AgileCamp &#8211; iPhone agile DEV (di Giordano Scalzo)</a> from <a href="http://vimeo.com/sketchin">Sketchin</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/barcamp' rel='tag' target='_self'>barcamp</a>, <a class='technorati-link' href='http://technorati.com/tag/bdd' rel='tag' target='_self'>bdd</a>, <a class='technorati-link' href='http://technorati.com/tag/iphone' rel='tag' target='_self'>iphone</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://giordano.scalzo.biz/2010/03/17/agilecamp-2010-richness-of-differerence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>StringCalculator Kata at Xpug</title>
		<link>http://giordano.scalzo.biz/2009/12/17/stringcalculator-kata-at-xpug/</link>
		<comments>http://giordano.scalzo.biz/2009/12/17/stringcalculator-kata-at-xpug/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 13:18:20 +0000</pubDate>
		<dc:creator>giordano scalzo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[xpug]]></category>

		<guid isPermaLink="false">http://giordano.scalzo.biz/?p=255</guid>
		<description><![CDATA[Last evening the wonderful Xpug Milano hosted a Kata Meeting: three people, three language, one problem, one pomodoro each!
After the launch of http://katacasts.com/, this kind of practice has begun to spread around the world.
As far as I know, that was one of the firsts meeting held in Italy and it has been exciting (and a [...]]]></description>
			<content:encoded><![CDATA[<p>Last evening the wonderful Xpug Milano hosted a Kata Meeting: three people, three language, one problem, one pomodoro each!</p>
<p>After the launch of <a href="http://katacasts.com/">http://katacasts.com/</a>, this <a href="http://rubyconf2008.confreaks.com/ruby-kata-and-sparring.html">kind of practice</a> has begun to spread around the world.</p>
<p>As far as I know, that was one of the firsts meeting held in Italy and it has been exciting (and a little scaring) to be one of the performer.</p>
<p>The simple problem to solve was the <a href="http://osherove.com/tdd-kata-1/">StringCalculator</a> kata, proposed by <a href="http://osherove.com">Roy Osherove</a> as simple exercise to repeat to assimilate Tdd.</p>
<p><a href="http://twitter.com/lucamarrocco">Luca Marrocco</a> performed the <a href="http://www.vimeo.com/8087998">kata in Ruby</a>, <a href="http://bitbucket.org/rsalmaso/">Raffaele Salmaso</a> a <a href="http://bitbucket.org/rsalmaso/">Python version</a>, <a href="http://www.gabrielelana.it/">the benevolent dictator of Xpug Milano</a> a backup <a href="http://www.vimeo.com/8206748">kata in Erlang</a>, and yours truly a Scala version.</p>
<p>Below the live recording of my session, with errors, mistakes and pauses made during the execution:</p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8235576&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=8235576&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object>
<p><a href="http://vimeo.com/8235576">StringCalculator in Scala Kata live at Xpug Milano</a> from <a href="http://vimeo.com/user2802092">giordano scalzo</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Any kind of suggestion about the solution, the process, the way I performed are absolutely welcome.</p>

<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/bdd' rel='tag' target='_self'>bdd</a>, <a class='technorati-link' href='http://technorati.com/tag/scala' rel='tag' target='_self'>scala</a>, <a class='technorati-link' href='http://technorati.com/tag/xpug' rel='tag' target='_self'>xpug</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://giordano.scalzo.biz/2009/12/17/stringcalculator-kata-at-xpug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An evening at Xpug: Bdd presentation</title>
		<link>http://giordano.scalzo.biz/2009/12/04/an-evening-at-xpug-bdd-presentation/</link>
		<comments>http://giordano.scalzo.biz/2009/12/04/an-evening-at-xpug-bdd-presentation/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 21:24:48 +0000</pubDate>
		<dc:creator>giordano scalzo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[xpug]]></category>

		<guid isPermaLink="false">http://giordano.scalzo.biz/?p=249</guid>
		<description><![CDATA[Last evening, I gave a speech about Bdd, at the wonderful Milan XPUg.
The meeting has been very pleasant: I believe the members are among the most brilliant mind I know.
I could admit I didn&#8217;t know very well Bdd, but following the good old advice &#8220;teach to learn&#8220;, I got a triple win:
I taught something new [...]]]></description>
			<content:encoded><![CDATA[<p>Last evening, I gave a speech about Bdd, at the wonderful <a href="http://milano-xpug.pbworks.com/">Milan XPUg</a>.<br />
The meeting has been very pleasant: I believe the members are among the most brilliant mind I know.</p>
<p>I could admit I didn&#8217;t know very well Bdd, but following the good old advice &#8220;<em>teach to learn</em>&#8220;, I got a triple win:<br />
I taught something new to Xpug guys, I learned a lot of new things and I improved my presentation skill.</p>
<p>Moreover, after a couple of hours after I put online my slides, the Slideshare team promoted my presentation in home page as features presentation: what a great result for a weekend presentation hack!</p>
<div style="width:425px;text-align:left" id="__ss_2642417"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/giordano/bdd-tdd-and-beyond-the-infinite" title="Bdd: Tdd and beyond the infinite">Bdd: Tdd and beyond the infinite</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=2642417&#038;stripped_title=bdd-tdd-and-beyond-the-infinite" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=2642417&#038;stripped_title=bdd-tdd-and-beyond-the-infinite" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/giordano">giordano scalzo</a>.</div>
</div>

<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/bdd' rel='tag' target='_self'>bdd</a>, <a class='technorati-link' href='http://technorati.com/tag/presentation' rel='tag' target='_self'>presentation</a>, <a class='technorati-link' href='http://technorati.com/tag/xpug' rel='tag' target='_self'>xpug</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://giordano.scalzo.biz/2009/12/04/an-evening-at-xpug-bdd-presentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Italian Agile Day is coming</title>
		<link>http://giordano.scalzo.biz/2009/11/18/italian-agile-day-is-coming/</link>
		<comments>http://giordano.scalzo.biz/2009/11/18/italian-agile-day-is-coming/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 15:23:24 +0000</pubDate>
		<dc:creator>giordano scalzo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[iad09]]></category>

		<guid isPermaLink="false">http://giordano.scalzo.biz/?p=241</guid>
		<description><![CDATA[
It&#8217;s near the end of November, it&#8217;s Italian Agile Day time.
As each year, it&#8217;s the time to gather all Italian Agile Practitioners, or wannabe-Agile, for a community day.
The site is the nice Hotel Savoia Regency in Bologna.
As usual, the timetable is very interesting, and I still haven&#8217;t decided what conferences attend: I&#8217;ll float around and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.agileday.it/mediakit/IAD120.gif"><img alt="" src="http://www.agileday.it/mediakit/IAD120.gif" title="IAD09" class="alignleft" width="120" height="90" /></a><br />
It&#8217;s near the end of November, it&#8217;s <a href="http://www.agileday.it/front/2009/italian-agile-day-2009/">Italian Agile Day</a> time.<br />
As each year, it&#8217;s the time to gather all Italian Agile Practitioners, or wannabe-Agile, for a community day.<br />
The site is the nice <a href="http://www.savoia.it/ita/hotel_regency/hotel_4stelle_bologna.htm">Hotel Savoia Regency</a> in Bologna.<br />
As usual, the <a href="http://www.agileday.it/front/programma/">timetable </a>is very interesting, and I still haven&#8217;t decided what conferences attend: I&#8217;ll float around and I&#8217;ll make gut decisions.</p>
<p>See you, <a href="http://www.agileday.it/front/2009/italian-agile-day-2009/">there</a>!</p>

<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/agile' rel='tag' target='_self'>agile</a>, <a class='technorati-link' href='http://technorati.com/tag/iad09' rel='tag' target='_self'>iad09</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://giordano.scalzo.biz/2009/11/18/italian-agile-day-is-coming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reviewing &#8220;97 Things Every Project Manager Should Know&#8221;</title>
		<link>http://giordano.scalzo.biz/2009/10/30/reviewing-97-things-every-project-manager-should-know/</link>
		<comments>http://giordano.scalzo.biz/2009/10/30/reviewing-97-things-every-project-manager-should-know/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 11:51:38 +0000</pubDate>
		<dc:creator>giordano scalzo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[project_management]]></category>

		<guid isPermaLink="false">http://giordano.scalzo.biz/?p=215</guid>
		<description><![CDATA[
O&#8217;Reilly continues its serie &#8220;97 things&#8221; with this &#8220;97 Things Every Project Manager Should Know&#8220;.
I&#8217;d like to define this kind of books as post-modern book: their contents are released under Creative Commons, every piece last just two pages and they are written by a large group of authors; they are a sort of blog on [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://giordano.scalzo.biz/wp-content/uploads/2009/10/cat.gif" alt="97 things every project manager should know" title="97 things every project manager should know" width="180" height="270" class="alignleft size-full wp-image-216" /><br />
O&#8217;Reilly continues its serie &#8220;<em>97 things</em>&#8221; with this &#8220;<a href="http://oreilly.com/catalog/9780596804152">97 Things Every Project Manager Should Know</a>&#8220;.<br />
I&#8217;d like to define this kind of books as post-modern book: their contents are released under Creative Commons, every piece last just two pages and they are written by a large group of authors; they are a sort of blog on paper.</p>
<p>I started to read with great expectatives: most of authors are well known in Project Management world, and the format is very attractive.<br />
Neverthless I found it too high level and, in some part, too superficial for my taste: I cought myself thinking &#8220;<em>&#8230; and so?</em>&#8221; too often.</p>
<p>In conclusion, I suggest this books only for novice project managers, otherwise a book as &#8220;<a href="http://pragprog.com/titles/jrpm/manage-it">Manage It!</a>&#8221; by <a href="http://jrothman.com/blog/mpd/">Johanna Rothman</a> is more suitable.</p>

<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/book' rel='tag' target='_self'>book</a>, <a class='technorati-link' href='http://technorati.com/tag/project_management' rel='tag' target='_self'>project_management</a>, <a class='technorati-link' href='http://technorati.com/tag/review' rel='tag' target='_self'>review</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://giordano.scalzo.biz/2009/10/30/reviewing-97-things-every-project-manager-should-know/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Birthday Greetings Kata in Ruby</title>
		<link>http://giordano.scalzo.biz/2009/10/26/birthday-greetings-kata-in-ruby/</link>
		<comments>http://giordano.scalzo.biz/2009/10/26/birthday-greetings-kata-in-ruby/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 20:30:31 +0000</pubDate>
		<dc:creator>giordano scalzo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[kata]]></category>

		<guid isPermaLink="false">http://giordano.scalzo.biz/?p=208</guid>
		<description><![CDATA[Lately the pratice of Kata seems spreading out very quickly, thanks to work of well known Software Craftsmen as Corey Haynes or the Clean Code evangelist Uncle Bob.
It all started waiting for a kid&#8217;s karate lesson, and now it&#8217;s a well know practice to become a better developer.
Basicly a code kata is a small problem [...]]]></description>
			<content:encoded><![CDATA[<p>Lately the pratice of Kata seems spreading out very quickly, thanks to work of well known Software Craftsmen as <a href="http://www.coreyhaines.com">Corey Haynes</a> or the Clean Code evangelist <a href="http://blog.objectmentor.com/articles/category/uncle-bobs-blatherings">Uncle Bob</a>.</p>
<p><a href="http://codekata.pragprog.com/codekata/2007/01/code_katahow_it.html">It all started</a> waiting for a kid&#8217;s karate lesson, and now it&#8217;s a well know practice to become a better developer.</p>
<p>Basicly a code kata is a small problem to be resolved without any pressure and requests, but to play with different techniques or programming language.</p>
<p>Another interesting point of view considers a code kata as a training for muscles of memory, focusing on repetitions, memorizations of decisions and keyboard shortcuts; the point is: if I get trained to do design decisions at subconscious level, when I&#8217;ll met similar problems I&#8217;ll be very productive, doing the right decision without any logical think.<br />
Amazing, isn&#8217;t it?</p>
<p>The main argument of last <a href="http://milano-xpug.pbworks.com/">Milan Xpug meeting</a> was the <a href="http://matteo.vaccari.name/blog/archives/154">Birthday Greetings Kata</a>, a workshop Matteo Vaccari will submit to next <a href="http://www.xpday.net/Xpday2009/sessions/Birthday%20Greetings%20Kata.html">Xp Days Benelux 2009</a>.<br />
Unfortunately I couldn&#8217;t be present, but I <a href="http://github.com/gscalzo/Birthday-Greetings-Kata/tree/in_ruby">implemented the kata</a> on my own, using Ruby instead of Java.</p>
<p>I enjoyed it very much, and I start thinking to try it still a couple of times and then screencasting it: I&#8217;m far behind <a href="http://katas.softwarecraftsmanship.org/">this level</a>, but review my actions can help me get better.</p>
<pre class="brush: ruby">
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
require 'rumbster'
require 'message_observers'
require 'net/smtp'
require 'gserver'
require 'birthday_service'
require 'employee_repository'

describe "Greetings Service" do
	NON_STANDARD_PORT = 10015
	def send_message(to, message)
    		Net::SMTP.start('localhost', NON_STANDARD_PORT) do |smtp|
      			smtp.send_message message, 'your@mail.address', to
    		end
	end
	before :each do
	 	@rumbster =  Rumbster.new(NON_STANDARD_PORT)
   		@message_observer = MailMessageObserver.new
		@rumbster.add_observer @message_observer
		@rumbster.start

		@birthdayService = BirthdayService.new("localhost", NON_STANDARD_PORT);
	end
	after :each do
		@rumbster.stop
	end
	context "with a file with one person born today" do
		before :each do
			@birthdayService.send_greetings EmployeeRepository.new("employee_data.txt"), "2008/10/08"
		end

		it "should send one email" do
			@message_observer.messages.size.should == 1
		end

		it "should send correct message" do
			@message_observer.messages.first.subject.should == "Happy Birthday!"
			@message_observer.messages.first.body.chomp.should == "Happy Birthday, dear John!"
			@message_observer.messages.first.to.should == ["john.doe@foobar.com"]
		end
	end

end
</pre>
<pre class="brush: ruby">
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
require "employee_repository"

describe "EmployeeRepository" do
	it "should read Employees from a file" do
		repository = EmployeeRepository.new "employee_data.txt"
	end

	it "should have a well know size" do
		repository = EmployeeRepository.new "employee_data.txt"
		repository.size.should == 3
	end
	it "should return first employee" do
		repository = EmployeeRepository.new "employee_data.txt"
		expected_employee = Employee.new("Doe, John, 1982/10/08, john.doe@foobar.com")
		repository.first.should == expected_employee
	end
	it "should return employees born an a given date" do
		repository = EmployeeRepository.new "employee_data.txt"
		expected_employee = Employee.new("Doe, John, 1982/10/08, john.doe@foobar.com")
		repository.born_on('2008/10/08').first.should == expected_employee
	end
end
</pre>
<pre class="brush: ruby">
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
require "message"
require "employee"

describe "Message" do
	before :each do
		@message = Message.new Employee.new("Doe, John, 1982/10/08, john.doe@foobar.com")
	end

	it "should have employee's email as destination" do
		@message.to.should == "john.doe@foobar.com"
	end
	it "should construct a complete body" do
		@message.body.should == "To: john.doe@foobar.com\nSubject: Happy Birthday!\n\nHappy Birthday, dear John!"
	end
end
</pre>
<pre class="brush: ruby">
require "message"

class BirthdayService
	def initialize(host, port)
		@host = host
		@port = port
	end
	def send_greetings(employees, date)
		employees.born_on(date).each do |employee|
			send_message(Message.new employee)
		end
	end
	def send_message(message)
    		Net::SMTP.start(@host, @port) do |smtp|
      			smtp.send_message message.body, 'your@mail.address', message.to
    		end
	end
end
</pre>
<pre class="brush: ruby">
class Employee
	attr_reader :firstname
	attr_reader :lastname
	attr_reader :birthdate
	attr_reader :email
	def initialize(args)
		tokens = args.split(',').map { |e| e.strip }
		@firstname = tokens[1]
		@lastname = tokens[0]
		@birthdate = tokens[2]
		@email = tokens[3]
	end

	def ==(other)
		other.instance_of?(self.class) &#038;&#038;
			@firstname == other.firstname &#038;&#038;
			@lastname == other.lastname &#038;&#038;
			@birthdate == other.birthdate &#038;&#038;
			@email == other.email
	end
end
</pre>
<pre class="brush: ruby">
require 'employee'

class String
	def same_day?(other)
		date1 = split('/')
		date2 = other.split('/')
		date1[1] == date2[1] &#038;&#038; date1[2] == date2[2]
	end
end

class EmployeeRepository
	private
	def skip_header
		@employees.shift
	end

	public
	def initialize(employees_filename)
		@employees = []
		File.open(employees_filename).each_line do |line|
			@employees << Employee.new(line)
		end
		skip_header
	end

	def size
		@employees.size
	end

	def first
		@employees.first
	end

	def born_on(current_date)
		@employees.find_all { |e| e.birthdate.same_day?(current_date) }
	end
end
</pre>
<pre class="brush: ruby">
class Message
	def initialize(employee)
		@employee = employee
	end
	def to
		@employee.email
	end
	def body
		["To: #{to}",
		"Subject: Happy Birthday!",
		"",
		"Happy Birthday, dear #{@employee.firstname}!"].join("\n")
	end
end
</pre>
<p>Interesting I wrote more specs code than production code.</p>
<p>I do like I didn't used any <em>IF</em>, but I don't like to open String to model date and the use of split to tokenize things: I'll focus on thant in next attempt!</p>

<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/kata' rel='tag' target='_self'>kata</a>, <a class='technorati-link' href='http://technorati.com/tag/ruby' rel='tag' target='_self'>ruby</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://giordano.scalzo.biz/2009/10/26/birthday-greetings-kata-in-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Craftsmanship Tags</title>
		<link>http://giordano.scalzo.biz/2009/10/05/software-craftsmanship-tags/</link>
		<comments>http://giordano.scalzo.biz/2009/10/05/software-craftsmanship-tags/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 09:56:02 +0000</pubDate>
		<dc:creator>giordano scalzo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[SCTAGS2009]]></category>

		<guid isPermaLink="false">http://giordano.scalzo.biz/?p=161</guid>
		<description><![CDATA[On Software Craftsmanship mailing list, it was asked three words describing what is Software Craftsmanship movement: this is the result





Technorati Tags: SCTAGS2009


]]></description>
			<content:encoded><![CDATA[<p>On Software Craftsmanship mailing list, it was asked three words describing what is Software Craftsmanship movement: this is the result</p>
<p><a title="Wordle: SCTAGS2009" href="http://www.wordle.net/show/wrdl/1188918/SCTAGS2009"><br />
<img style="padding:4px;border:1px solid #ddd" align="aligncenter" width="300" height="300" src="http://www.wordle.net/thumb/wrdl/1188918/SCTAGS2009" alt="Wordle: SCTAGS2009" /></a></p>

<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/SCTAGS2009' rel='tag' target='_self'>SCTAGS2009</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://giordano.scalzo.biz/2009/10/05/software-craftsmanship-tags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Green Wristband</title>
		<link>http://giordano.scalzo.biz/2009/10/02/my-green-wristband/</link>
		<comments>http://giordano.scalzo.biz/2009/10/02/my-green-wristband/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 12:17:18 +0000</pubDate>
		<dc:creator>giordano scalzo</dc:creator>
				<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://giordano.scalzo.biz/?p=153</guid>
		<description><![CDATA[As every software craftsman should know, UncleBobMartin  has prepared a wonderful green wristband to remember to produce Clean Code.
I&#8217;m on my way to become a better developer, and Clean Code wristband is a sign of my commit.
After a small donation, today I got mine:
I&#8217;ve to admit I don&#8217;t feel I deserve it: the current [...]]]></description>
			<content:encoded><![CDATA[<p>As every software craftsman should know, <a href="http://blog.objectmentor.com/articles/category/uncle-bobs-blatherings">UncleBobMartin </a> has prepared a wonderful <a href="http://butunclebob.com/ArticleS.UncleBob.GreenWristBand">green wristband</a> to remember to produce Clean Code.</p>
<p>I&#8217;m on my way to become a better developer, and Clean Code wristband is a sign of my commit.<br />
After a small donation, today I got mine:</p>
<div id="attachment_154" class="wp-caption aligncenter" style="width: 250px"><img src="http://giordano.scalzo.biz/wp-content/uploads/2009/10/Photo0005-240x300.jpg" alt="Clean Code Green Wristband" title="Green wristband" width="240" height="300" class="size-medium wp-image-154" /><p class="wp-caption-text">Clean Code Green Wristband</p></div>
<p>I&#8217;ve to admit I don&#8217;t feel I deserve it: the current project I&#8217;m working on is a doomed legacy system and the tempations to write dirt code are very appealing , but wearing it should help me to resist.</p>

<!-- start wp-tags-to-technorati 1.01 -->

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://giordano.scalzo.biz/2009/10/02/my-green-wristband/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reviewing &#8220;Manage Your Project Portfolio&#8221;</title>
		<link>http://giordano.scalzo.biz/2009/10/01/reviewing-manage-your-project-portfolio/</link>
		<comments>http://giordano.scalzo.biz/2009/10/01/reviewing-manage-your-project-portfolio/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 12:28:06 +0000</pubDate>
		<dc:creator>giordano scalzo</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://giordano.scalzo.biz/?p=142</guid>
		<description><![CDATA[I was lucky enough to receive the last book of Johanna Rothman, to review for programmazione.it.

&#8220;Manage Your Project Portfolio&#8221; is the last of an virtual trilogy devoted to improve the art of Project Management and to implante the seeds for a Pragmatic Project Management craft; it could be considered as a long appendix to Manage [...]]]></description>
			<content:encoded><![CDATA[<p>I was lucky enough to receive the last book of Johanna Rothman, to review for <a href="http://www.programmazione.it">programmazione.it</a>.</p>
<p><img alt="" src="http://rubberduck.it/images/manageport.png" title="Manage Your Project Portfolio" class="alignleft" width="190" height="228" style="border-width:5px"/></p>
<p>&#8220;<a href="http://www.pragprog.com/titles/jrport/manage-your-project-portfolio">Manage Your Project Portfolio</a>&#8221; is the last of an virtual trilogy devoted to improve the art of Project Management and to implante the seeds for a <em>Pragmatic Project Management craft</em>; it could be considered as a long appendix to <a href="http://www.pragprog.com/titles/jrpm/manage-it">Manage It</a>, as long it expands one of its final chapter.</p>
<p>This book is a must read for everyone involved in IT world, from junior developer &#8217;till C-level executive.<br />
As usual, Johanna Rothman uses a very simple language and she provides a lot of exahustive examples so that everyone can understand the goals and the principles behind a <em>project portfolio management</em>.</p>
<p>If I had to choose only one chapter, maybe I&#8217;ll choose the sixth, about collaboration, obstacles and human behaviour during projects evolution, beacuse, usually, people are the problem and the solution.</p>
<p>With this book, <a href="http://www.pragprog.com/">Pragmatic Bookshelf</a> confirms itself as one of the best publisher about computer things, and I&#8217;m looking forward to reading something in theirs <em>Pragmatic Life</em> Serie.</p>

<!-- start wp-tags-to-technorati 1.01 -->

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://giordano.scalzo.biz/2009/10/01/reviewing-manage-your-project-portfolio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
