DDD-Day: pubblicato il materiale (video, slide e codice)

Ci è voluto un po’ più del solito, ma finalmente il materiale del DDD-Day è stato pubblicato, video compresi!

In attesa che vengano fatti i link dal sito del DDD-Day, potete accedere al materiale da questo album di Vimeo: http://vimeo.com/album/1721725 
Associato ad ogni video troverete il materiale della relativa sessione.

Buon divertimento :)

PS: esiste anche un video dell’ultima sessione di Greg Young, per ora lo potete vedere da qui: http://dl.dropbox.com/u/16632432/ddd-day/greg-ddd.m4v

Un pomeriggio con DomusDotNet a parlare di MVVM e Caliburn.Micro

Venerdì ho partecipato all’evento organizzato dai ragazzi di DomusDotNet su Caliburn.Micro (CM), un framework per l’implementazione del pattern MVVM su WPF, Silverlight e Windows Phone 7.

CM è il “fratellino” di Caliburn, un noto framework esistente da anni per gestire sia MVVM che UI Composition, spesso confrontato con Prism per la sua completezza (e purtroppo complessità).
Caliburn.Micro, invece, implementa solo le principali e più comuni caratteristiche che servono alle applicazioni in questo contesto, e grazie ad un sistema basato su convenzioni (convention over configuration) risulta piuttosto semplice da utilizzare, permettendo così di eliminare molto codice infrastrutturale (o meglio… ripetitivo codice di plumbing), che altrimenti il povero sviluppatore dovrebbe scrivere e manutenere per ogni “form”.

Già da quando Rob Eisenberg presentò al MIX 2010 un progettino per costruirsi un framework MVVM in casa, che sarebbe poi diventato proprio Caliburn.Micro, rimasi piuttosto colpito dalle sue potenzialità (trovate qui il video), perciò dopo averlo anche utilizzato in alcuni progetti, ho approfittato dell’occasione per partecipare al workshop romano, dove tra gli speaker c’era anche Marco, che oltre ad essere uno dei fondatori di DomusDotNet, fa anche parte del team di sviluppo di Caliburn e CM.

Inutile dire che le sessioni sono state molto interessanti, unico rammarico avere solamente un pomeriggio per parlarne :)
Dopo una introduzione al pattern MVVM, ed una sua applicazione “manuale” ad un progettino di esempio, entrambe fatte da Massimo, è entrato in scena Marco che ci ha mostrato come sfruttare Caliburn.Micro per semplificarci di molto la vita nello sviluppo.
Interessanti sono stati pure i “trucchetti” mostrati per semplificare lo sviluppo di un paio di situazioni su WP7, in particolare quelle legate a tombstoning e launchers: anche in questo caso CM ci viene in aiuto con soluzioni che definieri “smart”.

Purtroppo Marco ha dovuto tagliare, per mancanza di tempo, su un paio di importanti argomenti gestiti da Caliburn.Micro: quello dell’EventAggregator, un’implementazione del Message Broker, e sopratutto sulle coroutine, un meccanismo che permette di fare da molto tempo, in Caliburn, ciò che sarà possibile con la nota istruzione async di c# 5!
Fortunatamente il video di Rob già segnalato spiega questi argomenti, perciò diciamo che si completa molto bene com quanto ci ha fatto vedere Marco durante le sue sessioni.

Non sono mancante domande, in particolare quella “scontata” che chiede come Caliburn.Micro si posiziona nei confronti del (forse più noto) MVVM Light: da quanto è emerso, probabilmente MVVM Light ha un supporto migliore per il design-time (quindi realizzazione della UI tramite Blend), ma Caliburn.Micro semplifica molto di più lo sviluppo grazie alle sue convenzioni e a strumenti come le coroutine. Se poi qualcuno vuole aggiungere qualche informazioni in più su questo confronto, tramite i commenti, è il benvenuto :)

Progetto di esempio: Shared Bookshelf Manager (http://sbm.codeplex.com/)

Un’altra cosa interessante che ho scoperto durante il workshop è stata l’esistenza di un progetto opensource che i ragazzi di DomusDotNet hanno realizzato per “giocare” con le tecnologie (che presenteranno poi presumibilmente ai workshop).
Mi ha fatto piacere questa cosa anche perchè con DotNetMarche abbiamo parlato per molto tempo di una cosa del genere e non siamo mai riusciti a concretizzarla fino in fondo, principalmente per mancanza di tempo… almeno qualcuno ce l’ha fatta :)

