Uncategorized

Trust o Antitrust?

Adesso che il polverone si sta diradando e i soliti giornalisti hanno perso
interesse per la faccenda, posso parlarne anch’io. Mi riferisco ovviamente alla
conferma della multa comminata a Microsoft dalla Commissione
Europea. Mi sono deciso a scrivere questa entry dopo aver scoperto che un blogger molto più famoso di me (e molto più supponente, aggiungo) ha trasformato
silenziosamente un suo articolo palesemente e irragionevolmente anti-microsoft
in uno dai toni più morbidi. Premetto che io non sono né pro- né anti- 
Microsoft. Uso molti dei suoi software così come quelli di altre aziende e della
comunità open-source, chi mi consoce sa che cerco sempre di avere un punto di
vista obiettivo su tutto, informatica inclusa. Passiamo adesso alla discussione.

Uno dei due argomenti oggetto del contendere è la chiusura totale delle
specifiche dei sistemi operativi Microsoft. Secondo la Commissione, non solo la
Microsoft proteggerebbe il proprio codice, ma negherebbe anche volontariamente
alcune informazioni basilari sul funzionamento dei propri sistemi alle altre
software house in modo da impedire loro di creare software in grado di
sfruttare tutte le capacità degli OS.
Questa osservazione ovviamente si relaziona con il mondo dell’open-source, dove la
disponibilità dei sorgenti assicura la capacità di analizzare e sfruttare ogni
caratteristica più o meno nascosta del sistema.
Detto questo, dovremmo chiederci quanto l’affermazione della Commissione sia
fondata. Prima di tutto la Microsoft produce software applicativi solo in certe
aree e non avrebbe molto senso nascondere notizie a suoi concorrenti che
agiscono in altri ambiti. Secondariamente dobbiamo ricordare che molte
applicazioni di alto livello – pensiamo per esempio ai sistemi di gestione dei
database relazionali, gli RDBMS – vengono sottoposte a continui benchmark poi
sfruttati a fini pubblicitari in maniera molto ampia. Se ci fossero
effettivamente delle differenze abissali tra un prodotto Microsoft e uno di un
concorrente su Windows Server, per esempio, questo diventerebbe evidente e
sarebbe relativamente facile da provare.
Ovviamente nel mercato è naturale che i concorrenti di Microsoft debbano essere
messi in condizione di agire alla stesso livello, ma bisogna anche considerare
il legittimo diritto di Microsoft a mantenere una parte dei propri segreti. Dato
che l’azienda di Redmond lavora per sua scelta volontaria in un ambito
closed-source, è giusto che il suo diritto alla riservatezza venga mantenuto nei
limiti della legalità. Se il closed-source sia destinato a soccombere all’open è
una cosa che non spetta decidere a un ente governativo, ma al mercato.
Sarà interessante e cruciale vedere con quali mezzi si vigilerà su questo
adempimento ed entro quali limiti.

