Bazzico la rete delle reti dall'avvento della "free internet" in italia (un grazie a Tiscali), e fin da allora ho voluto avere la possibilita' di dire la mia online, realizzando piccoli siti amatoriali, ormai abbandonati, dedicati a mie vecchie passioni.
Ho sempre considerato l'impatto visivo di un lavoro il complemento ideale alle sue funzionalita', e ho usato per anni software di foto-ritocco e grafica raster, accumulando una discreta esperienza e lavorando alla grafica di vari siti/locandine/foto/biglietti da visita.
Restando nell'ambito creativo/visivo solo trasversalmente legato all'informatica, ho anche avuto a che fare con l'editing video digitale e col DVD authoring di base.
Sensibile all'aspetto estetico dei siti che visitavo, rimasi impressionato da alcuni (al tempo) innovativi siti realizzati con tecnologia Flash, e decisi subito di imparare ad usarlo, iniziando con la versione 4 e seguendo man mano i progressi del software fino a qualche anno fa, con Flash MX, estremamente potente e versatile, adatto anche a progetti dinamici come l'interfaccia alternativa di questo sito o la creazione di CD multimediali.
Continuandomi ad occupare di web design, cestinai ben presto FrontPage (usato incoscientemente all'inizio, prima di imparare le basi dell'HTML e rendermi conto della pessima qualita' dell'HTML che generava) per lavorare con editor piu' seri, come DreamWeaver, per poi finire con lo scrivere quasi sempre HTML "a mano" e fare il salto di qualita' verso il web dinamico/interattivo con PHP/MySQL, che uso da anni frequentemente per web-applications medio-piccole.
Col passare del tempo il mio interesse per il web design/development e' andato decisamente scemando, sebbene io abbia avuto modo di aggiornarmi e approfondire le mie conoscenze delle tecnologie web-related in ambito universitario, studiando CSS, XML e usando "seriamente" JavaScript e la manipolazione lato client dei documenti (entrando a contatto col mix di tecnologie web client/server alla base di AJAX).
Ma fortunatamente l'informatica non e' soltanto sviluppo per il web.
Divertendomi a programmare da ormai piu' di 8 anni, attivita' che considero estremamente creativa (per non dire artistica) e non semplice tecnica volta all'implementazione di soluzioni software, ho avuto a che fare con numerosi linguaggi e tecniche di programmazione. Ho studiato le basi dell'assembly 8086 e MIPS, e usato per un po' Pascal e Visual Basic. Ho poi appreso C e Java, linguaggi di programmazione di riferimento approfonditi in ambito universitario e usati frequentemente (nonche' per sviluppare numerose applicazioni) ormai da tempo. Non voglio vedere mai piu' Pascal e Visual Basic. Con C e Java ho avuto anche esperienze di programmazione su reti/distribuita (sockets TCP/UDP, RMI, webservices con AXIS). Infine sto usando soprattutto il C++, principalmente per video game programming e grafica 3D. Ho usato la GUI-api cross-platform WxWidgets per creare applicazioni C++ portabili, come uno dei componenti della mia tesi di laurea di primo livello, in cui ho sviluppato una libreria per l'interazione hand-based in ambienti virtuali, interfacciando Quest3D con un guanto per la realta' virtuale e un sistema di motion tracking. Lavorando con i database ho ovviamente spesso avuto a che fare con SQL, che conosco discretamente. Oltre ai DBMS relazionali piu' comuni (soprattutto MySQL), ho utilizzato con soddisfazione il database a oggetti db4o.
Sono molto interessato ai sistemi distribuiti, alle reti e ai sistemi operativi di rete, tra i quali preferisco e uso quotidianamente Debian GNU/Linux, ripiegando su Windows 2000/XP se strettamente necessario. Sto infatti man mano abbandonando il software proprietario, preferendo adottare giorno dopo giorno soluzioni alternative open source o comunque basate su tecnologie e standard aperti (per ragioni sia etiche che tecniche).
Ho una discreta esperienza di amministrazione di sistema Linux per quanto riguarda:
- setup generico in ambiente di rete anche misti Linux/Windows (installazione, routing e firewalling con iptables, networking samba, backup centralizzato...)
- comuni servizi di rete (Apache/PHP/MySQL, ftp/tftp, ntp...)
- accesso e controllo remoto (ssh, vnc...)
- sicurezza (gnupg, check sistema/rete con security scanners...)
In ambiente Windows ho invece maturato in passato esperienza in
- sviluppo di semplici applicazioni gestionali generiche (VB+ACCESS via ADO)
- sviluppo di applicazioni per il controllo biometrico degli accessi (interfacciamento con sensori per il riconoscimento delle impronte digitali)
- gestione del sistema e di piccole reti (workgroup based), con risoluzione (senza formattare!) dei piu' comuni problemi degli utenti finali (come la rimozione manuale di dialer/malware particolarmente aggressivi)
Interessi e propositi di apprendimento per il futuro prossimo:
- application security (tecniche di reverse engineering, vulnerability assestment ed exploiting)
- studio dell'architettura del Kernel Linux e relativa programmazione, e successivo confronto con l'approccio a microkernel (Minix, HURD, Darwin?)
- programmazione per dispositivi mobili (palmari/smartphones)
- grafica 3D: modellazione/animazione/programmazione
- amministrazione di reti complesse/estese (LDAP, VPN, CA, Active Directory e corrispettivo uso avanzato di Samba, routing avanzato, bilanciamento del carico, traffic shaping)
Gli argomenti di informatica teorica che mi interessano maggiormente sono quelli legati a tecniche di programmazione e design patterns, algoritmi, linguaggi di programmazione e compilatori, sistemi operativi e reti.
Non sono un fanatico dell'hardware o un esperto di elettronica, ma se serve non ho difficolta' ad assemblare un comune pc o ad intervenire per semplici riparazioni/sostituzioni di componenti.
In quanto alla mia formazione, ho per il momento
- diploma di perito industriale capotecnico specializzato in informatica (100 e lode), conseguito all'I.T.I.S. B.Focaccia (Salerno)
- laurea di primo livello in Informatica (110 e lode) conseguita all'Universita' di Salerno
Attualmente seguo il corso di Laurea Specialistica in Informatica presso l'Universita' di Salerno e lavoro occasionalmente come sviluppatore/sysadmin per il Laboratorio Cavallo (Salerno).
Per avere un'idea dei miei lavori (o a quelli a cui ho collaborato in qualche modo), puoi visitare la perennemente incompleta pagina 'lavori'.
Mi sento di segnalare in particolare, tra le opere "di cazzeggio", la mia appartenenza al team Hexence (in qualita' di unico programmatore), al lavoro sul videogame amatoriale "Star Wars - Shadows of the Empire: Graphic Adventure" il quale demo (per win e linux), pubblicato nel gennaio 2005 e dopo poco tradotto in inglese e tedesco, ha totalizzato decine di migliaia di downloads, complici le segnalazioni di riviste del settore e di numerosi siti. Tra non molto dovrebbe essere pubblicato online il full-game, e dopo chissa'...