Late as usual!

lunedì, settembre 07, 2009

Flexcamping


Da javista infiltrato che ormai programma più in Flex che in Java, ho partecipato all'edizione 2009 "on the beach" del FlexCamp a Rimini, naming analogo a quello più noto a Brighton, ma organizzazione italiana a cura di ActionScript.it, d'altronde you're not from Brigthon!

Di seguito un po' di note sparse sull'evento che si è rivelato davvero interessante sia per la presenza di speaker internazionali, che per l'altissimo livello dei nostrani, i quali forse più degli altri sono stati in grado di fornire una visione di flash/flex più vicina al mondo reale e meno da tutorial, nonché per le possibilità di networking che sono da sempre uno dei motivi principali per partecipare ad eventi community-driven.

Unico neo dal mio punto di vista alcune sessioni svolte a distanza in videoconferenza, più adatte ad un evento web che ad un contesto live, dove mi sono sembrate clamorosamente a rischio sonno, anche se questo compromesso ha permesso di avere l'introduzione con Matt Chotin su Flex 4, che per Adobe non è certo banale far viaggiare oltre oceano.

A seguire la proiezione di un video ufficiale di Adobe sul designer-developer workflow proposto con i nuovo prodotti, con demo di cut&paste da grafica in Illustrator su Flash Catalyst, aggiunta animazioni e interazioni sul prototipo dinamico, quindi importazione in Flash Builder e aggancio del prototipo ad un data service per ottenere l'applicazione finale funzionante. Più interessante del video la discussione che si è aperta dopo sull'effettiva utilità di uno strumento come Flash Catalyst e sulla sua applicabilità in progetti reali di ben altre dimensioni rispetto a quanto visto in demo, ma soprattutto sui rischi che potrebbe eventualmente comportare nella comunicazione con i clienti oltre agli evidenti vantaggi nella prototipazione rapida di mock interattivi. Da lì si è passati con un salto carpiato alle difficoltà nella transizione da scripter (flash) a programmer (flex), quindi alle classiche problematiche di teamworking, il refactoring, l'agile applicato a qualsiasi cosa per svaccare poi in un classico il cliente questo stronzo, epilogo definitivo della tavola rotonda improvvisata e preludio alla presentazione - vera - successiva. Lo speaker presente in carne ed ossa è Joost Nuijten che fa parte del Flex UG olandese e lavora per theFactor.e, il quale tralascia gli aspetti tecnici delle RIA per concentrarsi su quelli concettuali e soprattutto su come comunicarli correttamente al cliente.
Si parla della difficile arte del rendere efficace l'analisi dei requisiti, questa volta usando come astrazione il concetto di persona, ovvero una descrizione di user experience associata ad un segmentazione in tipi di utente calata su casi specifici (i.e. la casalinga di Voghera) insieme ai wireframe usati non come strumento di design, ma per l'analisi funzionale della GUI.

Segue la superstar John Lindquist di RoundArch, che ci fa una panoramica con esempi su come implementare il 3D in Flex, che sulla versione 3 richiede librerie aggiuntive come la sua Papervision3D o una galleria di transizioni con effettazzi, vedi Efflex, mentre con la versione 4 quanto serve è già all'interno del framework. Grazie alla separazione fra logica di interazione e aspetto grafico nei componenti di Flex 4, è ora possibile superare alcune limitazioni del 3 e ad esempio permettere l'editing in un componente testo rotante usando i custom layout. Per gli esempi John ci rimanda al blog di Ryan Campbell e io giù a prender nota...

Momento riposino con Michael Plank di PowerFlasher, produttori dell'IDE alternativo FDT, di nuovo in conference a distanza... nulla contro Connect ma no grazie me lo vedo sul web.

Passiamo ora alle verità di Chuck Norris sul testing con un'altra superstar, Michael Labriola:
"80% of time spent on testing, testing means confidence with code". Finalmente con FlexUnit e il supporto presente in Flash Builder 4 anche Adobe scopre l'importanza dello unit testing: ora è il turno degli sviluppatori che non hanno più scuse per tirarsi indietro. FlexUnit4 usa i metadata di Flex analogamente a quanto fa JUnit4 con le annotation di Java, così abbiamo [Test] sui metodi di test e [Before] e [After] per setup e teardown. Non manca anche hamcrest-as3 per costruire assertion meno precise (fuzzy), il [RunWith] per estendere facilmente il framework, [Theory] per verificare i test con diversi dataset e infine supporto ad eccezioni e test asincroni per gestione eventi e timeout. Ad una domanda sulle librerie di mock consigliate, vengono proposte mock-as3 e AS3mock. Mai più senza.