Secondo argomento è l’inclusione di Windows Media Player nel sistema
operativo Windows. Qui torniamo a una questione vecchia come l’informatica:
qual’è il limite a quello che può essere incluso in un sistema operativo come
‘accessorio di serie’ e che cosa è un software ‘regalato’ in maniera ingiusta?
La parte brutta di questa storia è che l’attore cambia nel corso degli anni, ma
la scena è sempre la stessa. Pochi anni fa il problema era a proposito dei
browser internet. Si è fatto un gran parlare del fatto che l’inclusione di
Internet Explorer in Windows fosse dannoso per Netscape Navigator e i suoi
cugini. Le cause si sono succedute per anni, poi la questione è finita in
niente, Netscape ha sfornato prodotti sempre peggiori, finché in pratica non
rimanevano più clienti. Nel contempo Microsoft migliorava IE fino a farlo
diventare un buon prodotto. Finalmente pochi anni dopo è arrivata Mozilla
Foundation che ha pensato bene di non affidarsi a una aula di tribunale, ma di
combattere la sfida tecnologica nel mondo dell’informatica. Se ne è uscita così
con Firefox, un prodotto rivoluzionario, un software che ha dimostrato una volta
per tutte che un buon prodotto fa sempre strada indipendentemente dalla
Microsoft. Con questo esempio intendo dire che se esiste un player migliore di
WMP, il pubblico lo sceglierà indipendentemente dal fatto che sia incluso in
Windows o meno. Infatti WMP è ben lontano dal monopolio e ha molti concorrenti,
tra cui RealPlayer, VLC (usatissima applicazione open-source), DivX Player (in
bundle con l’omonimo codec), recentemente Flash MX (salito agli onori della
ribalta per il video digitale con YouTube) e infine QuickTime di Apple.
In molti hanno nominato proprio Apple in contrasto con Microsoft in questa
vicenda. Bene, allora vediamo quanto molta della gente che scrive nei vari blog
e giornali non ha idea di che cosa stia parlando. Apple è in questo momento
nell’occhio del ciclone a causa del circolo vizioso creato con la famiglia iPod.
L’apparecchietto infatti deve essere caricato di file usando esclusivamente
l’applicazione iTunes, convertendo files esistenti nel formato Apple oppure
acquistando contenuti dal sito iTunes, ovviamente di proprietà Apple. Mentre i
lettori portatili di altre case produttrici possono essere collegate a un
qualsiasi sistema operativo moderno e accettano file per semplice copia (come
una memoria flash USB) con molti formati audio e video diversi, il sistema della
Apple accetta solo i propri files, caricati con un software proprietario e
comprati da un negozio di nuovo di proprietà. Infine provate a scaricare
QuickTime, il player di Apple, indovinate cosa trovate in bundle obbligatorio?
Esatto, proprio iTunes!
Però la Microsoft è monopolista, Apple invece è ‘cool’… andiamo, cerchiamo di
usare un po’ di buonsenso nelle cose. I giornalisti cavalcano l’idea popolare
secondo cui Microsoft sia il grande Male e Apple il Bene. In realtà si tratta di
due aziende commerciali che cercano di mettere le mani su mercati multimilionari
di norma con mezzi leciti, a volte con mezzi che potremmo definire ‘al limite’.
Nessuno dei due fa nulla per bontà. Non per niente alla Commissione Europea, di
nuovo, si sta pensando ora di mettere sotto osservazione proprio la casa della
Mela per motivi analoghi a quelli relativi a Microsoft.

In conclusione dobbiamo dire che l’attività antitrust è di importanza
fondamentale, soprattutto in un mercato molto competitivo come quello
informatico. Detto questo bisogna stare attenti a non usare due pesi e due
misure: uno con Microsoft e uno del tutto diverso con Apple, con Oracle e con i
loro degni compari.
Il mondo degli affari è spietato e l’informatica non è fatta solo da giovanotti
simpatici, bizzarri e geniali chinati su una tastiera a programmare.
Nessuna azienda funziona così.

Standard
Uncategorized

HyperTrek, un grande passo in avanti

HyperTrek è attualmente la più completa, estesa e conosciuta guida al mondo si Star Trek in lingua italiana.

E’ un sito conosciuto da tutti i trekkers e da una buona parte anche dai navigatori accidentali. Forse non tutti sanno però che HyperTrek è da poco passato
attraverso una
trasformazione radicale.

Dall’inizio del 2006, infatti, HT si è trasformata da una guida ipertestuale statica a un sistema di gestione dei contenuti dinamico basato su PHP e su mySQL. Questo grande
cambiamento, che ha portato alla versione
internamente definita Next Generation, ha richiesto un altrettanto grande lavoro e, con questa serie di tre articoli, voglio
lasciare una traccia dell’impegno di cui sono stato protagonista in prima persona. Questo
semplicemente per lasciare una testimonianza scritta di un lavoro che a stato nello stesso tempo, lungo, soddisfacente, difficile, divertente e istruttivo.

Gli altri articoli sono
La Conversione e
Il Congelamento, questo è l’introduzione.

Per chi volesse approfondire l’argomento HT, può trovare
qui un breve articolo sulla sua storia scritto dal fondatore, inoltre può anche fare
riferimento alla
apposita voce nella Wikipedia,
voce da poco avviata e in fase di espansione.

Tutto il percorso verso Hypertrek NG inizia nel pomeriggio del 17 Dicembre 2005, quando i primi test
vengono pubblicati e il progetto è annunciato pubblicamente.

Il primo problema da affrontare nella conversione è stato quello di come fare a estrarre tutti i dati esistenti già nelle pagine HTML statiche della versione corrente di HT, come ‘neutralizzarle’ e come inserirle nelle apposite tabelle del DB.

Questa è un avventura in cui mi sono buttato quasi per gioco: volevo solo vedere se sarei stato capace di ideare un sistema
per fare una cosa simile e di realizzarlo, almeno in parte. Dico solo che si è
trasformato in un lavoro a tempo pieno per due mesi.

Nel Prossimo articolo potete leggere questa storia.

Il secondo passo arriva da lontano: chi ancora non è fornito di banda larga, o chi si muove molto, come fa a vede HT?

Prima il sito si poteva scaricare, prendendo semplicemente tutto il malloppo delle pagine, adesso, tutto il
sito è gestito in pratica da una sola pagina che genera e la schede statiche su
richiesta, al volo.

I vari sistemi di grabbing sono inadeguati per un progetto tanto
personalizzato, quindi il 29 agosto 2006 parte ufficialmente la ‘gara’ per creare una versione scaricabile di HyperTrek, nome in codice HTOffline.

Dopo aver meditato a lungo e dopo qualche tentativo preliminare, mi faccio prendere dall’entusiasmo e inizio la creazione di The Stator il software che si
occupa di prendere il DB di HT e crearne una serie di pagine statiche in maniera automatica.

E’ l’argomento dell’ultimo articolo della serie
e del mini-sito
http://www.lucamauri.com/htoffline/
.

Vi rimando ai rispettivi articoli per maggiori informazioni sui singoli progetti, ma una cosa deve
essere detta qui: il lavoro è stato duro e ha occupato una bella fetta del mio
(purtroppo scarso) tempo libero per più di un anno e mezzo, ma io credo che sia valso ogni singolo minuto.

Un grosso grazie a tutti quelli che mi hanno aiutato e mi hanno supportato in questa lunga
avventura.

HTSpider e The Stator sono stati sviluppati secondo il modello Rapid
Application Development
. Questo prevede un uso massiccio di software CASE per
permettere una prototipizzazione rapida dell’applicazione durante la fase di
scrittura. Di conseguenza i risultati parziali di questi due software venivano
preparati via via che il software prendeva forma senza aspettare rivoluzioni nel
codice, ma procedendo di pari passo. Di seguito una brevissima carrellata delle tecnologie chiave su cui si basano HTSpider e The Stator:

  • Visual Basic .net 2005 Express Edition: l’IDE entry level di microsoft. E’ distribuito gratuitamente insieme e ai
    suoi fratelli della famiglia Express.
  • SQL Server 2005 Express Edition: E’ stato il contenitore temporaneo di tutte le informazioni estratte da HTSpider
    prima della loro integrazione nel sito di produzione
  • mySQL Query Browser: Un tool di valore incalcolabile per poter effettuare query in tempo reale sul database di HTNG durante la sua costruzione e nella sua
    versione finale per The Stator
  • The Regualtor: un tool utilissimo per la costruzione e il test delle (per me)
    odiosissime Regular Expression
  • SharpZipLib: una libreria molto diffusa basata su .NET per la manipolazione dei file compressi nel popolare formato ZIP
  • xCMS: il sistema di CMS che ho sviluppato. Gestisce questo blog così come la pagina del progetto di The Stator
    insieme al suo feed RSS
Standard
Uncategorized

HyperTrek, un po’ meno NG

Una volta completata la conversione e la
pubblicazione di HyperTrek NG, si presentava il problema di come accedere
offline a questa risorsa. Nonostante le connessioni a banda larga always-on
siano ormai una realtà economica e diffusa, il nostro obiettivo è sempre stato
quello di fornire HT anche come un pacchetto scaricabile, per varie ragioni di
ordine pratico. Da un certo punto di vista, e per certi versi paradossalmente,
si poneva il problema inverso del precedente: trasformare la versione dinamica
di HT in una statica, questa volta però con la complicazione di dover fare tutto
questo periodicamente (all’incirca una volta alla settimana) e ovviamente in
maniera il più possibile automatica.

Apparentemente nessun prodotto commerciale era
adatto allo scopo, c’è stata una discussione sulla possibilità di fare
installare mySQL e PHP agli utenti per eseguire in locale il sito dinamico, ma è
stata scartata per la troppa complessità. Nell’autunno del 2006, dopo varie
discussioni, mi sono avvicinato al problema in maniera analoga al caso di
HTSpider: poco più di esperimento limitato per mettermi alla prova.