Video dell’evento

Come diceva qualcuno, “two è meglio che one”, così avevamo ben due telecamere… e di conseguenza il doppio dei video.
Potete trovarli, con formati e risoluzioni diverse, sia su http://vimeo.com/25364908 (video ufficiale) che su http://vimeo.com/album/1625563 (bootleg :), che segnalo solo perchè il codice degli esempi potrebbe essere più leggibile.. in attesa di spostare eventualmente anche questi video sull’account di DomusDotNet).

ETGF

Per il capitolo ETGF (http://etgf.org/), si segnalano degli spaghetti alle cozze e pecorino, presi alla mensa Microsoft, che per quanto possono sembrare un abbinamento strano, erano piuttosto buoni :)

Meglio non citare poi il nome del bar in cui il barista dalla mano pesante ci ha praticamente stesi con un solo aperitivo!!

Frase della giornata

“La view fa la guardona […] sul model” (cit. Massimo per spiegare MVC)

Perchè i sistemi di controllo di versione distribuito gestiscono meglio branch e merge?

Uno dei principali vantaggi dei DCVS indicati da molti articoli è quello di gestire meglio il processo di branch, ma spesso, specialmente in discussioni “introduttive”, non viene indicato perché ciò avviene.

In poche righe, riesce a farlo Joel Spolsky in questo tutorial di “rieducazione” degli utenti SVN al mondo dei DCVS, in particolare a Mercurial: http://hginit.com/00.html

Nel paragrafo “One more big conceptual difference” viene spiegato come ciò dipenda dal diverso comportamento tra SVN, che esegue durante la merge un confronto tra revisioni, e i DCVS (o perlomeno Mercurial), che invece confrontano dei changeset…. leggete poi l’articolo per ulteriori dettagli :)

[ITPRO] Materiale dell’evento Incontri Tecnologici: soluzioni per la virtualizzazione

La mattina del giorno in cui abbiamo fatto con DotNetMarche il workshop “Community Tour CMS Edition”, di cui il buon Michele ha già segnalato il materiale, dei nostri amici, Giuliano e Marco, hanno tenuto un evento sulla virtualizzazione, parlando in particolare di come utilizzare Virtual Box e Microsoft Hyper-V rispettivamente in scenari che potremmo semplificare in “personal” ed “enterprise”.

Anche se il taglio è orientato più ai sistemisti che ai dev, sicuramente a qualcuno potrà interessare :)

Trovate i video qui, a breve ci saranno anche le slide: http://vimeo.com/album/1617629

Live Streaming Community Tour DotNetMarche – CMS Edition

Domani (venerdì), in occasione del workshop, tenteremo il live streaming della sala in cui si parlerà del CMS Orchard.

Il link per seguirlo è mms://mmedia.univpm.it/27052011.dotnetmarche

A domani, speriamo :)!

[DotNetMarche] 19° Workshop "Community Tour 2011 - CMS Edition"

19° Workshop "Community Tour 2011 - CMS Edition"
Venerdì 27 Maggio 2011

Sede: Università di Ancona - Polo Montedago, Aula 160/3

Nel mondo dei CMS (Content Management System) in ambiente .NET le possibili soluzioni a disposizione sono molte ed è spesso necessario valutare attentamente quale adottare per soddisfare al meglio le proprie esigenze.
Data la recente uscita di Orchard, un prodotto open-source interessante dal punto di vista architetturale e delle potenzialità che offre, il cui sviluppo è gestito dalla community con il supporto di Microsoft stessa, DotNetMarche ha deciso di dedicare la tappa del Community Tour 2011 ad una panoramica su alcuni dei principali CMS disponibili indirizzati agli sviluppatori .Net.

