<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>StrangeLog - Il blog di Andrea Saltarello</title>
        <link>http://blogs.ugidotnet.org/pape/Default.aspx</link>
        <description>Life in the so-called space age</description>
        <language>it-IT</language>
        <copyright>Andrea Saltarello</copyright>
        <managingEditor>andysal@gmail.com</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <image>
            <title>StrangeLog - Il blog di Andrea Saltarello</title>
            <url>http://blogs.ugidotnet.org/images/RSS2Image.gif</url>
            <link>http://blogs.ugidotnet.org/pape/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/strangelog" type="application/rss+xml" /><item>
            <title>BSOD explained</title>
            <link>http://feeds.feedburner.com/~r/strangelog/~3/376285432/bsod.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://nonciclopedia.wikia.com/wiki/Schermo_Blu_della_Morte" target="_blank"&gt;ROTFL&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/pape/aggbug/93838.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/strangelog/~4/376285432" height="1" width="1"/&gt;</description>
            <dc:creator>Andrea Saltarello</dc:creator>
            <guid isPermaLink="false">http://blogs.ugidotnet.org/pape/archive/2008/08/27/bsod.aspx</guid>
            <pubDate>Wed, 27 Aug 2008 15:36:34 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/pape/comments/93838.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/pape/archive/2008/08/27/bsod.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/pape/comments/commentRss/93838.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/pape/services/trackbacks/93838.aspx</trackback:ping>
        <feedburner:origLink>http://blogs.ugidotnet.org/pape/archive/2008/08/27/bsod.aspx</feedburner:origLink></item>
        <item>
            <title>Beyond Persistence Ignorance: *real* POCO</title>
            <category>.NET</category>
            <category>SW Architecture</category>
            <link>http://feeds.feedburner.com/~r/strangelog/~3/349334601/beyond-persistence-ignorance-real-poco.aspx</link>
            <description>&lt;p&gt;Negli ultimi mesi, complice anche la querelle "PI or not" portata alla luce da "vorrei ma non posso (ancora)" Entity Framework, ho ulteriormente riflettuto sul valore di un Domain Model agnostico alla persistenza ed ho concluso che PI non basta. Quello che "voglio" è un DM agnostico alla infrastruttura: non voglio PI, non mi basta. Voglio POCO, ma sembra che sia... Troppo &amp;lt;g&amp;gt; (interessante gioco di parole)&lt;/p&gt;  &lt;p&gt;Detta "seriamente", vorrei poter modellare un DM concentrandomi sulla soddisfazione dei requisiti "business" (DDD anyone?), ed avere uno stack tecnologico in grado di "appiccicare" in qualche modo il codice necessario alla infrastruttura. Tanto per fare un esempio pratico, vorrei poter evitare di *sporcare* il mio DM implementando &lt;strong&gt;INotifyPropertyChanged&lt;/strong&gt; "solo" perchè così alcuni scenari diventano + comodi da implementare. Un approccio già praticabile sarebbe quello basato sulla generazione dinamica dei proxy unita all'uso dei mixin (a proposito, perchè MS non ne parla più?). Per intenderci, con &lt;strong&gt;Castle.DinamicProxy2&lt;/strong&gt; si potrebbe impostare così:&lt;/p&gt;  &lt;p&gt;ProxyGenerator gen = new ProxyGenerator();    &lt;br /&gt;ProxyGenerationOptions options = new ProxyGenerationOptions();     &lt;br /&gt;options.AddMixinInstance((INotifyPropertyChanged) new INotifyPropertyChangedImplementation()); &lt;/p&gt;  &lt;p&gt;Product proxy = (Product)gen.CreateClassProxy(typeof(Product), new Type[] {typeof(INotifyPropertyChanged)}, options, new InvokeInterceptor());    &lt;br /&gt;return proxy;&lt;/p&gt;  &lt;p&gt;In questo scenario, &lt;strong&gt;INotifyPropertyChangedImplementation&lt;/strong&gt; potrebbe usare una hashtable/dictionary per implementare una strategia genericamente valida. Una implementazione di questo tipo, pur soffrendo dell'overhead necessario alla generazione dei proxy, sarebbe sufficiente nella maggior parte dei casi. Un'altra opzione che sto indagando si basa invece sulla code generation a compile time: probabilmente basterebbe una "custom action" per msbuild, e se fossi MS indagherei seriamente in tal senso. &lt;/p&gt;  &lt;p&gt;Ciò di cui sono sicuro è che l'esigenza di un DM "infrastructre agnostic" sia fondamentale: su Linq 2 SQL pende una spada di Damocle e Entity Framework è, negli interessi di MS, il perno della propria strategia MDD. Già sappiamo che le entità gestite da EF saranno recepite (per esempio) dai Reporting Services di SQL Server, quindi è importante evitare sin da subito di avere un DM all'interno del quale ogni framework/sottosistema infili il proprio "ciarpame": il DM è "business", e tale dovrebbe rimanere.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9d34c975-7976-451c-a1f2-891dec9b3af8" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/entity%20framework" rel="tag"&gt;entity framework&lt;/a&gt;,&lt;a href="http://technorati.com/tags/linq%202%20sql" rel="tag"&gt;linq 2 sql&lt;/a&gt;,&lt;a href="http://technorati.com/tags/PI" rel="tag"&gt;PI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/POCO" rel="tag"&gt;POCO&lt;/a&gt;,&lt;a href="http://technorati.com/tags/software%20architecture" rel="tag"&gt;software architecture&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/pape/aggbug/93560.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/strangelog/~4/349334601" height="1" width="1"/&gt;</description>
            <dc:creator>Andrea Saltarello</dc:creator>
            <guid isPermaLink="false">http://blogs.ugidotnet.org/pape/archive/2008/07/29/beyond-persistence-ignorance-real-poco.aspx</guid>
            <pubDate>Tue, 29 Jul 2008 10:48:03 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/pape/comments/93560.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/pape/archive/2008/07/29/beyond-persistence-ignorance-real-poco.aspx#feedback</comments>
            <slash:comments>13</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/pape/comments/commentRss/93560.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/pape/services/trackbacks/93560.aspx</trackback:ping>
        <feedburner:origLink>http://blogs.ugidotnet.org/pape/archive/2008/07/29/beyond-persistence-ignorance-real-poco.aspx</feedburner:origLink></item>
        <item>
            <title>Tempo alle tue parole</title>
            <category>IndieLifestyle</category>
            <link>http://feeds.feedburner.com/~r/strangelog/~3/345503437/tempo-per-le-tue-parole.aspx</link>
            <description>&lt;p&gt;Premessa: questo post è esplicitamente diretto ad un "pubblico" dark e/o indie: astenersi perditempo e &lt;em&gt;alternativi&lt;/em&gt; :-)&lt;/p&gt;  &lt;p&gt;Loro sono i modenesi &lt;a href="http://www.fataweb.org"&gt;FATA&lt;/a&gt; ed hanno pubblicato un &lt;a href="http://www.youtube.com/watch?v=5IuGecWAh0k" target="_blank"&gt;singolo d'esordio&lt;/a&gt; che è troppo bello per essere vero, solo che poi li &lt;em&gt;&lt;a href="http://www.youtube.com/watch?v=Hpu6glbrCOo&amp;amp;feature=related" target="_blank"&gt;ascolti live&lt;/a&gt;&lt;/em&gt; e capisci che è.... "Davvero vero". Una "sindrome da primo ascolto" paragonabile a quella causata da Lights degli Editors, per intenderci. Come dice il famoso proverbio: &lt;em&gt;Ascoltatore avvisato, mezzo album "La percezione del nero" comprato&lt;/em&gt; &amp;lt;g&amp;gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2d02d891-0afe-4aab-8ebf-297cda73d0dd" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/FATA" rel="tag"&gt;FATA&lt;/a&gt;,&lt;a href="http://technorati.com/tags/indie" rel="tag"&gt;indie&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/pape/aggbug/93527.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/strangelog/~4/345503437" height="1" width="1"/&gt;</description>
            <dc:creator>Andrea Saltarello</dc:creator>
            <guid isPermaLink="false">http://blogs.ugidotnet.org/pape/archive/2008/07/25/tempo-per-le-tue-parole.aspx</guid>
            <pubDate>Fri, 25 Jul 2008 09:31:40 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/pape/comments/93527.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/pape/archive/2008/07/25/tempo-per-le-tue-parole.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/pape/comments/commentRss/93527.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/pape/services/trackbacks/93527.aspx</trackback:ping>
        <feedburner:origLink>http://blogs.ugidotnet.org/pape/archive/2008/07/25/tempo-per-le-tue-parole.aspx</feedburner:origLink></item>
        <item>
            <title>Apples to Oranges</title>
            <link>http://feeds.feedburner.com/~r/strangelog/~3/343365771/apples-to-oranges.aspx</link>
            <description>&lt;p&gt;Capisco che era il bancone delle "offerte speciali", ma in ogni caso vedere nello stesso scaffale &lt;strong&gt;Opel&lt;/strong&gt; di &lt;a href="http://it.wikipedia.org/wiki/Syd_Barrett" target="_blank"&gt;&lt;strong&gt;Syd Barrett&lt;/strong&gt;&lt;/a&gt; e l'album dei &lt;strong&gt;30 Seconds to Mars&lt;/strong&gt; mi perplime.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/pape/aggbug/93508.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/strangelog/~4/343365771" height="1" width="1"/&gt;</description>
            <dc:creator>Andrea Saltarello</dc:creator>
            <guid isPermaLink="false">http://blogs.ugidotnet.org/pape/archive/2008/07/23/apples-to-oranges.aspx</guid>
            <pubDate>Wed, 23 Jul 2008 08:56:49 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/pape/comments/93508.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/pape/archive/2008/07/23/apples-to-oranges.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/pape/comments/commentRss/93508.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/pape/services/trackbacks/93508.aspx</trackback:ping>
        <feedburner:origLink>http://blogs.ugidotnet.org/pape/archive/2008/07/23/apples-to-oranges.aspx</feedburner:origLink></item>
        <item>
            <title>Pattern o non pattern?</title>
            <category>CommunityDaysApril06</category>
            <category>SW Architecture</category>
            <link>http://feeds.feedburner.com/~r/strangelog/~3/338882936/pattern-o-non-pattern.aspx</link>
            <description>&lt;p&gt;Raffaeu mi porge un (gradito) &lt;a href="http://blogs.ugidotnet.org/pape/archive/2008/07/17/refresh4-per-nsk.aspx#1381384" target="_blank"&gt;complimento&lt;/a&gt;, che è però anche un interessante spunto per una riflessione. BTW, niente di nuovo all'orizzonte, perchè è una riflessione che ho già ampiamente esposto durante il tutorial dei &lt;a href="http://www.communitydays.it/" target="_blank"&gt;Community Days&lt;/a&gt;, ma ritengo comunque interessante estenderla.&lt;/p&gt;  &lt;p&gt;Un moderno emulo di Gian Battista Vico non esiterebbe ad includere il seguente scenario tra i "corsi e ricorsi storici": quando un dev entra in contatto con i [design|architecture|refactoring|vattelapesca] pattern la reazione è, tipicamente, una delle seguenti:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Il dev diventa un "pattern fanatic": parla continuamente di pattern e li infila dappertutto (un divertente "asse cronologico"" di questo scenario 1 è disponibile in [&lt;a href="http://jimmynilsson.com/" target="_blank"&gt;Nilsson&lt;/a&gt;, ADDD.NET]) &lt;/li&gt;    &lt;li&gt;Il dev li rifiuta in quanto (scegliere il proprio "best pick"): inutili, "acquacaldosi", eccessivamente astratti, ... &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Ma i pattern rappresentano (o aggiungono) davvero un valore? Parliamone :-) &lt;/p&gt;  &lt;p&gt;Partendo dal presupposto che la soluzione sia basata sul FX .NET o comunque implementata utilizzando un linguaggio che aderisca al paradigma object oriented, quando "progettiamo" ("to design" in inglese) un sistema dovremmo farlo tenendo *bene* in mente i &lt;em&gt;requisiti&lt;/em&gt; e i &lt;em&gt;princìpi&lt;/em&gt; di progettazione OO; i requisiti rappresentano ciò che il sistema deve fare e per un architetto sono "sacri ed inviolabili" giacchè:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Se funzionali, sono di competenza di un analista che ha *sicuramente* una comprensione del dominio  superiore alla nostra &lt;/li&gt;    &lt;li&gt;Se non funzionali, sono frutto di qualche accordo "contrattuale" (es: SLA) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ergo, non è certo inclusa nella "carta dei diritti" di un architetto la possibilità di modificarli a propria volontà. Per quanto riguarda i requisiti, inoltre, la &lt;a href="http://en.wikipedia.org/wiki/ISO_9126" target="_blank"&gt;norma ISO9126&lt;/a&gt; svolge un ottimo lavoro di categorizzazione e rende evidente la natura di requisito di "topic" (troppo) spesso trascurati quali (a puro titolo di esempio ed in rigoroso ordine alfabetico): &lt;em&gt;interoperability&lt;/em&gt;, &lt;em&gt;security&lt;/em&gt; e &lt;em&gt;testability&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;Affrontato il "cosa", dedichiamoci al "come": un buon architetto è un uomo (o donna) di... Sani princìpi :-) Dal primordiale "&lt;em&gt;...you must find pertinent objects...&lt;/em&gt;" ai vari DIP/LSP/OCP/SRP/... essi sono il "razionale" che ci deve guidare nelle nostre scelte progettuali a qualunque livello di dettaglio. Se anche i pattern non esistessero, questi principi ci permetterebbero in ogni caso di scrivere del "buon codice". Ma i pattern esistono, quindi... Che fare? Semplicemente, non vivere "inseguendoli" (i pattern). Non "snobbiamoli/ignoriamoli", ma impariamo ad evere un approccio rilassato nei loro confronti. Affrontiamo un problema alla volta e, se avessimo l'evidenza che quello che stiamo affrontando sia risolto da un pattern, usiamolo senza remore: nessuno oggi si inventa una tecnica risolutiva per il problema "gestione di un documento strutturato" quando esiste &lt;a href="http://en.wikipedia.org/wiki/Composite_pattern" target="_blank"&gt;Composite&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Spesso però confondiamo una congettura con una evidenza, e dovremmo invece migliorare la nostra capacità di riconoscere le congetture. Di fronte ad una congettura, trasformiamoci in Pollicino ed usiamo requisiti e principi come "traccia" per affrontare lo scenario: facendolo sistematicamente realizzeremo comunque una soluzione strutturalmente simile a "qualche" pattern, nel qual caso valuteremo se un "refactoring to &lt;em&gt;quel&lt;/em&gt; pattern" possa portare del valore aggiunto, altrimenti... Squadra che vince non si cambia :-)&lt;/p&gt;  &lt;p&gt;In (estrema e quindi approssimativa) sintesi: i pattern possono essere un "fine" (refactoring to pattern) od un "mezzo" (abbiamo un problema *chiaramente* risolto da un pattern in modo ottimale), e a volte "il fine giustifica i mezzi". Di certo non "sono" un valore, anche se "hanno" valore, giacchè sono "soluzioni *dimostrate* funzionanti a problemi ricorrenti".&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:635c8dac-536b-4c46-a6bc-a11d37aa225c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/design%20pattern" rel="tag"&gt;design pattern&lt;/a&gt;,&lt;a href="http://technorati.com/tags/refactoring%20to%20patterns" rel="tag"&gt;refactoring to patterns&lt;/a&gt;,&lt;a href="http://technorati.com/tags/software%20architecture" rel="tag"&gt;software architecture&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/pape/aggbug/93448.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/strangelog/~4/338882936" height="1" width="1"/&gt;</description>
            <dc:creator>Andrea Saltarello</dc:creator>
            <guid isPermaLink="false">http://blogs.ugidotnet.org/pape/archive/2008/07/18/pattern-o-non-pattern.aspx</guid>
            <pubDate>Fri, 18 Jul 2008 10:12:47 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/pape/comments/93448.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/pape/archive/2008/07/18/pattern-o-non-pattern.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/pape/comments/commentRss/93448.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/pape/services/trackbacks/93448.aspx</trackback:ping>
        <feedburner:origLink>http://blogs.ugidotnet.org/pape/archive/2008/07/18/pattern-o-non-pattern.aspx</feedburner:origLink></item>
        <item>
            <title>Refresh4 per NSK</title>
            <category>.NET</category>
            <category>ASP.NET</category>
            <category>Managed Designs</category>
            <category>NSK</category>
            <link>http://feeds.feedburner.com/~r/strangelog/~3/338087821/refresh4-per-nsk.aspx</link>
            <description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Ho migrato &lt;a href="http://www.codeplex.com/NSK" target="_blank"&gt;NSK&lt;/a&gt; alla versione refresh4 del framework ASP.NET MVC &lt;a href="http://www.ugidotnet.org/news/news_read.aspx?ID=794" target="_blank"&gt;rilasciata ieri&lt;/a&gt;, "fondendo" la web app con il sample project standard in modo da avere "gratis" l'implementazione della login: poichè è basata sul &lt;strong&gt;SqlMembershipProvider&lt;/strong&gt;, è necessario creare il "solito" &lt;strong&gt;aspnetdb.mdf&lt;/strong&gt; in &lt;strong&gt;App_Data&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;Non ho sperimentato alcun problema particolare, se non un "bisticcio" con la &lt;em&gt;custom controller factory&lt;/em&gt; che ho implementato per iniettare nei controller l'istanza del &lt;em&gt;data context&lt;/em&gt;: sono incappato in un comportamento quanto meno "particolare" di &lt;strong&gt;Unity&lt;/strong&gt; ed ho piazzato un piccolo &lt;strike&gt;hack&lt;/strike&gt; workaround in &lt;strong&gt;Application_OnStart&lt;/strong&gt; per risolverlo.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7494d000-9c19-4086-9c6c-ccd12d0c27e4" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MVC" rel="tag"&gt;MVC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/NSK" rel="tag"&gt;NSK&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Unity" rel="tag"&gt;Unity&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/pape/aggbug/93437.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/strangelog/~4/338087821" height="1" width="1"/&gt;</description>
            <dc:creator>Andrea Saltarello</dc:creator>
            <guid isPermaLink="false">http://blogs.ugidotnet.org/pape/archive/2008/07/17/refresh4-per-nsk.aspx</guid>
            <pubDate>Thu, 17 Jul 2008 14:15:29 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/pape/comments/93437.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/pape/archive/2008/07/17/refresh4-per-nsk.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/pape/comments/commentRss/93437.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/pape/services/trackbacks/93437.aspx</trackback:ping>
        <feedburner:origLink>http://blogs.ugidotnet.org/pape/archive/2008/07/17/refresh4-per-nsk.aspx</feedburner:origLink></item>
        <item>
            <title>&amp;quot;MS vs. Solution Architects&amp;quot;: ricapitoliamo</title>
            <category>.NET</category>
            <category>SW Architecture</category>
            <link>http://feeds.feedburner.com/~r/strangelog/~3/336880473/quotms-vs.-solution-architectsquot-ricapitoliamo.aspx</link>
            <description>&lt;p&gt;Ricapitoliamo:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;MS &lt;a target="_blank" href="http://blogs.msdn.com/dsimmons/archive/2007/06/02/persistence-ignorance-ok-i-think-i-get-it-now.aspx"&gt;ammette pubblicamente&lt;/a&gt; che la PI è un punto fondamentale per un O/RM &lt;/li&gt;
    &lt;li&gt;Per evitare di soffrire ulteriormente di problemi di eiaculazione precoce, &lt;a target="_blank" href="http://forum.ugidotnet.org/b.asp?m=69248"&gt;MS ha allestito un focus group&lt;/a&gt; dedicato alla v2 di Entity Framework coinvolgendo *finalmente* gente esperta di queste tematiche: Eric Evans, Jimmy Nilsson, Martin Fowler, Pavel Hruby, ... &lt;/li&gt;
    &lt;li&gt;Per supportare *seriamente* PI c'è bisogno di poter "proxare al volo" il DM &lt;/li&gt;
    &lt;li&gt;Per "proxare" al volo senza eccessive penalizzazioni in performance serve Reflection.Emit &lt;/li&gt;
    &lt;li&gt;Reflection.Emit è incapsulato egregiamente da DynamicProxy, un "pezzo" del &lt;a target="_blank" href="http://www.castleproject.org/"&gt;Castle Project&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;Unity (il container IoC di Enterprise Library 4.0) paga pegno se confrontato a Windsor: no proxy, no supporto *serio* ad AOP, ... &lt;/li&gt;
    &lt;li&gt;&lt;a target="_blank" href="http://hammett.castleproject.org/?p=312"&gt;Microsoft ha assunto Hamilton Verissimo&lt;/a&gt;, il papà di Castle Project &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Di ottimismo non se ne parla, visto che stiamo parlando dell'azienda che è riuscita a &lt;a target="_blank" href="http://blogs.ugidotnet.org/pape/archive/2005/10/18/28194.aspx"&gt;far fuggire Ward Cunningham&lt;/a&gt; e che ha sistematicamente ignorato quello che "pirla" quali il sottoscritto le dicono da anni nei focus group; però, si trattasse di una partita di tennis, direi che hanno recuperato 2 set di svantaggio ed effettuato un break al 5°: in queste condizioni, se perdi la partita sei un pirla. La bellezza del framework MVC e l'avvento di Unity sono comunque degli *ottimi* segnali. Continuo a pensare che il match point lo si possa conquistare &lt;a target="_blank" href="http://blogs.ugidotnet.org/pape/archive/2007/06/26/persistenceignoranceigetitnow.aspx"&gt;assumendo Gavin King&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; si, lo so che Hamilton non lavorerà nè su EF nè sul FX blah blah blah... Diciamo che mi accontento di una reprise della soap opera avvenuta ai tempi di James Newkirk, l'autore di NUnit che fu ufficialmente assunto da MS per lavorare alle P&amp;amp;P anche se, guarda caso, poco dopo nacque MSTest *integrato* in Visual Studio ed era *uguale* ad NUnit. &amp;lt;g&amp;gt; Diano ad Hamilton anche il ruolo ufficiale di "Coffeemachine Manager", purchè "casualmente" poi EF2 sia un buon O/RM e che la BCL disponga di un container IoC con funzionalità di proxying ed interception &amp;lt;bg&amp;gt;&lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3d0f367f-6b65-4172-bdef-c08b9e1bccca" class="wlWriterSmartContent"&gt;Technorati Tag: &lt;a rel="tag" href="http://technorati.com/tags/Castle%20Project"&gt;Castle Project&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Enterprise%20Library"&gt;Enterprise Library&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Entity%20Framework"&gt;Entity Framework&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/IoC"&gt;IoC&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/ORM"&gt;ORM&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/pape/aggbug/93424.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/strangelog/~4/336880473" height="1" width="1"/&gt;</description>
            <dc:creator>Andrea Saltarello</dc:creator>
            <guid isPermaLink="false">http://blogs.ugidotnet.org/pape/archive/2008/07/16/quotms-vs.-solution-architectsquot-ricapitoliamo.aspx</guid>
            <pubDate>Wed, 16 Jul 2008 08:22:53 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/pape/comments/93424.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/pape/archive/2008/07/16/quotms-vs.-solution-architectsquot-ricapitoliamo.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/pape/comments/commentRss/93424.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/pape/services/trackbacks/93424.aspx</trackback:ping>
        <feedburner:origLink>http://blogs.ugidotnet.org/pape/archive/2008/07/16/quotms-vs.-solution-architectsquot-ricapitoliamo.aspx</feedburner:origLink></item>
        <item>
            <title>How I Got Started in Software Development</title>
            <link>http://feeds.feedburner.com/~r/strangelog/~3/335355741/how-i-got-started-in-software-development.aspx</link>
            <description>&lt;p&gt;Poichè Igor ha avuto la malsana idea di &lt;a href="http://blog.vivendobyte.net/archive/2008/07/14/635.aspx" target="_blank"&gt;taggarmi&lt;/a&gt;, non posso esimermi dal partecipare al meme ed eccomi qui a parlare della cause della mia &lt;strike&gt;sciagura&lt;/strike&gt; scelta di "essere un dev".&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How old were you when you started programming?      &lt;br /&gt;&lt;em&gt;A quale età hai cominciato a programmare?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Più o meno, ho iniziato a provarci all'eta di 8 anni. Per maggiori dettagli... C'è la risposta successiva :-)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How did you get started in programming?      &lt;br /&gt;&lt;em&gt;Come hai cominciato a programmare?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Beh, una sera mio zio si presentò a casa nostra con un Commodore VIC-20 acquistato presso lo spaccio aziendale, tentando di convincere mio padre (riottoso nei confronti di ogni forma tecnologica successiva alla televisione) ad acquistarlo a sua volta per non meglio precisati "scopi professionali". Ben sapendo che mio padre non lo avrebbe mai utilizzato, insistetti come solo un figlio &lt;strike&gt;rompiballe&lt;/strike&gt; determinato sa fare e attesi che mio padre, entrato in possesso dell'oggetto misterioso, lo lasciasse in soffitta per 3 mesi prima di far valere la mia personale versione dell'usucapione. &amp;lt;g&amp;gt; In poche parole, se oggi passo notti insonni davanti al monitor è per colpa di mio zio, che infatti è stato duramente punito per la sua colpa, giacchè lavora come sistemista &amp;lt;g&amp;gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What was your first language?      &lt;br /&gt;&lt;em&gt;Qual’è stato il tuo primo linguaggio di programmazione?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Commodore_BASIC" target="_blank"&gt;CBM Basic V2&lt;/a&gt;, il glorioso interprete disponibile sul "mio" VIC-20.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What was the first real program you wrote?      &lt;br /&gt;&lt;em&gt;Qual’è stato il primo programma vero che hai scritto?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Se intendiamo il primo programma dotato di funzionalità "interessanti", lo scrissi in terza media insieme ad alcuni compagni di classe: era una simulazione molto "approssimativa" del movimento degli elettroni di un atomo intorno al nucleo ed era parte di un progetto che avremmo presentato presso una mostra organizzata per "festeggiare" la fine dell'anno. La mia prima impresa solitaria, invece, fu costituita da un piccolo software che disegnava diagrammi di &lt;a href="http://it.wikipedia.org/wiki/Diagramma_di_Bode" target="_blank"&gt;Bode&lt;/a&gt; e &lt;a href="http://it.wikipedia.org/wiki/Diagramma_di_Nyquist" target="_blank"&gt;Nyquist&lt;/a&gt; che scrissi durante la frequentazione dell'&lt;a href="http://www.itisfeltrinelli.it/" target="_blank"&gt;ITIS Feltrinelli&lt;/a&gt; e che venne allegato al libro di informatica scritto da uno dei miei professori.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What languages have you used since you started programming?      &lt;br /&gt;&lt;em&gt;Quali linguaggi hai usato da quando hai cominciato a programmare?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In rigoroso ordine alfabetico: assembly Z80, assembly ARM, ANSI C, BASIC (Amigabasic, AMOS, CBM V2, Borland Turbo Basic, Visual Basic dalla v3.0 alla 6.0, VBS, Visual Basic .NET), Delphi 1.0 e 2.0, C++, C#, Java    &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What was your first professional programming gig?      &lt;br /&gt;&lt;em&gt;Quando è stato il tuo primo vero lavoro da programmatore?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Durante i miei scarsi trascorsi univesitari, venni arruolato da uno dei miei professori che possedeva una piccola software house ben "agganciata" al mercato grazie ai suoi "contatti". Mi ritrovai a lavorare sul software di colorazione utilizzato per colorare le tavole delle edizioni italiane dei fumetti di Marvel Comics, scritto in linguaggio assembly &lt;a href="http://en.wikipedia.org/wiki/ARM_architecture" target="_blank"&gt;ARM&lt;/a&gt; (per intenderci, è la stessa famiglia di CPU tutt'oggi usata sulla maggior parte dei device Windows Mobile) su workstation RISC &lt;a href="http://en.wikipedia.org/wiki/Acorn_Archimedes" target="_blank"&gt;Acorn Archimedes&lt;/a&gt;. Per intenderci, col "mio" software coloravano le tavole dell'Uomo Ragno. Una volta mi portarono presso la tipografia dove vidi le tavole "uscire colorate": tornai a casa camminando ad un metro da terra. Figata.     &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;If you knew then what you know now, would you have started programming?      &lt;br /&gt;&lt;em&gt;Con il senno di poi, rifaresti lo stesso il programmatore? Ricominceresti a programmare?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Tutta-la-vita.    &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;If there is one thing you learned along the way that you would tell new developers, what would it be?      &lt;br /&gt;&lt;em&gt;Se ci fosse una cosa che hai imparato nella tua carriera e che vorresti dire ai giovani programmatori, cosa diresti?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Spaccate tutto, ma senza esagerare. E non abbiate fretta di "arrivare". Ma soprattutto scordatevi di avere orari "normali"    &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What's the most fun you've ever had ... programming?      &lt;br /&gt;&lt;em&gt;Qual’è la cosa più divertente che hai programmato?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Beh... UomoRagnoUomoRagnoUomoRagnoUomoRagno &amp;lt;g&amp;gt;    &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Now, let’s tag someone else...      &lt;br /&gt;&lt;em&gt;Adesso è l’ora di taggare qualcun’altro...&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The &lt;a href="http://blogs.ugidotnet.org/rucka" target="_blank"&gt;Carucci&lt;/a&gt; &lt;a href="http://blogs.ugidotnet.org/franny" target="_blank"&gt;bros&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Il mitttico &lt;a href="http://blogs.aspitalia.com/imperugo" target="_blank"&gt;Ughetto&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.ugidotnet.org/gabrielc" target="_blank"&gt;SuperGab&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;"El &lt;a href="http://blogs.ugidotnet.org/janky" target="_blank"&gt;Janky&lt;/a&gt;", che così magari ci degna di una "apparizione" &amp;lt;g&amp;gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.ugidotnet.org/allePalle_blog/" target="_blank"&gt;Alessandro&lt;/a&gt; a.k.a. "Il Duca di Bentivoglio" &lt;/li&gt;    &lt;li&gt;Semplicemente... &lt;a href="http://www.oluyede.org/blog/" target="_blank"&gt;Lawrence&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://primates.ximian.com/~massi/blog/" target="_blank"&gt;Massi&lt;/a&gt; "JitMan" Mantione &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.ugidotnet.org/pape/aggbug/93401.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/strangelog/~4/335355741" height="1" width="1"/&gt;</description>
            <dc:creator>Andrea Saltarello</dc:creator>
            <guid isPermaLink="false">http://blogs.ugidotnet.org/pape/archive/2008/07/14/how-i-got-started-in-software-development.aspx</guid>
            <pubDate>Mon, 14 Jul 2008 19:22:40 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/pape/comments/93401.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/pape/archive/2008/07/14/how-i-got-started-in-software-development.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/pape/comments/commentRss/93401.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/pape/services/trackbacks/93401.aspx</trackback:ping>
        <feedburner:origLink>http://blogs.ugidotnet.org/pape/archive/2008/07/14/how-i-got-started-in-software-development.aspx</feedburner:origLink></item>
        <item>
            <title>ASP.NET MVC Refresh 4</title>
            <link>http://feeds.feedburner.com/~r/strangelog/~3/335091148/asp.net-mvc-refresh-4.aspx</link>
            <description>&lt;p&gt;ScottGu &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx" target="_blank"&gt;comunica&lt;/a&gt; che è imminente il rilascio della preview 4 di ASP.NET MVC: continuo a pensare che (come sostenni nel corso di un focus group a Redmond 1 anno addietro) scegliere MVP sarebbe stato preferibile, ma in ogni caso questo toolkit si fa sempre più interessante. Nello specifico, la nuova drop includerà feature appetitose quali il supporto out of the box alla cache di ASP.NET ed alla role-based security mediante i membership provider.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e22688a3-21ec-4dea-a564-756f3835ab22" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MVC" rel="tag"&gt;MVC&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/pape/aggbug/93397.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/strangelog/~4/335091148" height="1" width="1"/&gt;</description>
            <dc:creator>Andrea Saltarello</dc:creator>
            <guid isPermaLink="false">http://blogs.ugidotnet.org/pape/archive/2008/07/14/asp.net-mvc-refresh-4.aspx</guid>
            <pubDate>Mon, 14 Jul 2008 13:18:27 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/pape/comments/93397.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/pape/archive/2008/07/14/asp.net-mvc-refresh-4.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/pape/comments/commentRss/93397.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/pape/services/trackbacks/93397.aspx</trackback:ping>
        <feedburner:origLink>http://blogs.ugidotnet.org/pape/archive/2008/07/14/asp.net-mvc-refresh-4.aspx</feedburner:origLink></item>
        <item>
            <title>Community Days 2008: my 2 (euro) cents</title>
            <category>CommunityDaysApril06</category>
            <category>UGIdotNET</category>
            <link>http://feeds.feedburner.com/~r/strangelog/~3/332715896/community-days-2008-my-2-euro-cents.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;Durante la (ancora una volta ho scoperto piacevolmente che può funzionare) Q&amp;amp;A finale ho capito che il plurale del termine Community non è Communities ma Community...solo più grossa. &lt;/em&gt;&lt;em&gt;Esattamente come due stormi formano...uno stormo. Da queste piccole riflessioni possono nascere grandi cose.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;E' una affermazione che esprime fedelmente il mio pensiero, e che IMVHO richiede una profonda sensibilità per essere pensata e &lt;a href="http://blogs.ugidotnet.org/odamiani/archive/2008/07/11/93355.aspx" target="_blank"&gt;formulata&lt;/a&gt;. Non mi stupisce che l'autore sia Omar &lt;/p&gt;  &lt;p&gt;Da parte mia... Grazie a tutti: erano anni che non provavo una &lt;a href="http://blogs.ugidotnet.org/pape/archive/2004/10/01/WorkshopWebDevelopment.aspx" target="_blank"&gt;emozione simile&lt;/a&gt;, e questa volta non ho nemmeno dovuto vestirmi come "una trottola" :-)&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0b23483e-091c-4b66-a911-fbb0d51fccb2" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/Community%20Days" rel="tag"&gt;Community Days&lt;/a&gt;,&lt;a href="http://technorati.com/tags/UGIdotNET" rel="tag"&gt;UGIdotNET&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/pape/aggbug/93366.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/strangelog/~4/332715896" height="1" width="1"/&gt;</description>
            <dc:creator>Andrea Saltarello</dc:creator>
            <guid isPermaLink="false">http://blogs.ugidotnet.org/pape/archive/2008/07/11/community-days-2008-my-2-euro-cents.aspx</guid>
            <pubDate>Fri, 11 Jul 2008 14:16:51 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/pape/comments/93366.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/pape/archive/2008/07/11/community-days-2008-my-2-euro-cents.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/pape/comments/commentRss/93366.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/pape/services/trackbacks/93366.aspx</trackback:ping>
        <feedburner:origLink>http://blogs.ugidotnet.org/pape/archive/2008/07/11/community-days-2008-my-2-euro-cents.aspx</feedburner:origLink></item>
    </channel>
</rss>