Dopo aver fatto il lavoro preliminare su un
sistema di compilazione HTML basato su XMLWriter
scrivevo una prima bozza del software che prelevava le informazioni dal database
di produzione e scriveva qualche pagina. Dopo un po’ di prove, avevo fatto
funzionare i menù superiori e qualche altra pagina sparsa. Dopo qualche ora mi
sono ritrovato a ragionare su vari problemi che si sarebbero posti continuando a
sviluppare, per esempio la creazione dei menù delle sezioni, la compilazione
delle varie parti delle pagine degli episodi e via dicendo. Insomma, di nuovo ci
ero dentro fino al collo.

Poco dopo,
scrivevo in lista e mi assumevo l’onere di andare avanti con questo progetto. Il
24 Settembre 2006 nasceva The Stator
il software destinato a ‘staticizzare’ tutto HyperTrek. Il suo nome è un ovvio
gioco di parole e il suo logo un gioco con le immagini, partorito dalla mia
mente malata e realizzato dall’artista ufficiale dei progetti di HyperTrek,
ovvero Sat’Rain. Ci siamo anche inventati un acrostico ‘a posteriori’, così
STATOR adesso significa (anche) STAtic Trekkers’ Offline Resource.

La prima sfida
tecnica era quella di stabilire la modalità di accesso ai dati: diversamente da
SpiderHT, questo software doveva necessariamente leggere le informazioni dal
database online perché trasferire e copiare il DB in locale tutte le volte
sarebbe stato uno spreco di tempo e risorse, quindi la prima scelta logica era
quella di lavorare in modalità connessa. Dopo le prime prove, però, questo
approccio si rivelava sbagliato: la mole di dati che deve essere scaricato dal
sito è tale che la modalità connessa introduceva un ritardo nel continuo
collegamento remoto, esecuzione di query e scollegamento. Oltre a questo si
manifestava anche un fastidioso errore di
periodica di connessione. Dopo
pochi giorni, quindi, prendevo la decisione di modificare tutto in modalità
disconnessa: questo necessitava un accurato lavoro di preparazione. Le query
andavano studiate accuratamente per ridurre il numero dei risultati al minimo,
senza però creare troppe tabelle locali che poi sarebbero state memorizzate in
oggetti DataSet del framework
all’inizio del processo. Dopo questa modifica, l’elaborazione richiedeva molto
tempo nella parte iniziale, ma di seguito la creazione di pagine viaggiava al
ritmo di oltre una pagina al secondo, una prestazione irraggiungibile con la
modalità connessa.

Mentre il corpo principale
delle pagine non rappresentava un problema nell’elaborazione, i menù si
preannunciavano il primo scoglio serio. Dopo alcuni tentativi per buona parte
falliti, decidevamo di comune accordo una modifica alla struttura del DB che
semplificava molto la creazione dei menù di livelli inferiori al primo.
Eseguita questa modifica, lo stadio successivo di elaborazione era la creazione
della tabella superiore delle schede degli episodi, quella che contiene gli
attori, i personaggi e tutti di dati dell’episodio. Tutti questi dati dovevano
essere ricavati da tabelle diverse, andavano inseriti i collegamenti necessari
solo nei casi in cui erano previsti e, come ultima cosa raggruppare tutte le
varie categorie.
L’ultimo scoglio alla conclusione della parte grossa del lavoro era
l’elaborazione del navigatore nella tabella a destra delle pagine. I
collegamenti in questa area vengono da riferimenti diretti e inversi che
dovevano essere raccolti da tabelle diverse, raggruppati e ordinati.
Un ultima aggiunta al software era il sistema che seleziona tutte le immagini
dalla apposita tabella del DB e le scarica di internet. Una modifica successiva
a questa procedura permette ora di scaricare solo le immagini modificate,
discriminandole confrontando il timestamp dei file già esistente con una
richiesta dell’header del file da internet. Il software supporta anche le
immagini rotanti
anche se ovviamente il
cambiamento avviene solo una volta ogni generazione del pacchetto.

