Virtuality Conference

Pochi (se non addetti ai lavori) sanno che a Torino si tiene ogni anno una conferenza mondiale sulla realtà virtuale e il cinema digitale: si chiama VIEW CONFERENCE, è gratuita e vi partecipano i pesi massimi del settore. Per capirci, gente che lavora in DreamWorks, Pixar, Electronic Arts & Co. Quest'anno si terrà dal 6 al 9 novembre.

Anche se non serve al lavoro quotidiano di molti di noi, chi è innamorato della tecnologia e vuole conoscere meglio gli strumenti e il backstage di film che magari ha visto al cinema, oltre che vedere lo stato dell'arte di questa tecnologia… ora ha un'ottima scusa per visitare la città sabauda. Chiaramente molte cose sono in inglese, ma non manca qualche italiano che al di là dell'oceano ha fatto carriera.

I bug come evento statistico

Sarà difficile spiegarlo a chi non è tecnico, ma è un dato di fatto che l'unico programma senza bug è quello che gira su un computer spento.

Così come la produzione di un pezzo meccanico può contenere delle difettosità, allo stesso modo il software può contenere dei bug. I controlli di qualità servono a diminuirne il numero e quindi la possibilità di esserne colpiti. D'altra parte, neppure l'uomo è perfetto ed esiste l'errore umano. Per ora, però, riteniamo più accettabile che un aereo possa cadere a causa di un errore umano ma ci dà fastidio pensare che possa farlo per un errore del software.

Perché queste considerazioni? Semplice, tra poco arriverà al telegiornale il fatto che Excel 2007… sbaglia i conti. Provate a scrivere in una cella =77,1 * 850 e vedrete che il risultato visualizzato è 100000. Fate la stessa operazione con una calcolatrice e vedrete che il numero è 65535 (in realtà un numero molto vicino…).

