Ultimo giorno early bird SQL Server Conference 2006

Il 31 maggio è l’ultimo giorno per iscriversi a SQL Server Conference 2006 con lo sconto “early-bird”. Certo, dire “sconto iscrizione anticipata” sarebbe più corretto in italiano, ma questo termine è entrato nell’uso comune (almeno tra noi addetti ai lavori) e ho dovuto alzare bandiera bianca rispetto alla mia posizione sull’uso degli inglesismi inutili.


Battute a parte, credo che la conferenza sarà interessante sia per chi si occupa di Business Intelligence (ho due sessioni in tema), sia per chi usa SQL Server come “normale” database relazionale. In questi giorni sto preparando le sessioni ed è sempre inquietante pensare a quanto tempo è necessario per preparare 75 minuti di sessione – ma si tratta di un lavoro indispensabile di scrematura, ripulitura e affinamento di tante lezioni apprese in ormai quasi 3 anni di uso del prodotto (ho avuto la prima beta nell’agosto 2003).


Torno al lavoro… pochi post sotto conferenza…

La soluzione si chiama mercato

Ho appena letto un post di Paolo Pialorsi sulla (non) professionalità esistente nel nostro settore, ho visto i commenti e la replica di Emanuele De Bono.


Idealmente vorrei anche io che non ci fosse gente poco preparata che crea più problemi di quelli che risolve. Ma poi sono anche pratico e il mio pragmatiso mi porta a pensare che la soluzione sia lasciar lavorare il mercato.


Recentemente sto avendo a che fare con architetti, imprese edili, fornitori di materiale edilizio… Molti sapranno di che parlo. Purtroppo per essere sicuro delle scelte vedo che l’unica soluzione è documentarsi e scegliere con un minimo di cognizione di causa. Fidarsi dell’amico o dell’azienda che, semplicemente, fa il prezzo più basso, non garantisce buoni risultati.


Lo stesso devono fare le aziende. Le scelte in un sistema informativo determinano la qualità del risultato finale e quindi il famoso ROI (Return On Investment). Ci piaccia o no, è questo quello che bisogna guardare. Se un programma scritto in Access per fare gestione documentale (quello che descriveva Paolo) fa bene il suo lavoro… è giusto usarlo ed evitare di spendere di più per avere un sistema più evoluto. Quello che io vedo chiaramente è che una simile soluzione, nel tempo, ha meno garanzie di stabilità, più problemi di manutenzione, minor compatibilità con l’ecosistema circostante. Esattamente come succede con un impianto elettrico dimensionato al minimo per soddisfare le necessità iniziali dei nuovi inquilini di un appartamento, che però si rivela presto inadeguato per ADSL e che non supporta il carico di un paio di climatizzatori.


Esiste una soluzione “imposta dall’alto” nell’ediliza? No, anche se qualche legge per definire dei parametri minimi (isolamento termico, anti-sismica, ecc.) esistono e, pur non risolvendo tutti i problemi, danno una mano.
Si può fare altrettanto nell’informatica? Difficile, visto che le tecnologie cambiano velocemente. Però stiamo avvicinandoci a un momento in cui su alcuni parametri, come la sicurazza, si potrebbe definire una responsabilità oggettiva del produttore nel momento in cui obbliga l’utente a comportamenti pericolosi.


Non credo si possa obbligare la scelta di una cerca architettura nel software, così come non si può impedire la creazione di un edificio “brutto” (ma che a qualcuno può sempre piacere). Ma si può lavorare (dall’alto) solo su pochi parametri oggettivi e in qualche modo necessari (altro tema che toccherei è quello dell’interoperabilità: perché solo Microsoft “deve” pubblicare i formati?). Per il resto, è il mercato che deve maturare ed essere più selettivo.


Concludendo: sono assolutamente d’accordo sulla mancanza di formazione che porta a certe conseguenze. Purtroppo, però, non credo che esista modo di imporre le cose dall’alto. Quello che professionisti come noi fanno è già quello di sensibilizzare “il mercato” su questi temi. Forme associative più strutturate potrebbero farlo meglio, ma se accettiamo per un attimo il confronto con l’edilizia comprenderemo come una varietà di proposte qualitative diverse è inevitabile anche in un mercato “maturo”.