L'evento è costituito da più track: dopo un’introduzione comune al nuovo CMS, Orchard, ci si dividerà in tre sale: nella prima si continuerà con Orchard, approfondendolo dal punto di vista dello sviluppatore, mentre nelle altre due si avranno sessioni su SharePoint 2010 e DotNetNuke / OpenWebStudio. I relatori saranno inoltre disponibili per un “Ask The Expert” che permetterà di chiarire eventuali dubbi sui CMS in questione.

La partecipazione al workshop è gratuita! Per visionare l'agenda completa ed iscriverti, vai a questa pagina.


Evento "Incontri Tecnologici: soluzioni per la virtualizzazione"

La stessa mattina, nei medesimi locali, si svolgerà un evento gratuito sulla virtualizzazione per IT-PRO.

L'agenda completa è disponibile qui!

Per le Community .Net: è nato Orchard Community Kit (OCK)

Dall’esigenza di varie community .net italiane, che si sono ritrovate “naturalmente” unite dall’esigenza di rifare il sito (con il vecchio buttato giù dagli spammer e non più supportato), è nata l’idea di unire le forze per fare qualcosa che possa essere riutilizzato da tutti… una sorta di starter kit per le community!
Per evitare di disperdere le energie, per ora il progetto si concenterà sulle nostre esigenze più immediate, poi si potrà pensare di fare qualcosa di più generico.

Come piattaforma di base è stato deciso di utilizzare Orchard Project, il CMS partorito recentemente da Microsoft: la scelta è stata presa considerando il fatto che è stato realizzato con tecnologie “moderne” e che ci piacciono (ASP.NET MVC e NHibernate giusto per citarne alcune). Quindi ai tanti moduli già pronti offerti da altri CMS con anni di sviluppo alle spalle, abbiamo preferito "investire" su questo tool che da un lato avrà, almeno inizialmente, meno cose preconfezionate, ma dall'altro non sente il peso della "vecchiaia" (e sappiamo tutti bene cosa comporta!).

Quindi dall’unione di queste due cose, è stato deciso di chiamare il progetto “Orchard Community Kit” (OCK per gli amici!).

Dopo una serie di discussioni sui messi più disparati, stiamo cercando di organizzarci, ora che abbiamo trovato un nome Smile, per coinvolgere anche le altre community che possono interessate al discorso: purtroppo la mancanza di tempo non ci ha permesso di coinvolgere tutti da subito (anche perchè sarebbe stato inutile farlo, fino a quando non si capiva cosa avremmo volute fare)… non abbiatene a male per questo Smile!

Per ora abbiamo creato una mailing list in cui discutere.
Se siete interessati al discorso, come community, contattate me o uno degli altri ragazzi coinvolti, che cerchiamo di aggiungervi alla discussione.
Giusto per citare qualcuno che potreste contattare (in ordine sparso):

  • Alle Scardova
  • Michele Aponte
  • Imperugo
  • Simone Chiaretta
  • Fabio Cozzolino
  • Nicolò Carandini
  • Gian Maria Ricci
  • (… altri contattabili scrivano eventualmente nei commenti!)

Materiale del workshop DotNetMarche “Raf & Alk su C# 4, LINQ, Parallel Libraries e Micro Framework.NET”

Non aggiungo altro sull’evento rispetto a quanto già detto da Raf e Alk, posso solo confermare!

Comunico però che abbiamo pubblicato il materiale (video, slide e codice), trovate il tutto a partire da qui:

http://vimeo.com/album/1554782

Come vedete, nei video abbiamo messo il tag [Camera 2], ad indicare che ce ne saranno degli altri che saranno elaborati nei prossimi giorni, con le riprese ottenute direttamente dall’uscita video dei pc grazie all’impianto messo in piedi da Nicolò!

Video editing in pillole #1. Primo comandamento: registrate alla qualità massima. O quasi.

Se dovessi dare un solo consiglio per ottenere video migliori (via, diciamo “decenti”), sarebbe questo, soprattutto se rivolto a chi è alle prime armi (come me Smile with tongue out).
In questo post non ci addentreremo ancora su molti tecnicismi, o meglio, per il momento prenderemo alcuni concetti “per buoni” (risoluzione, bitrate, …), nei prossimi cercheremo di capire meglio di cosa si tratta.
Ricordo che il contesto a cui ci rivolgeremo sarà principalmente quello della registrazioni di sessioni ai workshop, con uno speaker che mostra tramite un proiettore slide e codice.

