“Open Standards”, il giorno dopo

Ricapitolando:

  • Lo stream era effettivamente h264, ma VLC (1.1.14 per Windows) non be ha proprio voluto sapere di visualizzarlo; in compenso sull’iPhone si vedeva benissimo quindi ho seguito così l’evento
  • Ho fatto benissimo ad attendere la presentazione della nuova versione di Apple TV, così ora sarò ancora più sicuro nell’acquistare il WD Live HD <g> Peccato, se a quel prezzo e con quel fattore di forma avesse supportato almeno DLNA ci avrei potuto fare un pensierino. La mancanza del supporto FullHD, dato il prodotto, IMHO non è una penalizzazione eccessiva: in fondo, Apple TV è un “aggeggio” per fare streaming via Internet, e temo che nemmeno negli USA la banda sia sufficiente per fare streaming real time di contenuti 1080p.
  • iTunes 10 visualizza a sx la thumb della copertina dell’album, e a dx l’elenco delle canzoni. Ottima idea: se non fosse che Windows Media Player e lo Zune player lo fanno da anni, oltre che “ottima” sarebbe stata anche “originale”
  • Anche il “social network della musica” è una idea interessante; *2 anni addietro*, quando acquistai lo Zune, fu uno dei primi servizi che attivai: guardavo la mia pagina del profilo beandomi che i miei “top ascolti” fossero: Afterhours, Depeche Mode, Joy Division, Cure, … E nel sapere che i 4 gatti che lo bazzicavano lo avrebbero saputo. Al pari del punto precedente, sono contento che anche in questo caso le fotocopiatrici di Cupertino abbiano funzionato bene <g>

 

P.S.: Tra parentesi, l’idea del social network era talmente interessante che Microsoft l’ha ormai praticamente ridotta ai minimi termini, mentre Apple la cavalcherà e tutti crederanno che sia una sua idea. Un po’ come inventare XMLHTTP (e quindi AJAX) per poter implementare OWA e poi dimenticarselo lì per *anni*, e poi tutti a credere che ad innovare sia stata Google quando pubblicò Google Maps. Cose che succedono, se il marketing te lo fa Topo Gigio <g>

 

“Open Standards”

Ricapitolando: Apple trasmetterà in streaming il proprio evento di oggi e, parole sue, lo farà utilizzando degli “open standards” che però, “casualmente”, sono fruibili solo da client Mac OS X 10.6 e iOS 3.x (o superiori). Quindi:

  • Non posso vederlo con il mio Mac Mini, perché essendo un PPC ha installato Mac OS 10.5 (è una macchina del 2005, vorrete mica che Apple la supporti ancora?)
  • Giacché sono così attenti agli “open standard”, attendo trepidamente che Apple butti via il “proprietarissimo” stack XCode/ObjectiveC buttandosi a capofitto su MonoTouch o Silverlight, che sono basati su ISO 23271 e H264 <g>

‘nzomma, mi sa che l’evento mi tocca vederlo sul “francobollo”, cioè sullo schermo dell’iPhone (suppongo che a quell’ora il MacBook mi servirà ancora per lavorare). Bei tempi quando “Grande Fratello Microsoft” trasmise l’evento di lancio di Visual Studio 2010 ed io me lo guardai usando Moonlight sul netbook Ubuntu

 

Technorati Tag: ,,

“Finestre”?!?!?!?

Ma ce lo vogliamo mettere un bel “ROFTL” per quel “Finestre” nella documentazione di Bootcamp? <g>

FinestreBootcamp

Technorati Tag: ,

Dropbox feat. roaming profiles

Il mio notebook è un MacBook, ma sul netbook ho Ubuntu. La mia dev machine è una Windows Box (in realtà + di una: VS6+VS2003 su XP, VS2005/2008 in una VM Win7, e VS2010 su una macchina Win7), e il telefono un iPhone. La rottura di palle scocciatura più grande è ritrovarsi a dover lavorare su un documento che *casalmente* (mica tanto casualmente, si chiama “Legge di Murphy”) è su una macchina differente da quella che hai con te. O meglio… *era* dover lavorare sul tal documento: oggi ho rotto gli indugi ed ho creato nel mio folder Dropbox le directory: “Documents”, “Photos”, “Videos” e “Music”, e le ho incluse nelle library di Windows 7 di tutte le mie Windows box. Risultato: ho sempre con me tutti i miei “preziosissimi” file, nonché un primo livello di backup offline “in the cloud”. Mi piace vincere facile, po-popo-popopopo!