White paper prestazioni SQL Server

In questi giorni sto preparando il materiale per le mie sessioni a SQL Conference 2006 e il tempo enorme che ciò richiede è dovuto anche al fatto che tratterò argomenti su cui al momento non esiste una grande bibliografia.


Per fortuna non è così per tutto: su SQL Server esiste (già da qualche mese) questo whitepaper che offre una guida interessante per indagare sui principali problemi prestazionali che si possono incontrare con SQL Server 2005. Da una lettura veloce ho visto diversi spunti interessanti (non si finisce mai di imparare) quindi mi segno l’appunto nel blog per riapprofondire la lettura dopo la conferenza…

Office 2007 Beta 2 e sicurezza: partiamo male

Ecco una delle cose che mi demoralizzano: Microsoft ha appena reso disponibile Office 2007 Beta 2. Ci sono centinaia e centinaia di Mb da scaricare se uno prende tutti i prodotti si superano i 2/3 Gb (non ho fatto i conti…). Ecco quindi che hanno pensato a un tool per scaricare il software: SmartSource.


Mi sembra una buona idea: provo a installarlo come amministratore, dopodiché provo a usarlo come utente normale e…. crash. Finestra di errore che dice semplicemente “Error”.


Ce ne sarebbe abbastanza per chiudere tutto e spegnere il PC, almeno dal mio punto di vista. Comunque indago e scopro che in un file di log c’è questa bellissima eccezione:

System.InvalidOperationException: Couldn’t get process information from remote machine. —> System.ComponentModel.Win32Exception: Access is denied
at System.Diagnostics.PerformanceMonitor.GetData(String item)
at System.Diagnostics.PerformanceCounterLib.GetPerformanceData(String item)
at System.Diagnostics.PerformanceCounterLib.get_CategoryTable()
at System.Diagnostics.PerformanceCounterLib.GetPerformanceData(String[] categories, Int32[] categoryIndexes)
at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library)
— End of inner exception stack trace —
at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library)
at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine)
at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName)
at System.Diagnostics.Process.EnsureState(State state)
at System.Diagnostics.Process.get_ProcessName()
at com.licensetech.dmc.DmcMain.Main()

C’è bisogno di andare avanti? Sarebbe meglio di no, ma siccome sono un po’ arrabbiato, vado avanti: con l’audit del failure di object access e privilege use abilitati, ecco che compare un “Failure Audit” nel security log di Windows. Il privilegio che si tenta di usare è SeCreateGlobalPrivilege, per chi non ha voglia di cercare questo articolo di KB spiega ampiamente di che si tratta.


Ok, spiegazione per i non-programmatori (so che tra i lettori affezionati ve n’è almeno 4 o 5): il programma sta tentando di vedere se ci sono altre istanze in esecuzione, ma non si accontenta di farlo sulla sessione corrente, prova a farlo su tutte le sessioni nel caso si sia su Terminal Server (o su un Windows XP su cui si fa Switch di account). Perché debba fare una così tale verifica è una domanda cui non so trovare risposta (non posso avere due utenti su Terminal Server che vogliono scaricarsi questo prezioso materiale?).


Si dirà: non ci hanno pensato che uno poteva non essere un programmatore… e invece ci hanno pensato, tanto che la directory su cui è installato questo gioiello della programmazione (SmartSource, ricordo) distribuito da Microsoft (che per questo è colpevole alla pari) va a scrivere in una directory del programma dei file di dati e di log. Ecco, se mi serviva una demo su come fare male le cose, non devo più sforzarmi di scriverne una perché ci ha pensato qualcuno rendendo questo servizio a milioni di persone.


Tornando sul lato tecnico: la scelta scellerata di rendere accessibile in scrittura a Everyone (everyone, avete capito bene, mica soltanto Users…) tutte queste directory è probabilmente legata al fatto che qualcuno ha provato il programma con un utente normale, ma forse non così normale o forse senza avere terminal server attivo.


Io veramente non mi capacito di una cosa simile: capisco che è una beta, ma una roba del genere non si fa e non può essere proprio Microsoft a farla.