Ora siamo ad una delle presentazioni che attendevo di più, in quanto si parla esplicitamente di Java e nello specifico di un progetto, Merapi, che mi aveva già incuriosito in passato per l'attenzione di cui era stato oggetto. Purtroppo ogni volta che avevo cercato di capirne qualcosa, ero anche stato sommerso da una coltre di fumo da social marketing, con video demo su YouTube e compagnia bella, senza riuscire a coglierne - da architetto ggiava noiosone - l'effettivo valore. E chissà se ci riusciremo stavolta... Adam Flater lavora anche lui in RoundArch, in passato ha lavorato sull'eBay Desktop, storica applicazione di lancio di AIR, presso EffectiveUI, dove è nato ciò che è poi diventato il progetto opensource Merapi reso pubblico su Google Code con licenza LGPL nel 2009. L'obiettivo originale era di superare i limiti del Flash Player (e successivamente del runtime AIR) comunicando via TCP con uno schiavetto Java comandato tramite messaggi asincroni, che facesse così da ponte verso la macchina locale, sostituendo un ActiveX control usato in precedenza nello stesso ruolo.
Le API lato Flex e lato Java sono estremamente semplici e le applicazioni molto wow, come dimostrano i video su YouTube nelle quali si vede Flash pilotato da un Wiimote o che viceversa pilota un robot Lego Mindstrom. Ain't it cool? Dipende dagli obiettivi, per una demo può andar bene, ma in quali altri casi ci si può permettere di lanciare un server TCP Java in locale con pieno accesso alla macchina prima di usare un'applicazione Flex o AIR? Se non altro Adam non si tira affatto indietro rispetto a questo tipo di obiezioni, proponendo un installer Java che si occupi di sistemare le due anime Java e Flash dell'applicazione, ma sicuramente l'hype è da riporre altrove.

Finalmente diamo spazio agli italiani, con Alessandro Ronchi di Webgriffe che presenta fxDao, un proxy realizzato su amfphp da Flex verso un server MySQL, senza passaggio di credenziali. Nelle stesse parole dell'autore, un progetto semplice senza grandi pretese, ma che può essere molto utile per realizzare prototipi applicativi e soprattutto ben strutturato. È infatti pensato in modo tale che qualora necessario sia semplice sostituire l'implementazione dei DAO con soluzioni più robuste.

La successiva presentazione di Jaco scava nell'anima del Flash Player, mostrando cosa sia possibile ottenere tramite l'accesso diretto di basso livello ai dati permesso dalla classe ByteArray. Ne rimango affascinato e prendo ulteriormente coscienza di quanta strada debba ancora far per avere un'adeguata conoscenza su Flash...

Altro progetto italiano con Giorgo Natili, admin di actionscript.it ed organizzatore del camp, che ci illustra il framework Nabiro, interessante implementazione in Flex del pattern model-view-presenter, peccato però che la mia banda disponibile per i framework sia già stata messa a dura prova dalle discussioni infinite sull'argomento in ambito Java, per cui il tempo per dedicarmi anche agli analoghi Flex verrà, ma non adesso. Ottimo complemento anche il post-intervento con Fabio Biondi, altro organizzatore del camp, che lavorando con Giorgio ci racconta invece la sua visione da utente del framework ed i relativi vantaggi ottenuti nell'applicarlo su progetto.

Ancora un intervento remoto con Rich Tretola su Pixel Blender, che ahimè nonostante l'impegno subisce la mannaia causa banda insufficiente, quindi è il turno di Matteo Lanzi di Flex-Developers.org, autore degli ottimi tutorial su Red5 pubblicati sul wiki della community. L'ora è tarda e la giornata è stata intensa, per cui l'unica possibilità per Matteo è risvegliare il pubblico con una presentazione mostruosamente divertente che coniuga Flex e Frankestein JR con l'obiettivo di tenere a bada il framework evitando disastrosi memory leak, sempre in agguato al crescere delle dimensione delle applicazioni, terribile segreto che i soliti tutorial lucidati a dovere tengono opportunamente nascosto. Ed ecco che si finisce sui dettagli splatter di oggetti con riferimenti ciclici, listener aggiunti e mai rimossi e trucchetti di monkey patch sul codice del framework, informazioni utilissime che se solo mi fossero arrivate qualche mese fa mi avrebbero evitato delle belle notti insonni...

Chiudiamo infine la giornata con Gabriele Farina e Alessandro Crugnola di alittleb.it, che non è la delicio.us italiana, bensì una software company che lavora su Aviary, notevole suite online di creatività della quale - mea culpa - ignoravo completamente l'esistenza. I ragazzi ci raccontano la loro sfida nel rendere estensibili tramite plugin e scripting le applicazioni della suite, con le varie opzioni del caso e le scelte fatte per aprire il proprio codice alla personalizzazioni da parte degli utenti senza comprometterne la funzionalità. Davvero in gamba, anche se recuperare le mie reminiscenze di linguaggi è stato abbastanza impegnativo dopo la quantità di informazioni assorbite oggi... meno male che poi è arrivato il momento per sana chiacchiera aka networking e mangiar fuori in compagnia... anche se mi son dovuto sbrigare con una pizza - ottima - per non perdere l'ultimo treno per la natia Fano: alla prossima e ancora complimenti agli organizzatori, ora attendiamo la pubblicazione delle altre slide.

Quasi dimenticavo la ciliegina sulla torta, qualcuno ha riconosciuto la mia DeShirt!

Nessun commento: