<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-18625282</id><updated>2011-07-30T17:21:25.829+02:00</updated><title type='text'>Code Sushi</title><subtitle type='html'>Covering the Italian Scene</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18625282.post-128984330143555611</id><published>2007-07-05T00:58:00.001+02:00</published><updated>2007-07-05T00:58:22.372+02:00</updated><title type='text'>Serata Social Club</title><content type='html'>Le serate del &lt;font size="4"&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;Ruby Social Club&lt;/span&gt;&lt;/font&gt; riprendono a ritmo frenetico!&lt;br&gt;ecco il &lt;a href="http://www.rubysocialclub.net/moin.fcg/serata_businessbase"&gt;primo piccolo report &lt;/a&gt; sul nuovo sitarello del RSC (grazie &lt;font size="6"&gt;&lt;a style="color: rgb(0, 153, 0);" href="http://tempe.st"&gt;intinig!&lt;/a&gt;&lt;/font&gt;)&lt;br&gt;&lt;br&gt; le immagini sono un pò pesanti ma ho voluto lasciarle nel loro splendore!&lt;br&gt;&lt;br clear="all"&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-128984330143555611?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/128984330143555611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=128984330143555611' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/128984330143555611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/128984330143555611'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2007/07/serata-social-club.html' title='Serata Social Club'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-8300389409116406216</id><published>2007-07-04T12:00:00.001+02:00</published><updated>2007-07-04T12:00:12.906+02:00</updated><title type='text'>C'è qualcuno?</title><content type='html'>E&amp;#39; da un sacco di tempo che non bloggo più. Ho avuto casini vari e sono stato preso da diverse attività.&lt;br&gt;Principalmente ho cercato di dare un pò più di equilibrio alla mia vita e di focalizzare le mie forze per il futuro. &lt;br&gt;Un pò ci sono anche riuscito :-)&lt;br&gt;&lt;br&gt;La lezione più importante che ho imparato in questo periodo è: &lt;font size="4"&gt;&lt;span style="color: rgb(204, 102, 0);"&gt;L&amp;#39;unica strategia è mantenere alto il tuo livello di energia. &lt;/span&gt;&lt;/font&gt;&lt;br&gt;&lt;br clear="all"&gt;Lo diceva mia nonna: &amp;quot;La salute prima di tutto&amp;quot;&lt;br&gt;Dice anche: &amp;quot;Chi troppo studia matto diventa&amp;quot; e non ha torto!&lt;br&gt;&lt;br&gt;Comunque scusate tutti per la lunga assenza. Sono scomparso dagli schermi dei miei amici-popup per troppo tempo, ma era da fare. &lt;br&gt;&lt;br&gt;Mò devo decidere se continuare con questo blog, se fonderlo con un altro, etc..&lt;br&gt;&lt;br&gt;Quindi please rispondetemi: state ancora seguendo il mio blog? vi interessa leggerlo in italiano? Che argomenti vorreste veder trattati? &lt;br&gt;&lt;br&gt;Fatemi sapere che devo prendere una decisione.&lt;br&gt;&lt;br&gt;Ciao!&lt;br&gt;&lt;br&gt; &lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-8300389409116406216?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/8300389409116406216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=8300389409116406216' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/8300389409116406216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/8300389409116406216'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2007/07/c-qualcuno.html' title='C&apos;è qualcuno?'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-116064143447135913</id><published>2006-10-12T10:23:00.000+02:00</published><updated>2006-10-12T10:23:54.516+02:00</updated><title type='text'>TheRubyMine è accesa!</title><content type='html'>Finalmente!&amp;nbsp; &lt;a href="http://therubymine.com/"&gt;TheRubyMine&lt;/a&gt; è ora online :-)&lt;br&gt;&lt;br&gt;E grazie a Roberto di &lt;a href="http://unbit.it"&gt;Unbit&lt;/a&gt; -il nostro hosting provider- che ci ha aiutati quando ci siamo incasinati con i settings all'andata in produzione. &lt;br clear="all"&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-116064143447135913?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/116064143447135913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=116064143447135913' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/116064143447135913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/116064143447135913'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/10/therubymine-accesa.html' title='TheRubyMine è accesa!'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-115740461346207931</id><published>2006-09-04T23:13:00.000+02:00</published><updated>2006-09-04T23:16:53.476+02:00</updated><title type='text'>The Ruby Mine</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5227/1600/1600/logo.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/blogger/5227/1600/400/logo.jpg" alt="" border="0" /&gt;&lt;/a&gt;Mamma mia ragazzi che sfacchinata.. con le ferie in mezzo poi non vi dico.  Però ci siamo quasi.  Tra pochissimo andiamo in Beta invitation-only per una decina di giorni e poi via, aperti al mondo!&lt;br /&gt;&lt;br /&gt;Iscrivetevi a frotte su &lt;a href="http://www.therubymine.com"&gt;TheRubyMine&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-115740461346207931?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/115740461346207931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=115740461346207931' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/115740461346207931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/115740461346207931'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/09/ruby-mine.html' title='The Ruby Mine'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-115168973754410410</id><published>2006-06-30T19:48:00.000+02:00</published><updated>2006-06-30T19:48:57.616+02:00</updated><title type='text'>Arte Post-Postmoderna</title><content type='html'>&lt;a href="http://www.unita.it/view.asp?IDcontent=57604"&gt;Questo&lt;/a&gt; mi ha dato un brivido.&amp;nbsp; E' una nuova stranissima forma d'arte che fonde informatica, marketing e corporate finance.&amp;nbsp; &lt;br&gt;&lt;br&gt;Vi basta come teaser? ;-) &lt;br&gt;&lt;br&gt; Leggetelo, è folle.. e geniale.&lt;br&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;/a&gt; &lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-115168973754410410?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/115168973754410410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=115168973754410410' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/115168973754410410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/115168973754410410'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/06/arte-post-postmoderna.html' title='Arte Post-Postmoderna'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-115096757244870437</id><published>2006-06-22T11:12:00.000+02:00</published><updated>2006-06-22T11:12:52.556+02:00</updated><title type='text'>NOT Thinking in Java (tm)</title><content type='html'>E' da un pò di tempo che penso sarebbe veramente belo organizzare una serie di workshop intitolata &amp;quot;*Not* Thinking in Java (tm)&amp;quot;.&amp;nbsp; Non che io abbia nulla contro java &lt;span style="font-style: italic;"&gt;per se&lt;/span&gt;, ma dargli addosso è piuttosto trendy ultimamente.&lt;br&gt; &lt;br&gt; Al di là di Java, quello che mi scoccia è il mono-pensiero che si è instaurato con la cultura degli oggetti.&amp;nbsp; Non mi tiro indietro, ho contribuito anch'io nel mio piccolo a crearla e evangelizzarla.&amp;nbsp; Negli ultimi anni ci siamo fatti una scorpacciata e con i patterns abbiamo esplorato i confini di quello che è possibile fare con gli oggetti.&amp;nbsp; &lt;br&gt; &lt;br&gt; E' giusto così, ma ora sarebbe veramente interessante esplorare le alternative.&amp;nbsp; Lisp, Erlang, Haskell e i loro vari amici e cugini.&lt;br&gt; &lt;br&gt; Ieri ho visto un &lt;a href="http://www.defmacro.org/ramblings/fp.html"&gt;articolo sui linguaggi funzionali&lt;/a&gt; che mi ha colpito per la sua semplicità e per il potere persuasivo.&amp;nbsp; E' lunghetto ma leggero.&amp;nbsp; Consiglio a tutti gli interessati di dargli un'occhiata.&lt;br&gt; &lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;/a&gt; &lt;br&gt;&lt;br&gt; &lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-115096757244870437?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/115096757244870437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=115096757244870437' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/115096757244870437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/115096757244870437'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/06/not-thinking-in-java-tm.html' title='NOT Thinking in Java (tm)'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114994999100707503</id><published>2006-06-10T16:33:00.000+02:00</published><updated>2006-06-10T16:33:11.043+02:00</updated><title type='text'>Seesaw apre l'ufficio in Rete</title><content type='html'>&lt;a href="http://www.seesaw.it"&gt;Seesaw&lt;/a&gt; vorrebbe diventare &lt;a href="http://feeds.feedburner.com/seesaw?m=25"&gt;completamente virtuale&lt;/a&gt;, tranne per la birra e per la pizza :-)&lt;br&gt;&lt;br&gt;Voi che ne pensate?&amp;nbsp; Si può fare?&lt;br&gt; E' l'inizio dei Distretti Industriali Virtuali di &lt;a href="http://riffraff.blogsome.com/"&gt;Gabriele Renzi&lt;/a&gt; o della mia Virtual Valley?&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com"&gt;Chiaroscuro &lt;/a&gt; &lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114994999100707503?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114994999100707503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114994999100707503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114994999100707503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114994999100707503'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/06/seesaw-apre-lufficio-in-rete.html' title='Seesaw apre l&apos;ufficio in Rete'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114946106810923143</id><published>2006-06-05T00:44:00.000+02:00</published><updated>2006-06-05T00:44:28.160+02:00</updated><title type='text'>Ruby Social Club in Rome &amp; Lightning Talks - Martedì 13 Giugno</title><content type='html'>&lt;span class="gmail_quote"&gt;&lt;/span&gt;Il Ruby Social Club si riunisce a Roma martedì 13 giugno in zona Monti/Colosseo.&lt;br&gt;&lt;div&gt;&lt;br&gt;Ci si incontrerà presso l'&lt;a href="http://nuke.limpiccioneviaggiatore.com/"&gt;Impiccione Viaggiatore &lt;/a&gt; (via della madonna dei monti, 28) alle 8 di sera per un easy dinner seguito da alcuni &lt;a href="http://perl.plover.com/lightning-talks.html"&gt;Lightning Talks&lt;/a&gt;, brevi presentazioni estremamente focalizzate seguite da discussione. &lt;br&gt;&lt;br&gt;Vi aspetteremo nella saletta seminterrata dell'Impiccione, con qualche artefatto rubesquo che vi permetterà sicuramente di riconoscerci :-)&lt;br&gt;&lt;br&gt;&lt;a href="http://riffraff.blogsome.com/"&gt;Gabriele Renzi&lt;/a&gt; ed io abbiamo già dei lightning talk pronti, e speriamo che altri socialiti portino i loro.&amp;nbsp; Chiediamo solo a chi vuole portare un talk (dal vostro ultimo progetto, ad una libreria che vi interessa), di farcelo sapere in anticipo in modo da poterlo includere nel programma per la serata.&amp;nbsp;  &lt;br&gt;&lt;br&gt;Se non portate un talk, portate comunque voi stessi - ditecelo e blocchiamo tavoli e posti.&lt;br&gt;&lt;br&gt;Dimenticavo, il locale è rigorossamente cablato con wifi!&lt;br&gt;&lt;br&gt;A presto!&lt;br&gt;&lt;br&gt;&lt;a href="http://perl.plover.com/lightning-talks.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; &lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="sg"&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt; Chiaroscuro&lt;/a&gt; &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;&lt;/a&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114946106810923143?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114946106810923143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114946106810923143' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114946106810923143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114946106810923143'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/06/ruby-social-club-in-rome-lightning.html' title='Ruby Social Club in Rome &amp; Lightning Talks - Martedì 13 Giugno'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114925269643381534</id><published>2006-06-02T14:51:00.000+02:00</published><updated>2006-06-02T14:51:36.543+02:00</updated><title type='text'>Caccia Grossa: MozLab &amp; Antirez</title><content type='html'>Avevo promesso qualche tempo fa che sarei andato a fare un safari in giro per il web, portando a casa le teste di sviluppatori/imprenditori italiani che si stanno mettendo in gioco sulla rete.&lt;br&gt;&lt;br&gt;Dopo un periodo di pigrizia sono ripartito alla carica e vi porto ben due teste: &lt;br&gt;&lt;br&gt;Il primo è Massimiliano Mirra, che ha da pochissimo rilasciato &lt;a href="http://dev.hyperstruct.net/trac/mozlab"&gt;MozLab&lt;/a&gt; - si tratta di un set di tools che vanno da una sorta di Irb on steroids allo unit test per javascript.&amp;nbsp; Fichissimo se fate extensions per firefox.&amp;nbsp; Mettetela così, dopo aver visto i video di Repl e MozUnit mi è venuta voglia di imparare javascript.&amp;nbsp; Ma stò javascript non doveva assomigliare a java e essere un linguaggio di scripting? Non c'entra proprio nulla! &lt;br&gt;&lt;br&gt;Il secondo è &lt;a href="http://www.invece.org/"&gt;Antirez&lt;/a&gt;, che propone &lt;a href="http://segnalo.com/"&gt;Segnalo&lt;/a&gt;, un fichettissimo Delicious Italiano (ma lo hai scritto da zero???).&amp;nbsp; Interessante, sempre di Antirez, anche  &lt;a href="http://www.invece.org/article/financing.html"&gt;questo articolo&lt;/a&gt; su come finanziare il proprio software :-)&lt;br&gt;&lt;br&gt;Avete altre prede da segnalarmi?&lt;br&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt; Chiaroscuro&lt;/a&gt; &lt;br&gt;&lt;br&gt;  &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114925269643381534?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114925269643381534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114925269643381534' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114925269643381534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114925269643381534'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/06/caccia-grossa-mozlab-antirez.html' title='Caccia Grossa: MozLab &amp; Antirez'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114901171732654244</id><published>2006-05-30T19:55:00.000+02:00</published><updated>2006-05-30T19:55:17.423+02:00</updated><title type='text'>16 Bugs</title><content type='html'>Lo dicevo che si stava dando da fare :-)&lt;br&gt; &lt;br&gt; Interview a &lt;a href="http://www.emilychang.com/go/ehub/interview/16bugs"&gt;Michele Finotto&lt;/a&gt;!&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;Chiaroscuro &lt;br&gt;&lt;br&gt;  &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114901171732654244?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114901171732654244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114901171732654244' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114901171732654244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114901171732654244'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/16-bugs_114901171732654244.html' title='16 Bugs'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114899682368120444</id><published>2006-05-30T15:47:00.000+02:00</published><updated>2006-05-30T15:47:03.916+02:00</updated><title type='text'>16 Bugs</title><content type='html'>Lo dicevo che si stava dando da fare :-)&lt;br&gt; &lt;br&gt; Interview a &lt;a href="http://www.emilychang.com/go/ehub/interview/16bugs"&gt;Michele Finotto&lt;/a&gt;!&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;Chiaroscuro &lt;br&gt;&lt;br&gt;  &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114899682368120444?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114899682368120444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114899682368120444' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114899682368120444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114899682368120444'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/16-bugs_30.html' title='16 Bugs'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114851431599217863</id><published>2006-05-25T01:45:00.000+02:00</published><updated>2006-05-25T01:45:16.046+02:00</updated><title type='text'>Presentazione a Padova</title><content type='html'>E' andata, ci siamo trovati a Padova e abbiamo fatto una presentazione presso il &lt;a href="http://www.jugpadova.it/"&gt;JUG locale&lt;/a&gt; :-)&lt;br clear="all"&gt;&lt;br&gt;&lt;a href="http://ruby-it.org/pages/Ruby@JUGPadova"&gt;Questo&lt;/a&gt; è il resoconto dell'evento. &lt;br&gt;&lt;br&gt;Un grazie sentito a tutti i javisti e ai ragazzi di &lt;a href="http://www.seesaw.it"&gt;SeeSaw&lt;/a&gt; in particolare.&amp;nbsp; Siete forti!&lt;br&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;/a&gt; &lt;br&gt;---&lt;br&gt; Liquid Development: &lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114851431599217863?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114851431599217863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114851431599217863' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114851431599217863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114851431599217863'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/presentazione-padova.html' title='Presentazione a Padova'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114845862186233474</id><published>2006-05-24T10:17:00.000+02:00</published><updated>2006-05-24T10:17:02.526+02:00</updated><title type='text'>Summer of Code: Gabriele on Nitro</title><content type='html'>Leggo dalle &lt;a href="http://riffraff.blogsome.com/2006/05/24/summer-of-code/"&gt;pagine di Gabriele&lt;/a&gt; che ha deciso di partecipare alla Summer of Code ed è stato accettato per lavorare su Nitro, il meno rumoreggiato ma altamente stimato, framework web per Ruby.&amp;nbsp; &lt;br&gt; &lt;br&gt; &lt;a href="http://www.oluyede.org/blog/2006/05/24/ready-to-roll-on-the-summer-of-code/"&gt;Lawrence&lt;/a&gt;, invece, lavorerà su un progetto Python.&lt;br&gt; &lt;br&gt; Conoscete altri talenti di queste latitudini impegnati su progetti software internazionali?&lt;br&gt; &lt;br clear="all"&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114845862186233474?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114845862186233474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114845862186233474' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114845862186233474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114845862186233474'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/summer-of-code-gabriele-on-nitro.html' title='Summer of Code: Gabriele on Nitro'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114785777167822272</id><published>2006-05-17T11:22:00.000+02:00</published><updated>2006-05-17T11:22:51.736+02:00</updated><title type='text'>Management Semantics</title><content type='html'>Una piccola riflessione dall'ufficio.&lt;br&gt; &lt;br&gt; Sono l'unico a notare che &lt;span style="font-weight: bold;"&gt;Management &lt;/span&gt;in italia viene percepito come un sostantivo, un ruolo: &lt;span style="font-weight: bold;"&gt;Manager&lt;/span&gt;&lt;br clear="all"&gt;e che invece ad altre latitudini è visto come un verbo, un lavoro:  &lt;span style="font-weight: bold;"&gt;To Manage&lt;/span&gt; ?&lt;br&gt; &lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;/a&gt; &lt;br&gt;&lt;br&gt; &lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114785777167822272?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114785777167822272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114785777167822272' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114785777167822272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114785777167822272'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/management-semantics.html' title='Management Semantics'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114785386645139348</id><published>2006-05-17T10:17:00.000+02:00</published><updated>2006-05-17T10:17:46.490+02:00</updated><title type='text'>Il libro delle Mutazioni</title><content type='html'>No, non l' I-Ching.&amp;nbsp; Sto parlando ancora di Baricco.&amp;nbsp; &lt;br&gt; &lt;br&gt; Mi piace, mi piace molto questa piega che ha preso.&amp;nbsp; O forse l'ha sempre avuta e sono io a coglierla solo adesso.&lt;br&gt; &lt;br&gt; Questo è un estratto dal &lt;a href="http://www.repubblica.it/2006/05/rubriche/i-barbari/capitolo-tre/capitolo-tre.html"&gt;suo ultimo 'post' su Repubblica&lt;/a&gt;, in cui inizia la sua esplorazione dello zeitgeist, lo spirito dei tempi, in divenire. &lt;br&gt; &lt;br&gt; Non credo di fargli torto riportandolo anche qui:&lt;br&gt; &lt;br&gt; &lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="font-style: italic;" class="text"&gt;lui non cercava mai di capire cos'era il mondo, ma, sempre, cosa stava per diventare il mondo. Voglio dire che ad affascinarlo, nel presente, erano gli indizi delle mutazioni che, quel presente, avrebbero dissolto. Erano le trasformazioni, che lo interessavano: dei momenti in cui il mondo riposava su se stesso non gliene fregava niente. Da Baudelaire alle pubblicità, qualsiasi cosa su cui si chinava diventava la profezia di un mondo a venire, e l'annuncio di una nuova civiltà.&lt;/span&gt;&lt;br style="font-style: italic;"&gt;   &lt;span style="font-style: italic;" class="text"&gt;&lt;/span&gt;&lt;br style="font-style: italic;"&gt;   &lt;span style="font-style: italic;" class="text"&gt;Provo a essere più preciso: per lui capire non significava collocare l'oggetto di studio nella mappa conosciuta del reale, definendo cos'era, ma intuire in cosa, quell'oggetto, avrebbe modificato la mappa, rendendola irriconoscibile. Lo faceva godere studiare l'esatto punto in cui una civiltà trova il punto d'appoggio per ruotare su se stessa e diventare paesaggio nuovo e inimmaginabile. Lo faceva morire descrivere quel movimento titanico che per i più era invisibile, e per lui, invece, così evidente. Fotografava il divenire, e anche per questo le sue foto vennero, per così dire, sempre un po' mosse, e quindi inusabili da istituzioni che davano uno stipendio, e obbiettivamente ostiche per chi le guardava. Era il genio assoluto di un'arte molto particolare, che un tempo si chiamava profezia, e adesso sarebbe più proprio definire come: l'arte di decifrare le mutazioni un attimo prima che avvengano.&lt;/span&gt;&lt;br clear="all"&gt; &lt;/blockquote&gt; &lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;/a&gt; &lt;br&gt;&lt;br&gt;  &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114785386645139348?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114785386645139348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114785386645139348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114785386645139348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114785386645139348'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/il-libro-delle-mutazioni.html' title='Il libro delle Mutazioni'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114771219933739968</id><published>2006-05-15T18:56:00.000+02:00</published><updated>2006-05-15T18:56:50.366+02:00</updated><title type='text'>16 Bugs</title><content type='html'>&lt;a href="http://16bugs.com/"&gt;16 Bugs&lt;/a&gt;, una web app (e un business) di un ragazzo italiano che si sta dando da fare.&lt;br&gt; &lt;br&gt; Complimenti!&lt;br&gt; &lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;/a&gt; &lt;br&gt;&lt;br&gt;  &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114771219933739968?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114771219933739968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114771219933739968' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114771219933739968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114771219933739968'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/16-bugs.html' title='16 Bugs'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114751656907133799</id><published>2006-05-13T12:36:00.000+02:00</published><updated>2006-05-13T12:36:09.123+02:00</updated><title type='text'>La Mutazione</title><content type='html'>Il &lt;a href="http://www.repubblica.it/2006/05/rubriche/i-barbari/capitolo-uno/capitolo-uno.html"&gt;primo installment&lt;/a&gt; del nuovo saggio a puntate di Alessandro Baricco.&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt; Chiaroscuro&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114751656907133799?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114751656907133799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114751656907133799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114751656907133799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114751656907133799'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/la-mutazione.html' title='La Mutazione'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114748250152443950</id><published>2006-05-13T03:08:00.000+02:00</published><updated>2006-05-13T03:08:21.573+02:00</updated><title type='text'>Graady Booch</title><content type='html'>Grady Booch ha annunciato sul suo blog che soffre di problemi di salute e presto dovrà farsi operare.&amp;nbsp; Grady Booch è stato uno dei miei primi eroi del software e ricordo di averlo incontrato a OOPSLA nell'ormai lontano '97.&amp;nbsp; Gli auguro ogni bene di cuore e spero si rimetta presto. &lt;br&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114748250152443950?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114748250152443950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114748250152443950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114748250152443950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114748250152443950'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/graady-booch.html' title='Graady Booch'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114718276579296476</id><published>2006-05-09T15:21:00.000+02:00</published><updated>2006-05-09T15:52:45.806+02:00</updated><title type='text'>Startup senza rischi (o quasi)</title><content type='html'>Questa è il mio primo post su Code Sushi, ringraziando ancora l'amico ChiaroScuro per l'invito vorrei iniziare contribuendo all'argomento Startup prendendo libera ispirazione da &lt;a href="http://business2.blogs.com/business2blog/2006/05/cubicle_startup.html"&gt;questo post&lt;/a&gt; su &lt;a href="http://business2.blogs.com/business2blog/"&gt;Business 2.0 blog&lt;/a&gt;.&lt;br /&gt;L'idea di base è quella di trovare una strada per creare una propria attività senza per questo dover rinunciare al proprio posto di lavoro e quindi ad una sicurezza economica. Come dei pulcini, crescere quel tanto che basta sotto le ali di mamma chioccia per poi spiccare il volo soli soletti...&lt;br /&gt;Vediamo un po' qualche buona regola da seguire per ottenere questo risultato:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Usare il proprio stipendio per autofinanziarsi&lt;/span&gt; il più a lungo possibile piuttosto che affidarsi ad investitori esterni. Meglio qualche sacrificio in più che ci permetta di rimanere indipendenti piuttosto che vendere l'anima al "diavolo" e dovergli rendere conto!&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Convertire i difetti dell'azienda in businessplan&lt;/span&gt;. Ovvero, se nel vostro lavoro quotidiano percepite che l'azienda per cui lavorate non offre un servizio di cui i vostri utenti sentono il bisogno o offre dei prodotti che potrebbero essere migliori, perchè non ispirarsi per creare un buon prodotto? Metà del businessplan sarà già nelle vostre mani!&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Sfruttare la reputazione dell'azienda&lt;/span&gt; come credenziale. Se l'azienda per cui lavorate è molto conosciuta perchè non trarne vantaggio nel momento in cui c'è bisogno di qualche credenziale in più?&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Imparare dai pregi e dai difetti&lt;/span&gt;.  Come dipendenti di un'azienda avete la fortuna di vedere il suo funzionamento dall'interno e quindi di impararne i meccanismi che funzionano e quelli che invece non funzionano, questo vi permetterà di avere giù una certa idea di come far funzionare le cose una volta che dovrete gestire la vostra attività.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Sperimentare!&lt;/span&gt; Molte idee di business nascono sul luogo di lavoro, idee che magari si preferisce tenere per se piuttosto che regalare ad una grande azienda. Ciò non toglie che è sempre possibile usare l'azienda per cui si lavora come un piccolo laboratorio in cui sperimentare le proprie idee per sapere quali potrebbero avere successo.&lt;/li&gt;&lt;/ol&gt;Naturalmente queste regole non prescindono dalla correttezza e dall'attenzione necessarie quando si tratta di "andare contro l'interesse del proprio datore di lavoro", quindi la regola numero uno è quella di &lt;span style="font-weight: bold;"&gt;usare buon senso e correttezza&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114718276579296476?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114718276579296476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114718276579296476' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114718276579296476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114718276579296476'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/startup-senza-rischi-o-quasi.html' title='Startup senza rischi (o quasi)'/><author><name>federico</name><uri>http://www.blogger.com/profile/17159943849630041377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114717592124962516</id><published>2006-05-09T13:36:00.000+02:00</published><updated>2006-05-09T13:58:41.276+02:00</updated><title type='text'>Sarariman</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5227/1600/1600/sarariman.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/5227/1600/200/sarariman.jpg" alt="" border="0" /&gt;&lt;/a&gt;Sarariman, nipponizzazione di Salary Man, è l'uomo salariato. &lt;br /&gt;&lt;br /&gt;Quando pensiamo a quello che potremmo fare e ai rischi che dovremo correre mettiamo sempre sulla bilancia anche la nostra sicurezza di Sarariman.&lt;br /&gt;&lt;br /&gt;Sarariman o Ronin (samurai freelance senza padrone) abbiamo delle entrate più o meno fisse senza le quali sarebbe difficile fare a meno.&lt;br /&gt;&lt;br /&gt;Diciamoci la verità, siamo tutti morbosamente curiosi di sapere qual'è il nostro valore di mercato per poterci misurare e capire cosa vale la pena di fare.. Vediamo se riusciamo a soddisfare questa curiosità.&lt;br /&gt;&lt;br /&gt;Anni fa ad una conferenza Bruce Anderson, padre dei patterns prima della gang of four, organizzò un gioco divertente.   Prese una lastra di polistirolo e sull'asse delle ascisse mise gli anni di esperienza lavorativa e su quello delle ordinate il salario.  Poi diede a tutti delle cannucce con un lato tagliato in modo da rendere facile il poterle infilzare nel polistirolo.&lt;br /&gt;&lt;br /&gt;Al suo via studenti, consulenti e professori si avventarono insieme sulla board di polistirolo, urlando e infilzando a propria cannuccia al punto giusto.  Troppo caos per capire chi avesse infilzato dove.&lt;br /&gt;&lt;br /&gt;Il risultato: uno scatterplot della situazione del mercato.&lt;br /&gt;&lt;br /&gt;Vorrei poter fare lo stesso con una bella applicazioncina, ma non avendo tempo vi propongo di scriverlo anonimamente nei comments.  Tanto siamo su 'blogger', non posso risalire :-)&lt;br /&gt;&lt;br /&gt;Penso che un buon format potrebbe essere questo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[fisso / ultimo variabile / ore lavorate per settimana / sararyman o ronin? / lavoro e settore (finanza,PMI,logistica..) / età&lt;/span&gt;&lt;br /&gt;Per i Ronin fisso e variabile sono una stima di quello che sanno essere comunque certo e delle fluttuazioni attese.&lt;br /&gt;&lt;br /&gt;Se volete aggiungere ulteriori punti allo scatterplot e offuscare ulteriormente le acque potete mettere anche dati di vostri amici e conoscenti.&lt;br /&gt;&lt;br /&gt;Con 10 o più entries prometto un grafico nel prossimo post!  Anche voi lurkers, un commentino please.&lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114717592124962516?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114717592124962516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114717592124962516' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114717592124962516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114717592124962516'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/sarariman.html' title='Sarariman'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114694728556174400</id><published>2006-05-06T22:28:00.000+02:00</published><updated>2006-05-06T22:28:05.730+02:00</updated><title type='text'>Rilasciato Littleboxes v0.1</title><content type='html'>&lt;div style="direction: ltr;"&gt;Ho rilasciato &lt;a href="http://rubyforge.org/projects/rosso/"&gt;Littleboxes su rubyforge&lt;/a&gt;, come sottoprogetto (nonchè per ora unico sottoprogetto) di Rosso.&lt;br&gt;&lt;br&gt;Littleboxes e' una piccolo set di comandi che vi permette di scrivere i vostri oggetti sul foglio Excel aperto in quel momento invece che a console.&amp;nbsp;  &lt;br&gt;&lt;br&gt;Non è una mega libreria per usare excel.&amp;nbsp; &lt;br&gt;&lt;br&gt;Fa solo questo, ma lo fa benino, dandoti anche la possibilità di scrivere in orizzontale o in verticale e di scegliere in che colore scrivere.&lt;br&gt;&lt;br&gt;un esempio piccolo piccolo: &lt;br&gt; &lt;br&gt;&lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="font-family: courier new,monospace; color: rgb(51, 51, 255);"&gt;require '&lt;span style="font-weight: bold;"&gt; rosso/littleboxes&lt;/span&gt;'&lt;/span&gt;&lt;br style="font-family: courier new,monospace; color: rgb(51, 51, 255);"&gt;&lt;br style="font-family: courier new,monospace; color: rgb(51, 51, 255);"&gt;&lt;span style="font-family: courier new,monospace; color: rgb(51, 51, 255);"&gt; ['pippo','pluto','paperino']&lt;/span&gt;&lt;span style="font-family: courier new,monospace; color: rgb(51, 51, 255);"&gt;.&lt;span style="font-weight: bold;"&gt;to_xl&lt;/span&gt; &amp;quot;&lt;span style="font-weight: bold;"&gt;B2&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;br style="font-family: courier new,monospace; color: rgb(51, 51, 255);"&gt; &lt;br style="font-family: courier new,monospace; color: rgb(51, 51, 255);"&gt;&lt;span style="font-family: courier new,monospace; color: rgb(51, 51, 255); font-weight: bold;"&gt;LittleBoxes.paint :green&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: courier new,monospace; color: rgb(51, 51, 255); font-weight: bold;"&gt; &lt;span style="font-family: courier new,monospace; color: rgb(51, 51, 255);"&gt;&lt;span style="font-weight: bold;"&gt;LittleBoxes.horizontally&lt;/span&gt;&amp;nbsp; #write from left to right &lt;/span&gt;&lt;br style="font-family: courier new,monospace; color: rgb(51, 51, 255);"&gt;&lt;br style="font-family: courier new,monospace; color: rgb(51, 51, 255);"&gt;&lt;span style="font-family: courier new,monospace; color: rgb(51, 51, 255);"&gt; { :city =&amp;gt; &amp;quot;Milan&amp;quot;, :country =&amp;gt; &amp;quot;Italy&amp;quot;}.&lt;span style="font-weight: bold;"&gt;to_xl&lt;/span&gt; &amp;quot;&lt;span style="font-weight: bold;"&gt;F10&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;That's it.&amp;nbsp; Mi è però molto utile quando programmo e voglio vedere rapidamente i dati e magari farci sopra anche due calcoli a mano usando excel. &lt;br&gt;&lt;br clear="all"&gt;Download from: &lt;a href="http://rubyforge.org/projects/rosso/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; http://rubyforge.org/projects&lt;a&gt;/rosso/&lt;/a&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;Le istruzioni sono molto semplici: &lt;br&gt;&lt;br&gt;1. unzippate&lt;br&gt;2. prendete il contenuto di rosso-1.0 e mettetelo nel load path di ruby&lt;br&gt;3. andate dentro rosso/samples e lanciate la demo - dovete avere però excel installato.. &lt;br&gt;4. leggete la demo. è veramente banale e vi permetterà di usare littleboxes in 2 minuti netti.&lt;br&gt;&lt;br&gt;fatemi sapere se vi piace e come vi trovate&lt;br&gt;&lt;/div&gt;&lt;div style="direction: ltr;"&gt;&lt;span class="sg"&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt; Chiaroscuro&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;Chiaroscuro &lt;br&gt;---&lt;br&gt;Liquid Development: &lt;a href="http://liquiddevelopment.blogspot.com/"&gt;http://liquiddevelopment.blogspot.com/&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114694728556174400?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114694728556174400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114694728556174400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114694728556174400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114694728556174400'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/rilasciato-littleboxes-v01.html' title='Rilasciato Littleboxes v0.1'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114694530509588432</id><published>2006-05-06T21:55:00.000+02:00</published><updated>2006-05-06T21:55:05.103+02:00</updated><title type='text'>Chiaroscuro Radio</title><content type='html'>Mi ero ripromesso di non farlo.&amp;nbsp; Di non postare foto del mio gatto o di infliggere comunque i miei discutibili gusti sui miei lettori.&lt;br&gt;&lt;br&gt;Eppure alla fine a un pò di protagonismo non ho resistito.. nella sidebar ora trovate un link a Chiaroscuro Radio! &lt;br&gt;&lt;br&gt;I miei gusti musicali sono stati variamente definiti come:&lt;br&gt;&lt;ul&gt;&lt;li&gt;&amp;quot;sembra stiano facendo qualcosa di brutto a un gatto&amp;quot;&lt;/li&gt;&lt;li&gt;&amp;quot;che palle sono tutte uguali&amp;quot;&lt;/li&gt;&lt;li&gt;&amp;quot;ma ti piace 'sta roba?&amp;quot; &lt;br&gt;&lt;/li&gt;&lt;/ul&gt; Chiaroscuro Radio è stata realizzata con &lt;a href="http://www.pandora.com"&gt;Pandora&lt;/a&gt;, un software che impara dai tuoi gusti musicali.&amp;nbsp; Ci ha messo un pò, ma adesso che azzecca quasi tutte canzoni che mi piaciono.&lt;br&gt;&lt;br&gt; -- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114694530509588432?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114694530509588432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114694530509588432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114694530509588432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114694530509588432'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/chiaroscuro-radio.html' title='Chiaroscuro Radio'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114693996183949756</id><published>2006-05-06T20:26:00.000+02:00</published><updated>2006-05-06T20:26:03.146+02:00</updated><title type='text'>Littleboxes nello Spreadsheet</title><content type='html'>Questa sera dovrei fare la prima release di Littleboxes, un micro-linguaggio (API? DSL? boh!) per poter fare debugging da ruby su&lt;br&gt;excel. &amp;nbsp;Oggetti, Struct, Array, String, Hash, etc.. vengono scritti su foglio per poter meglio visualizzare i dati con cui state lavorando. &lt;br&gt;&lt;br&gt;Ci sono feature che vi tornerebbero utili? ho ancora un paio d'ore per lavorarci.&lt;br&gt;&lt;br&gt;Nel frattempo vi lascio con le parole di Littleboxes, mitica canzone di Malvina Reynolds..&lt;br&gt;&lt;br&gt;&lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt; &lt;span style="font-style: italic;"&gt;&amp;quot;Little boxes on the hillside,&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;Little boxes made of ticky tacky&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt; Little &amp;nbsp;boxes on the hillside,&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;Little boxes all the same,&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;There's a green one and &amp;nbsp;a pink one &lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;And a blue one and a yellow one&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;And they're all made out of &amp;nbsp;ticky tacky&lt;/span&gt; &lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;And they all look just the same.&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;br&gt;e no, Malvina non stava parlando delle cellette di Excel ;-)&lt;br&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt; Chiaroscuro&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114693996183949756?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114693996183949756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114693996183949756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114693996183949756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114693996183949756'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/littleboxes-nello-spreadsheet.html' title='Littleboxes nello Spreadsheet'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114687220303465630</id><published>2006-05-06T01:36:00.000+02:00</published><updated>2006-05-06T01:36:43.106+02:00</updated><title type='text'>Nostalgia Cybernetica</title><content type='html'>Questa sera ho ripescato una vecchia storia a fumetti che mi ha toccato molto: &lt;a href="http://www.e-sheep.com/almostguy/"&gt;The Guy I Almost Was&lt;/a&gt; pubblicato sul mitico &lt;a href="http://www.e-sheep.com"&gt;e-sheep&lt;/a&gt; (links ai fumetti in basso a sinistra).&amp;nbsp; E' una storia piena di nostalgia se vi ricordate e avete vissuto la visione futuristica dei primi anni novanta in cui ci si immaginava tutti a galleggiare e comunicare in una realtà virtuale globalmente connessa.&amp;nbsp; Uhm, ripensadoci mi sa che ci avevamo preso :-) &lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;/a&gt; &lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114687220303465630?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114687220303465630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114687220303465630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114687220303465630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114687220303465630'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/nostalgia-cybernetica.html' title='Nostalgia Cybernetica'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114678921907259035</id><published>2006-05-05T02:33:00.000+02:00</published><updated>2006-05-05T02:33:39.080+02:00</updated><title type='text'>Europa e Imprenditoria</title><content type='html'>Un interessante link sull'&lt;a href="http://webreakstuff.com/blog/2006/03/europe-entrepreneurs-and-conversations/"&gt;imprenditoria in Europa&lt;/a&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro &lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114678921907259035?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114678921907259035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114678921907259035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114678921907259035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114678921907259035'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/europa-e-imprenditoria.html' title='Europa e Imprenditoria'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114677488900518832</id><published>2006-05-04T22:34:00.000+02:00</published><updated>2006-05-04T22:34:52.770+02:00</updated><title type='text'>Organizzare la Conoscenza</title><content type='html'>Riguardo il post precedente.&amp;nbsp; Ora ho letto l'articolo.&amp;nbsp; In realtà mi trovo molto d'accordo con quanto dicono.&amp;nbsp; Si tratta della ricerca di un sapere linguistico/epistemologico, altro rispetto al succedersi delle singole tech.  &lt;br&gt;&lt;br&gt;Questo è l'interessante &lt;a href="http://lucarosati.it/download/organizzare-la-conoscenza-indice-intro.pdf"&gt;indice&lt;/a&gt; del loro libro.&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro &lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114677488900518832?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114677488900518832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114677488900518832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114677488900518832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114677488900518832'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/organizzare-la-conoscenza.html' title='Organizzare la Conoscenza'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114677079658371982</id><published>2006-05-04T21:26:00.000+02:00</published><updated>2006-05-04T21:26:36.663+02:00</updated><title type='text'>Conoscenza Eseguibile</title><content type='html'>&lt;a href="http://riffraff.blogsome.com/2006/05/04/organizzare-la-conoscenza/"&gt;Gabriele&lt;/a&gt; cita un'&lt;a href="http://www.ecologiadeisitiweb.net/interviste/organizzare-la-conoscenza-intervista-a-luca-rosati"&gt;intervista&lt;/a&gt; a Luca Rosati: &lt;br&gt;&lt;br&gt;&lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;p&gt;E così mi sono reso conto che ci si trova spesso a "reinventare la ruota",  quando invece discipline mature come la biblioteconomia (ma anche la  psicolinguistica e le neuroscienze) già da molti decenni si sono confrontate con  questi problemi.&lt;/p&gt;&lt;/blockquote&gt;Premetto che non ho letto l'intervista, ma commento sul testo citato.&lt;br&gt;&lt;br&gt;Si sente spesso parlare di come l'informatica sia 'indietro' rispetto ad altre discipline che si sono meglio organizzate.&amp;nbsp; Io non sono d'accordo.&amp;nbsp; Altre discipline organizzano la conoscenza in un certo campo, mentre l'informatica riguarda l'atto stesso di organizzare la conoscenza.&amp;nbsp; Conoscenza eseguibile ma sempre conoscenza. &lt;br&gt;&lt;br&gt;In questo senso l'informatica è una meta-disciplina riflessiva.&amp;nbsp; E' una caratteristica innata dell'informatica il cambiare se stessa, perchè il codice viene usato per parlare di codice e migliorarlo.&amp;nbsp; In questo senso l'informatica è più simile alla letteratura che non all'ingegneria: parla d'altro ma soprattutto parla di se stessa e continuamente si evolve e cambia.&amp;nbsp;  &lt;br&gt;&lt;br&gt;L'informatica cambia con la società, perchè cambia il modo in cui vediamo e organizziamo il sapere, e sarebbe grave se stesse ferma.&lt;br&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;/a&gt;&lt;br&gt; &lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114677079658371982?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114677079658371982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114677079658371982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114677079658371982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114677079658371982'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/conoscenza-eseguibile.html' title='Conoscenza Eseguibile'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114673259336258888</id><published>2006-05-04T10:49:00.000+02:00</published><updated>2006-05-04T10:49:53.420+02:00</updated><title type='text'>Il Giardino del Codice</title><content type='html'>&lt;div&gt;Mi piace pensare al codice come a un luogo pubblico.&amp;nbsp;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;Un luogo pubblico che amiamo. &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;Ogni volta che andiamo a visitarlo buttiamo via una lattina, sistemiamo una zolla d'erba, potiamo un poco una pianta.&amp;nbsp;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;Più gente visita il posto, più questo diventa bello e accogliente per i visitatori.&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;Su Ruby-It stiamo facendo un esercizio di &lt;a href="http://ruby-it.org/pages/Aggregatore+RSS"&gt;refactoring collettivo&lt;/a&gt;.&amp;nbsp; Mi piace lavorare sul codice in gruppo.&amp;nbsp; Mi piace vedere come dei miei contributi possono prendere piacevoli pieghe inaspettate.&amp;nbsp; Mi piace veder fiorire degli spunti e veder collassare bolle di complessità sotto pennellate intelligenti ed espressive. &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;Insieme curiamo questo giardino e dalla forma e dalla disposizione delle piante mi sembra di conoscere meglio chi ci lavora.&lt;/div&gt; &lt;div&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro &lt;/a&gt;&lt;br&gt;&amp;nbsp;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114673259336258888?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114673259336258888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114673259336258888' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114673259336258888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114673259336258888'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/il-giardino-del-codice.html' title='Il Giardino del Codice'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114656402974754224</id><published>2006-05-02T12:00:00.000+02:00</published><updated>2006-05-02T12:00:30.416+02:00</updated><title type='text'>Mamma, se non dura c'è sempre il divorzio</title><content type='html'>&lt;p&gt;Come diceva la vignetta di interno copertina di &lt;span style="font-style: italic;"&gt;Generazione X&lt;/span&gt;:. &amp;quot;Non preoccuparti mamma, se non va bene c'è sempre il divorzio.&amp;quot;&lt;br&gt; &lt;/p&gt;  	 &lt;p&gt;Recentemente, sul blog di &lt;a href="http://riffraff.blogsome.com/2006/04/28/startuppari-fatevi-sentire/"&gt;RiffRaff&lt;/a&gt; si discuteva di startup finite in lacrime con liti tra partner.&lt;br&gt; &lt;/p&gt; &lt;p&gt;Mi interessa capire perchè accade.&lt;/p&gt; &lt;p&gt;Nei casi di cui ho sentito parlare si trattava della mancanza di una vision/mission comune, o di come sgarbugliare un cambiamento di situazionedettato da nuovi eventi. &lt;br&gt; &lt;/p&gt; &lt;p&gt;Ad esempio:&lt;br&gt;&lt;/p&gt; &lt;ul&gt;   &lt;li&gt;uno vuole campare di consulenza, l'altro vuole sfondare con un prodotto. entrambi pensano che l'altro non apporti valore e stia cazzeggiando&lt;br&gt;   &lt;/li&gt;   &lt;li&gt;uno ha in mente di lavorare 8 ore al giorno tranquillo, l'altro vuole sbattersi per ingrandirsi&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;/p&gt;  	 &lt;p&gt;Forse è il caso di mettersi d'accordo fin dall'inizio su alcuni punti fondamentali e forse anche di redigere un contratto formale o informale che comprende anche clausole e modalità di uscita dei soci. &lt;br&gt; &lt;/p&gt; &lt;p&gt;La chiarezza può aiutare ad arbitrare una situazione difficile e evitare litigi tra amici in seguito. &lt;/p&gt; &lt;br clear="all"&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;br&gt; &lt;/a&gt;&lt;br&gt; &lt;br&gt;  &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114656402974754224?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114656402974754224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114656402974754224' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114656402974754224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114656402974754224'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/mamma-se-non-dura-c-sempre-il-divorzio.html' title='Mamma, se non dura c&apos;è sempre il divorzio'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114652310246266260</id><published>2006-05-02T00:38:00.000+02:00</published><updated>2006-05-02T00:38:22.506+02:00</updated><title type='text'>Monetizzare</title><content type='html'>Ho ricevuto questa mail da 37 Signals:&lt;br&gt;&lt;br clear="all"&gt;&lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="font-style: italic;"&gt;INTRODUCING THE JOB BOARD: FIND THE BEST TALENT &lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;For the past few months or so we've been getting close to a dozen&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;emails every week asking us where to find great designers, &lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;programmers, and web-business executives.&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;Here's where: &lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;a style="font-style: italic;" onclick="return top.js.OpenExtLink(window,event,this)" href="http://jobs.37signals.com/" target="_blank"&gt;http://jobs.37signals.com&lt;/a&gt;&lt;br style="font-style: italic;"&gt; &lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;The Job Board is here to connect people and companies who value&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;simplicity, great design, beautiful code, Getting Real, and &lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;usability.&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;Post here to find designers, programmers, or executives who &lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&amp;quot;get it.&amp;quot; Your listing will reach 25,000+ Signal vs. Noise&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;subscribers, some of the best and brightest web minds around. &lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;HOW MUCH AND FOR HOW LONG?&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;Each job post cost $250 and is up on the site for 30 days. &lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;You have 500 characters to make your pitch.&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt; Try it today:&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;a style="font-style: italic;" onclick="return top.js.OpenExtLink(window,event,this)" href="http://jobs.37signals.com/" target="_blank"&gt;http://jobs.37signals.com&lt;/a&gt;&lt;br style="font-style: italic;"&gt; &lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;We hope this helps hook up the best people&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;with the best companies. Good luck to everyone. &lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;/blockquote&gt;&lt;br&gt;in breve quello che fanno, dopo aver costruito una bella comunità attorno al&amp;nbsp; loro blog, è vendere quell'attenzione in modo tagettizzato.&amp;nbsp; Non i soliti&amp;nbsp; adsense un po' randomici, ma danno  l'opportunità ad aziende di fare job posting a pagamento. &lt;br&gt;&lt;br&gt;Io la trovo un'idea magnifica.&amp;nbsp; E' utile ai lettori perchè possono vedere il mercato del lavoro.&amp;nbsp; E' utile alle aziende perchè sanno che i lettori si sono autoselezionati e sono di ottima qualità. E' utile a 37 Signals perchè viene pagata.&amp;nbsp; Triple Win Situation! &lt;br&gt;&lt;br&gt;37Signals gioca anche sul fatto che mentre gli home users sono molto sensibili al prezzo (qualunque prezzo diverso da zero!), le aziende invece ragionano più in termini di tradeoff (mi risolve il problema senza dover perdere un'ora? compralo!). &lt;br&gt;&lt;br&gt;Forse dobbiamo iniziare a pensare a quali sono alcuni di questi tradeoff in cui poterci intrufolare.&lt;br&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;/a&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114652310246266260?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114652310246266260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114652310246266260' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114652310246266260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114652310246266260'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/monetizzare.html' title='Monetizzare'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114651773221689009</id><published>2006-05-01T23:08:00.000+02:00</published><updated>2006-05-01T23:08:52.220+02:00</updated><title type='text'>Cultura o Natura ?</title><content type='html'>In uno scambio di email, &lt;a href="http://www.pixzone.com/blog/"&gt;Federico&lt;/a&gt; mi parla delle sue impressioni della Valle.&amp;nbsp; Non è tanto che sono più bravi di noi - mi dice - quanto il fatto che per loro è naturale pensare in termini di imprenditoria.&amp;nbsp; Un fattore culturale insomma.&amp;nbsp;  &lt;br&gt;&lt;br&gt;E' vero che noi abbiamo grossi problemi 'locali' come la burocrazia e la mancanza finanziamenti, ma secondo Federico il mix è 80/20 in favore della cultura. &lt;br&gt;&lt;br&gt;Io non so se sia veramente un problema di &lt;span style="font-weight: bold;"&gt; cultura&lt;/span&gt; come dice Federico o un problema di &lt;span style="font-weight: bold;"&gt;natura&lt;/span&gt;, ma so che se decidiamo di credere che sia un problema di &lt;span style="font-weight: bold;"&gt;natura &lt;/span&gt;siamo fregati in partenza.&amp;nbsp; Perchè individualmente non possiamo farci niente. &lt;br&gt;&lt;br&gt;Allora pensiamo alla &lt;span style="font-weight: bold;"&gt;cultura &lt;/span&gt;e cerchiamo di capire cosa ci blocchi e superarlo insieme.  &lt;br&gt;&lt;br&gt;Cerchiamo anche di capire se i nostri problemi pratici e le nostre difficoltà sono sistematici dell'industria in generale o specifici del nostro paese in particolare e pensiamo a come si possano eludere. &lt;br&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;/a&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114651773221689009?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114651773221689009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114651773221689009' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114651773221689009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114651773221689009'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/cultura-o-natura.html' title='Cultura o Natura ?'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114645085341480790</id><published>2006-05-01T04:34:00.000+02:00</published><updated>2006-05-01T04:34:13.463+02:00</updated><title type='text'>Rilasciato Intent v0.5</title><content type='html'>Whoa, finito.&amp;nbsp; Ce l'ho fatta &lt;a href="http://rubyforge.org/projects/intent/"&gt;Intent-0.5&lt;/a&gt; è stato rilasciato su rubyforge.&lt;br&gt;&lt;br&gt;Si tratta di un piccolo framework per fare una forma di test driven development che io chiamo  &lt;span style="font-style: italic;"&gt;intent first.&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;br&gt;Ho scritto un 2 minutes tutorial, un 5 minutes tutorials e un draft (temo incompleto) del manuale.&lt;br style="font-style: italic;" clear="all"&gt; &lt;br&gt;Spero di ottenere suggerimenti dalla mailing list di ruby-it, apportare eventuali correzioni e poi annunciarlo su ruby-talk.&lt;br&gt;&lt;br style="font-style: italic;"&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro &lt;/a&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114645085341480790?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114645085341480790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114645085341480790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114645085341480790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114645085341480790'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/05/rilasciato-intent-v05.html' title='Rilasciato Intent v0.5'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114642739085659643</id><published>2006-04-30T22:03:00.000+02:00</published><updated>2006-04-30T22:03:10.860+02:00</updated><title type='text'>Serve Tanto Amore</title><content type='html'>Questa sera mi sono chiuso in casa perchè entro domani mi sono ripromesso (anzi ho proprio promesso sulla mailing list di Ruby-It) che avrei pubblicato &lt;span style="font-weight: bold;"&gt;Intent&lt;/span&gt;, un framework di test-driven development sul quale stò lavorando. &lt;br&gt;&lt;br&gt;E' una faticaccia.&amp;nbsp;&amp;nbsp;Mi piace quello che faccio, ma è una faticaccia.&lt;br&gt;&lt;br&gt;Devi scrivere i tutorial.&amp;nbsp;&amp;nbsp;E devi lavorar duro per renderli brevi e semplici e comprensibili.&amp;nbsp;&amp;nbsp;Un tutorial lungo e verboso lo sanno scrivere tutti. &lt;br&gt;&lt;br&gt;E poi devi fare il packaging di quello che hai fatto.. dargli un look non del tutto amatoriale.&amp;nbsp;&amp;nbsp;Ma qual'è il modo giusto di distribuire in Ruby?&amp;nbsp;&amp;nbsp;Non lo so e lo chiederò in lista e una parte di me vorrebbe attendere finchè non ho tutti i pezzi e tutte le risposte prima di partire e di pubblicare. &lt;br&gt;&lt;br&gt;E poi il codice, argh! il codice!&amp;nbsp;&amp;nbsp;Il framework si offre come un tool concettuale per scrivere codice migliore test-first e il mio codice non ha uno straccio di test e non posso dirmi neppure soddisfatto dello stile.&amp;nbsp;&amp;nbsp;Che fare? Appellarmi al  &lt;a href="http://en.wikipedia.org/wiki/G%25C3%25B6del%2527s_incompleteness_theorems"&gt;teorema di incompletezza di Goedel&lt;/a&gt;?&lt;br&gt;&lt;br&gt;Eppure io questo framework lo uso e mi è utile, ecchecavolo! E quindi lo pubblicherò, e se non piace pazienza. E ogni critica sarà utile feedback, e forse stimolerà altri a fare lo stesso. &lt;br&gt;&lt;br&gt;Diceva &lt;a href="http://aiellogianluca.wordpress.com/"&gt;Gianluca&lt;/a&gt; qualche giorno fa nei comments che bisogna lavorare tanto per fare una startup e io dicevo &amp;quot;ma lavorare è divertente!&amp;quot;.&lt;br&gt;&lt;br&gt;Cazzate :-)  &lt;br&gt;&lt;br&gt;Lavorare e' dura e ci vuole tanto tanto tanto amore per quello che fai.&lt;br&gt;&lt;br&gt;-- &lt;br&gt;&lt;a href="http://liquiddevelopment.blogspot.com"&gt;Chiaroscuro&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114642739085659643?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114642739085659643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114642739085659643' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114642739085659643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114642739085659643'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/04/serve-tanto-amore.html' title='Serve Tanto Amore'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114604225853845003</id><published>2006-04-26T11:04:00.000+02:00</published><updated>2006-04-26T11:22:57.696+02:00</updated><title type='text'>Ruby per Javisti</title><content type='html'>Tra un mesetto dovrò fare una presentazione di circa 40 minuti su Ruby a un gruppo di Javisti (inclusa gente enterprise :-)&lt;br /&gt;&lt;br /&gt;Avete consigli su come presentare Ruby, su cosa mostrar loro? Che taglio e format dare alla presentazione?&lt;br /&gt;&lt;br /&gt;Non ho intenzione di fare il solito &lt;span style="font-style: italic;"&gt;'Ruby è meglio di Java'&lt;/span&gt;, in quanto potrebbe risultare offensivo e controproducente.  Vorrei che dopo la presentazione rimanesse loro la voglia di esplorare nuove cose e di provare ad 'assaggiare' questo strano Ruby..&lt;br /&gt;&lt;br /&gt;Ogni consiglio è benvenuto!&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;&lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Chiaroscuro&lt;/a&gt;&lt;br /&gt;---&lt;br /&gt;Liquid Development: &lt;a href="http://liquiddevelopment.blogspot.com/"&gt;http://liquiddevelopment.blogspot.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114604225853845003?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114604225853845003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114604225853845003' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114604225853845003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114604225853845003'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/04/ruby-per-javisti.html' title='Ruby per Javisti'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114596146986806945</id><published>2006-04-25T12:15:00.000+02:00</published><updated>2006-04-25T12:37:50.993+02:00</updated><title type='text'>Startupping - chi ci ha provato?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5227/1600/1600/garage.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/5227/1600/320/garage.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Non credo che &lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;startupping&lt;/span&gt;&lt;span style="font-family:arial;"&gt; sia una parola in alcuna lingua, ma ci siamo capiti.&lt;/span&gt;    &lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt; Chi di voi ci ha provato?  Che risultati ha ottenuto? e quali sono le lezioni apprese?&lt;/span&gt;    &lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt; Credo che&lt;/span&gt;    &lt;span style="font-family:arial;"&gt;gli ostacoli più importanti alla partenza e a una &lt;span style="font-style: italic;"&gt;iniziale &lt;/span&gt;sopravvivenza siano:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;* L'inerzia indotta dalla apparente complessità del processo &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;* La paura di fallire&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;* Trovare un mercato (e un prodotto/servizio)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/span&gt; &lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;* Riuscire a vendere&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/span&gt;  &lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Sono molto interessato a sentire le storie di chi c'è passato e di chi ci sta provando.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Scrivete a kiaroskuro AT gmail DOT com o lasciate detto nei comments qui sotto.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;PS: la carta qui accanto fa parte del deck dei &lt;a href="http://www.svtarot.com/"&gt;Silicon Valley Tarots&lt;/a&gt; e rappresenta l'archetipo del Garage: &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-style: italic;"&gt;"Storicamente il Garage è il principale motore creativo della Valle. Grandi Idee nascono in umili circondari ad ore improbabili.  La luna sorride agli esploratori liberi dai rigidi vincoli aziendali.  Sebbene possa sembrare che l'umile Garage non abbia una chance contro i pachidermi corporativi e i grandi laboratori della Valle, il mazzo di carte della storia è in suo favore. Il vero lavoro, la vera azione, è sempre stato svolto 'nel garage' da individui patologicamente indipendenti, protesi a forgiare nuovi pensieri.  Tutto quell'azzuffarsi di markettari e avvocati e la turbolenza del NASDAq sono solo la schiuma prodotta dalla grande onda quando il Garage finalmente apre gli occhi sul mondo"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt; -- &lt;/span&gt;  &lt;span style="font-family:arial;"&gt;Chiaroscuro &lt;/span&gt;  &lt;span style="font-family:arial;"&gt;---&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family:arial;"&gt;Liquid Development: http://liquiddevelopment.blogspot.com/&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114596146986806945?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114596146986806945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114596146986806945' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114596146986806945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114596146986806945'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/04/startupping-chi-ci-ha-provato.html' title='Startupping - chi ci ha provato?'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114592178441907203</id><published>2006-04-25T01:36:00.000+02:00</published><updated>2006-04-25T01:36:24.456+02:00</updated><title type='text'>Formazione Imprenditoriale</title><content type='html'>Il &lt;a href="http://82.119.205.78/biclazio/xml/hp.asp?lingua=IT"&gt;Business Innovation Center del Lazio&lt;/a&gt; organizza dei &lt;a href="http://82.119.205.78/biclazio/xml/hp2.asp?IDcanale=111&amp;amp;tema=FORMAZ&amp;amp;lingua=IT&amp;amp;cal=oggi"&gt; corsi di informazione imprenditoriale&lt;/a&gt; a partire da questa settimana.&amp;nbsp; Sono gratuiti m mi dispiace vedere che li tengono durante le giornate lavorative, di fatto tagliando fuori chi già lavora ma vorrebbe &lt;span style="font-style: italic;"&gt;imprendere&lt;/span&gt; :-(&lt;br&gt;&lt;br&gt;-- &lt;br&gt;Chiaroscuro &lt;br&gt;---&lt;br&gt;Liquid Development: &lt;a href="http://liquiddevelopment.blogspot.com/"&gt;http://liquiddevelopment.blogspot.com/ &lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114592178441907203?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114592178441907203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114592178441907203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114592178441907203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114592178441907203'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/04/formazione-imprenditoriale.html' title='Formazione Imprenditoriale'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114500645959288677</id><published>2006-04-14T11:20:00.000+02:00</published><updated>2006-04-14T11:21:00.140+02:00</updated><title type='text'>Smalltalk Party a Cagliari</title><content type='html'>Ho saputo da Giovanni Corriga che sabato primo luglio a Cagliari ci sarà un incontro di Smalltalkers e Agilisti.&lt;br&gt; &lt;br&gt; Bella iniziativa!&lt;br&gt; &lt;br&gt; quoto parte della mail di Giovanni:&lt;br&gt; &lt;br&gt; &lt;blockquote style="font-style: italic; color: rgb(0, 102, 0);"&gt;Stiamo organizzando uno Smalltalk Party a Cagliari per il giorno sabato&lt;br&gt; 1 luglio. Sarà una grande occasione per qualche chiaccherata amichevole,&lt;br&gt; per incontrare altri Smalltalker e per conoscere una spendida parte&lt;br&gt; d'Italia.&lt;br&gt;   &lt;br&gt; Il party si terrà nei locali dell'Università di Cagliari&lt;br&gt; ( &lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.unica.it/" target="_blank"&gt;http://www.unica.it&lt;/a&gt; ) ed è sponsorizzato dall'Agile Group&lt;br&gt; ( &lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://agile.diee.unica.it/" target="_blank"&gt;http://agile.diee.unica.it&lt;/a&gt; ).&lt;br&gt;   &lt;br&gt; Se siete interessati a venire al party, aggiungete il vostro nome allo&lt;br&gt; swiki&lt;br&gt;   &lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://smalltalkit.seasidehosting.st/seaside/pier/SmalltalkParty20060701" target="_blank"&gt;http://smalltalkit.seasidehosting.st/seaside/pier/SmalltalkParty20060701 &lt;/a&gt;, [..]&lt;br&gt;   &lt;br&gt; Il wiki contiene anche delle informazioni turistiche che possono esservi&lt;br&gt; utili.&lt;br clear="all"&gt; &lt;/blockquote&gt; Non so cosa ne pensiate voi, ma tante iniziative di questo tipo possono fare - e faranno - la differenza.&lt;br&gt; &lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114500645959288677?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114500645959288677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114500645959288677' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114500645959288677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114500645959288677'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/04/smalltalk-party-cagliari.html' title='Smalltalk Party a Cagliari'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114500440450512057</id><published>2006-04-14T10:46:00.000+02:00</published><updated>2006-04-14T10:46:44.553+02:00</updated><title type='text'>Come fare un video delle vostre coding sessions</title><content type='html'>Non è attinente direttamente a Ruby ma ho la presunzione che vi possa interessare.&amp;nbsp; Recentemente al lavoro, per riuscire a documentare in modo più agile, ho introdotto l'uso delle registrazioni audio e video del desktop.&amp;nbsp; Con una demo di 5 minuti risparmi ore di documentazione.&lt;br&gt; &lt;br&gt; Dato che fare video sembra anche far parte della cultura Rails vi consiglio il prodotto che ho provato io: &lt;a href="http://www.techsmith.com/camtasia.asp?CMP=KgoogleCS"&gt;Camtasia&lt;/a&gt;, anche se si tratta solo di una evaluation.&amp;nbsp; Se qualcuno ne conoscesse uno free... &lt;br&gt; &lt;br&gt; Inoltre se volete programmare collaborativamente in modo sincrono sulla rete date un'ochiata a &lt;a href="http://moonedit.com/"&gt;moonedit&lt;/a&gt; o gobby.&amp;nbsp; Moonedit ha un'interfaccia antiquata, ma ha questa feature di history replay che vi permette di vedere come il vostro codice cresce si modifica, cambia.&amp;nbsp; Fortissimo.&lt;br&gt; &lt;br&gt; Buona Pasqua a tutti. &lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;Chiaroscuro &lt;br&gt;---&lt;br&gt;Liquid Development: &lt;a href="http://liquiddevelopment.blogspot.com/"&gt;http://liquiddevelopment.blogspot.com/&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114500440450512057?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114500440450512057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114500440450512057' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114500440450512057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114500440450512057'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/04/come-fare-un-video-delle-vostre-coding.html' title='Come fare un video delle vostre coding sessions'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114495991186535103</id><published>2006-04-13T21:30:00.000+02:00</published><updated>2006-04-13T22:25:11.923+02:00</updated><title type='text'>Sabbia negli Ingranaggi</title><content type='html'>Quando si pensa all'opzione di aprire un proprio business, subito dopo un primo entusiasmo si para davanti a noi una via crucis di burocrazia, lungaggini, complicazioni e anche costi non indifferenti.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ma è sempre stato così e in qualche modo accettiamo il fatto che un business è qualcosa che viene fatto da qualcun altro, qualcuno che capisce meglio le leggi, o che ha un partner più anziano e esperto che viene dal corporate o dall'imprenditoria.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In pochi hanno voglia di affrontare un notaio e un avvocato, le carte e i permessi e il commercialista.  In pochi, specialmente se alle prime armi e senza soldi, hanno voglia di girare tra nonne zii amici e cugini a raccogliere il capitale sociale necessario ad aprire un'azienda a responsabilità limitata.&lt;br /&gt;&lt;br /&gt;Altri vanno per una partnership, che spesso si scioglie dolorosamente a causa di divergenze tra i soci, con perdite da ambo le parti.   Chi va in affari senza la protezione di una S.r.l. rimane spesso anche senza difese al primo dissidio legale ed è costretto a piegarsi e spesso a rimetterci del suo.&lt;br /&gt;&lt;br /&gt;Ora però non buttiamoci giù, anche in altri paesi hanno i loro problemi..&lt;br /&gt;&lt;br /&gt;Considerate ad esempio se voleste aprire una Ltd (Limited Trading Company, l'equivalente di una Srl) nel Regno Unito.&lt;br /&gt;&lt;br /&gt;Prima di tutto lì nessuno lo fa da solo, ma dovete cercare un'azienda che lo faccia per voi.&lt;br /&gt;&lt;br /&gt;E inoltre quale scegliere?&lt;br /&gt;&lt;br /&gt;Ad esempio prendereste questa?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5227/1600/1600/company_formation_1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/5227/1600/320/company_formation_1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ma farà veramente tutto bene? E il sito? la carta da lettera?&lt;br /&gt;&lt;br /&gt;Forse è meglio spendere qualcosina in più ma essere sicuri...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5227/1600/1600/company_formation_2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/5227/1600/320/company_formation_2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Trecento -hey dico trecento- sterline però è forse un pò troppo..&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5227/1600/1600/company_formation_3.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/5227/1600/320/company_formation_3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Potremmo anche scegliere un mix di opzioni..&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5227/1600/1600/company_formation_4.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/5227/1600/320/company_formation_4.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Poi è un casino in inghilterra. Devi essere connesso ad internet e sei praticamente obbligato a far tutto al computer.  Potresti anche perderci quasi un'ora, perchè per fare i controlli dei marchi e dei nomi registrati un pò di tempo ci vuole.&lt;br /&gt;&lt;br /&gt;E che cavolo ma allora sai che puoi fare?  Ti compri una Ltd &lt;span style="font-weight: bold;"&gt;prefabbricata&lt;/span&gt;.  E poi più tardi, per un piccolo fee le puoi cambiar nome se ti va.   Che squallore però un'azienda prefabbricata, ma dove stà il gusto, dov'è la sfida?&lt;br /&gt;&lt;br /&gt;Sarà anche vero che mi posso comprare &lt;span style="font-style: italic;"&gt;Newstream Enterprises Limited&lt;/span&gt; con 2 click e carta di credito in 15 minuti, ma vuoi mettere come ti fai le ossa a inseguire notai, avvocati e commercialisti qui nel sud Europa?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5227/1600/1600/company_formation_5.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/5227/1600/320/company_formation_5.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Allora sarà vero che tutto si può fare, ma il dare la possibilità di farlo con semplicità e senza paura abbassa di molto la soglia d'accesso e chi prima poteva avere un ripensamento ora è forse più invogliato a provare. &lt;br /&gt;&lt;br /&gt;E' anche così che sia crea una cultura imprenditoriale.&lt;br /&gt;&lt;br /&gt;Ora, di fronte a questo iniquo confronto potreste anche sentirvi anche un tantino presi in giro dal sistema politico e da quello corporativo dei notai che vi obbligano a vivere in un medioevo commerciale.&lt;br /&gt;&lt;br /&gt;Beh, avreste ragione! :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Ora, chi di voi lettori si può prende la briga di capire cosa dice la legge riguardo all'incorporare un'azienda all'estero per fare business in Italia? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ma poi siamo così sicuri di voler fare business in Italia?  Importa veramente dove stanno i nostri clienti? O forse è possibile inserirsi in un'ecologia puramente digitale e transnazionale? E in quel caso conta veramente avere la propria company registrata presso l'ottocentesco studio del notaio del paesino?&lt;br /&gt;&lt;br /&gt;Questi sono alcuni link misti sull'argomento:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ukincorp.co.uk/s-C2-ready-made-companies.html"&gt;Companies Formation Worldwide&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.formationshouse.com/"&gt;Formations House&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.business-inc.co.uk/limited-company-formation.htm"&gt;Business Inc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.samedaycompany.co.uk/"&gt;Sameday Company&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Statemi bene, io me ne volo a Londra :-D&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114495991186535103?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114495991186535103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114495991186535103' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114495991186535103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114495991186535103'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/04/sabbia-negli-ingranaggi.html' title='Sabbia negli Ingranaggi'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114491979418864878</id><published>2006-04-13T11:16:00.000+02:00</published><updated>2006-04-13T20:26:16.506+02:00</updated><title type='text'>Centri per il Business e l'Innovazione in Italia</title><content type='html'>&lt;a href="http://riffraff.blogsome.com/"&gt;Gabriele&lt;/a&gt;, mi ha indicato il &lt;a href="http://www.biclazio.it/"&gt;sito del Business Innovation Center del Lazio&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Il sito è molto carino e menziona incubatori, angel investors, tutto quanto ci aspetteremmo di trovare in California e a cui non siamo abituati qui in Italia.  Ci sono anche i link ad alcune piccole company già in incubazione.&lt;br /&gt;&lt;br /&gt;A questo punto chiedo informazioni a voi: qualcuno di voi si è mai trovato a interagire con una di queste organizzazioni? qual'è stata la sua esperienza? sono buone o sono un pacco?&lt;br /&gt;&lt;br /&gt;Inoltre, conoscete altre organizzazioni di questo tipo sul territorio? presso università? legate a camere di commercio?&lt;br /&gt;&lt;br /&gt;Questa sera posterò alcune info su come si apre una company nel Regno Unito. &lt;br /&gt;Finito di leggerlo spero vi verrà voglia di linciare un notaio e dar fuoco al parlamento chiedendovi se ci stanno a prendere in giro o cosa..  :-)&lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114491979418864878?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114491979418864878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114491979418864878' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114491979418864878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114491979418864878'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/04/centri-per-il-business-e-linnovazione.html' title='Centri per il Business e l&apos;Innovazione in Italia'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114484123065356580</id><published>2006-04-12T13:27:00.000+02:00</published><updated>2006-04-12T13:27:10.690+02:00</updated><title type='text'>CodeSushi goes Italian</title><content type='html'>Starting from today CodeSushi will be written mainly in Italian, with the purpose of covering what's cool and up and coming on the italian development scene.&lt;br&gt; &lt;br&gt; &amp;gt;&amp;gt;&amp;gt; END OF TRANSMISSION &amp;lt;&amp;lt;&amp;lt;&lt;br&gt; &lt;br clear="all"&gt;A partire da oggi CodeSushi riparte in italiano e si propone come una rubrica che guarda alla scena dello sviluppo nell'intorno dell'Italia.&lt;br&gt; Ci si può chiedere del perchè di questa scelta regionalizzante in un momento in cui tutto -e specialmente il software- tende verso il globale.&lt;br&gt; &lt;br&gt; Il software è scritto da persone e queste persone vivono innanzitutto in una propria realtà locale che inevitabilmente li influenza.&amp;nbsp; Con questo blog voglio scoprire i Movers&amp;amp;Shakers della scena software italiana.&amp;nbsp; Chi sono i nostri giovani talenti?&amp;nbsp; Dove sono le 37Signals italiane?&amp;nbsp; Chi si fa strada sulla scena internazionale e chi spinge avanti la frontiera?&lt;br&gt; &lt;br&gt; Rubyisti, javisti, pythonisti, dotnetters, agilisti, designers e architetti! Conosciamoci, troviamoci e ubriachiamoci di idee insieme.&lt;br&gt; &lt;br&gt; Ci sono tante persone in gamba in questo paese, ma ben poco riconoscimento nei loro confronti e poche opportunità di pensare veramente insieme, pensare in grande in locale e poter dare un vero contributo a livello globale.&lt;br&gt; &lt;br&gt; bene, oggi si comincia&lt;br&gt; &lt;br&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-weight: bold;"&gt;-- &lt;/span&gt;Chiaroscuro &lt;/span&gt;&lt;br&gt; &lt;br&gt;Liquid Development: &lt;a href="http://liquiddevelopment.blogspot.com/"&gt;http://liquiddevelopment.blogspot.com/&lt;/a&gt;&lt;br&gt; &lt;br&gt;  &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114484123065356580?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114484123065356580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114484123065356580' title='42 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114484123065356580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114484123065356580'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/04/codesushi-goes-italian.html' title='CodeSushi goes Italian'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>42</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-114402037046806107</id><published>2006-04-03T01:26:00.000+02:00</published><updated>2006-04-03T01:26:10.473+02:00</updated><title type='text'>Minimal Descriptions and Metaprogramming</title><content type='html'>see &lt;a href="http://liquiddevelopment.blogspot.com/2006/04/minimal-descriptions-and.html"&gt;Minimal Descriptions and Metaprogramming&lt;/a&gt; on the Liquid Development blog&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-114402037046806107?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/114402037046806107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=114402037046806107' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114402037046806107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/114402037046806107'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/04/minimal-descriptions-and.html' title='Minimal Descriptions and Metaprogramming'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-113982145651267892</id><published>2006-02-13T10:02:00.000+01:00</published><updated>2006-02-13T10:04:16.526+01:00</updated><title type='text'>Technology Pushing Design</title><content type='html'>This is the case for &lt;a href="http://blog.hibernate.org/cgi-bin/blosxom.cgi/2005/09/08#genericdao"&gt;Generic DAO pattern with JDK 5.0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-113982145651267892?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/113982145651267892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=113982145651267892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/113982145651267892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/113982145651267892'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/02/technology-pushing-design.html' title='Technology Pushing Design'/><author><name>Framko</name><uri>http://www.blogger.com/profile/07490215121508799448</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-113911127997758936</id><published>2006-02-05T04:47:00.000+01:00</published><updated>2006-02-05T05:15:04.166+01:00</updated><title type='text'>Distilling Intent from Descriptions</title><content type='html'>see the &lt;a href="http://liquiddevelopment.blogspot.com/2006/02/distilling-intent-from-descriptions_05.html"&gt;post &lt;/a&gt;on the Liquid Development Blog&lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-113911127997758936?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/113911127997758936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=113911127997758936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/113911127997758936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/113911127997758936'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2006/02/distilling-intent-from-descriptions.html' title='Distilling Intent from Descriptions'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-113417173796078120</id><published>2005-12-10T00:42:00.000+01:00</published><updated>2005-12-10T00:42:17.966+01:00</updated><title type='text'>Maru Batsu II</title><content type='html'>This is the follow up to the previous Maru Batsu post.&lt;br&gt; In the meantime I have put the &lt;a href="http://rubyforge.org/projects/intent/"&gt;intent project on rubyforge&lt;/a&gt;, and I am working hard to make it generally usable.&lt;br&gt; &lt;br&gt; A few things have changed in the way I define the intents and I believe that I have made the system more complete, gradual to get into, easier to use and more structured that you can see in the Maru Batsu examples.&lt;br&gt; &lt;br&gt; I invite you to follow the progress of the Intent project on &lt;a href="http://liquiddevelopment.blogspot.com/"&gt;Liquid Development&lt;/a&gt;.&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt; &lt;br&gt; &lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;Maru Batsu --- Installment I&lt;span style="font-weight: bold;"&gt;I&lt;br&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;/span&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;In the previous installment I was defining the intents of Maru Batsu, the tic tac toe game.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt; intent_of_setting_up_the_game_properly &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/blockquote&gt; &lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;br&gt;In an intent I simply make statements about the game.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; I also start realizing that lots of setup code gets repeated and I wonder if I should abstract it out.. but I let it there for the time being, until it gets more bulky and I really feel the need to collapse it into an abstraction.&lt;br&gt; &lt;br&gt; I start writing up &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-style: italic;"&gt;intent_of_recognizing_a_winner&lt;/span&gt; but I soon realize that to recognise a winner I will need to check a given board configuration.&amp;nbsp; How would I define that board?&amp;nbsp; I could create an empty board and play out a whole game on it, checking for a winner as I go along move after move, finally finding a winner in the end.&lt;br&gt; &lt;br&gt; This seems to be a bit long winded, especially if i want to represent many winning board configurations.&amp;nbsp; What I need is to define a mid-game state for the tic tac toe game.&amp;nbsp; I opt for the possibility of injecting an externally defined board in the game and be able to start playing from there.&amp;nbsp; This way I will simply have to specify a certain board and check if it there is a winning configuration for a certain player.&lt;br&gt; &lt;br&gt; I think that this is a nice example of how a 'testing' requirement, an intent - as I like to call it - shapes code along &lt;a href="http://www.martinfowler.com/articles/injection.html"&gt;Dependency Injection&lt;/a&gt; patterns.&amp;nbsp; &lt;br&gt;  &lt;br&gt; Injecting a board will also &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;require to either state - or infer - which player's turn it is, check if the board is well-formed, etc..&amp;nbsp;  &lt;br&gt; &lt;br&gt; All of this feels a bit too much for such a small game, so I decide to write out the whole game and later decide if I really need to evolve it there.&amp;nbsp; &lt;br&gt; &lt;br&gt; Do I really need those constraints?&amp;nbsp; Why should I put these constraints if they are already clear and obvious in the mind of the developers that will build on top of Maru Batsu?&amp;nbsp; Do I really need explicit knowledge where convention-based knowledge and reasonable polite behaviour will do?&amp;nbsp; Probably not.&amp;nbsp; I stick with postponing the choice.&lt;br&gt; &lt;br&gt; I start writing up the intent, specifying every single step&lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;/span&gt; &lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(0, 153, 0); font-family: courier new,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;def intent_of_recognizing_a_winner&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0); font-family: courier new,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game = Tictactoe()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0); font-family: courier new,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0); font-family: courier new,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.clean!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0); font-family: courier new,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0); font-family: courier new,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_A_ticks row_(1), col_(1)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0); font-family: courier new,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_B_ticks row_(0), col_(2)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0); font-family: courier new,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_A_ticks row_(1), col_(2)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255);"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;br&gt; As I get here I realize that I am not able to follow the evolution of the state of the board.&amp;nbsp; Maybe I really need a different way after all.&amp;nbsp; Yet I am going to continue until the end and refactor it later.&amp;nbsp; After making all moves I will simply make a statement on the configuration of the board.&amp;nbsp; I do not need it, but&amp;nbsp; it will serve&amp;nbsp; the purpose of communicating better with the readers of the intent. &lt;br&gt; &lt;br&gt; I think this is a good case of &lt;span style="font-weight: bold;"&gt;breaking the symmetry&lt;/span&gt; - in theory you don't need it because it's superfluous, but adding it makes things somehow easier on the eye.&lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;/span&gt; &lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt; def intent_of_recognizing_a_winner&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game = Tictactoe()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.clean!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_A_ticks row_(1), col_(1)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_B_ticks row_(0), col_(2)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_A_ticks row_(1), col_(2)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_B_ticks row_(0), col_(2)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_A_ticks row_(1), col_(2)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_B_ticks row_(1), col_(0)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_A_ticks row_(0), col_(0)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_B_ticks row_(2), col_(2)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_A_ticks row_(0), col_(1)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_B_ticks row_(2), col_(1)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.state.should_be TictactoeBoard(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;O&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;O&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;&amp;quot;, &amp;quot;O&amp;quot;,&amp;quot;O&amp;quot;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_game_complete?.should_be false&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_there_a_winner?.should_be false&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_A_ticks row_(2), col_(0)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.state.should_be TictactoeBoard(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;X&amp;quot;, &amp;quot;X&amp;quot;,&amp;quot;O&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;O&amp;quot;, &amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;X&amp;quot;, &amp;quot;O&amp;quot;,&amp;quot;O&amp;quot;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_game_complete?.should_be true&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_there_a_winner?.should_be false&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; It works and it shows a whole game, but there are several things I feel uneasy about.&amp;nbsp; For a start this looks more like a use case than an intent, a simple statement about the game.&amp;nbsp; I also feel uneasy about &lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;/span&gt; &lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(0, 153, 0); font-family: courier new,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_game_complete?.should_be true&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0); font-family: courier new,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_there_a_winner?.should_be false&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255);"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; I feel there is some redundant information there, but I cannot put my finger on it yet.&amp;nbsp; Since I am not sure on the illness, I also don't feel sure about the cure.&amp;nbsp; I believe that most of the times in development &lt;span style="font-weight: bold;"&gt;there aren't any lost opportunities&lt;/span&gt;.&amp;nbsp; If it's ugly, if it is a problem, if it gave me discomfort now, it will sick out later as well and at that point I might have some more information to deal with it.&lt;br&gt; &lt;br&gt; I also notice that with those two statements I have described what a &lt;span style="font-style: italic;"&gt;draw &lt;/span&gt;is, but I haven't played out any winning scenarios yet.&lt;br&gt; &lt;br&gt; I think a little about copying and pasting this intent and making the modifications needed to define a winning board.&amp;nbsp; I am also thinking about creating a subroutine that takes the game through a number of moves so that I can recreate the game state on demand and then apply the extra moves and my statements of intent.&lt;br&gt; &lt;br&gt; I am definetly not satisfied.&amp;nbsp; The board injection solution becomes more and more attractive.&amp;nbsp; I go for it.&amp;nbsp; I don't write the code, I just state that &lt;span style="font-style: italic;"&gt;I should be able &lt;/span&gt;to set a board.&amp;nbsp; I replace the first part of the intent with the following&lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;/span&gt; &lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt; def intent_of_recognizing_a_winner&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game = Tictactoe()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.clean!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.set_board TictactoeBoard(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;O&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;O&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;&amp;quot;, &amp;quot;O&amp;quot;,&amp;quot;O&amp;quot;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.state.should_be TictactoeBoard(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;O&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;O&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;&amp;quot;, &amp;quot;O&amp;quot;,&amp;quot;O&amp;quot;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;...&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; This is much much easier on the eye, and it doesn't force me to painstakingly specify every move from the beginning.&amp;nbsp; Of course, I could put a wrong board there, and I am not checking if the board is well formed (number of noughts equal to number of crosses minus one, not more than one winning configuration with no common cell, etc..).&amp;nbsp; I decide to not care.&amp;nbsp; I am writing the intents, and I am not going to state impossible configurations.&lt;br&gt; &lt;br&gt; However it seems a bit verbose and redundant to keep stating that my board is &lt;span style="font-style: italic;"&gt;indeed &lt;/span&gt;the board that I have injected.&amp;nbsp; I should create a further intent to check that board.set_up is working correctly.&amp;nbsp; After having stated that intent in one place I will remove the extra &lt;span style="font-style: italic;"&gt;should bes&lt;/span&gt; in the code, confident that this fresh intent will catch any misbehaving code.&amp;nbsp; Nice, but once again I'll do it later when I really need it.&lt;br&gt; &lt;br&gt; I clone the intent into a number of sibling intents to check different board configurations.&lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;/span&gt; &lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt; def intent_of_setting_up_the_game_in_the_middle&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game = Tictactoe()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mid_game_board = TictactoeBoard(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;O&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;O&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;&amp;quot;, &amp;quot;O&amp;quot;,&amp;quot;O&amp;quot;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.set_board mid_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.state.should_be mid_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect true, game.player_A_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect false, game.player_B_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_there_a_winner?.should_be false&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_game_complete?.should_be false&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; The use of a variable to avoid the repetition of the board definition makes the code clearer, while still stating that I should get what I have set.&lt;br&gt; &lt;br&gt; There are a few stylistic points that annoy me.&amp;nbsp; For example, I see&lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;/span&gt; &lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: courier new,monospace; color: rgb(51, 51, 255);"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; game.set_board mid_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: courier new,monospace; color: rgb(51, 51, 255);"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; and I realize it is more legible as&lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;/span&gt; &lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; game.set_board_to mid_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; This way you can actually &lt;span style="font-weight: bold;"&gt;read it out aloud&lt;/span&gt;.&lt;br&gt; &lt;br&gt; I also don't like this form much:&lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;/span&gt; &lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(0, 153, 0); font-family: courier new,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_player_A_the_winner?.should_be false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255);"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; I have two methods, one for player_A and one for player_B that are doing essentially the same thing.&amp;nbsp; I would prefer something like:&lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;/span&gt; &lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; game.winner?.should_be game.player_A&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.winner?.should_be game.player_B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.winner?.should_be nil&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; these are more notes for further refactoring.&amp;nbsp; The code looks quite clean, but I already have quite a backlog of candidates for refactoring.&lt;br&gt; &lt;br&gt; In the meantime I have added several intents.&amp;nbsp; This is a bit long winded.&amp;nbsp; Be patient and skim over them.&amp;nbsp; If you cannot skim over them while getting a sense of what they are stating, then I have done something wrong and I have not been &lt;a href="http://liquiddevelopment.blogspot.com/2005/11/shape-code-after-language.html"&gt;&lt;span style="font-weight: bold;"&gt;shaping code after language&lt;/span&gt;&lt;/a&gt;.&lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;/span&gt; &lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt; def &lt;span style="font-weight: bold;"&gt;intent_of_setting_up_the_game_properly&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game = Tictactoe()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_A_symbol.should_be &amp;quot;X&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.player_B_symbol.should_be &amp;quot;O&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.clean!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.state.should_be TictactoeBoard(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect true, game.player_A_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect false, game.player_B_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_there_a_winner?.should_be false&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_game_complete?.should_be false&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;def &lt;span style="font-weight: bold;"&gt;intent_of_setting_up_the_game_in_the_beginning_1 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game = Tictactoe()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mid_game_board = TictactoeBoard(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot; ],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;X&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot; ]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.set_board_to mid_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.state.should_be mid_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect false, game.player_A_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect true, game.player_B_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_game_complete?.should_be false&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_there_a_winner?.should_be false&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_player_A_the_winner?.should_be false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_player_B_the_winner?.should_be false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;def &lt;span style="font-weight: bold;"&gt;intent_of_setting_up_the_game_in_the_middle_1 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game = Tictactoe()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mid_game_board = TictactoeBoard(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;O&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;O&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;&amp;quot;, &amp;quot;O&amp;quot;,&amp;quot;O&amp;quot;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.set_board_to mid_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.state.should_be mid_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect true, game.player_A_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect false, game.player_B_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_game_complete?.should_be false&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_there_a_winner?.should_be false&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_player_A_the_winner?.should_be false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_player_B_the_winner?.should_be false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;def &lt;span style="font-weight: bold;"&gt;intent_of_setting_up_the_game_in_the_middle_2 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game = Tictactoe()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mid_game_board = TictactoeBoard(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;O&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;O&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;O&amp;quot;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.set_board_to mid_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.state.should_be mid_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect false, game.player_A_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect true, game.player_B_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_game_complete?.should_be false&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_there_a_winner?.should_be false&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_player_A_the_winner?.should_be false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_player_B_the_winner?.should_be false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;def &lt;span style="font-weight: bold;"&gt;intent_of_setting_up_the_game_in_the_end_with_a_draw &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game = Tictactoe()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end_game_board = TictactoeBoard(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;O&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;O&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;X&amp;quot;,&amp;quot;O&amp;quot;,&amp;quot;O&amp;quot;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.set_board_to end_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.state.should_be end_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect false, game.player_A_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect false, game.player_B_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_game_complete?.should_be true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_there_a_winner?.should_be false&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_player_A_the_winner?.should_be false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_player_B_the_winner?.should_be false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;def &lt;span style="font-weight: bold;"&gt;intent_of_setting_up_the_game_in_the_end_with_player_A_winning &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game = Tictactoe()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end_game_board = TictactoeBoard(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;O&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;O&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;X&amp;quot;],&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;quot;O&amp;quot;,&amp;quot;X&amp;quot;,&amp;quot;O&amp;quot;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.set_board_to end_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.state.should_be end_game_board&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect false, game.player_A_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expect false, game.player_B_turn?&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_game_complete?.should_be true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_there_a_winner?.should_be true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_player_A_the_winner?.should_be true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; game.is_player_B_the_winner?.should_be false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new,monospace;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; wow! done it.&amp;nbsp; Thanks for keeping up until here.&amp;nbsp; &lt;br&gt; &lt;br&gt; The intents are not &lt;span style="font-style: italic;"&gt;too&lt;/span&gt; bad, but there is much more that can be done, even if it might not be clear at this stage yet.&lt;br&gt; &lt;br&gt; Also notice how much knowledge we have produced about the game, without writing a single executable statement yet.&amp;nbsp; Are we coding or are we doing analysis?&amp;nbsp; Are we analysing or are we writing up specifications?&amp;nbsp; Are these specifications or are they explorations?&lt;br&gt; &lt;br&gt; The common language of development starts breaking down and becoming irrelevant as we continue along our journey.&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br&gt; &lt;/span&gt;&lt;/span&gt; &lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-113417173796078120?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/113417173796078120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=113417173796078120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/113417173796078120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/113417173796078120'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2005/12/maru-batsu-ii.html' title='Maru Batsu II'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-113243898814529174</id><published>2005-11-19T23:23:00.000+01:00</published><updated>2005-11-27T04:22:44.136+01:00</updated><title type='text'>Maru Batsu</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ga-ada.co.jp/japanese/ga_a5/img/a5_marubatsu2.jpg"&gt;&lt;img style="margin: 10pt 10pt 10px 10px; float: left; cursor: pointer; width: 100px;" src="http://www.ga-ada.co.jp/japanese/ga_a5/img/a5_marubatsu2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I will try a small exercise to explore the growth and evolution of code, as it tries to follow my intent. I will also pay attention to what the code is trying to tell me, and I will respond to it as I go along.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I will also try to play by the rules of a specific &lt;span style="font-style: italic;"&gt;Format&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-style: italic;"&gt;   &lt;li&gt;Specify basic high level intent.&lt;/li&gt;   &lt;li&gt;Write readable statements that specify that intent in terms of lower level intents.&lt;/li&gt;   &lt;li&gt;Reality Check.&lt;/li&gt;   &lt;li&gt;Simplify those statements.&lt;/li&gt;   &lt;li&gt;Reality Check.&lt;/li&gt;   &lt;li&gt;Look for repetitions and abstract to higher level intent.&lt;/li&gt;   &lt;li&gt;Reality Check.&lt;/li&gt;   &lt;li&gt;Repeat this process.&lt;br /&gt;&lt;/li&gt;  &lt;/ul&gt; &lt;div style="text-align: justify;"&gt;When I say &lt;span style="font-weight: bold;"&gt;intent&lt;/span&gt;, I refer to the intended purpose of the code. Intent should come before code and it answers the question: "what is this code going to do?". As intent gets stated more in detail, in terms of sub-intents, it also answers the questions: "how do I know that it has been done? what am I expecting out of it?"&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;Reality Checks&lt;/span&gt; are a way to ensure that all our intents still hold. When a reality check fails, it means that the meaning of our code, its conceptual consistency, somehow broke down, violating one or more of the original intents. Ideally intents are written in such a way that a failing reality check immediately pinpoints the broken intent.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;When I talk about &lt;span style="font-weight: bold;"&gt;statements&lt;/span&gt; I am almost always talking about code written in such a way that it expresses directly its intention, without forcing us to dry run it in our head to simulate it and uncover its purpose.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;You should also watch out for repetition in your code. Conceptual repetitions obfuscate meaning, showing a large variety of concepts and relationships, where only a few clearly stated concepts would suffice. Many repetitions can usually be abstracted by a single intent that can express all of them in a simpler statement.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The purpose of the exercise is to develop a small tic tac toe game, the Maru Batsu from the title.&lt;br /&gt;&lt;br /&gt;Let's start.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;Maru Batsu --- Installment I&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I wonder.. how do I express the intents of user interaction?  Or should I start expressing the intents of a lower level?&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;How do I express the user input? Will I make my intents dependent on the mode of user input? Click this button, write this text, etc.. ?&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This difficulty pushes me to look for a more concise way of specifying behaviour, independently from the input mode. What I do is to specify the intent of the interaction.. giving a summary description: user_A_moves_to x,y&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;game = Tictactoe()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;game.player_A_symbol.should_be "X"          &lt;/span&gt;   &lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;game.player_B_symbol.should_be "O"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;game.clean!&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;game.state.should_be&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;TictactoeBoard(&lt;/span&gt;   &lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;&lt;br /&gt;&lt;/span&gt; &lt;div style="text-align: left;"&gt;&lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;                            ["","",""],&lt;/span&gt;&lt;br /&gt;                                                                 &lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;["","",""],&lt;/span&gt;&lt;br /&gt;                                                                 &lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;["","",""]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;                                                     &lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;)&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;&lt;br /&gt;game.player_A_ticks row_(1), col_(1)&lt;/span&gt;   &lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;&lt;br /&gt;game.state.should_be &lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;&lt;br /&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;TictactoeBoard(&lt;/span&gt;   &lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;&lt;br /&gt;&lt;/span&gt; &lt;div style="text-align: left;"&gt;&lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;                            ["","", ""],&lt;/span&gt;&lt;br /&gt;                                                                 &lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;["","X",""],&lt;/span&gt;&lt;br /&gt;                                                                 &lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;["","", ""]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;                                                     &lt;span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;)&lt;/span&gt;&lt;/blockquote&gt;    &lt;/div&gt;and on and on I continue until the end of the game.&lt;br /&gt;&lt;br /&gt;I notice that the shape of my intent already implies an architecture:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Pure Game layer&lt;/li&gt;   &lt;li&gt;Interaction layer&lt;/li&gt; &lt;/ul&gt; The interaction layer lays outside my intent, whereas the intent specifies the 'pure game' layer.&lt;br /&gt;&lt;br /&gt;I also wonder if I should split the pure game layer into some concepts that seem to emerge from the intents:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;an abstract/pure interaction layer&lt;/li&gt;   &lt;li&gt;a game engine layer&lt;/li&gt;   &lt;li&gt;a game board layer.&lt;/li&gt; &lt;/ul&gt; However, I do not feel the need to do this yet, even if the game board starts emerging due to the need to declare what kind of board position I am expecting. I trust that if this intuition was valid it will emerge again, so I don't even make a note of this.&lt;br /&gt;&lt;br /&gt;What about the game ending? I will check if there is a winner at different stages using:&lt;br /&gt;&lt;blockquote style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 255);"&gt;&lt;span style="font-family:courier new,monospace;"&gt;game.is_there_a_winner?.should_be true&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new,monospace;"&gt;game.is_there_a_winner?.should_be false&lt;/span&gt;  &lt;/blockquote&gt; shall I check after every move? or only at the end of the game?&lt;br /&gt;&lt;br /&gt;I am now checking after every move, but I start feeling that I am stating too many things at the same time.&lt;br /&gt;&lt;br /&gt;I feel I should do more aimed scenarios, where I reason about different aspects of the game.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Yet, I continue, and I realize that I should also state that there are situations where illegal moves should be hadled, since there is nothing in the pure game layer, in its syntax that stops me from doing overlapping moves or having a player moving twice in a row.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I start adding statements like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;expect_exception WrongPlayerException {&lt;br /&gt;&lt;/span&gt;      &lt;span style="color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;game.player_A_ticks row_(1), col_(1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;}&lt;/span&gt;   &lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;expect_exception PositionOccupiedException {&lt;/span&gt;    &lt;span style="color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;&lt;br /&gt;game.player_B_ticks row_(1), col_(1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;ok, I feel this is a bit too much for a single intent and I start reorganizing everything into more aimed scenarios.&lt;br /&gt;&lt;br /&gt;As I am building the scenarios I try to not say things in more than one scenario, I try to imagine one scenario as a precondition for the following statements. I trust the previous intents, so I don't have to keep restating what I had stated there already.&lt;br /&gt;&lt;br /&gt;I also get the titles of a few intents and I put them in order, as a small statement of intents, as if I were explaining the game to someone. And new intents come to my mind as I do that.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;def all_intents&lt;/span&gt;&lt;br /&gt;&lt;blockquote  style="color: rgb(51, 51, 255);font-family:courier new;"&gt;intent_of_setting_up_the_game_properly&lt;br /&gt;intent_of_ticking_cells&lt;br /&gt;intent_of_recognizing_a_winner&lt;br /&gt;&lt;font&gt;&lt;span style="font-family:courier new,monospace;"&gt;intent_of_spotting_moves_to&lt;wbr&gt;_occupied_cells &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new,monospace;"&gt;&lt;/span&gt;&lt;font&gt; &lt;span style="font-family:courier new,monospace;"&gt;intent_of_spotting_moves&lt;wbr&gt;_outside_the_board &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new,monospace;"&gt;&lt;/span&gt;&lt;font&gt;&lt;span style="font-family:courier new,monospace;"&gt;  intent_of_spotting_when_moving&lt;wbr&gt;_twice&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;br /&gt;&lt;br /&gt;I have also renamed some intents from names like:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;intent_of_checking_the_game_is_setup_properly &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;br /&gt;later changing them to:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new,monospace;" &gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;intent_of_setting_up_the_game_properly &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;br /&gt;where I do not mention checks or other actions external to the game, but I simply state whatever I want to do within the uniiverse of discourse of the game.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-113243898814529174?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/113243898814529174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=113243898814529174' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/113243898814529174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/113243898814529174'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2005/11/maru-batsu.html' title='Maru Batsu'/><author><name>kia</name><uri>http://www.blogger.com/profile/05750239458663051981</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18625282.post-113111227086528781</id><published>2005-11-04T10:49:00.000+01:00</published><updated>2005-11-11T10:06:19.660+01:00</updated><title type='text'>Toromaki</title><content type='html'>&lt;b&gt;Toromaki 1&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;package org.codesushi;&lt;br /&gt;&lt;br /&gt;import java.lang.reflect.*;&lt;br /&gt;import java.util.Arrays;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @author codesushi&lt;br /&gt;*/&lt;br /&gt;public class SushiDebugProxy implements InvocationHandler {&lt;br /&gt;&lt;br /&gt; private Object obj;&lt;br /&gt;&lt;br /&gt; public static Object newInstance(Object obj) {&lt;br /&gt;  return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), new SushiDebugProxy(obj));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private SushiDebugProxy(Object obj) {&lt;br /&gt;  this.obj = obj;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {&lt;br /&gt;  Object result;&lt;br /&gt;  try {&lt;br /&gt;   System.out.println("before method " + m.getName() + "(" + Arrays.asList(args) + ")");&lt;br /&gt;   result = m.invoke(obj, args);&lt;br /&gt;&lt;br /&gt;  } catch (InvocationTargetException e) {&lt;br /&gt;   throw e.getTargetException();&lt;br /&gt;&lt;br /&gt;  } catch (Exception e) {&lt;br /&gt;   throw new RuntimeException("unexpected invocation exception: " + e.getMessage());&lt;br /&gt;&lt;br /&gt;  } finally {&lt;br /&gt;   System.out.println("after method " + m.getName() + "(" + Arrays.asList(args) + ")");&lt;br /&gt;  }&lt;br /&gt;  return result;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;
            CodeSushi
-- Covering The Italian Scene --
&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18625282-113111227086528781?l=codesushi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codesushi.blogspot.com/feeds/113111227086528781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18625282&amp;postID=113111227086528781' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/113111227086528781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18625282/posts/default/113111227086528781'/><link rel='alternate' type='text/html' href='http://codesushi.blogspot.com/2005/11/toromaki.html' title='Toromaki'/><author><name>Framko</name><uri>http://www.blogger.com/profile/07490215121508799448</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