Adesso vedo di installarmi Office 2007 e spero che nel frattempo qualcuno provveda a compensare come si merita License Technologies Group (i geni che hanno sviluppato questo sistema) insieme al/ai manager di Microsoft che l’hanno scelta.

Tool aggiornati: ReSharper 2.0 e SQL Prompt 2.0

Ieri ho installato l’aggiornamento di due tool che uso spesso e credo siano interessanti per molti lettori.


ReSharper 2.0 è la versione aggiornata di ReSharper, un tool per il refactoring e non solo. Funziona sia con VS.NET 2003 che con VS 2005. Io l’ho installato su quest’ultimo: qualcuno si chiederà se VS 2005 non abbia già il refactoring… certo che ce l’ha, ma vi assicuro che se siete un po’ esigenti non ci sono abbastanza controlli su come il codice viene formattato, mentre ReSharper, in questa nuova versione, riesce a formattare un sorgente esattamente come dico io. Lo stile di formattazione del codice è una cosa molto personale e soggettiva, adesso il mio file più prezioso è quello di configurazione di ReSharper…


SQL Prompt 2.0 è invece la nuova versione di PromptSQL (ne avevo parlato qualche settimana fa): una sorta di IntelliSense per T-SQL, che funziona sia con SQL 2000 che SQL 2005. Non è ancora perfetto, ma i miglioramenti sono veloci e costanti, credo che entro fine anno ci sarà una nuova versione (3.0) ancora più ricca. Nel frattempo, si può approfittare di questa, che è gratis (per chi lo scarica entro il 1 settembre).

SQL Server 2005 SP1: problemi setup risolti e nuove hotfix

Finalmente mi sento più tranquillo a installare SQL Server 2005 SP1: un problema che avevo rilevato su uno dei server di sviluppo e che avevo segnalato è finalmente spiegato nell’articolo KB918695: in pratica, se si sposta il database master è necessario spostare anche il database Resource, con una procedura descritta nella documentazione; suggerisco però di leggere anche questo thread nel forum MSDN prima di procedere alla soluzione del problema (se vi capita).


A questo punto posso mettere più tranquillamente in produzione il Service Pack 1 e procedere a sperimentare le nuove hotfix da poco rilasciate – KB91822: Cumulative hotfix package (build 2153) for SQL Server 2005

Flash Player, IE7 e utenti non amministratori

Recentemente ho installato (o almeno ci ho provato..) il Flash Player 8 su una macchina con IE7 Beta 2 e Windows XP SP2. Funziona tutto bene con l’utente amministratore, ma con un utente non amministratore (non-admin, LPA, least privilege account, standard user, metto tutti gli acronimi per favorire le ricerche) non c’è stato verso di farlo funzionare.


I soliti FileMon e RegMon, stranamente, non mi sono venuti molto in aiuto. Ma per fortuna il problema sembra sistemato con l’ultima versione di Flash Player 8. Se avete una versione installata prima dell’11 maggio (o del 7 aprile, ma per sicurezza controllate la versione), leggete questo documento che spiega come disinstallare e reinstallare Flash Player (ci vuole un programma apposta per disinstallarlo, alla faccia degli standard Windows).


Ma almeno Adobe non potrebbe provare le installazioni con utenti non-admin?

I prossimi 10 anni: commenti alle previsioni di Bill Gates

Da tempo evito di affrontare gli argomenti “strategici”, ma stasera l’occasione per riprendere l’abitudine è troppo ghiotta. Per non annoiare inutilmente chi cerca in queste righe il dettaglio tecnico, per questo post non ce ne saranno (prometto di compensare nel prossimo).


Bill Gates ha espresso delle considerazioni in un memo intitolato “Beyond Business Intelligence: Delivering a Comprehensive Approach to Enterprise Information Management “. Poiché il mio è un commento e non un riassunto, invito prima a leggere il testo, non corto ma nemmeno lunghissimo.