Ciò di cui parleremo potrà sembrare “banale”, ma spesso non viene eseguito o per mancanza di esperienza (io stesso non lo facevo fino a poco tempo fa!) o per alcuni problemi tecnici (vedi in primis le enormi dimensioni dei file che si possono ottenere in alcune circostante che vedremo).

Le telecamere di oggi, anche quelle “amatoriali” a poche centinaia di euro (come la mia), permettono di registrare in alta definizione, che significa una qualità molto più elevata rispetto a quella a cui siamo abituati con la normale tv.
Ovviamente salvare tutte queste informazioni ha un costo in termini di dimensioni dei file, si parla di un ordine di grandezza superiore rispetto alla qualità standard: pensate che un film su dvd (registrato in SD, standard definition) occupa circa 4.5 gb contro i 25 o 50 gb di uno stesso film su blu-ray (registrato in HD, high definition), e questo può crearci qualche problemino di storage, soprattutto se pensiamo di pubblicare su internet i nostri video.

Distinguiamo le fasi: registrazione, editing, produzione
Per ottenere dei risultati migliori, dobbiamo distinguere la fase di registrazione (le riprese con la telecamera) da quelle di editing e, soprattutto, produzione dei video: quest’ultima ci permette di ottenere un file .mp4, .avi, .vmw o del formato che vogliamo, pronto per essere pubblicato su internet. Ma cosa significa produrre questo file? In primis implica applicare un algoritmo di codifica, che permetta una sostanziale compressione dei video in modo da ottenere file di dimensioni accettabili per essere pubblicati nei nostri media(internet, dvd, …)

Ed ecco ora il punto cardine del ragionamento, tanto “banale” quanto importante Smile: mentre le fasi di editing e produzione possiamo eseguirle quante volte ci pare (a partire da un filmato sorgente, lo elaboriamo quanto vogliamo), per la fase di registrazione spesso si ha un solo tentativo (provate a dire allo speaker se vi ripete l’intera sessione Smile). 
Quindi eseguite pure la registrazione ad alta definizione, in modo da ottenere un video di qualità: ad abbassarla per ottenere un file di dimensioni più contenute, tramite gli opportuni software, viene sempre in tempo (vedi fase di produzione)!

Ma così il file è un “tantino” grande!
Registrando alla qualità massima (ad oggi su una telecamera amatoriale si parla in genere di una risoluzione di 1920x1080, con bitrate piuttosto elevati), si rischia di ottenere file enormi, gestibili con difficoltà dal pc per le fasi successive: un video di un’ora potrebbe occuparvi qualcosa come 25gb!
Alla fine, in questo contesto ci interessa soprattutto registrare un video di cui si riesca a vedere il contenuto (principalmente il codice), ma non serve sia perfetto. Da queste considerazioni nasce il “O quasi” del titolo.

Alcune telecamere permettono di registrare in alta definizione con diversi livelli di qualità: ad esempio la mia permette di regolarsi tra 4 livelli, che differiscono tra loro sia per la risoluzione utilizzata (come vedremo successivamente l’alta definizione si può ottenere con diverse risoluzioni, esempio 1920x1080 o 1280x720), sia, soprattutto, per il bitrate, cioè (definizione “casereccia”) per quante informazioni vengono codificate per unità di tempo (anche per questo vedremo meglio in futuro di cosa si tratta). 
Quindi se con la mia telecamera registrassi alla qualità massima, che ha un bitrate di circa 16 Mb/s, otterrei dei video di dimensioni enormi, ma con i livelli inferiori posso registrare a circa 3 Mb/s, pur mantenendo l’alta definizione: in questo modo un video da un’oretta (il tempo medio di una sessione) occupa circa 2-3 gb, dimensioni alla fine gestibili per le fasi successive (ovviamente con la fase di produzione lo ridurremo ulteriormente).

Purtroppo altre telecamere, specialmente quelle a cassette, non hanno questa possibilità: all’nhday abbiamo registrato con una di queste, collegandola direttamente ad un pc che salvava direttamente il video su file tramite Expression Encoder. Per non rischiare la risoluzione è stata tenuta bassa (640x480), ma poi il video non era così chiaro (in quel caso però non ci interessava particolarmente perchè tramite un altro strumento riuscivamo a registrare direttamente lo schermo dello speaker).