Ci sono già vari post sull'argomento, consiglio quello di Joel Spolsky che da ex-Microsoft ed ex-membro del team di Excel fornisce una spiegazione tecnica e non troppo di parte. Anche sul blog dedicato a Excel ci sono notizie in proposito. Per quanto la probabilità di incontrare l'errore sia infimo, il danno di immagine si sta già propagando e credo che a breve arriverà al grande pubblico (visto che l'effetto lo può provare chiunque ed è semplice da replicare).

Tra poco, comunque, arriverà una fix…

UPDATE: le fix sono disponibili e scaricabili dai link descritti in questo post (ce ne sono sia per Excel che per Excel Services). Gli articoli di knowledge base sono il 943075 e il 943076.

Evoluzione dei sistemi operativi

L'attuale situazione del mercato, dove di fatto esistono Windows da una parte e Unix/Linux dall'altra, farebbe pensare che sia inutile anche solo immaginare un'alternativa a queste due posizioni dominanti.

La realtà è che entrambe le famiglie di sistemi operativi hanno origine ben più di 20 anni fa. Nell'informatica, un'era geologica.

Nei prossimi anni (contando con una mano) difficilmente vedremo novità clamorose. Se però ci spingiamo più avanti, ecco che una delle utopie citate nell'estate del 2000, quando fu presentato .NET Framework, potrebbe diventare realtà.

Microsoft Research ha un progetto chiamato Singularity, nato nel 2004 e oggi in viaggio verso una versione 2.0. Si tratta di un sistema operativo "completamente managed", driver compresi. Attenzione, sistema operativo vuol dire che scheduler, separazione tra processi… tutto managed. Una pazzia? No, se guardate le prestazioni riportate in alcune tabelle di questo articolo. Certo, si tratta ancora di ricerca e non di un prodotto, ma questi numeri pesano.

Se nel frattempo però si vuole comprendere meglio su cosa lavoriamo oggi, segnalo questo post di Pietro Brambati che elenca alcune risorse dedicate all'insegnamento del kernel di Windows nei corsi universitari di sistemi operativi. Tra questi, la possibilità di avere accesso ai sorgenti del kernel di Windows (Windows Server 2003 SP1 a 32 e 64 bit). Purtroppo quando andavo io all'università queste cose carine mica c'erano…

SharePoint Conference 2007 – the day after

Sono reduce dalla prima SharePoint Conference 2007, conferenza in cui ho avuto una piccola parte (una sessione all'ultimo slot sulle funzioni di SharePoint utili per la Business Intelligence) che mi ha consentito di vedere meglio le cose "dal di fuori".

Il grande successo di pubblico e le molte chiacchierate avute con partecipanti e speaker mi ha confermato che il trend di adozione di SharePoint è in rapida salita. Prodotti e tecnologie a parte, sono stato colpito da due cose.

Primo – la piattaforma: il numero (relativamente alto) di persone che già realizzano soluzioni "personalizzate" e che pensano in termini di piattaforma piuttosto che di prodotto finito che deve avere già tutto "a bordo". Questa è una tendenza che va affermandosi anche al di là di SharePoint, che è il sogno eterno di tutti quelli che non vorrebbero riscrivere due volte lo stesso codice e che finalmente comincia a realizzarsi, anche se non ancora con una pervasività totale che probabilmente resterà utopistica.

Il "plumbing code" piano piano diminuisce e diventa un impedimento minore. Oggi alcune cose si possono fare, prima non si poteva. Il codice che serve è poco (a volte nullo), ma serve una competenza piuttosto "alta" di quello che sono i componenti esistenti, il loro ruolo, i loro limiti e quindi di quale sia la tecnica giusta per effettuare i giusti collegamenti. Per restare sul pratico, a volte bisogna sapere creare la stringa di connessione giusta a una fonte dati… e l'ostacolo è proprio quello di sapere cosa scrivere. Affidare il compito a wizard di singoli prodotti non è semplice, visto che ciascuno deve poi reinventare l'acqua calda e il più delle volte rinuncia a farlo, coprendo solo i comportamenti dei driver più diffusi. La semplificazione passerà per un necessario miglioramento dell'adattività dei componenti (e/o delle fonti dati, nel caso specifico) in grado di comprendere da soli quale sia la parametrizzazione corretta in base al contesto di utilizzo. Tuttavia, tra il dire e il fare…

Secondo – l'inglese: La conferenza ha avuto 3 sessioni in inglese più una dello sponsor K2 in (piccola) parte in italiano e in (larga) parte in inglese. Il terrore della vigilia era quello di vedere la maggioranza dei partecipanti uscire e/o distrarsi. La piacevole sorpresa è stata invece di avere sessioni seguitissime, una soglia di attenzione molto elevata, domande dal pubblico, in una parola… partecipazione. Si tratta di una gran cosa, che "sblocca" mentalmente partecipanti e organizzatori… Fino a ieri nessuno avrebbe mai pensato di fare un evento per una platea europea in Italia ("senza la traduzione simultanea non viene nessuno…"), da ieri questo pregiudizio comincia finalmente a traballare. Già solo il fatto di poter invitare a un evento l'esperto migliore a disposizione, a prescindere dalla lingua, è una cosa positiva per tutti. Più in generale, è un gran segnale di crescita del mercato. Avere un limite in meno è sempre un vantaggio.

Best practice per l’uso di local type inference

C# 3.0 introduce un costrutto sintattico che consente di inferire il tipo di una variabile nella sua dichiarazione in base al tipo dell'espressione di inizializzazione. In pratica:

string s = "Marco";
string x = s;

si può scrivere:

var s = "Marco";
var x = s;

Come sempre, il fatto che una cosa si possa fare non significa che la si debba fare sempre. La keyword var nasce per supportare costrutti sintattici particolari in C# 3.0, ma può avere un uso più ampio.

Ho pubblicato un post in inglese in cui descrivo una serie di regole pratiche che varrebbe la pena di seguire – siccome sto cercando feedback a riguardo (si tratta di considerazioni più o meno soggettive) segnalo anche qua la richiesta…

Quaere – un LINQ per Java

LINQ non è ancora stato rilasciato (lo sarà con .NET Framework 3.5 tra pochi mesi) e già si cominciano a vedere le prime "imitazioni" – questa volta in Java.

Il progetto Quaere si pone come obiettivo di dare ai programmatori Java  un supporto analogo a quello che si ottiene con LINQ sviluppando con il Common Language Runtime. Sintatticamente in Quaere non c'è l'equivalente delle query expression di C# 3.0 e il progetto nel suo insieme non è ancora maturo, ma è interessante registrare LINQ comincia ad avere un impatto anche al di fuori dei confini MS/Windows…

Disegnare l’interfaccia utente con la matematica

Il titolo può apparire strano e incuriosire, e in effetti lo scopo è proprio questo. Meno di un mese fa ho scritto alcune considerazioni sull'interfaccia utente. Oggi ho scoperto il blog di Jensen Harris che discute dell'interfaccia utente di Microsoft e in un post spiega la matematica dietro ad alcune scelte di interfaccia (è materiale che ha più di un anno, ma per fortuna non tutti i post invecchiano dopo una settimana). L'idea è che l'efficienza è un parametro misurabile (per lo meno, il tempo lo è).

Per quanto possa apparire bizzarro, in diverse occasioni mi sono preoccupato di misurare il rapporto costo-benefici di un secondo risparmiato sull'interfaccia utente. Chiaramente all'aumentare del numero degli utenti, tale valore giustifica determinati sforzi (la frequenza dell'uso della funzionalità è un altro parametro importante). Non sempre questi problemi vengono colti nella loro dimensione economica e ho perso il conto delle volte in cui ci qualcuno si preoccupava di ottimizzare qualcosa che non avrebbe dato un ritorno significativo, lasciando "per strada" altri punti che invece (nella valutazione globale) assumevano un costo maggiore. Il posto che ho citato non arriva a definire nel dettaglio questi calcoli, ma è uno stimolo per fermarsi a riflettere anche su questo.