Il termine “Business Intelligence” nel titolo non tragga in inganno: i lettori di questo blog probabilmente hanno, come me, il significato pratico del termine, che il più delle volte sottintende l’analisi dei dati aziendali. L’analisi di Bill Gates sposta questo confine decisamente più avanti, portandolo alla gestione della “conoscenza” aziendale. Qualcuno potrebbe inorridire di fronte all’idea che un’azienda possa avere una sua identità, ma vorrei ricordare che nel diritto (almeno in quello italiano, che conosco) le società di capitale costituiscono una persona giuridica, i cui rappresentanti sono più simili a dei portavoce che non al concetto di “capo” che è invece più diffuso.


Ebbene, l’idea che l’azienda sia autonoma e viva di vita propria è il sogno di molti imprenditori. Nel mio lavoro ne vedo principalmente di due categorie: da una parte i “centralisti”, che delegano poco e vogliono controllare tutto, arrivando a essere il principale collo di bottiglia e freno allo sviluppo dell’impresa, quindi alla sua crescita; dall’altra parte gli “utopisti”, che sognano di plasmare l’azienda come una macchina così perfetta tanto che la presenza del fondatore diventa poi irrilevante (notate che anche quando questo succede, non sempre è il desiderio ricambiato dell’imprenditore). Chiaramente questa generalizzazione è un po’ semplicistica e nella realtà tutti stanno un po’ da una parte e un po’ dall’altra, ma in genere c’è sempre una tendenza verso una certa direzione. Chiaramente l’azienda che acquisisce vita propria è il sogno ideale dell’imprenditore (e se volete anche del manager) utopista e in un certo senso è anche il modello di sviluppo che sembra funzionare meglio, almeno sui libri.


Svuotata la mente da lacciuoli ideologici e pregiudizi di ogni tipo, vediamo dove porta il ragionamento di Bill Gates. Il nodo cruciale è recuperare le informazioni: per quanto ci possiamo sforzare di archiviare tutto in ogni forma possibile, indicizzandolo e rendendolo accessibile da un motore di ricerca (cosa che anche Microsoft vuole fare, beninteso), il vero problema è che 80 percent of the expertise within the average organizations is “tacit knowledge” that is undocumented and difficult to locate. Chiunque, in qualsiasi realtà si trovi, lavorativa e non, può trovare evidenze a supporto della fondatezza di questa affermazione. Problema la cui soluzione è praticata quotidianamente in qualsiasi posto di lavoro: chiedendo a chi sa. Può sembrare semplicistico, ma per ora è la cosa che funziona meglio. Ma a volte non si sa chi lo sa, e qui viene in aiuto il Social Network Engineering che, applicato alla realtà aziendale, consente di trovare la persona giusta al momento giusto. Chi conosce LinkedIn ha già visto una delle applicazioni di questa nuova area di ricerca, che è trattata spesso anche in blog italiani piuttosto vicini alla nostra “area di interesse tecnologico”, come quello di Romeo Pruno e quello di Roberto D’Angelo


Pochi anni fa, vedendo i primi frutti di queste ricerche, mi chiedevo che tipo di applicazione potessero avere in ambito aziendale. Mentre ho colto immediatamente l’utilità degli Instant Messaging fin dalla prima versione di ICQ, in quest’area ho dovuto invece aspettare di leggere una possibile applicazione pratica prima di iniziare a comprenderne le implicazioni. Tralasciando però le mie (scarse) capacità visionarie, l’aspetto interessante è la definizione del livello successivo di “Business Intelligence”, che ne amplia il significato passando dal dato all’informazione non strutturata e neppure archiviata. Chiaramente (e per fortuna di chi fa il mio lavoro) questo non implica che ciò che intendiamo oggi per BI diventerà obsoleto, semplicemente lo si darà per scontato (non se ne potrà fare a meno) e si farà un nuovo passo avanti. Esattamente come oggi si fa rispetto ai vari ERP: non se ne può fare a meno, qualcuno se ne deve occupare, ma da soli non bastano.