Meglio un’alta risoluzione rispetto ad un elevato bitrate
Da qualche esperimento che ho fatto, mi sembra che si ottengano file più chiari (sempre per quanto riguarda la possibilità di leggere il contenuto proiettato dallo speaker) dando maggior attenzione ad un’alta risoluzione rispetto ad un elevato bitrate, cioè, meglio registrare ad esempio a 1920x1080 rispetto ad un 1280x720, piuttosto che cercare di migliorare la qualità aumentando il bitrate (poi ci torneremo meglio parlando nello specifico, per ora dovrei tirar dentro troppi dettagli Smile).

Qualche esempio, giusto per capirci

Mostro un paio di video, per mettere a confronto i risultati che si ottengono:

  • http://vimeo.com/17700408
    questo è un video registrato in qualità standard (SD), come vedete si legge molto male lo schermo!
  • http://vimeo.com/17673599
    questo è stato registrato in alta definizione (HD), con risoluzione 1920x1080 e bitrate 1000kb/s: nonostrante il proiettore si trovasse molto più distante rispetto all’altro caso, si riesce a leggere il contenuto proiettato (soprattutto guardando il video a full-screen).

Questa volta è venuta un po’ lunga come “pillola”, speriamo almeno serva a vedere in giro video più leggibili Smile

Video editing in pillole #0: iniziamo!

E’ da un po’ che medito di scrivere questa serie di post (vuoi anche perchè dovevo completare qualche “esperimento”), ora i rumors che dicono ci saranno le registrazioni video dei Community Days mi hanno dato la spinta definitiva per iniziare Smile

Perchè questa “guida”

Intanto diciamo che non si tratta di una guida, quanto piuttosto di una serie di post in cui cerco di raccogliere le mie esperienze su questo argomento: dopo aver visto fare e (soprattutto) fatto tanti sbagli a riguardo, nonché averci perso dedicato diverso tempo per capire come arrivare a qualche risultato decente, spero di aiutare in qualche modo anche gli altri ad ottenerne.

Purtroppo sperimentare in questo campo richiede molto tempo (vuoi anche per il solo fatto che la codifica di un video necessita di diverse ore, a seconda di vari fattori tra cui, non da sottovalutare, il software stesso usato per eseguirla), perciò ogni consiglio che faccia risparmiare tempo è ben accetto (non solo quelli che fornisco io, anche i vostri se ne avete Smile with tongue out)

In realtà qui non si parlerà solo di video editing (inteso come elaborazione), ma anche dei modi per registrarli (con telecamera… e non solo): a differenza di un film, dove si può ripetere una scena infinite volte, spesso ci troviamo a riprendere situazioni in cui deve essere buona la prima, per cui meglio ridurre le possibilità di errore!

A chi si rivolge

Visto il posto dove ci troviamo, un’attenzione particolare andrà alla registrazione di video delle sessioni di workshop et simila, dove tra l’altro ho la maggiore esperienza (se di “esperienza” si può parlare!)… quindi in particolare mi rivolgo alle varie community che volessero provare a registrare e mettere online i video.

Dunque, uno degli scenari preso maggiormente in considerazione sarà quello di uno speaker che mostra slide e codice proiettati durante una sessione: molti lo sottovalutano, ma troppo spesso riprese video di questa situazione mostrano il contenuto proiettato praticamente illeggibile, con il rischio che risulti inutile soprattutto se si tratta di codice… un vero peccato, specialmente se ci sono dei modi per evitarlo!

Non sparate sul pianista… ma condividete Smile

Se non lo avete ancora capito Smile, qui saranno riportati principalmente consigli derivanti da varie esperienze fatte negli ultimi mesi (registrazioni workshop DotNetMarche, nhday, agile day, …), conclusioni prevalentemente sperimentali più che teoriche… quindi parliamo più di una guida “alla sopravvivenza” che di un materiale approfondito!

Non siate quindi troppo duri se posso scrivere cose non del tutto corrette, cercate in questo caso di riportare i vostri consigli!

A presto!