curriculum vitae di Fernando Tabacchi

dati personali formazione conoscenze informatiche capacità e competenze esperienze lavorative lavori svolti in proprio altro


top

Dati anagrafici
nato a Roma, l' 11/2/1984
residente a Vasanello (VT), via Mazzini 21
Recapiti
  • 3497124926
  • 0761/409588
  • f.tabacchi@tiscali.it

top

maturità
maturità scientifica presso il liceo scientifico Fabio Besta di Orte (VT) 100/100
carriera universitaria

laurea triennale in ingegneria informatica presso "la Sapienza", Roma 106/110

laureando nel corso di laurea magistrale in ingegneria informatica presso "la Sapienza", Roma


top

ambito Java & framework
  • ottima conoscenza di Java fino alle modifiche della versione 1.5
  • ambiente J2EE, servlet e pagine jsp
  • framework: architettura MVC, EJB, buona conoscenza di Struts 1
  • persistence layer: Ibatis e Hibernate 2
database
  • diagramma ER
  • ottimizzazione del diagramma ER, uso di ridondanze, triggers e stored procedures in Oracle tramite la tecnica delle attached java class
  • sintassi SQL
  • gestione di MySql e Oracle Lite (utenze, permessi ecc.)
C
  • buona comprensione del C
  • moduli kernel Windows e Unix per multithreading, gestione della memoria, semafori e socket
software utilizzato
Ambienti di sviluppo: Eclipse, WebSphere
Tools per database: DBmanager, DBVisualizer, MySql Administrator
Pacchetto Microsoft Office: Excel, Word, PowerPoint
altro
  • HTML e stili
  • javascript e tecniche asincrone AJAX
  • php (di base)
  • standard XML e relative librerie Java
  • framework Hadoop per algoritmi in Map/Reduce

top

competenze informatiche
  • ottima padronanza di Java, propensione a creare strutture dati personalizzate, capacità di formulare complessi algoritmi con attenzione ai tempi di calcolo, uso abituale della ricorsione e parametrizzazione di metodi con altri metodi tramite delle interfacce
  • capacità architetturali e di organizzare i moduli in modo da rendere il codice altamente risusabile, di rapida scrittura e facilmente interpretabile
  • buona abilità nel disegno dei database e nella raccolta dei requisiti
attitudini
  • familiarità con approccio Object Oriented
  • capacità di analisi e sintesi, adattamento e apprendimento
  • buone capacità relazionali e nel coordinamento di gruppi medio-piccoli
  • predisposizione al ragionamento logico-matematico & problem-solving
  • preferenza a lavorare in ambienti dinamici e competitivi
  • disponibilità a trasferimenti anche internazionali
lingue
  • italiano (madrelingua)
  • inglese (scritto buono, parlato discreto)
  • francese (discreto)

top

PcCube (HR informatica) (settembre 07 - settembre 08)
gestione valutazioni attitudinali
Periodo: settembre '07 - ottobre '07
Azienda: PcCube
Cliente: vari
Tecnologia: java 1.4, Struts, Ibatis - MySql

Web Application pensata per la valutazione psico-attitudinale dei dipendenti (o potenziali tali) di un'azienda. La valutazione avviene tramite domande a risposta multipla, ciascuna delle quali indica la presenza o l'assenza di una particolare capacità. L'amministratore del sistema ha completa libertà di costruire i vari test specificando quali capacità intende valutare e quante domande afferenti quella capacità inserire, mentre le singole domande vengono scelte in modo casuale. Una volta che gli utenti hanno terminato il test, l'amministratore visiona i risultati composti da un voto medio e voti parziali per ciascuna area di capacità.

Ruolo: Abbiamo lavorato in un team aperto di 5 persone di cui 2 appena assunte (incluso me). E' stata la mia occasione per prendere confidenza con il framework struts e gli strumenti di sviluppo. Ho sviluppato i flussi di fron-end e back-end assegnatomi e ho proposto e implementato alcune migliorie come la possibilità di assegnare lo stesso test a più persone contemporaneamente e di valutarli in modo comparativo, la possibilità di sottoporre lo stesso test alla stessa persona in tempi diversi e valutarne eventuali miglioramenti ed altro.




Basilea - Confidi
Periodo: ottobre 07 -novembre 07
Azienda: PcCube & Engineering Spa
Cliente: Confidi
Tecnologia: java 1.5, Spring, Hibernate - MySql

Web application ad uso dei vari Condidi e loro associati per l'iscrizione e la richiesta di finanziamenti in conseguenza delle restrizioni poste dall'Unione Europea

Ruolo: Engineering ha scelto questo progetto per testare un generatore di codice ancora in fase di sviluppo presso una sua filiale. Seppure tale generatore sembrasse molto versatile era caratterizzato da pesantissimi bachi e il suo utilizzo si è dimostrato decisamente troppo prematuro. Dal canto mio ho appreso il funzionamento di Hibernate. A causa dell'impossibilità di apprendere altro e del bisogno di ridurre il personale da parte del cliente ho chiesto di essere trasferito in un altro progetto