Nell’estate del 2007, Stator è
sostanzialmente completato: tutti i dati sono estratti e inseriti nelle apposite
pagine, dopo una revisione del file CSS l’aspetto grafico ha cominciato a
migliorare e ora rimane l’unico elemento su cui intervenire prima di avere una
versione gradevole, oltre che funzionale. Dall’inizio di Settembre il pacchetto
è nella fase Release Candidate.

A oggi The Stator comprende quasi 2500 righe di
codice e impiega circa 30 minuti per eseguire una generazione completa.
The Stator è un progetto in continua evoluzione e quindi ha un minisito
dedicato, che potete trovare all’indirizzo

http://www.lucamauri.com/htoffline/
.

Standard
Uncategorized

HyperTrek? Dinamico però!

Subito dopo aver lanciato
l’idea di HTNG, il primo
problema da affrontare era quello di estrarre le informazioni dal sito attuale.
Ovviamente non era logico o economico riscrivere da zero tutte le informazioni,
tuttavia estrarle dai file HTML non era cosa semplice. Nonostante un file HTML
sia moderatamente strutturato, i concetti in quanto tali sono inseriti in
formato libero, facilmente interpretabili da un essere umano, ma non da un
software automatico. Era necessario quindi affidarsi alla struttura stessa di HT
che era già più che buona: ogni pagina consisteva di un set definito di
‘capitoli’ e ‘paragrafi’ con strutture e titoli ben definiti.

Il mio lavoro sulla questione è iniziato più o
meno come una sfida: volevo vedere se sarei stato in grado di scrivere un
parser
HTML abbastanza versatile da fargli
estrarre tutti i dati utile e farglieli incasellare correttamente in campi di
database. Come prima cosa dovevo familiarizzare con concetti di accesso remoto
alle pagine residenti su internet. Questa attività è semplificata dai membri
della classe WebClient che è uno
scheletro di un client di servizi web completo.

Il passo successivo era installare localmente SQL Server e impratichirmi con le
tecniche di connessione, inserimento e manipolazione dei dati. Questo database
avrebbe poi ospitato tutti i dati estratti dalla versione online prima di essere
impacchettati ed esportati verso la loro destinazione finale che era il server
mySQL sul sito di HyperTrek.

Nella fase successiva sono state fondamentali le Regular Expression
ovvero quelle definizioni che permettono di identificare ed estrarre particolare
sequenze di stringhe di caratteri in un testo. Sfruttando questa tecnologia, mi
è stato possibile estrarre le varie parti di testo basandosi sui marcatori HTML
e sulle intestazioni delle varie sezioni.

Dopo aver
iniziato ad estrarre le prime informazioni dalle schede degli episodi, piano
piano il lavoro progrediva da un semplice esperimento a un impegno serio verso
l’estrazione di tutto l’estraibile. Dopo le prime prove positivi mi accorgevo
che il parser avrebbe potuto essere esteso sia nella qualità delle informazioni
estratta sia, ancora più facilmente, nella quantità di pagine processate.

Nei primi giorni di Gennaio 2006, SpiderHyperTrek
aveva un nome e una forma ben precisa: era già in grado di elaborare
automaticamente tutte le schede di episodi per estrarne le informazioni. Dopo
qualche revisione, il 15 Gennaio, SpiderHT era nella sua versione finale, a meno
di un po’ di bugfix da fare nei giorni seguenti. In poche settimane, in pratica
le schede degli episodi e dei film – ciò che rappresenta il nucleo di HyperTrek
– erano state strizzate fino a estrarne tutte le informazioni utili.

Il 25 Gennaio inizia il lavoro
su un accessorio del software che come unico scopo aveva quello di convertire i
link usuali in HTML (i tag <a> per intenderci) nei link interni di HTNG (che
sono tag personalizzati in qualche modo simili a quelli che si usano nei sistemi
di Wiki) massivamente, in un numero arbitrario di pagine. Grazie all’alta
modularità del programma, è stato facile scrivere una funzione che combinasse in
maniera diversa le routine già esistenti. Il primo Febbraio successivo questa
utilità aveva effettuato la conversione dei link in tutte le pagine.

Il 6 Febbraio mi aspettava una
nuova sfida: la estrazione completa dalle pagine dei libri. Dopo una breve
discussione su quali tabelle creare nel DB a questo scopo e su come collegarle,
mi rimettevo al lavoro per rielaborare di nuovo le funzioni esistenti e per
integrarle con qualche pezzo di codice nuovo. In meno di una settimana, anche
questa conversione era completata.