Technorati Tag: ,

Tutto il mondo è paese, ma se lo avesse fatto Microsoft…

Premessa: il mio desktop è un MacMini dal 2005, il mio notebook è un MacBook ed il telefono un iPhone 3GS; se non fossi mediamente soddisfatto, non sarei più cliente Apple da un bel pezzo (considerando che il primo Mac sul quale misi le mani fu un Mac LC II e son passati tanti anni). Però… Però settimana scorsa ho acquistato un MacBook Pro per un “nuovo acquisto” di Managed Designs e… “Out of the box”, lo attacco alla rete per fare il primo “giro” di “Aggiornamento Software” (l’equivalente di Windows Update, per intenderci) e scarica *1,02* Gb di aggiornamenti. Eh già, in meno di un anno di vita Snow Leopard ha “goduto” dell’equivalente di 4 Service Pack (da v 10.6.0 a 10.6.4).

E poi: 2 settimane addietro ho aggiornato il mio iPhone ad iOS 4; beh, da allora la batteria dura *molto* meno e sono comparsi una serie di bug fastidiosissimi. Beh, probabilmente non sono stato l’unico ad avere problemi, ed infatti Apple ha già rilasciato il firmware v 4.0.1: ed eccomi qui quindi ad effettuare un bel download di 378 Mb per (sperare di) fixare un sistema operativo rilasciato da nemmeno un mese.

Nulla da dire: se ci sono problemi, è giusto ed apprezzabile che Apple li risolva. Ma pensate cosa si sarebbe detto di Microsoft se avesse rilasciato 4 SP nel primo anno di vita di Windows 7. O cosa si sarebbe detto se avesse dovuto rilasciare in fretta e furia una versione aggiornata di Windows Mobile a meno di un mese dal rilascio di quella precedente.

Architettura “vs.” Tecnologia

Ultimamente, per una serie di motivi, sto rileggendo alcune parti di “Domain Driven Design” di Eric Evans: ogni volta (e sarà almeno la quarta rilettura), emergono nuovi dettagli e “sento” di migliorare in maniera netta e profonda la mia capacità di design. Escludendo Goethe e “The catcher in the Rye” (che appartengono a Bounded Context differenti <g>), non ho difficoltà ad affermare che DDD sia, insieme a Refactoring, il libro che consiglierei a *tutti* coloro che abbiano un ruolo all’interno di un progetto IT; e quando dico “tutti”, intendo proprio “tutti”: ogni ruolo (analista, dev, architetto, project manager, …) ha “qualcosa” di importante da imparare da questi due testi. E, rileggendolo a qualche mese/anno di distanza, imparerà ancora. Ed ancora. Ed ancora. Ed ancora. E qui piazziamoci una bella ricorsione ad libitum :-)

E ciò fa a pugni con una parte di realtà professionale con la quale mi confronto quotidianamente: in Managed Designs riceviamo un significativo di richieste di corsi e, fatta la regola dell’80/20, l’80% delle richieste sono relative alla pura tecnologia. Ci viene richiesto un corso di NHibernate od Entity Framework, e non un corso su cosa un O/RM sia, come vada usato e su quale impatto abbia al livello architetturale. Ci viene chiesto: “fammi vedere come carico gli Ordini di un cliente con Entity Framework”, e non di capire cosa sia un fetch plan. Ci viene chiesto un corso di Silverlight & RIA Services e se si riesce a mettere in agenda “qualcosa” di MVVM c’è da leccarsi le dita, figurati se puoi provare a spiegare innanzitutto cosa sia Presentation Model (che esiste da una vita) e usare MVVM come una sua implementazione idiomatica.

Attenzione: non sto dicendo che i corsi tennologgici non abbiano importanza, sto dicendo che IMVHO sarebbe più importante chiedere dei corsi nei quali sia spiegato “come e perché” si appronti una soluzione e nei quali la tecnologia venga utilizzata per effettuare degli esempi, e non dei corsi nei quali l’unico “drive” sia la tecnologia stessa. Perché la tecnologia cambia, e se ciò che hai studiato è “solo” “quale metodo chiamo per fare X ma, ovviamente, prima ho dovuto impostare la proprietà Y al valore Z” beh… Ti ritroverai ad essere diventato un “guro” di Windows Forms che quando arrivano WPF e SL deve “rincorrere”, mentre se già in Windows Forms ti fossi “smazzato” Model View Presenter, trasferire skill (e magari anche recuperare codice) a Presentation Model MVVM sarebbe stato meno traumatico. Lo stesso dicasi per Web Forms vs. “MVC”, visto che Model 2 esiste da metà anni ‘90 (Struts anyone?). E il discorso potrebbe continuare citando: test, DIP/IoC, … e chi più ne ha più ne metta.

