Archivi tag: hochadelsdorf

Leaving the comfort zone

Due mesi fa, dopo 15 anni, ho lasciato l’azienda per cui lavoravo come sviluppatore software. È capitata una occasione interessante ed ho pensato che fosse arrivato il momento di mettersi alla prova. Sono molto soddisfatto della scelta. Certo non è stato facile ma un amico (e mentore da un punto di vista professionale) mi ha sempre mostrato l’immagine seguente. Ed io ho deciso di lasciare la mia zona di comfort per andare a vedere la magia là dove essa accade. 

Anche dal punto di vista della ricerca ho dovuto lasciare la zona di comfort. Dopo interventi infruttuosi e vicoli ciechi, abbiamo deciso di cambiare completamente approccio. Fino ad adesso abbiamo considerato Genealogics come la fonte dati principale ed utilizzato le altre (Roglo e Geneagraphie) come integrazione. Questo ha portato ad una serie di interventi che, se da una parte correggevano un’incongruenza, da un’altra parte ne inserivano di nuove con nuovi problemi di grafia dei nomi e di legami mancanti. Con oltre tre milioni di record è facile perdere il filo dopo un po’.
Così, dopo una non breve consultazione via Skype (ormai non vado quasi più in dipartimento), abbiamo deciso di ripartire… da capo! Esatto, dai file di testo estratti (a mano) dalle tre basi dati ed elaborati con una versione migliorata degli script in C# che ho usato, ormai oltre tre anni fa, per la tesi.
Da una parte dispiace che tre anni di lavoro siano serviti solo a creare know-how ma dall’altra è un sollievo uscire dalle pastoie di approcci sbagliati e dalla rigidità di una impostazione dei dati che se, all’epoca della tesi, è stata vincente perché ha permesso di individuare alcuni risultati e di intravederne altri, alla lunga ha dimostrato tutti i suoi limiti. Giusto per fare un esempio, all’epoca decisi di usare il nome come identificativo di ciascun soggetto: niente identificativi numerici univoci o cose simili. Avete idea di che significhi fare una ricerca su milioni di righe usando una stringa di trenta o quaranta caratteri come filtro?
In questa revisione della base dati (eviterò di chiamarla Hochadelsdorf 2.0) abbiamo deciso di adoperare da subito un approccio relazionale: più tabelle, una per ciascuna entità o relazione, collegate tra di loro mediante identificativi numerici. Sulla struttura del database tornerò in seguito perché è ancora in fase di definizione. Al momento sto estraendo i dati dai file di testo e popolando delle tabelle provvisorie; da esse dovrò generare un tracciato dati che metta a confronto le tre fonti e su cui determinare i soggetti corretti da importare nel database relazionale (“il relazionale” è ormai il nome comune per questo oggetto che stiamo andando a creare). La roadmap è definita, il tempo, al solito, è poco ma con le idee chiare sul da farsi si lavora meglio. Speriamo di aver imboccato la strada giusta che dalla comfort zone ci porti a incontrare la magia che in questo progetto, sono sicuro, è ancora tutta da scoprire.

A che punto siamo?

E’ passato molto tempo dall’ultima volta che ho scritto su questo blog ma non sono stato inoperoso. Certo il progetto procede un po’ a rilento ma durante l’estate sono state fatte molte correzioni alla base dati e, ad oggi, dovrei essere in grado di integrare i dati con quelli provenienti da un’altra base dati online, operazione che dovrebbe colmare alcune lacune nelle genealogie studiate. Proprio in questi giorni sto valutando l’impatto di questa operazione di integrazione.

Qualche mese fa, il professore mi ha chiesto di dare una mano ad un suo tesista in fisica statistica che sta lavorando sulla cladistica tra famiglie. L’idea era quella di integrare gli alberi genealogici dei capostipiti dell’alta nobiltà con rami sterili e su questi dati condurre varie analisi di tipo statistico. La base dati del progetto Hochadelsdorf poteva quindi costituire un ottimo punto di partenza ma necessitava di alcune elaborazioni. Ho fatto quindi quello che forse avrei dovuto fare fin dall’inizio: trasformare la base dati in una base dati relazionale. Attualmente infatti il database di Hochadelsdorf è una enorme tabella in cui molti dati sono ridondanti. Ho quindi estratto la tabella dei soggetti univoci assegnando ad essi un codice numerico ed ho sostituito, nella tabella delle occorrenze, i nomi con i codici. Poi a ciascun soggetto ho assegnato il codice del padre e quello della madre. In questo modo ho facilitato il lavoro del tesista fornendogli i dati in un formato sicuramente più maneggevole. Magari in un prossimo post entrerò nel dettaglio delle istruzioni SQL adoperate per la trasformazione.