Gestione dei dati sulle centrali elettriche
Periodo: dicembre 07 - marzo 08
Azienda: PcCube
Cliente: Enel Spa
Tecnologia: java 1.5 - MySql

L'applicativo ha lo scopo di catalogare annualmente ingenti quantità di dati riguardanti le attività di centrali elettriche sul continente. Ogni tipo di centrale (es. idroelettrica o a gas) è ovviamente caratterizzata da diversi tipi di dati da conservare. I responsabili delle centrali sono abilitati a inserire i dati solo per la propria centrale, mentre l'amministratore può effettuare ricerche di qualsiasi tipo parametrizzando egli stesso il tipo di ricerca da effettuare. A ciò si aggiungono funzioni di reportistica con resoconti annuali sui dati della produzione.

Ruolo: Nonostante le piccole dimensioni della mia azienda mi è stato chiesto se avevo idee da proporre in merito. Mi sono subito reso conto che utilizzare un database strutturato in maniera "classica" avrebbe necessitato di uno sforzo produttivo esagerato (una ventina di tipi diversi di centrale, ognuna delle quali richiedeva un centinaio di colonne). Dunque ho trovato il modo di trasformare l'apparente problema in soluzione stessa, cioè usare il database stesso come un modello di diagramma ER elencando in una tabella tutte le entità del dominio, in un'altra tutte le colonne con i relativi tipi primitivi ed eventuali requisiti, in un'altra le istanze e in'un altra ancora tutti i valori delle colonne di ciscuna istanza. Ho preferito gestire la generazione delle pagine web per la lettura e scrittura dei dati con delle servlet realizzate ad hoc che convivono con struts (usato per le operazioni più ordinarie come la gestione delle utenze). Ho anche progettato un persistence-layer ad hoc che oltre che occuparsi di inserimenti, modifiche e cancellazioni, effettua delle ricerche parametrizzate in modo personalizzabile generando egli stesso il codice SQL, rendendo invisibile al programmatore la logica sottostante dell'imamagazzinamento dei dati. La fase iniziale del progetto (la web application in questione a cui poi soggetti terzi hanno aggiunto funzioni di reportistica e datawherehousing) è terminato con successo in tempi inaspettati e con il solo ausilio di altre due risorse junior




sisteama previdenziale Poste Italiane
Periodo: marzo 08 - settembre
Azienda: PcCube & DataService & AltaViva
Cliente: iPost
Tecnologia: java 1.3 / java 1.5 - Oracle 9

Il progetto risponde alle necessità di aggiornamento e reingegnerizzazione di un datato applicativo che gestisce la previdenza sociale dei dipendenti del complesso Poste Italiane Spa. Le modifiche hanno riguardato soprattutto l'introduzione dell'IBAN per i pagamenti e un sistema di mutui agevolati riservati ai dipendenti del gruppo. Il sistema si compone principalmente di una web application e di applicativi batch che creano fogli Excel di tipo csv.

Ruolo: oltre a qualche aggiornamento della web application, mi sono occupato di standardizzare l'uso dei processi batch. Tramite un sistema di interfaccie, ho fatto sì che il programmatore debba soltanto specificare quali attributi di una lista di oggetti sono d'interesse, e un'unica classe si occupa di gestire la scrittura in base al tipo di dato. Infine Ho terminato la mia esperienza professionale per riprendere gli studi.





top

lavori in proprio
committente: Eumar International srl
periodo: estate 2010
Tecnologia: Java 1.6 (swing)