Certo, in un mondo nel quale nemmeno si sa che “quel pattern” in realtà si chiama Model 2 e *non* è MVC c’è poco da stupirsi. E non c’è nemmeno da stupirsi che “architetto” sia una buzzword che “fa figo” scrivere sul biglietto da visita, e non un ruolo che IEEE prima e ISO (mediante fast track) poi hanno definito in maniera standard sin dall’anno 2000 (10 anni, mica bruscolini). Che poi non è che lo standard sia perfetto, ma per criticarlo o negarne il valore bisognerebbe almeno conoscerlo, altrimenti sono solo chiacchiere. E se ha dei difetti, li si può correggere: l’iscrizione ad ISO ed ai suoi comitati è aperta a tutti. Tutti.

Altro che Software Factories: siamo un settore artigianale, e forse vogliamo rimanere tale. E magari non è nemmeno un male, se alla fin fine ciò che cerchiamo è la soddisfazione del nostro ego tecnico…

P.S.: ho chiuso i commenti perché, nel fortunato caso si sviluppasse una discussione sul tema, sarebbe bello mantenerla accessibile “nel tempo”, quindi ho creato un thread sul forum GUISA. Non sparate sul pianista: vorrebbe davvero essere lo spunto per una riflessione collettiva, perché io per primo sono interessato a capire meglio lo scenario…

NSK: Entity Framework, finalmente

La domanda è di Aigor, ma poiché penso possa essere di comune interesse la pubblico anche qui. Da un paio di giorni, ho “committato” in NSK il DAL basato su Entity Framework 4. Utilizza (come da requisito) il Domain Model “vanilla” perché si avvale del mapping “POCO style” introdotto con la v4 dell’O/RM di casa Microsoft. Ho temporaneamente desistito dall’implementazione del mapping “Fluent” perché la CTP attuale del toolkit “Code Only” (che nel gergo MS significa “POCO & fluent” <g>) per EF è ancora troppo acerba, ma appena arriverà una nuova build (e AFAIK non dovrebbe mancare molto) riprenderò i lavori anche su quel fronte (e, credo, anche sul fronte del mapping “fluent” per NH usando ConfORM).

Più in generale, anche l’utilizzo dell’idioma LET (del quale ho parlato qui) inizia ad essere “percepibile”, così come quella di Model 3. A questo punto, credo che per qualche settimana NSK rimarrà intonso perché in Managed Designs abbiamo iniziato il refactoring verso Model 3 + LET (che lavorano meglio insieme, un po’ come Ebony & Ivory <g>) del framework che utilizziamo per la realizzazione di applicazioni (e che, BTW, è anche alla base di un certo sito) per poter finalmente rendere disponibile qui il sorgente dell’applicazione forum (a.k.a. Agorà).

Poiché molto del codice di NSK deriva proprio dal suddetto framework, l’obbiettivo nel lungo periodo consiste nel far convergere Agorà e NSK in modo da renderli due moduli disponibili per lo stesso framework di base, che vorremmo rendere open source al pari delle applicazioni (e quindi probabilmente usando anche per esso la Common Public License). “Lavori in corso”, ‘nzomma: se son rose… :-)

Parlando di Repository…

…Su GUISA si sta sviluppando un thread interessante dedicato all’argomento “repository pattern”: idee/commenti/insulti sono benvenuti :-)

Technorati Tag: ,

Andrea&MVC @ DomusDotNet

Sentirsi a casa anche se, da casa, sei lontano più di 700 km. E’ questa la miglior descrizione che potrei dare della mia partecipazione al primo evento di DomusDotNet, e per questo posso solo ringraziare.

Le slide sono qui, la demo è la solita. Alla prossima, e speriamo che sia presto :-)

Technorati Tag: ,,,

NSK: status update