Alla fine, SpiderHT consisteva in circa 1800 righe di codice.

La conversione ad HTNG ha
richiesto molto altro tempo e molto altro lavoro da parte di altre persone,
tanto che il sito definitivo è andato online dopo ferragosto, precisamente il 17
Agosto. Alla fine, però, mi piace pensare che il frutto del mio lavoro abbia
dato un apporto fondamentale alla conversione. In pratica ogni singola parola
che veniva generata da HTNG nella sua prima versione era passata almeno una
volta negli algoritmi di una mia utilità.

Decisamente una bella soddisfazione, vi assicuro.

Standard
Uncategorized

Istruzione, diritto e rovescio

Approfittando di qualche giorno di pausa poche settimane fa, un pomeriggio
mentre mi trovavo in cartolibreria, io e Mauro ci siamo messi a parlare dei
libri di testo e del loro costo. Ultimamente sono apparsi sui media diversi
articoli su questo argomento e mi sono quindi rimesso a pensare alla
chiacchierata di quel giorno.

Lo spunto per la discussione ci è venuto dopo aver ricevuto visita di un
cliente che si
informava della disponibilità di libri di testo usati a costi ridotti. Si
trattava di una persona come molte, con una famiglia numerosa, uno stipendio
modesto e una costante difficoltà a tirare fino alla fine del mese. Dopo pochi
minuti abbiamo iniziato a ragionare su come l’acquisto dei libri di testo già alle scuole medie, sia un
impegno economico notevole.
Abbiamo anche fatto qualche altra considerazione: uno stato civile, come si presume
essere l’Italia, si assicura che i suoi cittadini più giovani abbiano diritto
alla studio. A parte obbligarli ad andare a scuola, sarebbe interessante
aiutarli anche con i loro mezzi di ‘lavoro’.

Non ho intenzione di invocare qualche tipo di ‘aiuto di stato’ anche per
libri e affini, non è proprio il caso, sicuramente non in Italia, ma piuttosto
vorrei fare
una domanda agli insegnanti. Invece di mandare gli alunni a comprare costosi
libri di testo, perchè nessun professore si decide a scrivere un manuale sulla
propria materia e non lo rilascia con una licenza open in modo che sia
liberamente distribuibile e, con cautela, corretto e aggiornato?
Io non sono per niente contro le case editrici, contro i libro o contro il
libero mercato, però diciamo al verità: ha senso fa comprare a bambini delle elementari
o ragazzini alle medie voluminosi libri che (apparentemente) cambiano ogni anno per spiegargli
cose che sono tutto sommato i principi fondamentali delle varie discipline
immutati da decenni o da secoli?

Siamo nell’era del collaborative web e nessuno ha pensato di aprire
una wiki sulle materie scolastiche? Non sarebbe bello fare un sito a cui
partecipino professori volontari che raccolgano lo scibile della loro materia,
magari con qualche aiuto da parte degli alunni più volenterosi? Il sito dovrebbe
essere aggiornato continuamente, poi una revisione pesante nei primi due mesi
delle vacanze estive, dopodichè tra fine agosto e i primi di settembre, gli
studenti potrebbero stamparsi i loro ‘libri’ da soli oppure in una copisteria a
un prezzo basso. Chi ha buona vista potrebbe stamparli in caratteri piccoli per
ridurre il peso, chi ci vede male può avere una copia a caratteri grandi. Si
potrebbero stampare a pezzi, via via che il programma procede durante l’anno, di
nuovo per ridurre il peso. Una personalizzazione estrema potrebbe contemplare
più illustrazioni, schemi o immagini per chi ha una memoria visiva oppure
esercizi più difficili per i più bravi. Si potrebbe addirittura spiegare gli
stessi concetti in due maniera diverse, in modo da dare una possibilità in più a
chi fatica a capire un certo argomento.

Ci ho pensato poco tempo, ma le possibilità sono infinite, ci vuole solo un
po’ di buona volontà e qualche piccola modifica a un qualsisi sistema di Wiki
già bello e pronto. Se è vero che l’insegnamento è il mestiere più importante
del mondo e che gli insegnati hanno la corrispettiva importante responsabilità
sulle spalle, questo più che mai è il momento per loro di prendersene carico
veramente, con i fatti.

Standard