papo we(b)log http://blogs.ugidotnet.org/papo/Default.aspx software engineering slave! it-IT papo Subtext Version 2.6.0.0 papo we(b)log http://blogs.ugidotnet.org/images/RSS2Image.gif http://blogs.ugidotnet.org/papo/Default.aspx 77 60 Best of XP http://blogs.ugidotnet.org/papo/archive/2009/06/11/best-of.aspx sono passati ormai più di 7 mesi da quando <a target="_blank" href="http://blogs.ugidotnet.org/papo/archive/2008/10/28/94411.aspx">ho deciso di spostare</a> il mio blog personale su <a target="_blank" href="http://jfranzoi.wordpress.com">wordpress</a>. a suo tempo ho raccontanto come la spinta fosse principalmente quella di rinnovarmi, di sperimentare qualcosa di nuovo, primo tra tutti il passaggio all'inglese.<br /> <br /> a distanza di tempo, mi accorgo della netta differenza di contenuti tra quanto ho raccontato sulle pagine di UGIdotNET in un anno e mezzo e quanto invece raccolto in una manciata di mesi nel mio nuovo spazio. per questo, per chi avesse voglia di seguire le peripezie dei miei racconti e pensieri, ne approfitto per raccogliere quelli che secondo me (e anche secondo il servizio di statistiche di wordpress!) sono le discussioni più interessanti:<br /> <ul> <li><a href="http://jfranzoi.wordpress.com/2009/02/01/my-results/" target="_blank">My results</a>, il mio contributo alla proposta nata durante lo scorso Italian Agile Day 2008</li> <li><a href="http://jfranzoi.wordpress.com/2009/03/14/collections-algorithms-as-infrastructure/" target="_blank">Collections algorithms as infrastructure</a>, il racconto di un kata che ho tenuto al Milano XPUG, parlando di blocchi e iteratori, in salsa TDD</li> <li><a href="http://jfranzoi.wordpress.com/2009/05/04/it-seams-open/" target="_blank">It seams open</a>, un confronto tra il principio di design OCP e il modello di Feathers sui Seam, utili per isolare e testare codice legacy</li> <li><a href="http://jfranzoi.wordpress.com/2009/03/22/retrospective-hints/" target="_blank">Retrospective hints</a>, alcuni suggerimenti da usare durante una retrospettiva, presi dalla mia esperienza col team in cui lavoro</li> <li><a target="_blank" href="http://jfranzoi.wordpress.com/2008/11/01/guard-test-my-brand-new-friend/">Guard test, my brand new friend</a>, ovvero test di integrazione usati come "guardia" sullo stato di dati o sottosistemi da cui dipendono altri test</li> <li><a target="_blank" href="http://jfranzoi.wordpress.com/2009/05/10/there-s-more-than-one-way-to-skin-a-cat/">There’s more than one way to skin a cat</a>, due punti di vista sul design: "inside" vs. "outside"</li> <li><a target="_blank" href="http://jfranzoi.wordpress.com/2008/11/23/test-tastes/">Test tastes</a>, come le varie tipologie di test ci possono aiutare: analisi, design e... testing!</li> <li><a href="http://jfranzoi.wordpress.com/2009/05/07/fakes-arent-stubs/">Fakes aren’t stubs</a>, ovvero come ridare dignità ai fake objects</li> <li><a target="_blank" href="http://jfranzoi.wordpress.com/2008/12/30/architecture-toolbox/">Architecture toolbox</a>, un catalogo dei protocolli e standard a diposizione quando si tratta di disegnare e comporre l'architettura di un sistema</li> <li><a target="_blank" href="http://jfranzoi.wordpress.com/2009/02/17/working-software/">Working software</a>, per ricordarsi sempre di focalizzarsi sul consegnare valore al committente</li> <li><a target="_blank" href="http://jfranzoi.wordpress.com/2008/11/05/not-sure-write-a-test/">Not sure? Write a test</a>: “Quis custodiet ipsos custodes?”</li> </ul> buona lettura!<br /> -papo-<img src="http://blogs.ugidotnet.org/papo/aggbug/96400.aspx" width="1" height="1" /> papo http://blogs.ugidotnet.org/papo/archive/2009/06/11/best-of.aspx Thu, 11 Jun 2009 00:33:13 GMT http://blogs.ugidotnet.org/papo/archive/2009/06/11/best-of.aspx#feedback 1 http://blogs.ugidotnet.org/papo/comments/commentRss/96400.aspx http://blogs.ugidotnet.org/papo/services/trackbacks/96400.aspx Weblog moved http://blogs.ugidotnet.org/papo/archive/2008/10/28/94411.aspx <p>alla fine è arrivato: il momento di dare un taglio nuovo alla mia attività in rete. tante piccole cose in questo ultimo periodo, che sommate mi hanno convinto ad aprire un nuovo spazio in cui pubblicare le mie esperienze. così, armato di pazienza e buona volontà, ho iniziato ad allestire un nuovo blog, in cui conto di postare molto materiale e dare maggiore visibilità al lavoro svolto dal <a href="http://www.sourcesense.com/it/agile/" target="_blank">mio team</a>.</p> <p>il blog è raggiungibile all'indirizzo <a href="http://jfranzoi.wordpress.com" target="_blank">http://jfranzoi.wordpress.com</a></p> <p>mi sono scritto - rigorosamente <span style="font-style: italic;">test-driven</span> - un tool in Ruby (di cui a breve racconterò) con il quale ho importato tutti i contenuti, a parte purtroppo i preziosi commenti - che rimangono in ogni caso presenti in questo blog.<br /> </p> <p>dopo due anni e mezzo, ho deciso definitivamente di passare da un'ottica <span style="font-weight: bold;">tecnologica</span> - l'esperienza della community UGIdotNET - ad una <span style="font-weight: bold;">metodologica</span>, che poco avrà a che fare con .NET e il mondo che vi ruota attorno.</p> <p>invito quindi tutti quelli che vogliono continuare a leggere quello che ho da dire su eXtreme Programming e metodologie Agili, testing automatico di applicazioni (Java, e magari Ruby), architetture e principi di progettazione software, di aggiornare il proprio feed-reader con il nuovo indirizzo.</p> <p>spero di trovarvi presto - virtualmente - tra i commenti dei miei prossimi post, e - fisicamente- magari a Bologna, per il prossimo <a href="http://www.agileday.it/" target="_blank">Italian Agile Day 2008</a>, al quale parteciperò anch'io attivamente con <a href="http://www.agileday.it/index.php?page=program#Retrospective_Standup_e_Journal" target="_blank">una sessione</a>, insieme ad <a href="http://xplayer.wordpress.com/" target="_blank">un mio collega</a>, su "<span style="font-style: italic;">Retrospettive, Stand-Up Meeting e Journal</span>".<br /> </p> <p>è tutto, a presto.<br /> -papo- </p><img src="http://blogs.ugidotnet.org/papo/aggbug/94411.aspx" width="1" height="1" /> papo http://blogs.ugidotnet.org/papo/archive/2008/10/28/94411.aspx Tue, 28 Oct 2008 01:23:23 GMT http://blogs.ugidotnet.org/papo/archive/2008/10/28/94411.aspx#feedback 1 http://blogs.ugidotnet.org/papo/comments/commentRss/94411.aspx http://blogs.ugidotnet.org/papo/services/trackbacks/94411.aspx Design does matter TDD XP http://blogs.ugidotnet.org/papo/archive/2008/10/03/94233.aspx oggi a pranzo con qualche collega discutevamo di come risolvere un esercizio di logica (ad esempio, trovare l'intersezione tra array, e valutarne la complessità), che il nostro coach ognitanto ci lascia come stimolo per tenere allenata la mente, e per favorire il confronto tra tutti noi del team [continua..]<img src="http://blogs.ugidotnet.org/papo/aggbug/94233.aspx" width="1" height="1" /> papo http://blogs.ugidotnet.org/papo/archive/2008/10/03/94233.aspx Fri, 03 Oct 2008 10:20:35 GMT http://blogs.ugidotnet.org/papo/archive/2008/10/03/94233.aspx#feedback 1 http://blogs.ugidotnet.org/papo/comments/commentRss/94233.aspx http://blogs.ugidotnet.org/papo/services/trackbacks/94233.aspx Disaccoppiamento, inversione delle dipendenze e architetture esagonali TDD XP http://blogs.ugidotnet.org/papo/archive/2008/09/20/94094.aspx questa settimana è arrivato un nuovo tassello nel mosaico dell'applicazione Java che il mio team sta sviluppando in questo periodo. è ormai in code complete la user-story che ho preso in carico, che si occupa di realizzare l'aggancio ad una coda, realizzata da sviluppatori di un altro team interno, e di supportare il formato dei dati concordato con loro. [continua..]<img src="http://blogs.ugidotnet.org/papo/aggbug/94094.aspx" width="1" height="1" /> papo http://blogs.ugidotnet.org/papo/archive/2008/09/20/94094.aspx Sat, 20 Sep 2008 18:05:19 GMT http://blogs.ugidotnet.org/papo/archive/2008/09/20/94094.aspx#feedback 2 http://blogs.ugidotnet.org/papo/comments/commentRss/94094.aspx http://blogs.ugidotnet.org/papo/services/trackbacks/94094.aspx Feedback, feedback, feedback! TDD XP http://blogs.ugidotnet.org/papo/archive/2008/09/15/94030.aspx non è un segreto, sono test-infected. questo significa che prima di iniziare a scrivere del codice, il mio istinto (o malattia) mi porta a partire da un test automatico. ma non è solo questo: l'approcio infatti mi si rivela utile in ogni situazione in cui ci sia da scoprire come fare qualcosa di nuovo. [continua..]<img src="http://blogs.ugidotnet.org/papo/aggbug/94030.aspx" width="1" height="1" /> papo http://blogs.ugidotnet.org/papo/archive/2008/09/15/94030.aspx Mon, 15 Sep 2008 10:24:51 GMT http://blogs.ugidotnet.org/papo/archive/2008/09/15/94030.aspx#feedback http://blogs.ugidotnet.org/papo/comments/commentRss/94030.aspx http://blogs.ugidotnet.org/papo/services/trackbacks/94030.aspx Customer Test-Driven Development with FIT and FitNesse TDD XP http://blogs.ugidotnet.org/papo/archive/2008/07/06/93291.aspx no, non è un post in inglese. il titolo si riferisce alla sessione che io e il mio collega Tommaso abbiamo tenuto lo scorso giovedì per i ragazzi della <a style="font-weight: bold;" href="http://essap.dicom.uninsubria.it/">ESSAP</a> (<span style="font-style: italic;">European Summer School on Agile Programming</span>) presso Villa Toeplitz a Varese. è stata un'esperienza stupenda, sia per il fatto che ci siamo tutti divertiti moltissimo, sia per l'interesse che i partecipanti (un po' assonnati per il post pranzo!) hanno dimostrato verso i temi esposti.<br /> <br /> putroppo, questa era la prima volta che la sessione prendeva corpo, e quindi sicuramente non siamo stati efficaci quanto speravamo: l'argomento è insidioso perchè offre il fianco a lunghe discussioni puramente tecniche, errore in cui siamo caduti anche noi. il pubblico, una ventina di ragazzi da tutta europa, era molto eterogeneo, chi vedeva per la prima volta le tematiche legate ai <span style="font-weight: bold;">metodi Agili</span>, accanto a chi invece già adotta alcuni principi e pratiche nel proprio lavoro ed era lì per affinarli o capire come farli meglio funzionare.<br /> <br /> abbiamo scelto di dividere la sessione in due parti. prima un'introduzione al concetto di <span style="font-style: italic;">iterazione</span> e <span style="font-style: italic;">test di accettazione</span> scritti da/con il cliente, quali possibili forme usare per scriverli e quali tool esistono a supporto. abbiamo descritto in dettaglio il funzionamento di <a style="font-weight: bold;" href="http://fit.c2.com/">FIT</a> e <a style="font-weight: bold;" href="http://www.fitnesse.org/">FitNesse</a> e mostrato le principali fixtures usate, quelle di FIT e alcune di <a style="font-weight: bold;" href="http://fit.c2.com/wiki.cgi?FitLibrary">FitLibrary</a>.<br /> <br /> nella seconda parte della sessione invece abbiamo fatto un esercizio, partendo da un esempio scritto da noi (una variazione di quello che i ragazzi avevano già visto in altre sessioni): un semplice <a href="http://davenicolette.wikispaces.com/TDD+Randori+and+Fishbowl">gioco di ruolo</a> per il quale abbiamo realizzato una decina di <span style="font-style: italic;">user stories</span>, corredandole di <span style="font-style: italic;">test unitari</span> e <span style="font-style: italic;">test di accettazione</span>. quindi abbiamo eletto a <span style="font-style: italic;">customer</span> uno dei ragazzi nel pubblico, chiesto a lui di inventarsi la prossima user story e iniziato a descriverla in <span style="font-weight: bold;">forma testuale</span> su una lavagna. prendendo spunto da quanto già fatto per le altre storie, abbiamo poi scritto un test di accettazione, sempre su lavagna, e tradotto poi in <span style="font-weight: bold;">forma tabellare</span>.<br /> <br /> il resto del pomeriggio (troppo breve!) i ragazzi hanno così lavorato in coppie cercando di implementare la storia richiesta, partendo dalla traduzione in FitNesse del test di accettazione, collezzionando una bella "barra rossa", doverosa a inizio iterazione. hanno poi iniziato a decidere dove porre le responsabilità richieste, e mi pare che tutti abbiano deciso di assegnarle a oggetti già esistenti, iniziando così a scrivere i test unitari, a vederli fallire uno ad uno, per poi modificare il sistema e godersi il premio di una barra verde!<br /> <br /> anche se l'esempio era molto semplice e le modifiche da aggiungere davvero limitate, ho notato la soddisfazione sopratutto dei ragazzi nuovi alle tematiche ad ogni esecuzione con successo dei test unitari. è quello che in <span style="font-style: italic;">eXtreme Programming</span> viene detto il <span style="font-weight: bold;">valore del feedback</span>, assolutamente fondamentale.<br /> <br /> prima di andare a casa, tutte le coppie sono riuscite a chiudere la micro-iterazione, verificando che il loro lavoro fosse <span style="font-weight: bold;">corretto</span> e <span style="font-weight: bold;">concluso</span>, vedendo passare con successo anche il test di accettazione. qualche coppia, avendo finito in anticipo, ha iniziato a lavorare su una seconda carta, inventata al momento. mi spiace solo che l'abbiano scelta loro invece di coinvolgere il "customer-per-un-giorno", ma è comprensibile dato l'entusiasmo e la brama di giocare col la pratica e lo strumento.<br /> <br /> a me non resta che ringraziare tutti: gli organizzatori (primo tra tutti il mio coach <a href="http://matteo.vaccari.name/blog/archives/121">Matteo</a>) per l'occasione concessa e i partecipanti per le ottime domande a cui abbiamo cercato di rispondere in modo conciso. da parte mia, è stata una giornata splendida, mi ha fatto crescere come "speaker", ruolo per me nuovo, ho avuto anche l'occasione per conoscere di persona alcuni nomi "digitali" (come <a href="http://blogs.ugidotnet.org/luka">Luka</a>), e si è conclusa con uno ottimo <span style="font-style: italic;">social-dinner</span>!<br /> <br /> il materiale della sessione sarà presto disponibile sul sito della ESSAP, nel frattempo è raggiungibile qui:<br /> <ul> <li><a href="http://jacopo.franzoi.googlepages.com/mindmapAcceptanceTDDwithFITandFitNes.pdf">mindmap</a></li> <li><a href="http://jacopo.franzoi.googlepages.com/RolePlayGame.zip">esercizio</a> (in java)</li> </ul> le nostre gesta sono anche state immortalate! più le rivedo e più sorrido. in ogni caso, sono <a href="http://it.youtube.com/watch?v=6n-6TiZY3HA">qui</a>, <a href="http://it.youtube.com/watch?v=pLnebsN7tfM">qui</a>, <a href="http://it.youtube.com/watch?v=Q4Sg6KduqQ0">qui</a> e <a href="http://it.youtube.com/watch?v=bCWJ6L_96Ts">qui</a> (peccato non si veda la scritta sul mio tesserino "<span style="font-style: italic;">Jacopo - xtreme guitarist</span>", nascosta dalla maglia rosso acceso!).<br /> <br /> grazie ancora a tutti, spero la scuola possa farsi conoscere ancora di più, magari nelle prossime edizioni ci troveremo anche molti della comunità ugidotnet!<br /> <br /> a presto.<br /> -papo<img src="http://blogs.ugidotnet.org/papo/aggbug/93291.aspx" width="1" height="1" /> papo http://blogs.ugidotnet.org/papo/archive/2008/07/06/93291.aspx Sun, 06 Jul 2008 13:08:53 GMT http://blogs.ugidotnet.org/papo/archive/2008/07/06/93291.aspx#feedback 2 http://blogs.ugidotnet.org/papo/comments/commentRss/93291.aspx http://blogs.ugidotnet.org/papo/services/trackbacks/93291.aspx [OT] eXtreme Programmers cercasi XP http://blogs.ugidotnet.org/papo/archive/2008/04/28/92422.aspx segnalo <a href="http://matteo.vaccari.name/blog/archives/113">questo</a> annuncio di lavoro, che qualcuno avrà già letto sulla mailing list di extreme-programming italia.<br /> <br /> il mio team vuole allargarsi!<br /> siamo alla ricerca di giovani agilisti nella zona di milano, chiunque fosse interessato può contattare direttamente <a href="http://matteo.vaccari.name">Matteo</a>, che attualmente ricopre il ruolo di <span style="font-style: italic;">coach</span>.<br /> <br /> spero di poter incontrare presto qualcuno di voi!<br /> ciao<br /> -papo-<img src="http://blogs.ugidotnet.org/papo/aggbug/92422.aspx" width="1" height="1" /> papo http://blogs.ugidotnet.org/papo/archive/2008/04/28/92422.aspx Mon, 28 Apr 2008 20:16:33 GMT http://blogs.ugidotnet.org/papo/archive/2008/04/28/92422.aspx#feedback 1 http://blogs.ugidotnet.org/papo/comments/commentRss/92422.aspx http://blogs.ugidotnet.org/papo/services/trackbacks/92422.aspx [OT] 365 motivi per essere soddisfatto XP http://blogs.ugidotnet.org/papo/archive/2008/04/17/92264.aspx <p>se c'è una cosa che mi dispiace davvero è aver permesso che il mio blog rimanesse in silenzio per così tanto tempo. è passata una vita dal mio ultimo post, ma sopratutto tante sono le cose successe. occasione, che cerco oggi di cogliere, è un particolare anniversario che cade questa settimana: un anno da quando ho iniziato a lavorare come <strong>eXtreme Programmers</strong>, un anno che vivo da solo, un anno in una città come milano.</p> <p>il 2008 si è aperto con una grossa novità, una grandissima occasione: si è conclusa la collaborazione che mi ha visto impegnato per gran parte dello scorso anno ed è iniziato il mio nuvo impiego, a tempo indeterminato, per una piccola ma <a href="http://www.sourcesense.com">attivissima realtà</a> nel panorama Agile italiano. nello stesso tempo, mi sono impegnato a tempo pieno come membro dello <a href="http://milano-xpug.pbwiki.com/">XP User Group locale</a>, organizzando alcuni incontri sia nella vecchia azienda che in quella nuova. con i ragazzi dello xpug abbiamo anche partecipato alla <a href="http://www.agileday.it/">scorsa edizione dell'Agile Day</a>, in cui ho avuto modo di dare un volto a mille dei nomi conosciuti in rete.</p> <p>un anno, tempo di tirare le somme. mi vergogno quasi un po' a dirlo, questo anno appena passato è stato per me davvero importante: ho imparato un mestiere, <em>il mestiere</em> che mi sono scelto e che mi appassione ogni giorno di più, affiancando dei veri professionisti e toccando con mano il valore dell'approcio Agile allo sviluppo del software. e sono cresciuto sopratutto come persona, imparando a vivere fuori casa, ad organizzarmi la vita.</p> <p>la novità più grossa è che mi è stata offerta la possibilità di fare <strong>mentoring</strong>. da oltre due mesi infatti sto seguendo un team di una grossa banca italiana nel suo percorso di avviamento all'agilità. particolarmente interessante è la formula scelta: un team misto, in cui alterniamo attività di formazione ad altre di sviluppo puro. tutto questo è decisamente stimolante, passare in così poco tempo da apprendista stregone a sciamano! la portata della responsabilità è notevole, ma è altrettanto grande la soddisfazione nel sentirsi dire, da sviluppatori che fanno questo mestiere <em>da anni</em>, "grazie di avermi fatto scrivere tutti questi test", o nel vedere riconosciuto il valore del <em>customer on-site</em> e della continua comunicazione.</p> <p>questo è quanto, non posso che considerarmi soddisfatto dei mie miseri 27 anni. auguro a molti miei coetanei che vengano loro offerte le stesse opportunità che ho ricevuto io, e che sappiano farne buon uso!</p> <p>dimenticavo l'ultima novità: sto scrivendo da un bellissimo MacBook Pro!<br /> </p> <p>a presto<br /> -papo-</p><img src="http://blogs.ugidotnet.org/papo/aggbug/92264.aspx" width="1" height="1" /> papo http://blogs.ugidotnet.org/papo/archive/2008/04/17/92264.aspx Thu, 17 Apr 2008 23:38:37 GMT http://blogs.ugidotnet.org/papo/archive/2008/04/17/92264.aspx#feedback 6 http://blogs.ugidotnet.org/papo/comments/commentRss/92264.aspx http://blogs.ugidotnet.org/papo/services/trackbacks/92264.aspx Model-View-Presenter per Compact Framework .NET TDD http://blogs.ugidotnet.org/papo/archive/2007/10/26/89217.aspx stavo per rispondere a Jeremy , che è curioso di sapere quale variante di Model-View-Presenter sia maggiornente diffusa tra i suoi affezionati, indicando come nel mio caso si tratti del Passive View. però poi mi sono accorto che era uno spunto buono per un post... [continua]<img src="http://blogs.ugidotnet.org/papo/aggbug/89217.aspx" width="1" height="1" /> papo http://blogs.ugidotnet.org/papo/archive/2007/10/26/89217.aspx Fri, 26 Oct 2007 10:19:39 GMT http://blogs.ugidotnet.org/papo/archive/2007/10/26/89217.aspx#feedback 2 http://blogs.ugidotnet.org/papo/comments/commentRss/89217.aspx http://blogs.ugidotnet.org/papo/services/trackbacks/89217.aspx Re: Unit test e build server XP http://blogs.ugidotnet.org/papo/archive/2007/06/28/83894.aspx stavo per rispondere a <a href="http://blogs.ugidotnet.org/makka/archive/2007/06/27/83665.aspx">questo post</a>, poi mi sono accorto che e' disabilitato il feedback, quindi posto qui il mio commento.<p></p> in realta' non hai *risolto* il problema, prima o poi qualcuno dovra' fixare il codice che ha 'rotto' la build. hai soltanto aggiunto un ritardo tra quando il problema e' stato introdotto (durante la scrittura del codice), a quando il problema sara' visibile (la build di CC.NET che fallira').<p></p> in realta' chi notera' che la build si e' rotta potresti non essere tu (o chi ha aggiunto il codice incriminato) e quindi sara' piu' difficile localizzare e correggere l`errore. 5 minuti non mi sembrano affatto molti, prova a considerare i vantaggi che hai nel feedback immediato sulla correttezza del tuo codice, rispetto a dover correggere a posteriori l`errore di qualcun`altro.<p></p> in azienda noi seguiamo una politica di questo tipo: mentre sviluppi esegui solo i test della parte che *pensi* sia influenzata dal nuovo codice (classi correlate e qualche test di accettazione che tocca quella parte), ma poi prima di integrare e committare le modifiche viene eseguita tutta la suite di test, due volte: la prima solo sulla propria versione del codice, la seconda dopo aver prelevato le modifiche dal repository e corretto i conflitti.<p></p> questo perche' la rottura di una build e' una cosa seria: in alcune aziende ci sono riti di fustigazione pubblica dei colpevoli (cappelloni ridicoli da dover indossare per tutto il giorno) o sirene di allarme che suonano per l`ufficio! questa invece e' una <a href="http://mark.michaelis.net/Blog/BuildStatusUsingLavaLampsByKenNichols.aspx">lava-lamp collegata a CC.NET</a><p></p> ciao!<br> -papo-<img src="http://blogs.ugidotnet.org/papo/aggbug/83894.aspx" width="1" height="1" /> papo http://blogs.ugidotnet.org/papo/archive/2007/06/28/83894.aspx Thu, 28 Jun 2007 10:32:00 GMT http://blogs.ugidotnet.org/papo/archive/2007/06/28/83894.aspx#feedback 2 http://blogs.ugidotnet.org/papo/comments/commentRss/83894.aspx http://blogs.ugidotnet.org/papo/services/trackbacks/83894.aspx