Note legali
Alcune delle informazioni che seguono sono definite sensibili ai sensi della legge 31 dicembre 1996 n. 675 e successive modifiche. Il fatto che siano qui disponibili non implica alcuna autorizzazione al loro trattamento. Chiunque avesse interesse a rilevare, archiviare o comunque trattare le informazioni che seguono (per uso non personale, si veda Art.3) è tenuto a contattarmi e chiedere esplicita autorizzazione.
Dati anagrafici
- Nome e cognome:
- Gianni Ceccarelli
- Luogo e data di nascita:
- San Giovanni Valdarno (AR), 19770405 (5 aprile 1977)
- Residenza:
- via Trieste, 214
52020 Ambra (AR)
- Posta elettronica:
- dakkar@thenautilus.net
- Telefono:
- +393478229734
Istruzione
Licenza media conseguita presso la Scuola Media Statale A. Manzoni di Bucine (AR) nel 1991.
Diploma di maturità scientifica conseguito presso il Liceo Scientifico Francesco Redi di Arezzo nel 1996, sezione MFI (sperimentazione Matematica-Fisica-Informatica), con votazione di 60/60. All'interno della prova orale ho esposto una breve tesi sulla generazione di immagini fotorealistiche al calcolatore, con particolare riguardo a tecniche di ray-tracing.
Il 20011019 ho coneguito la Laurea in Informatica presso l'Università di Pisa con la votazione di 110/110 e lode; sono inoltre stato allievo ordinario presso la Scuola Normale Superiore di Pisa per tutta la durata del corso di laurea (5 anni).
Esami sostenuti, votazione, e breve descrizione delle conoscenze acquisite:
| Denominazione esame | Votazione conseguita | Conoscenze acquisite |
Programmazione I Laboratorio I | 30 e lode |
Elementi di programmazione imperativa (Pascal), algoritmi fondamentali |
| Matematica Discreta | 30 e lode |
Elementi di algebra e geometria (gruppi, anelli, spazi vettoriali, campi) |
Algoritmi e Strutture Dati I Laboratorio II | 30 e lode |
Algoritmi di base, misure di complessità in tempo e spazio |
| Analisi Matematica I | 29 |
Successioni, serie, analisi di funzioni reali di variabile reale |
| Logica Matematica | 28 |
Metodi formali di dimostrazione |
| Analisi Matematica II | 28 |
Analisi di funzioni vettoriali |
Architettura degli Elaboratori I Laboratorio III | 30 e lode |
Struttura fondamentale dei calcolatori, princìpî di funzionamento di un processore tradizionale, esempio di linguaggio assembler |
| Fisica Generale I | 27 |
Meccanica, metodi di misura |
Sistemi Operativi I Laboratorio IV | 27 |
Elementi costituenti un sistema operativo, struttura e funzionamento di un semplice sistema a microkernel, chiamate di sistema POSIX |
| Fondamenti dell'Informatica: Calcolabilità e Complessità | 30 e lode |
Definizione di funzione calcolabile, formalismi per la calcolabilità, funzioni non calcolabili, misure di complessità |
| Analisi Numerica | 27 |
Limiti del calcolo numerico automatico, stabilità numerica degli algoritmi, algoritmi di base per l'algebra lineare |
| Basi di Dati e Sistemi Informativi I | 30 |
Struttura delle basi di dati a oggetti e relazionali, linguaggio SQL |
| Calcolo delle Probabilità | 28 |
Probabilità discreta |
| Linguaggi di Programmazione: Linguaggi Formali e Compilatori | 27 |
Definizione di linguaggio, grammatiche libere da contesto, grammatiche con attributi, idee di base per la costruzione di un compilatore |
| Fondamenti dell'Informatica: Semantica | 30 |
Domìnî di interpretazione dei programmi, formalismi per la descrizione della loro semantica, punti fissi |
| Fisica Generale II | 30 |
Elettro-magnetismo, termodinamica |
| Programmazione Matematica | 28 |
Problemi di ottimizzazione lineare, algoritmo del simplesso |
| Architettura degli Elaboratori II | 30 |
Sistemi multiprecessore simmetrici e asimmetrici, sistemi paralleli e distribuiti |
| Intelligenza Artificiale I | 28 |
Elementi di IA simbolica, sistemi di deduzione, sistemi esperti |
| Ingegneria del Software I | 30 |
Metodologie di analisi e progetto per sistemi software |
| Apprendimento Automatico | 30 e lode |
Metodi e modelli di apprendimento e classificazione automatica |
| Reti Neurali I | 26 |
Modelli storici di calcolo neurale, reti Cascade Correlation, reti Perceptron e Back-Propagation |
| Basi di Dati e Sistemi Informativi II | 30 e lode |
Struttura e funzionamento di un sistema di gestione per basi di dati concorrente |
| Teoria dell'Informazione | 28 |
Problemi di trasmissione dati, entropia, codici a correzione d'errore |
| Linguaggi di Programmazione: Linguaggi Logici | 30 e lode |
Teoria dei linguaggi logici, unificazione, linguaggi logici con vincoli |
| Linguaggi di Programmazione: Paradigmi e Macchine Astratte | 30 e lode |
Teoria e implementazione di interpreti e compilatori per linguaggi funzionali e imperativi |
| Reti Neurali II | 30 e lode |
Reti neurali ad apprendimento non superivisionato, reti ricorrenti, algoritmi evolutivi, logica fuzzy |
| Ingegneria del Software: Laboratorio di Programmazione | 30 e lode |
Analisi requisiti, specifica, progettazione, realizzazione di un sistema software |
| Basi di Dati: Recupero di Documenti | 30 e lode |
Teorie alla base dell'information retrieval |
| Algoritmi e Strutture Dati: Internet e Web | 30 e lode |
Tecniche di crittografia, algoritmi di routing, sistemi di ricerca per Web, algoritmi di compressione dati |
| Matematica computazionale: Geometria | 30 e lode |
Tecniche e algoritmi per il trattamento e la risoluzione di problemi geometrici in due e tre dimensioni |
| Algoritmi e strutture dati: Bioinformatica | 30 e lode |
Algoritmi per determinare distanza e similarità tra sequenze, applicazioni al sequenziamento di geni e alla filogenetica |
Per mantenere il mio stato di allievo della Scuola Normale, ho sostenuto anche altri esami, tra i quali:
| Denominazione esame | Conoscenze acquisite |
| Interazione Uomo-Macchina: Fondamenti di Computer Graphics |
Elementi di grafica sia bidimensionale che tridimensionale, uso della libraria OpenGL |
| Interazione Uomo-Macchina: Progettazione di Interfacce Grafiche |
Componenti fondamentali delle moderne interfacce utente grafiche, linee guida |
| Percezione Robotica |
Principali problemi e metodi di soluzione nella robotica moderna |
| Intelligenza Artificiale: il trattamento automatico del linguaggio naturale |
Problemi e approcci alla comprensione automatica del linguaggio naturale e possibili applicazioni |
La mia tesi di laurea ha come argomento un'estensione degli algoritmi di apprendimento con rinforzo tramite funzioni per strutture, permettendo ad esempio di trattare insiemi di agenti cooperanti tramite reti di comunicazione. La tesi e la libreria ad essa correlata sono disponibili su SourceForge. La libreria è rilasciata sotto licenza GNU LGPL e la tesi sotto GNU FDL.
Dal 20020101 al 20021231 sono stato iscritto al dottorato in informatica presso il Dipartimento di Informatica dell'Università di Pisa. Ho abbandonato per cercare un lavoro.
Esperienze lavorative
Dal 20030203 al 20050631 ho lavorato presso la Hyperborea s.c..
Presso Hyperborea ho acquisito svariate tecniche di progettazione e sviluppo, e approfondito le mie conoscenze. In particolare:
- Programmazione in Python.
- Integrazione in un gruppo di sviluppo e coordinamento con altri sviluppatori/
- Gestione delle segnalazioni di bug (usando GNATS).
- Sviluppo distribuito e gestione delle versioni (con CVS).
- Progettazione e sviluppo di applicazioni web/CGI.
- Integrazione tra database relazionali e applicazioni web.
- Uso di Oracle (8 e 9i), PostgreSQL, MySQL.
- XML e tecnologie correlate: XPath, XSLT e XSL-FO, XML Schema.
Tra i progetti cui ho partecipato, i più significativi sono:
iboFlex , un framework per semplificare la scrittura di applicazioni web di data-entry su database, basato su ibo (un application server sviluppato in-house) e XSLT.
- Un framework generale per la gestione di questionari via web, estremamente flessibile. Permette di definire questionari arbitrariamente complessi, di definire le regole di validazione delle risposte e di variare la presentazione dei questionari (domande e risposte riordinabili, diverse formulazioni per ciascuna). Usa XML come formato di rappresentazione e XSLT per definire la presentazione.
- Arianna versione 3, programma per la inventariazione di archivi storici, basato su XML, per il quale ho definito i formati di rappresentazione interna e ho scritto il sistema di indicizzazione e ricerca full-text.
- Un sistema di gestione distribuita per la programmazione e pianificazione didattica dell'università, sviluppato in collaborazione con l'Università di Milano Bicocca, per il quale ho collaborato alla progettazione d'insieme e alla definizione dei formati e protocolli di interscambio dati. Attualmente il progetto è portato avanti dalla spin-off TabulaeX.
- Il progetto Ecumene, un progetto nazionale per la diffusione telematica di conoscenze sul patrimonio storico-artistico ed archivistico della Chiesa Cattolica in Italia, in cui ho collaborato alla definizione dell'architettura, alla progettazione di alcuni moduli, alla definizione dei linguaggi e protocolli di interscambio dati.
A metà 2005 ho contribuito ad avviare lo Studio Blackbit, con cui adesso collaboro.
Altre esperienze
Nel 1992 ho iniziato a sviluppare per la tellure Rôta di Formigine (MO) il programma Scegli la ruota giusta . L'azienda produce ruote per movimentazione industriale; il programma era progettato per essere messo a disposizione dei clienti delle ferramenta per aiutarli a scegliere, all'interno del catalogo, la ruota migliore (sia come prestazioni sia come prezzo) per la loro applicazione. La prima versione era scritta per MS Quick Basic 4.5, successivamente è stato interamente riscritto in Borland Pascal. L'interfaccia utente era completamente grafica, con disegni e animazioni esplicativi (il tutto girava su sistemi 386 con schede grafiche VGA standard, sotto DOS). Il sistema di ricerca all'interno del catalogo era basato su funzioni di archivio scritte appositamente. Le ultime versioni includono un sistema per la traduzione dei messaggi, e ho curato (assieme a specialisti della tellure Rôta) la traduzione in inglese, francese, tedesco, spagnolo.
Nel 1995 ho sviluppato per la PFB di Modena un programma per la gestione di un banco prova per regolatori. L'azienda produce componenti per ascensori; il regolatore è una puleggia in cui scorre un cavo collegato alla cabina dell'ascensore: se il cavo (e quindi la cabina) supera una certa velocità, la puleggia deve bloccarsi, tendendo il cavo e attivando di conseguenza il sistema frenante della cabina. Il programma, grazie a una interfaccia da me sviluppata con un rilevatore di velocità (encoder ottico collegato alla porta parallela), permette di rilevare con precisione la velocità di intervento del regolatore (ovvero la massima velocità raggiunta prima del blocco), di archiviare le prove effettuate e di stampare un certificato di conformità. Il sistema gira su sistemi PC, in modo testo sotto DOS, ed è stato scritto in Borland Pascal. Il sistema di archiviazione è anche in questo caso sviluppato ad hoc.
Dal 1996 ho partecipato alla costruzione di una rete locale basata su Ethernet tra macchine eterogenee (Macintosh e PC con Windows, DOS, Linux). Dal 1997 al 2001 sono stato ufficiosamente responsabile della sala computer del Collegio Carducci della Scuola Normale (dove abitavo): al momento che l'ho lascaita era composta da 8 PC, con sistemi operativi MS Windows NT 4 e Linux (ci siamo basati sulla distribuzione RedHat), e due iMac. Erano inoltre presenti due stampanti, accessibili da tutte le macchine via rete; l'intera sala era protetta dagli attachi esterni tramite un NAT (Network Address Translator) realizzato con un PC con Linux. Il merito dei risultati ottenuti non è solo mio: sono stato aiutato da quattro miei colleghi, senza la cui collaborazione non sarebbe stato possibile realizzare tutto ciò. Ho organizzato un ciclo di lezioni introduttive all'uso dei computer per gli utenti della sala, che sono state tenute dai miei collaboratori.
Nel 1997 ho tradotto dall'inglese alcuni articoli sulla programmazione del Presentation Manager di IBM OS/2 per la rivista in rete Just Warp!.
Nel periodo Luglio-Agosto 2000 sono stato invitato presso l'Università di Wollongong in Australia per lavorare col gruppo del prof. Ah Chung Tsoi su reti neurali per domìnî strutturati.
Nel 2000 ho tenuto alcune lezioni di Perl per altri studenti, esponendo i fondamenti del linguaggio (e qualche caratteristica oscura a seguito di domande cattive)
Ho tenuto anche una breve lezione sul funzionamento, l'uso e i problemi di Internet all'interno di un corso per insegnanti delle scuole medie tenuto dal mio insegnante di matematica alle medie.
Ho curato la traduzione italiana di SourceForge, e ho aiutato i traduttori italiani di KDE 2.
Capacità
Conosco vari linguaggi di programmazione:
| Linguaggio | Livello di conoscenza |
| Perl | Molto buono |
| Python | Buono |
| C++ | Molto buono |
| C | Molto buono |
| Java | Buono |
| Pascal | Buono |
Preferisco i linguaggi imperativi o a oggetti; ho qualche problema (di progettazione) con i linguaggi funzionali (Scheme, ML, Haskell).
Sto facendo esperienza nel campo della generazione e gestione di siti Web tramite XML/XSL usando XWeb, Apache Cocoon 2 e AxKit. Questo sito è un esempio di quello che sono riuscito a fare fin'ora (cfr. il sorgente). Sto lavorando a un sistema di generazione di siti integrato con subversion.
Ho un forte interesse (e forti opinioni) per le interfacce utente. Le migliori (secondo me), modo testo: WordStar 4.0, Pine; gestione file e cartelle: IBM Work Place Shell per OS/2; per palmari: Apple Newton. Per questo ho progettato molte interfacce utente (più di quante sia riuscito a realizzare).
Ritengo di non avere grandi capacità didattiche, anche se chi ha assistito alle mie lezioni si è detto soddisfatto.
Come organizzatore/responsabile ho avuto qualche successo, riuscendo a coordinare il lavoro di cinque persone nell'amministrazione di una rete di computer, mettendo al primo posto la sicurezza e al secondo l'affidabilità per gli utenti (che include il non stravolgere le abitudini in nome dell'innovazione). Nel Luglio 2004 ho fatto parte del comitato organizzativo del primo Perl Workshop italiano, svoltosi a Pisa; nel 2005 ho replicato col secondo Perl Workshop italiano.
Amministro la mia macchina Linux, su cui girano Apache (con mod_perl), Sendmail, MySQL, Squid, Bind. La macchina gestisce la connessione ADSL, la risoluzione nomi e l'accesso (con proxy) al Web per una piccola rete di calcolatori.
Parlo e scrivo correntemente in inglese; leggo il francese e con un po' di difficoltà lo spagnolo. Ho seguito un corso di giapponese di primo livello, superando l'esame finale.
Dakkar
|
Inizio
Software
Hardware
Racconti
Club di Animazione
Modelli
Viaggi
Links
[Italiano]
[English]
|