Ma lo stimolo a scrivere questo lungo post è stata la visione a 10 anni. The Next 10 Years. Tanto per cominciare, cito un passaggio che in fondo condivido: “there’s a tendency to overestimate how much things will change in two years and underestimate how much change will occur over 10 years”. Torniamo indietro di 10 anni: 1997, albori di Internet per le masse, il 2000 alle porte ma non troppo, grandi preparativi per la bolla speculativa che sarebbe seguita. Wired in quegli anni era una rivista-feticcio (anche per me) che ci proiettava nel futuro visionario ma a portata di mano, oggi è necessariamente una rivista “normale”, visto che può leggerla praticamente chiunque. Molte cose che erano previste “entro il 2000” si sono avverate qualche anno dopo (tra le tante, la TV via Internet). Alcune cose allora impensabili si sono avverate prima del previsto (per noi italiani, pensare nel 1997 di poter consultare l’estratto conto dell’INPS on-line era pura fantascienza, ma oggi è addirittura semplice ottenere informazioni anche al telefono). Sì, in un certo senso sottostimiamo quello che può succedere in 10 anni.


Bill Gates offre quindi la sua visione per il prossimo decennio. “Networks will get faster, computer processing will continue to increase in accordance with Moore’s Law, and data storage will continue to fall in price. Meanwhile, high-definition screens will be cheaper, lighter and more portable.”: come dargli torto, sta succedendo esattamente ora. “Mobile phones will rival today’s desktop PCs for power and storage”: il mio telefono ha un clock esattamente doppio di quello del mio desktop del 1997 con la stessa quantità di RAM (ho sempre avuto PC con tanta RAM). Finora previsioni “sicure”, ma la vera scommessa è questa: “the software that ties it all together will become increasingly sophisticated in its ability to understand the way you work, and increasingly streamlined and intuitive in the ways you use it”. Il software: questo è il problema.


Qui i nodi vengono al pettine. Cosa ce ne facciamo di un computer senza software? Di una potenza che non viene usata? Di una console senza videogiochi? Dal mio punto di vista, sono almeno 5-6 anni che il software non è in grado di sfruttare l’hardware a disposizione. Parlo più che altro del software che gira sui desktop. Abbiamo tutti una Panda con il motore di una Ferrari: fa un bel rumore, ma non ci fa arrivare più comodamente a destinazione. Si parla da anni di riconoscimento vocale, di nuove interfacce uomo-macchina, di “agenti” che in autoapprendono e soddisfano meglio le esigenze degli utenti. Tutte cose che già esistono, ma sono ancora molto limitate per una fruizione diffusa. L’idea di Longhorn, quello annunciato a settembre 2003, era un progetto visionario che avanzava velocemente in questa direzione. Windows Vista è un progetto più concreto e meno ambizioso che va nella stessa direzione ma più lentamente e più timidamente. Eppure la tecnologia inizia ad arrivare: un paio di settimane fa ho provato un cellulare Nokia (già in vendita) che riesce a comporre i numeri dettati a voce senza alcun bisogno di apprendimento (pagherei molto per averlo sul mio Windows Mobile, lo ammetto). Anche la sintesi vocale è avanzata. Finora non ho visto un “interprete” di linguaggio naturale che si possa definire “accettabile” (prova ne è che qualsiasi traduttore automatico fornisce ancora risultati ridicoli e impresentabili in pubblico). Ma anche in questo campo i passi in avanti ci sono, ma purtroppo per un non addetto ai lavori (come me e come la stragrande maggioranza dei possibili fruitori) il livello minimo di accettabilità di una tecnologia è così alto da rendere impercettibile un miglioramento del livello di accuratezza dal 30 al 60%: se il mio obiettivo minimo è 99, sotto il 95 mi sembra tutto uguale.


Quindi serve il software, serve del nuovo software, che consenta di fare un nuovo salto qualitativo che consenta di sfruttare le risorse disponibili. Lo farà Microsoft? Lo farà Google? Lo farà qualcuno di nuovo? Questa è la scommessa più difficile di tutte, 10 anni fa Google non esisteva, dominava Altavista. Chiaro che Bill Gates fa il tifo per Microsoft, ma se un computer può parlare con una persona e il computer sta in un telefonino, il vincolo della compatibilità viene meno sul fronte applicativo e di interfaccia utente, mentre resta forte su quello dell’integrazione, dell’infrastruttura e dei dati. Qualcuno può stupirsi di fronte a un telefonino che ha integrato un proiettore, ma se pensiamo che intorno al 1990/1992 era normale avere una specie di valigetta come radiomobile e ci immaginiamo l’uso pratico che di certi proiettori olografici viene fatto in film come Star Wars, non si può escludere del tutto che si possa andare la domenica a trovare gli amici con le foto delle vacanze proiettabili dal telefonino (cambia il media ma non la tortura) e il lunedì a fare una demo senza portarsi dietro 10kg di materiale.


Considerazioni interessanti. Unico problema (finale dissacrante): qualcuno dovrebbe trovare il modo di unificare i connettori di alimentazione di qualsiasi dispositivo elettronico. Tanto ogni 3-4 anni li cambiamo tutti, da qui a 10 anni è un progetto fattibile. Eviteremmo così di trasportare un volume doppio del portatile per connettori, cavi, alimentatori et simili. Ecco, questo sono sicuro che tra 10 anni non ci sarà. Spero di essere smentito.

I/O Prioritization in Windows Vista

Una delle novità di Windows Vista è, a livello kernel, un meccanismo che gestisce delle priorità sulle richieste di I/O: fino a Windows 2003, ogni richiesta di I/O ha la stessa precedenza, sia che provenga da un thread critico, sia che provenga da uno screen saver.


Il whitepaper da poco rilasciato sull’argomento inizia a chiarire alcuni dettagli dell’implementazione. Una delle funzionalità offerte è quella di poter definire dei canali di comunicazioni con banda garantita rispetto a un device esterno (tra i tanti esempi, ciò è fondamentale per Media Player se mentre guardate un film volete anche leggere la posta e compilare con Visual Studio, ma senza perdere un frame – è noto che sono ormai abitudini diffuse).


Ho letto un po’ il documento e benché non chiarisca appieno se la priorità generale del processo influenza la priorità delle richieste di I/O che esso produce (cosa che, pur avendo i suoi possibili effetti collaterali, sarebbe interesante in molte circostanze) fornisce comunque alcuni chiarimenti su uso e implementazione di questa nuova funzionalità. Le applicazioni esistenti possono sfruttare solo in modo limitato queste nuove capacità.


Una cosa che si deduce dal testo è anche che il memory manager viaggia sempre a priorità massima, il che porta ad avere come effetto collaterale che su macchine con poca RAM il calo prestazionale complessivo sarà ancora più evidente (in questa condizione si ha più paginazione, e quindi più I/O bloccante per altre applicazioni). Paradossalmente, un’applicazione a bassa priorità che consuma troppa memoria potrebbe diventare ancora più fastidiosa di come lo sarebbe oggi. Ma sono teorie da dimostrare, e per farlo sarà necessario avere driver aggiornati e pienamente compatibili con la I/O Prioritization.


Morale: ci vuole tanta, tanta, tanta RAM, qualsiasi taglio non è mai abbastanza…

SQL Server Conference 2006 – 27/28 giugno 2006

Il 27 e 28 giugno 2006 a Segrate (MI) si terrà la SQL Server Conference 2006: conferenza tecnica che vedrà 10 speaker impegnati in 20 sessioni su due track paralleli. Tra gli speaker ci sarà anche una buona parte di DevLeap (Paolo, Roberto e il sottoscritto). Il taglio della conferenza è di approfondimento e non di semplice presentazione, quindi interpretate l’agenda considerando che per ogni argomento trattato è opportuno avere già una minima esperienza – chi non ha ancora cominciato, può approfittare di alcuni webcast in italiano (guardare la sezione SQL Server) e in inglese.


Siccome sono stato direttamente coinvolto nella definizione dell’agenda dell’evento, sarei felice di ricevere eventuali feedback (soprattutto quelli negativi!). Non entro troppo nei dettagli sui contenuti, preciso solo che esistono tre aree tematiche (Core, Business Intelligence e Vari) in cui abbiamo collocato le varie sessioni. In questa classificazione Reporting Services non è necessariamente una sessione di BI, così come non lo è Integration Services: entrambi questi strumenti possono essere collocati in scenari diversi e quindi attenzione a fidarvi troppo dei luoghi comuni.


Ultime avvertenze: in home page c’è una mailing list a cui ci si può iscrivere per ricevere tempestivamente novità sulla conferenza; infine, per partecipare bisogna iscriversi e come al solito anticipare l’iscrizione conviene.