Un tool, pensato per essere distribuito su penneta USB con autostart, per custodire informazioni personali preziose in caso di incidente o stato di incoscienze. Il proprietario del dispositivo vi accede tramite password, e può editarne i campi che comprendono informazioni anagrafiche, di contatto, e una scheda medica. Inoltre vi è una sorta di cartella privata, ovvero dei file salvati che vengono mantenuti sul dispositivo in maniera criptata. L'utente che non conosce la password può soltato visualizzare le informazioni sul proprietario. L'applicazione è in Java swing ed è multilingua. Per l'occasione ho sviluppato varie librerie: oltre a delle classi per la gestione dei componenti grafici (molto curati), tutte le label di testo multilingue sono scritte in un file xml che in seguito viene trasformato in oggetto e serializzato, nonché l'intera gestione dei dati avviene in maniera automatizzata (l'applicazione gestisce delle "proprietà" astratte, ovvero testo, numero o scelta multipla e ciò ne rende semplice la modifica). Sito del produttore (non gestito da me): www.d-tag.it




principali progetti universitari
sistema informativo di un lunapark
materia: progetto di base di dati (laurea triennale)
Periodo: primavera '06
Tecnologia: java 1.4 - Oracle 10

Ho realizzato un sistema informativo di un ipotetico lunapark, occupandomi in particolare delle infrastrutture (attrazioni, esercizi commerciali e servizi vari), dei compiti del personale e dei visitatori cui un algoritmo random simula i movimenti (ingresso nel parco, spese, ingresso nelle alttrazioni). Tutti gli eventi vengono memorizzati nel database. L'utente effettua le interrogazioni tramite un'interfaccia java swing e ha a disposizione, oltre a ordinari strumenti di ricerca-inserimento-eliminazione, la possibilità di visualizzare statistiche es. sul gradimento delle attrazioni, i tempi medi di riparazione delle attrazioni rotte da parte dei vari tecnici, e altri indicatori economici come la produddività dei vari negozi.
L'interfaccia grafica è basata su un semplice paradigma schermata di input - schermata di output, dove ogni schermata è costituita da oggetti personalizzati che gestiscono sia i campi dove l'utente immette i dati sia il modo in cui uno o più record vengono stampati, permettendo un notevole risparmi di codice.




generatore evolutivo di algoritmi per giochi
materia: artificial intelligence (laurea magistrale)
Tecnologia: java 1.5

Lo scopo del progetto è dimostrare l'efficacia degli algoritmi genetici su dei semplici giochi con due avversari. Nel mio caso ho sviluppato il semplice gioco del Paddle War (conosciuto anche come Pong). Per permettere ciò ho dovuto:
  • adattare il gioco ad un sistema di variabili astratte e numerabili di input (nel caso del Pong, destra o sinistra o fermo) e di output (posizione mia, dell'avversario e della palla) attraverso i quali l'algoritmo/player rispettivamente invia e riceve informazioni
  • la standardizzazione di un metalinguaggio object-oriented (non si tratta di un generatore di codice ovviamente) in grado di comprendere semplici istruzioni come if/else, and e or, e operazioni algebriche
Un motore random genera gli algoritmi, li fa scontrare tra di loro e ne decreta il vincitore dopo un tot numero di round. Infine il successivo contendente può essere o un algoritmo ex-novo oppure uno già generato ma leggermente modificato in modo casuale.




classificazione di pagine web
materia: ricerca delle informazioni nel web (laurea magistrale)
Tecnologia: java 1.5, J2EE, Mysql, Weka

Weka è un software in grado di catalogare un insieme di proprietà secondo vari motori (es. bayesiani). Ovvero, basandosi su un data-set già completo di proprietà-categoria, ne usa una parte per costruire il proprio motore inferenziale, e poi applica le regole dedotte sull'atra parte verificandone l'esattezza. Ho realizzato una web application attraverso la quale l'utente visiona delle pagine web casualmente recuperate dal sito del dipartimento di informatica e le cataloga in una categoria tra ricerca,informazioni e didattica. La valutazione viene inserita in un database, dove già sono presenti le pagine, opportunamente tokenizzate e depurate di tutti i tag HTML. Infine il programmatore sceglie un insieme di proprietà (la presenza di un termine, il numero di immagini, ecc) e l'algoritmo che ho sviluppato crea un file contenente tali proprietà per tutte le pagine, nonché la sua categoria, cosicché weka possa verificarne l'efficacia.




iniziative personali
generatore di pagine web
Periodo: autunno '03
Tecnologia: java 1.4

Applicazione java che crea un sito web statico con struttura ad albero ad un livello massimo di profondità uguale a 2. Il cuore dell'applicativo è il suo file di configurazione che specifica le varie "parti" delle pagine web. Tali "parti", se variabili sono presenti in file in rapporto 1:1 con le pagine web da generare, altrimenti si trovano in un unico file. Il menù viene generato dinamicamente sulla base di varie impostazioni. E' in pratica un tool adatto per chi vuole sviluppare un sito con una certa libertà ma non conosce linguaggi server side.




Tecnologia: J2EE

Si tratta di un ambizioso framework (ancora agli stadi iniziali) che ha lo scopo di rompere il paradigma MVC e trasformare sia lo strato di View che di Control in un unico oggetto Java. Tale oggetto specificherà quali componenti visualizzare (oggetti che sostituiranno il codice HTML, organizzati ad albero), e cosa fare al verificarsi di un evento dell'utente in modo tale da completare interamente tutto ciò che serve ad un flusso di front-end. In questo modo il programmatore sarà completamente svincolato dai problemi progettuali della pagina web e si dovrà esclusivamente concentrare sul "cosa". Inoltre, data la natura estremamente object-oriented del framework, così come l'oggetto-flusso si occuperà di generare il codice HTML, con una piccola modifica al framework si potrà ad esempio trasformare un'intera web application in una applicazione che giri su interfaccia swing, lasciando immutati gli oggetti di Control-View.

top

Riconoscimenti
medaglia d'argento alle Olimpiadi Nazionali della Matematica (2003, Cesenatico)
impieghi pre-universitari
webmaster, aiuto in lavori agricoli e in attività di restauro
Hobbies
fotografia, calcetto, scacchi, ciclismo

Si autorizza il trattamento dei dati personali ai sensi del D.Lgs. 196/2003