venerdì 28 novembre 2008
Per tutti gli estimatori del programma MVP, è nato il blog dell'Award MVP. A quanto dice il primo post sembra che verranno pubblicate le attività di rilevo degli MVP nel mondo.... feed aggiunto!
giovedì 27 novembre 2008
Delle volte mi sembra di parlare solo con delle pecore. Hanno sentito/letto che "Vista fa schifo" e stop, non c'è più nulla da fare, come caproni ripetono la frase all'infinito tappandosi le orecchie.
D'altra parte a scuola gli hanno insegnato solo ad imparare a memoria le poesie, quindi che bisognava aspettarsi?
Non sto a difendere i bug, che ci sono come dappertutto, o le disastrose performance di rete della pre-SP1. Anch'io ho cose che apprezzo e altre che non apprezzo, come il setup delle connessioni di rete.
Ma se facciamo un confronto con XP per velocità, stabilità, sicurezza e usabilità non c'è proprio storia. Vista e 2008 tutta la vita.
Durante la beta di Vista sono girati per mesi i whitepaper che informavano di tutte le breaking changes che avrebbero reso la vita difficile o compromesso la compatiblità con certe applicazioni. E puntualmente sono state ignorate. Le orecchie vanno tirate alle software house perché questi cambiamenti hanno migliorato la sicurezza e questo è un punto su cui nessuno può tirarsi indietro.
Entro pochi anni gli antivirus non solo saranno sempre più pedanti (e questo lo sono già ora) ma in pratica totalmente inutili.
D'altra parte Vista e 2008 sono una major release di Windows cioè la 6.0. Vogliamo parlare di che è successo al kernel 2.6 di Linux? Io ho macchine su cui non c'era più storie di farle partire, altro che compatibilità di applicazioni. E per questo non ho criticato questa scelta ma ho letto e capito che erano per lo più giustificate.
Ci sono due dozzine di novità fondamentali:
- UAC tutta la vita: AKA "finalmente non regalo più il token di amministratore a tutte le schifezze che scarico da internet". Non vi piace UAC? Godetevi i Virus oppure gioite ogni volta che dovete usare "runas". E poi provate a spiegarlo alla mamma come elevare i privilegi per cambiare l'ora del computer senza essere administrator su XP.
- Virtualizzazione di file system e registry. Questo è un gentile omaggio a tutte le software house che non hanno letto i whitepaper di cui parlavo prima. Chi riesce ad avere problemi nonostante questo deve avere del codice veramente "bello" ;-)
- COM Elevation moniker. Un modo per i dev di elevare i privilegi di quelle parti di una applicazione che richiedono assolutamente di essere administrator. Il resto della app può girare ovviamente come normale user.
- Una tonnellata di nuove policy per UAC, virtualizzazione, dialog di consent, etc.
- Detect euristico di una applicazione di setup. A volte è pure una rogna, ma è certamente il modo più soft per elevare i privilegi ad admin di un setup. In pratica se l'exe ha la parola "setup" o qualche variante nel nome, viene chiesto all'utente di elevarlo.
- Integrity Levels. Una vera rivoluzione nella sicurezza di un sistema operativo. I processi marcati con un livello basso non possono eseguire "read-up" nè "write-up" verso processi di livello più alto. Nè possono eseguire "write-up" su oggetti kernel (file e registry sono tra questi) di livello più alto.
Esempio? Semplice Internet Explorer gira con dei plugin dentro il proprio processo. Se uno di questi dovesse essere bacato ed eseguire del codice 'malicious' scaricato da una pagina web, non potrebbe fare danni agli altri processi che girano perché Internet Explorer gira dentro Vista e 2008 in "Protected Mode" cioè integrity level "Low".
È ancora poco sfruttata ma è certamente una delle tecnologie di sicurezza (la cui teoria è degli anni 70) che possono dare ottimi frutti.
- UIPI. Per evitare che gli attacchi possano accadere con hook, sendmessage, postmessage, injection, ecco arrivare un sistema di filtro che impedisce ai processi di livello più alto di "dialogare" con quelli di livello più alto. E il tutto con le API per controllare il filtro ovviamente, ivi compreso un flag di Bypass per le applicazioni di accessibilità (per i portatori di handicap) che devono simulare mouse e tastiera su qualsiasi processo.
- Sessione 0 totalmente svuotata di codice utente. Qui girano solo i servizi, i profili, le group policy, la local system authority e la service control machine, ma niente più applicazioni utente.
Di conseguenza niente "interact with desktop" ma di non farlo lo ripetiamo ai dev da sempre
- Niente più GINA ma un sistema di credential provider che permette di sviluppare e gestire i sistemi di autenticazione separatamente (password, smartcard, fingerprint, ...). Tutto totalmente riscritto e decisamente più funzionale per l'utente.
- Per-service SID. Una manna dal cielo avere un SID per ciascun servizio per poter confinare i permessi. Non ci sono parole ma i sistemisti dovrebbero fare salti di gioia, e gli utenti essere felici della maggiore sicurezza acquisita.
- ASLR. Un sistema per randomizzare il base-address delle immagini PE (Exe, dll). Migliora (non scongiura del tutto, ma non esiste la sicurezza 100%) la resistenza ai buffer overrun.
- Ready-boost e ready-boot per migliorare le performance con l'ausilio di chiavette USB
- Nuove primitive di sincronizzazione
- Nuova infrastruttura di thread-pooling
- Service thread tagging
- Supporto per dischi con settori di grossa dimensione
- Chkdsk online e ridimensionamento volume (NTFS)
- Advanced-IPC per comunicazioni in kernel mode
- TCP/IP stack rifatto da zero
- NAP (Network Access Protection). Win2008 impedisce l'accesso alla rete se il client Vista non risponde a certi requisiti (patch, firme virus, presenza di applicativi, ...)
- Protected Process per il DRM
- Windows Resource Protection (evoluzione del Windows File Protection)
Novità grafiche? Quali? Se c'è una cosa che non mi interessa è quella e Microsoft ha regolarmente toppato spingendo *SOLO* quelle. Uffa.
Adesso, calcolando che 2 giorni di corso mi bastano a malapena per parlare di tutte queste cose, come faccio a TechDays/WPC a parlare in una sola ora della part di sicurezza? Le slide in bozza erano 83 e ho dovuto tagliare peggio di un giardiniere allergico.
A parte questo la mia intolleranza ai chiaccheroni rimane, tutta.
mercoledì 19 novembre 2008
Microsoft aveva richiesto che fossero disponibili in modo free ed ecco puntualmente che la ISO comunica la loro pubblicazione.
I file si trovano qui e sono quelli identificati da "ISO/IEC 29500" che ad oggi si trovano in fondo alla pagina di download.
Negli imminenti TechDays/WPC, la cui keynote sarà a cura niente meno che di David Chappel, una delle mie quattro sessioni è proprio su come creare/leggere documenti basati su questo nuovo standard.
domenica 16 novembre 2008
Partito con 40 minuti di ritardo da Barcelona, sembrava comunque una missione possibile.
Il tutto comincia al fast bag-drop checkin (avendo già fatto il web checkin) dove mi dicono da subito che la mia valigia sarebbe stata persa... come inizio non c'è niente male.
Poi l'arrivo a Roma e il ritardo del volo per Genova (inizialmente schedulato per le 21:40) alle 00:20 e successivamente partito alle 2:15 del mattino!!!
Intorno alle 22:30 ci suggeriscono "caldamente" di salire sul volo precedente, anch'esso con più di due ore di ritardo. Ma la cosa allucinante è che ci fanno salire "al volo" cioè senza cambio di biglietto e senza aggiornamento della lista passeggeri. Tanto per capirci ho dovuto chiedere il nome del volo ad un altro passeggero che stava salendo perché non avevo la più pallida idea di che cosa fosse.
Una volta sull'aereo sembrava fatta ma poi il capitano annuncia: "forse ce l'abbiamo fatta, dico forse perché manca il personale per sganciare il bridge (la passerella)". Poi dopo una decina di minuti si decolla.
Arrivo a casa e suppongo che la valigia mi seguirà con il volo che avrei effettivamente dovuto prendere, invece a quanto sembra la valigia non è salita neppure su quel volo. Let's wait ... :-(
Sono convinto che non debba servire altro per dire che la chiusura è senza dubbio l'unica soluzione possibile. Questa è agonia.
Ho speso la maggior parte del mio tempo a fare "networking" con MVP, attendees e persone del team. Il resto l'ho passato alla zona ATE (Ask The Expert) e in sessione.
Organizzazione. In quello che ho chiamato il TechEd degli estremi nel precedente post mi sembra che il (poco) budget a disposizione degli organizzatori sia stato speso male. Ho una lontana esperienza in organizzare eventi ma ci sono tanti piccoli dettagli che all'occhio del pubblico avrebbero certamente dato maggiore soddisfazione.
Fa specie vedere per esempio che dopo tanta attenzione a non 'sperperare' le borse TechEd durante la registrazione poi le regalassero all'ultimo giorno. Ho visto gente che si è portata via interi cartoni con le borse dentro :-o. Lo stesso è valso per borracce, penne, magliette e quant'altro, letteralmente tirate agli attendees che passavano dalla zona espositiva subito prima della sua chiusura.
Aspetto tecnico. È evidente che la vicinanza della PDC non ha giovato perché IMHO ci sono state molte assenze illustri di speaker che avrebbero potuto dare maggiori dettagli delle tecnologie emergenti.
Gli stessi speaker hanno avuto grossi problemi nel tarare la conoscenza minima richiesta per seguire la sessione. Faccio alcuni esempi: nelle sessioni su WF 4.0 lo speaker provava a spiegare in cosa consistesse la tecnologia anche per chi non la conoscesse; in OOXML ben 45 minuti spesi a parlare delle novità di C# 3.0 (non 4.0) per usare Linq sui documenti e gli spreadsheet; Nino mi dice che è accaduto lo stesso su diverse sessioni a cui lui ha assistito; etc. etc.
Tecnologia. Ci sono cose strabilianti come il nuovo VS2010 che lasciano a bocca aperta. La storia attorno a WCF, WF, Dublin (quello strato sopra IIS che permette di gestire il ciclo di vita di servizi WCF e WF) è anch'essa spettacolare.
Ma ci sono anche aspetti che mi hanno lasciato con l'amaro in bocca. Il messaggio di Geneva Server e relativo Framework (per dirla proprio in poche parole, Geneva Server è uno strato sopra Active Directory per la gestione dell'identity in ambienti eterogenei, mentre Geneva Framework è l'SDK che permette di svilupparci).
Per le enterprise che seguono fedelmente Microsoft e che implementano AD ovunque, è certamente una novità bella e importante. Per i milioni di siti Asp.net che ovviamente non possono usare AD e che hanno fatto la fortuna del Framework.NET c'è ancora da aspettare. Non sarà Geneva Framework a risolvere tutti i loro problemi (beh, qualche problema lo risolveranno comunque). E da quello che ho visto anche Cardspace 2 non credo sarà la svolta definitiva, lo dico con grande rammarico.
Ovviamente siamo ancora alla beta e quindi è da vedere cosa accadrà dopo i feedback post-TechEd.
Un dato oggettivo è che durante la sessione su Geneva, applausi non ce ne sono stati, neppure quando sollecitati dai due speaker, e questo credo che la dica veramente lunga.
Ringraziamenti. Il mio grazie va a tutti gli amici con cui ho trascorso l'evento e anche allo staff della ATE che è stato gentilissimo in ogni occasione.
Per concludere una domanda amletica: perché le sessioni PDC sono pubbliche mentre quelle del TechEd no?
Qual'è la strategia? E perché non dirlo a chiare lettere prima della registrazione degli attendees?
Purtroppo ho avuto meno tempo del solito per bloggare le sessioni ma complessivamente il TechEd di quest'anno è stato il TechEd degli estremi: sessioni ottime o pessime, poche le vie di mezzo.
Tra le sessioni che mi sono piaciute di più ci sono:
- Aaron Skonnard che ha parlato delle novità di Workflow Foundation e WCF 4.0. Bellissima sessione, grande speaker, fantastica tecnologia. Tutto molto più semplice nella nuova 4.0 e ci vorranno tanti post per tornare sulle singole novità che faranno certamente rumore positivo.
- Ale Contenti che ha illustrato la nuova generazione di applicazioni C++ e MFC. Ancora una grande sessione con un Ale umorista e che ha risposto a tantissime domande alla fine della sessione. Dalla sessione traspare tutto l'enorme lavoro che il team di VC++ ha fatto e sta facendo per il nuovo Visual C++ 2010 ("Dev 10 is the new 6!").
- Marian Luparu che ha mostrato le nuove caratteristiche di msbuild specificamente per VC++ ma che come sappiamo è possibile usare per tutti i linguaggi. Le novità portano maggiore flessibilità, estensione e customizzazione con la produzione di log dettagliati per venire a capo dei problemi più infidi (in un esempio si vede come diagnosticare la ricompilazione di sorgenti che non sono stati modificati).
Non tutti i presenti a mio avviso hanno colto l'importanza che introduce VS2010: Con il nuovo IDE sarà possibile compilare con toolset diversi (per esempio quelli di VS2008, predenti, SDK, DDK, Linux, etc.). Io ho fatto la OLA quando avevo saputo di questo ad Aprile durante il Summit MVP. Microsoft farà lo shipping dei settings più recenti ma ciascuno può costruirsi i settings per pluggare i toolset preferiti. - Sean Laberee ha mostrato le novità dell'editor di VS2010 e la sua estensibilità. Un sogno che diventa realtà. Un editor WPF nel quale ciascuno può facilmente pluggare le proprie customizzazioni, dall'highlighting a grafica WPF, overlay o quant'altro venga in mente. Semplicemente delizioso.
mercoledì 12 novembre 2008
I segni sono evidenti dopo lo sfarzo del passato, che certamente in molti casi era eccessivo. A mio avviso siamo passati da un estremo all'altro.
Frigoriferi incelofanati a fine giornata in modo da evitare il 'saccheggio' delle bibite, a giorni alterni il pranzo al sacco, la quasi totale assenza di gadget nella zona espositiva, l'assenza di copertura di wifi dentro le sale delle sessioni, quasi totale assenza di party per gli attendees (come ci manca Lorenzo! :)), borse per speaker ed expert senza penna e t-shirt della conference, etc. etc.
Questo è certamente un segnale forte e ignorarlo sarebbe da folli.
Complimenti a Giorgio per la sua splendida sessione 'tutta demo' sullo sviluppo di applicazioni Silverlight per mobile devices. Non lo dico per campanilismo ma perché è stato brillante nell'esposizione e molto concreto nei contenuti.
La sessione è partita da una applicazione Winforms con una UI non-tradizionale sviluppata al volo. From con background, trasparenze, angoli smussati di un button erano le difficoltà da abbattere con il Compact Framework. Il tutto accompagnato da una simpatica gag per cronometrare il tempo necessario al suo sviluppo.
Poi ovviamente è passato a cronometrare la analoga applicazione con Silverlight 2 per mobile e naturalmente il risultato è arrivato in tempi nettamente inferiori (un ordine di grandezza).
Questo si può dire che è il messaggio chiave della sessione. A tutto ciò sono seguite una raffica di demo interessanti che facevano uso di inking, gesture e alla fine persino l'uso dell'accelerometro dello smartphone per pilotare una applicazione WPF installata sul desktop. Demo decisamente ingegnosa e 'pericolosa' visto che basata su una build decisamente troppo recente :)
Il racconto ancora una volta non può rendere giustizia alla presentazione e se vi capita, questa è una di quelle che meritano.
Oggi ho passato tutta la mattinata e parte del pomeriggio nel booth SDL (Security Development Lifecycle) in qualità di "Expert" nella zona "Ask The Expert". Se qualcuno mi legge ed è da queste parti mi troverà anche Mercoledi e Giovedi pomeriggio.
Peccato che non abbiamo nulla da dare agli attendees. L'anno scorso distribuivamo uno dei libri di Michael Howard (molti dei quali sono stati autografati al volo) mentre quest'anno abbiamo solo dei depliant.
Ovviamente le cose che contano sono tutte sul web.
Le novità annunciate al TechEd:
http://blogs.msdn.com/sdl/
Il nuovo Tool di threat modeling:
http://www.microsoft.com/downloads/details.aspx?FamilyID=a48cccb1-814b-47b6-9d17-1e273f65ae19&displaylang=en
martedì 11 novembre 2008
Magnifica sessione di Pat Helland che riaffronta per l'ennesima volta l'argomento dati.
Uno slide deck lunghissimo e denso di argomenti che difficilmente si possono raccontare. Il punto che mi ha fatto più riflettere è la debolezza del ruolo che ha lo schema dei dati in un database. Viene mostrato quanto sia debole ciò he sembrava essere un punto di forza.
Pat non toglie alcun merito al ruolo e al compito del database così come è oggi (e a cui tra l'altro lui stesso ha dato grossi contributi) ma mette in evidenza come la rigidità dello schema possa spesso essere un problema quando i dati a lui destinati provengano da un grosso numero di sorgenti differenti. Una possibile soluzione è quella di fornire una sorta di estensione dinamica in modo che questo non debba necessariamente essere conosciuto da tutti a priori. Poi passa al paragone tra lo schema rigido rispetto all'opzione rilassata di corrispondenza nome/valore.
Ma questo non è che solo uno dei tanti argomenti toccati da Pat. Se avrete occasione di vedere il video di questa sessione, ne vale certamente la pena.

È Mike Downen lo speaker della sessione che si focalizza sui problemi di gestione del ciclo di vita di una applicazione, usando il Framework 3.5 SP1.
Tra le cose interessanti c'è un tool su codeplex che permette di customizzare il pacchetto del Framework.net da installare sulla macchina. Il client profile del Framework 3.5 SP1 non è altro che una scelta di Microsoft sugli assembly più usati sul PC ma a quanto pare è possibile creare un pacchetto ancora più minimale.
Come avevo detto nella sessione sulle performance viene sottolineato che gli assembly in GAC sono verificati solo al deploy mentre gli altri sono verificati al load e questo fa una grossa differenza in performance. Lo strong name bypass della 3.5 SP1 risolve questo problema. Nella 3.5 SP1 non viene fatto il controllo dell'assembly se questo gira in full-trust.
Poi si passa al discorso di performance. La 3.5 SP1 introduce una serie di ottimizzazioni per il 'cold startup' che vedono un miglioramento del 10-20%.
Ngen può fare una bella differenza. Per esempio Essendo pre-jittato se il nostro assembly è usato da più processi, questo viene riutilizzato e quindi consente di dimnuire il working set.
Un dato importante è che i nostri assembly jittati con ngen hanno una dipendenza diretta da quelli del Framework. Questo significa che se Microsoft fa una service pack che modifica mscorlib, tutte le immagini native dei nostri assembly sono invalide. Per ovviare a questo problema, ad ogni update Microsoft invoca 'ngen update' che aggiorna le immagini jittate con ngen su quel pc.
Viene inoltre ricordato che è importante scegliere con attenzione il base address dell'assembly durante la creazione dell'immagine nativa da parte di ngen. Diversamente il caricamento sarà più lento e non potremo usufruire del vantaggio di avere condiviso l'assembly tra più processi (con maggiore occupazione di memoria).
Per verificare che isano realmente caricate le immagini create da ngen si può usare per esempio il Fusion log viewer.
La maggior parte degli argomenti della sessione è solo un ripasso di tanti concetti già noti, ma alcune cose sulla 3.5 SP1 sono novità molto interessanti.
lunedì 10 novembre 2008
La keynote che apre l'evento del TechEd 2008 è tutta su Visual Studio 2010 e presentata da Jason Zander, General Manager di Visual Studio.

In una serie di demo lo speaker presenta le varie caratteristich, molte delle quali sono già presenti nella CTP scaricabile dal web.

La nuova versione di Visual Studio è certamente un salto qualitativo enorme per la produttività del developer, questo è sicuro, peccato per l'esposizione troppo frettolosa. E le demo purtroppo non hanno aiutato perché non hanno dato modo ai presenti di capire quante e quali fossero tutte le (tante) novità. Avremo certamente modo di approfondire con le CTP alla mano.
Il biglietto lo avevo già in mano da un pezzo, altrimenti dopo quello che ho passato non credo proprio avrei volato di nuovo con loro.
Volo Genova-Roma-Barcelona. Arrivato a Roma, tutti in fila per scendere dall'aeromobile quando il capitano annuncia che "abbiamo preso di sorpresa il personale di terra che non ci aspettava". E tutti in attesa di scaletta ... che tristezza.
Arrivo a Barcelona, passa più di 40 minuti di nastro e niente bagagli. Non mi consola che più di metà aereo è nelle mie stesse condizioni. Con aria di sfottio il personale dell'areporto ci dice che è normale per gli aerei provenienti da Roma con Alitalia... a quanto pare godono di ottima fama.
Faccio la denuncia, mi danno un tracking number e adesso che è già mezzanotte sul sito di Alitalia compare ancora la scritta "Nessuna informazione disponibile". E questo che significa? Che è domenica e quindi tutti a farsi 'du spaghi'??? Altro che dirigenza, altro che amministratori, altro che politici, qui parliamo di fannulloni!!!
Sono sempre più convinto che il fallimento di Alitalia sia sempre di più l'unica soluzione, ma da oggi con una differenza. La chiusura di Alitalia dovrebbe portarsi dietro anche Fiumicino.
giovedì 6 novembre 2008
Durante PDC 2008 a tutti i partecipanti è stato regalato una piccola scheda di sviluppo Freescale che permette di "giocare" con una serie di sensori, il più interessante dei quali è l'accelerometro.
Questo tipo di sensori è tutt'altro che una novità. Io stesso ci sto giocando nel tempo libero collegato ad un microcontroller da 8bit. Il bello di questi sensori è che sono molto semplici da usare: alimentazione, taratura sul numero di "g" di riferimento, e uscita analogica (0-5V) su tre assi (ci sono accelerometri anche solo con due assi).
In foto, con il datasheet di sfondo, c'è l'integrato che uso. Vicino alla moneta da 1 Cent c'è l'integrato "fisico".
I telecomandi Wii usano lo stesso principio e il software che è stato sviluppato intorno a questo semplice sensore è senza dubbio straordinario.
La cosa interessante per gli "addicted" di PC è che Windows 7 introduce un nuovo set di API per standardizzare il modo in cui un sistema operativo parla a dei generici sensori.
Mi viene da pensare che il gran successo della Wii abbia contribuito a fornire questo supporto. Microsoft spesso intraprende progetti anche grossi pur di dare una soluzione che sia architetturalmente valida e questo mi fa ben sperare che anche i sensori avranno questo trattamento.
L'esempio più bello presente negli esempi del kit è quello della bilia che rotola su una superficie controllato dalla posizione spaziale della schedina. Se la scheda viene inclinata da parte, la superficie disegnata sullo schermo fa lo stesso e la bilia si muove di conseguenza. Il sample è realizzato con XNA sdk e non gira purtroppo in Virtual Machine perché richiede Pixel Shader 1.1.
Non ho ancora visto le specifiche delle API ma il fatto rendere standard il modo in cui si accede ad un generico sensore è di importanza enorme. All'epoca DOS per accedere alle schede video bisognava scrivere il codice specifico per ciascuna VGA, cioè il driver, che oggi è invece controllato tramite sistema operativo e perciò l'applicazione non fa altro che usare un set standard di API.
Per i sensori è sufficiente un driver "User mode" (evitando così i BSOD) che conosca la scheda ed il resto viene accesso tramite API di Win7.
Forza signori dev, adesso ci vuole un po' di fantasia su come usare questi goodies
.
lunedì 3 novembre 2008
Rispetto alle passate edizioni PDC 2008 è certamente stata una conferenza più realistica in quanto basata su tecnologie attuali o già in CTP. La sua caratteristica impostata sulla "visione futura" è comunque mantenuta perché tutto ciò che è stato presentato implica una serie di strategie per il futuro di Microsoft e di chi vorrà seguirla.
La nota più dolente per chi ha partecipato è senza dubbio il grave sgambetto che Microsoft ha fatto agli attendees, rilasciando pubblicamente tutte le registrazioni delle sessioni. Inutile dire che per tutti coloro con cui ho potuto parlare, sarebbe stato necessario dire a chiare lettere questa intenzione prima dell'inizio della registrazione all'evento.
Personalmente ho cercato di far fruttare la mia partecipazione di persona (in ordine cronologico):
- Numerosi incontri di persona con tanti amici e altre persone dei vari team (April, Ali, Nikola, Rob, Luca, ...)
- Incontro chiarificatore sul significato di Oslo con tanto di esempio creato al volo
- Interessante chiaccherata con David Chappel su Oslo
- Cena con il team del CLR a cui vanno i miei più sentiti ringraziamenti per la disponibilità (grazie in particolare a Andrew Dai e Shawn Farkas)
Le keynote
- Deludenti quelle "istituzionali" che hanno parlato per la stampa e non per i 6500 sviluppatori in sala. La presenza della stampa ha completamente offuscato il bello della PDC. Sarebbe stato meglio far vedere gli effetti grafici di Windows 7 ai giornalisti (evidentemente non tecnici) e parlare invece agli sviluppatori di quello che c'è dentro di Windows 7 (come peraltro si è intravisto in alcune sessioni).
Di fatto è stato ripetuto il grave errore già fatto con Vista. Puntano troppo sulla UI e troppo poco sulle tante cose belle che ci sono sotto. Occasione sprecata davanti a 6500 "affamati" del settore. - Molto interessante la proposta "Windows Azure" che però deve certamente essere sostenuta da una proposta commerciale a lungo termine. Se oggi una azienda investe in Azure deve necessariamente cambiare architettura ed al momento Microsoft è l'unico player con quella tecnologia. Che succede quindi se in 10 anni i costi di hosting decuplicano? Considerato che i piccoli ISV sono a mio avviso i primi ad avere maggiore interesse a spostarsi in questa direzione, questo aspetto è certamente cruciale.
- Deludente la mancanza totale della parola Oslo nelle keynote che è probabilmente la tecnologia per i developer più interessante della conferenza e per gli anni futuri
- La keynote migliore in assoluta è stata di Scott Guthrie che non ha tradito la sua ottima fama: chiaro, efficace e illuminante. Qui si sono viste le cose che i developer si aspettavano e le novità fantastiche che arriveranno in Visual Studio 2010.
- Molto bella la keynote di Microsoft Research che ha fatto vedere i progetti su cui sta facendo ricerca (si parla di 330 milioni di dollari nei prossimi 5 anni)
Le sessioni
- Mancanza di comunicazione per i concetti di Oslo. Dopo una giornata di conferenza e due sessioni introduttive, non c'era una persona con cui ho parlato che avesse le idee chiare su cosa fosse!
Come ho già scritto nel blog solo una lunga conversazione a quattrocchi con una persona del team ha chiarito tutti i miei dubbi. - Diverse sessioni sono durate solo mezzora lasciando il resto del tempo ad una Q&A. Personalmente ritengo che questa suddivisione dei tempi sia sproporzionata.
- Tempo ben speso nelle tante sessioni sulle tecnologie che stanno arrivando o che stanno per andare in RTM: C#, CLR, F#, M, WPF, WCF, WF, WS, C++, ...
La tecnologia
- In viaggio ho finito di leggere il libro su Oslo che ci è stato dato in conferenza e mi piace, mi piace, mi piace. Sono sempre più convinto che il suo successo sia legato ai tool ma credo che questo Microsoft lo sappia bene.
- Tantissime novità tanto che sono rimasto sorpreso di quanto poco siano state esaltate nelle varie keynote. Sembra quasi che tutti i team siano così immersi nel loro lavoro di "dimenticare" di urlarlo ai quattro venti.
- Molto interessante anche le nuove API di Windows 7. Tra queste quelle di un sensore con accelerometro che ci è stato regalato in conferenza. Se riesco a farlo funzionare in VM lo porterò con me alla prima occasione di incontro con le community.
Conclusione
Più che developer sembrava una architect conference. Azure e Oslo, due strategie/tecnologie che sono certamente orientate al modo in cui disegnare una applicazione, l'hanno fatta da padrona. Questo è sintomatico di una tecnologia, il Framework.NET, che ha trovato un suo equilibrio tecnologico, ma che vuole dare risposte a problemi di ordine architetturale:
- La virata verso la programmazione funzionale è certamente sintomatico di una doppia necessità: abbattere gli errori tipici da programmazione OOP/imperativa; necessità di trovare una espressività che consenta la parallelizzazione con il minimo della collaborazione da parte del developer.
- Definire un modo più efficiente di accedere ai dati puntando tutto sull'armonizzazione dei type system (del db e del Framework) e nel fornire i metadati tanto utili per autodescrivere i dati.
- Fornire agli sviluppatori delle strategie di sviluppo che minimizzino gli errori architetturali (la combinazione Entity Framework + Oslo e le best practice per WPF distribuite a tutti nei booth Microsoft a mio avviso vanno in questa direzione)
sabato 1 novembre 2008
A questo punto ci spero, nonostante io sia il primo a perderci considerato che ho ancora dei biglietti da usufruire.
Arrivo a Parigi da Los Angeles, vado al desk di AirFrance che svolge il servizio per conto di Alitalia e mi dicono che il volo che mi è stato venduto ... NON ESISTE! Non sto dicendo che sia stato annullato ma proprio che non esiste. Sembra che il calendario autunnale non sia stato aggiornato e quindi mi hanno venduto una cosa che non c'è.
Fantastico, non c'è che dire, Non mi interessa sapere se la colpa è di quello che ha fatto il sito, di quello che non ha aggiornato i dati sul DB per i voli autunnali, di quello del call center che mi ha assicurato prima di partire che era tutto a posto, di quello che non ha mandato la mail. Io ho comprato un volo AKA servizio e non mi è stato erogato. La colpa è di tutti perché la vittoria e la sconfitta di una azienda è condivisa da tutti, nessuno escluso.
Questo per non parlare del fatto che sulle prenotazioni Alitalia non viene scritto a quale terminal andare a prendere il volo e che se provi a telefonare al call center per avere informazioni sul tuo volo non ti risponde nessuno. La vergogna viene condivisa da tutti perché nella barca di sono tutti quanti, NESSUNO escluso.
A questo punto forse è meglio che venga demolito tutto e i migliori, se sono veramente tali, troveranno certamente spazio per esprimersi meglio di prima.
Greetings from Paris ...
Prima di tutto vanno i complimenti al brillantissimo Luca Bolognese per la sua splendida sessione su F# che ha riempito e mandato in overflow l'aula. Non lo dico perché ci conosciamo ed è genovese come il sottoscritto ma perché lo ha dimostrato sul campo con applausi continui dalla platea.
F# è un linguaggio funzionale che incorpora una serie di caratteristiche tipici dei linguaggi objecto oriented. Questa scelta lo rende usabile e spendibile in applicazioni reali senza alcun compromesso. Lo stesso Luca alla fine della sessione cita casi reali in cui F# è già stato adottato e in produzione per le sue caratteristiche 'pratiche'.
La sessione è tutta a demo. In prima battuta scrive in F# un algoritmo di parsing che non usa caratteristiche funzionali ma simil C#. È ovviamente sbagliata come impostazione ma aiuta tutta la platea a seguire in che modo un algoritmo di parsing possa essere semplificato.
Purtroppo non ho il tempo di bloggare i dettagli ma certamente ci tornerò sopra considerato anche che ci avevo già cominciato a giocare un po'.
Chris Anderson e Giovanni Della Libera sono gli speaker della sessione che è certamente una delle più interessanti della PDC 2008.
I concetti di Oslo, come ho già detto nel post precedente, non sono stati capiti dalla maggior parte degli attendees. Io ho potuto risolvere i miei dubbi iniziali andando al booth Oslo come fossi un Samurai... ero deciso a metterci le tende pur di avere risposte chiare che mi sono state date.
Il punto è che il messaggio di poca chiarezza è arrivato forte e chiaro al team e infatti in prima fila era presente Don box, Martin Gaudgin e molte altre persone del team.
Ma veniamo al dunque. La sessione parla specificamente di MGrammar, quella parte di M che serve a creare la grammatica di un DSL testuale. Niente di meglio di un esempio per fare chiarezza sull'uso di MGrammar.
Intellipad suddivide la schermata in tre porzioni verticali:
- Sinistra: il comando testuale di cui fare il parsing ... in pratica il nostro nuovo linguaggio
- Centro: il linguaggio che definisce le regole grammaticali
- Destra: il grafo che è il risultato del parsing. È suddiviso in nodi e 'successors' che possono essere iterati recuperando i dati parsati
Il linguaggio è molto versatile e consente di definire semplicemente:
- quali siano i caratteri da ignorare (per esempio spazi e 'a capo')
- la sintassi per riconoscere i vari pezzi da parsare che fa uso di lambda function
- i token che, in modo simile alle regular expression, definiscono come sono costituiti gli elementi cghe rappresentano i dati
- ricorsività che serve ad eseguire un parsing efficiente dei dati che possono ripetersi
Una volta definita la grammatica uso mg.exe per creare i file mx (l'integrazione di Visual Studio arriverà presto ed è comunque già possibile con pochi passi manuali in questa prima CTP).
Il risultato della compilazione è un file mgx che è un package OPC, quindi uno zip con dei contenuti XML al suo interno.
Fatto questo, creo un normale progetto .NET, referenzio un paio di assembly (Microsoft.M.Grammar e System.DataFlow) e scrivo il codice per caricare e parsare la grammatica, ottenendo così il grafo.
Questo è l'inizio e non sembra poi così complesso. Personalmente credo che il successo di questo strumento sia strettamente legato ai tool visuali che Microsoft o terze parti integreranno in Visual Studio per rendere più semplice (visuale) la creazione del file che definisce la grammatica. Se questo avverrà, credo che vedremo finalmente nascere l'epoca dell'industrializzazione del software.
Oggi tutti i software sono opere di artigianato in quanto ogni singolo sviluppatore può fare la differenza tra un software di successo o un clamoroso flop. I DSL danno la possibilità alla software house di costruire una serie di piccoli mattoncini verticali al dominio dell'applicazione che possono essere usati da un power user per eseguire delle customizzazioni.
Facendo un parallelo tra l'industria automobilistica e il software, in una catena di montaggio di una specifica automobile si può costruire solo quel modello ma sono ammesse una serie di varianti come il colore, gli spoiler, etc.. L'operaio non solo non è determinante sulla perdità totale di qualità del prodotto, ma ha dei constraint, cioè possiede solo gli strumenti che servono a quella specifica attività (montare il finestrino piuttosto che il paraurti).
La strada di Oslo è lunga ma promette certamente molto bene.
È Joshua Goodman lo speaker della affollatissima sessione sulle novità nel CLR 4.0. Dopo il CLR 2.0, la 4.0 è la versione successiva (nel Framework 3.x il CLR è quello della 2.0) ed introduce numerose novità.

- Certamente la novità più importante è quella che un processo potrà far girare sia la versione 2.0 che 4.0 contemporaneamente. In pratica dei plugin che girano con una versione differente di CLR rispetto a quella dell'applicazione potranno girare con la versione di CLR desiderata. Questo evita tuta una serie di side-effect e lo speaker cita un plugin di Outlook usato internamente dagli 'executive' che era realizzato con la versione 1.1 ed aveva un bug sul multithreading. Con la versione 2.0 il runtime, essendo più veloce, ha evidenziato il bug rendendo sistematicamente impossibile il suo utilizzo. Sarà anche possibile usare file di configurazione differenti per il codice che gira con una versione differente di CLR.
- No-PIA di cui ho già parlato nel dettaglio nel post della sessione dedicata a questo tema
- Nuova classe Tuple<> che facilita linguaggio com F# e Python ma che sono comodi anche per C#
- Notifiche prima di una Garbage Collection di tipo Server in generazione 2. Questo consente di eseguire load balancing ed evitare latenza.
- Background Collection sul GC di tipo Workstation. Con la 3.5 SP1 il GC può eseguire buona parte della Garbage Collection di generazione 2 in background senza sospendere l'esecuzione del codice managed.
Con il CLR 4.0 la collection in generazione 0 e 1 può avvenire contemporaneamente a quella di generazione 2, eliminando così buona parte dei problemi di latenza. - Possibilità di eseguire attach/detach di profilatori su memoria e performance counters. Il meccanismo non è invasivo (niente registry) e usabile anche in produzione.
- È possibile ora eseguire il catch di eccezioni di bassissimo livello come la corruzione dello stato e della memoria nel processo. Utile per eseguire dei log/dump prima di abbandonare l'esecuzione del processo.
- Supporto per il debugging misto 32/64 bit.
- API per capire chi sta mantenendo un lock o chi ne è in attesa
- Code Contracts. È un nuovo sistema per validare i parametri di input e il valore di output di un metodo. Nel metodo si usa CodeContract.Requires per validare i parametri di input oppure CodeContracts.Ensures per verificare che l'output rispetti certe condizioni. La cosa interessante è che è possibile usare i CodeContract sia con dei tool di analisi statica che a runtime. Siamo di fronte a una nuova generazione di validatori.
Non ci resta che provare tutte queste belle cose nella Virtual Machine. Da quello che vedo il CLR è sempre più potente e l'incremento delle performance e la duttilità del Garbage Collector lo rendono sempre più appetibile persino per applicazioni estreme come i videogame.
giovedì 30 ottobre 2008
È il preparatissimo Nikola Dudar a presentare questa sessione. Nikola prima era parte del team di Visual C++ e tempo fa era venuto a Milano per il Visual C++ tour, poi abbiamo fatto un intervento insieme presso un ISV e successivamente al MVP Summit.

Questa nuova libreria è un nuovo set di Win32 API con nessuna dipendenza dal Framework.NET che nascono con Windows 7. La bella notizia è che sarà disponibile come package per tutti i sistemi operativi Windows a partire da XP.
Gli standard implementati sono quelli WS-* (SOAP) che permettono l'interoperabilità con WCF, ASMX e non-Microsoft stacks.
Si parte dalla demo che vede la realizzazione di un client nativo che consuma un servizio WCF. Una utility produce un wrapper in linguaggio C che permette di dimenticare totalmente tutta l'infrastruttura e il messaggio soap. In sostanza ci sono wrapper per ciascuno dei tre pilastri di un web service: ABC (Address, Binding, Contract).
Viene poi mostrato come prendere totale controllo delle opzioni del messaggio, le modalità di trasporto, gli header in caso di trasporto http, e le opzioni per usufruire di WS-Security.
Non tutte le opzioni/protocolli di WCF sono supportati in questo momento ma considerato che WCF è in grado di esporre più endpoint contemporaneamente, non lo vedo come grosso problema.
Per quello che riguarda il messaggio XML, c'è pieno controllo al contenuto del messaggio, quindi encoding Text, Binary e MTOM. Il messaggio è fruibile con tre opzioni: XmlBuffer, XmlReader, XmlWriter.
Nella serializzazione vengono mappato lo schema Xml a dei tipi "C".
La ciliegina sulla torta è uno speciale heap che viene utilizzato per evitare le noiose allocazioni in stile C (chiedere all'API la dimensione da allocare, richiamarla con l'allocazione). Questo heap invece semplifica enormemente il task.
Ritengo questa soluzione perfetta per moltissimi scenari in modo da evitare la dipendenza da COM o Assembly. Il livello di disaccoppiamento offerto da un servizio calza alla perfezione in uno scenario di interoperabilità con il codice nativo in quanto permette una evoluzione indipendente delle versioni e soprattutto nessuna dipendenza dalla versione del compilatore C++.