Piccolo recap:

  1. A partire dal post di Giulio sul forum GUISA, il mapping fluent/POCO/code only con EF4 è la domanda che ultimamente ricevo più spesso. Un po’ per rispondere a tutti in “colpo unico”, un po’ perché la documentazione è effettivamente molto carente (in fondo si tratta di una feature in CTP3), ho iniziato a lavorare “seriamente” sul DAL EF4 di NSK: è ben lungi dall’essere finito, ma la “raffica” di check-in di ieri dovrebbe iniziare ad essere un significativo supporto per coloro che desiderassero intraprendere questa strada
  2. Con la definizione dei software contracts per l’interfaccia IRepository<T>, l’architettura dei repository è quasi definitiva. Seguirà cmq un post dedicato a questo tema (il tema è “repository”, per i software contracts rimando invece qui e qui).
  3. Anche lo stack web è quasi completo ed inizia ad emergere la nostra proposta per “Model 3”, la revisione di MVC che abbiamo approntato in Managed Designs e che usiamo nei nostri progetti web recenti. Anche in questo caso, seguirà un post dedicato a Model 3
  4. Poichè Unity non gode di una “suburbia” di facility paragonabile a quella esistente per Castle e Spring, ho introdotto una factory WCF sottomessa al container IoC contenuto nella Enterprise Library: è collocata nell’assembly ManagedDesigns.Nsk.ServiceModel ed è una versione “sanitizzata” di quella che usiamo nei nostri progetti.
  5. La suddetta factory è usata (a sproposito) nel progetto WPF per costruire i servizi consumati dal ViewModel, ma in questo caso è decisamente overkill per vari motivi purtroppo lunghi da “annegare” in questo post. In estrema sintesi, in bottega usiamo una nostra rielaborazione di Presentation Model che abbiamo chiamato 4VM, ed in alcuni contesti “quella” factory aiuta, ma nel backoffice di NSK è decisamente “bloated”, quindi elimineremo il passaggio da WCF, che sarà invece introdotto nella applicazione Silverlight. A valle della introduzione di questo progetto, seguirà probabilmente un post dedicato a 4VM che IMHO fornisce alcuni interessanti spunti di riflessione su MVVM.
  6. Lo stack di NSK è basato su un idioma architetturale che in azienda chiamiamo LET, acronimo di Layered Expression Trees: l’idea è che i vari layer (che fondamentalmente sono dei servizi che incapsulano il Domain Model) manipolano sequenze “palleggiandosi”, a partire dai repository, delle istanze di IQueryable<T>. Ogni layer/servizio manipola la sequenza apportandovi i propri filtri/proiezioni/etc etc e solo ai “piani alti” si fa il cast ad IEnumerable eseguendo la query all’ultimo momento, quando è già completa di tutto e può essere eseguita estraendo e restituendo i soli dati necessari alla singola view o, più in generale, caso d’uso. Seguirà cmq un post dedicato a LET.

Un po’ di roadmap: incredibile ma vero, ho finalmente dato una direzione al progetto (ed è il motivo per il quale sono “comparsi” i diagrammi dei casi d’uso <g>). NSK diverrà uno Starter Kit di e-commerce “pret –a-porter”, dotato di:

  1. sito pubblico realizzato con ASP.NET MVC
  2. backoffice realizzato con “MVVM over WPF”
  3. Applicazione mobile realizzata con “Silverlight over WP7”

Ovviamente, da un certo momento in poi lo “storico” database Northwind sarà insufficiente, e quindi il progetto adotterà uno schema ad hoc: non so ancora se evolverò lo schema attuale (fornendo un script di “adattamento”) o ne realizzerò uno ex novo, di sicuro il cambio dei nomi degli assembly e dei namespace (abbandono di “Northwind” a favore di “NSK”) e l’implementazione del Party pattern per il dominio sono propedeutici a questo cambiamento.

In generale, lo Starter Kit “cresce” man mano che effettuo il backporting di codice/strategie dai progetti Managed Designs alla codebase di NSK e, giacché lo faccio da solo e nel tempo libero, prima di vedere completata la v1.0 (codename “Lullaby”), temo ci vorrà ancora un (bel) po’ di tempo. L’ottima notizia, però, è che alcuni colleghi (Gianluca, Naty ed Omar) hanno adottato il progetto: giusto il tempo di organizzare una cena di kick off del progetto, e spero che la project velocity aumenti considerevolmente :-)

 

Così è, se vi pare (cit.)

Technorati Tag: ,,,
«settembre»
domlunmarmergiovensab
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789