Curriculum Vitae

For my curriculm vitae in english please click here and visit my Linkedin's profile

come Programmatore

La mia passione per l’informatica è iniziata fin da bambino: a 9 anni con i computer Commodore, in particolare il VIC 20. A quell’epoca non c’era possibilità di recuperare software facilmente, ho dovuto imparare a programmare e a creare i giochi da me. In soli 3581 bytes creai un gioco di “sci alpino“ in Basic.

Accanto al basic e all’assembler alle scuole superiori ho acquisito conoscenze di Pascal e Clipper sviluppando un software ad-hoc per il locale comando di Polizia. Subito dopo il diploma ho iniziato a lavorare come programmatore per una software house locale in Visual Fox Pro. A 19 anni, nel 1992 alla mia prima esperienza, ho lavoravo in autonomia su complessi gestionali verticali per la gestione di studi di periti d’infortunistica stradale (sinistri), operazioni di carrozzeria (complessi calcoli su tempi di verniciatura e lavorazioni), e soluzioni gestionali per vendita di auto usate e magazzini ortofrutticoli.

Tra il 1992 e il ’95 ho autonomamente ho maturato conoscenze su Delphi creando alcuni piccoli gestionali ad-hoc o utility di sistema.

Nel 1996 ho iniziato a sviluppare le mie competenze Linux based: shell scripting, C, C++, assembler, awk, Perl.

Nel 1998 ho creato un mio sistema operativo di esempio "MYLOS" in C e assembler per architettura Intel 80-386.

Nel 1999 ho acquisito diverse esperienze in ambienti variegati:

  • Sviluppo del “Billing Generation System” di Wind (“C” in ambiente Digital Unix 4.0), PSQL database Oracle, team internazionale.
  • Sviluppo di software per l’inventariazione di beni strumentali (lettore palmare industriale MS15, linguaggio “C”, Novell Palm DOS).
  • Sviluppo di componenti J2EE (Java Bean Enterprise) e JSP.

Nel 2002 in AX Digital Systems ho sviluppato in linguaggio C un analizzatore e classificatore del traffico in rete (PCAP).

Nel 2003 ho redatto e tenuti corsi di formazione come docente su: programmazione linguaggio C.

Dal 2004 al 2010 ho continuato a utilizzare le mie conoscenze di programmazione per realizzare parte dei miei progetti e attività come sysadmin, TCL o Web.

Ho lavorato su Java. Ho esperienze marginali di Python (Django) e Ruby (Rails).

Nel 2008 ho realizzato patch e plugin per World of Warcraft in linguaggio LUA.

Dal 2009 mi sono spostato quasi in maniera esclusiva sulla programmazione per il Web.

come Web Developer

Ho sempre avuto passione per il web sin dai primi server HTTP prima che apache 1.x iniziasse ad essere famoso. Ho iniziato con HTML e Javascript per poi creare i primi CGI in C e poi in Perl. Infine, con PHP3 finalmente la possibilità di accedere a MySQL nativamente.

Il primo grosso progetto web a cui ho lavorato è stato ICIcampus.it nel 2000. Il nucleo era costituito da servizi di community basati su una servlet java tedesca chiama Cassiopeia NetCommnity su cui ho sviluppato servizi aggiuntivi creando un backoffice in PHP3. La servelt offriva funzionalità tipiche oggi di Facebook (profilo, guestbook, amizia, notifiche, forum, chat) a cui noi abbiamo agganciato news, cartoline, incontri al buio, sondaggi, newsletter, mass mailing, export XML verso Yahoo News.

Oltre alla parte web gestivo anche il server (FreeBSD 3.3, Apache JServer, Tomcat, Mysql).

Il lavoro da me fatto è stato poi replicato sugli altri portali negli altri stati: FR, DE, ES, UK.

Nel 2001 ICIcampus ha raggiunto 500.000 iscritti in Europa e 75.000 utenti attivi al mese sul server italiano, picchi di 500 utenti online in chat al giorno.

Nel 2001 con www.icicampus.it siamo arrivati in finale nel premio WWW del sole 24 ore grazie alle numerose segnalazioni della nostra fantastica community di studenti.

ICIcampus in finale nel 2001 al premio WWW del sole 24 ore

Dal 2000 in poi per qualche hanno ho dato a varie riprese il mio contributo anche a www.linux.it

Nel 2001 ho preso in gestione “Livingstone”, un sistema di prenotazione alberghiere interattivo e multi-utente usato dal uno dei più grandi consorzi alberghieri romani. Interamente in Perl oltre alla parte web era integrato con un callcenter telefonico e con un sistema di invio FAX per la conferma dei voucher delle prenotazioni.

Nel 2002 ho migrato un sistema simile per l’ordine dei carburanti dei gestori Q8 da Perl a PHP, lasciando in Perl solo la parte di integrazione con il callcenter telefonico.

Nel 2003 ho redatto e tenuto corsi di formazione come docente su: programmazione linguaggio PHP.

Nel 2005 ho realizzato un sistema di gestione di porti turistici e slot imbarcazioni.

Dal 2005 al 2010 ho sviluppato conoscenza di framework e applicativi open source da implementare in azienda o su clienti: PHPnuke, Joomla, Drupal, WordPress, SugarCRM, VtigerCRM, OS Commerce, Magento, OTRS, DokuWiki, MediaWiki, Codeigniter, Zend.

Nel 2009 ho sviluppato un mio framework da zero per creare in poche ore applicazioni CRM e backoffice completi: FRAD.

Nel 2010 ho iniziato a interessarmi di campagne AdWords e Web Marketing.

Nel 2011 ho acquistio competenze specifiche nelle problematiche di Destination Management System, ovvero di gestione dell’informazione turistica (dati delle strutture ricettive, eventi, manifestazioni, musei, punti di interesse, percorsi ciclistici e naturalistici, storia, et.).

Nel 2011 mi sono occupato di ristrutturare vari portali turistici; da un DB unico i contenuti testuali vengono popolati vari mini-siti tematici con dei file XML che vengono copiati nottetempo via FTP. Il mini-siti è dotato di un sistema MVC che utilizza l’XML come basedati per creare una serie di pagina statiche della durata di 24 ore. Per quanto riguarda i contenuti da vendere questi vengono acquisiti centralmente sempre via XML o JSON da diverse risorse e distribuiti ai mini-siti nello stesso sistema.

Nel 2012 mi sono occupato dell’implementazione di soluzioni di Destination Management System e Booking su piattaforma New Mind.

L’esperienza di alcuni anni con la Publitour mi ha permesso di girare l’Europa e le principali borse turistiche europee ed entrare a contatto con le principali tecnologie utilizzate al di fuori dell’Italia. In particolare il sistema New Mind di Destination Management System. In Italia ho studiato i sistemi usati in Alto Adige e implementato per le province di Verona, Padova e Rovigo l’integrazione tra uffici turistici ed eventi con il portale regionale Veneto.To.

Da questa esperienza ho sviluppato un sistema per destinazioni turistiche con budget limitato chiamato Tportal costituito da un tema base wordpress ed una serie di plugin aggiuntivi per gestire: eventi, informazioni turistiche, punti d’interesse sulla mappa, richieste di pernottamento e altro.

Per destinazioni più grandi è tuttovia quasi sempre necessario prevedere soluzioni ad-hoc e quindi un CRM/CMS dedicato che si interfacci con un portale pre-esistente o un front-end ex-novo.

Dal 2012 mi occupo di realizzare plugin e temi personalizzati per Wordpress e Woocommerce.

Dal 2013 mi occupo di sviluppare applicazioni mobile ibride con Cordova, PhoneGap, AngularJS, Ionic.

Dal 2014 ho incluso nei miei lavori backend anche FuelPHP e Laravel.

come System Administrator

Nel 1992 ho acquisto competenze per la gestione di rete lan su Windows 3.11 NETBEUI e installazione e configurazione di server Netware Novell 3.0 con protocollo IPX.

Nel 1996 dopo lo svolgimento del servizio di leva e il mio trasferimento a Milano ho avuto la possibilità di crescere nella figura di system administrator grazie alla Consoft sistemi che mi ha permesso di lavorare su grandi clienti, grandi infrastrutture, in grandi team internazionali. In particolare su piattaforma Windows NT4 per Pirelli Gomme e Cavi, Banca Nazionale del Lavoro.

Sempre nel 1996 ho iniziato a dedicarmi a Linux e a FreeBSD, all’epoca era come avere a casa nel proprio piccolo PC lo stesso sistema mastodontico delle università. A causa di problemi nell’installazione di Red Hat sul mio PC tramite il cdrom SoundBlaster fui costretto a usare Slackware per poi doverci copiare sopra a mano la Red Hat… e poi era tutto in inglese! Decisi di creare la mia distribuzione italiana, prima su 4 dischetti in formato UMSDOS chiamata “Little Italy Linux” e poi standalone su cdrom, con sistema di gestione dei pacchetti proprio e tool di configurazione di sistema a menù (AGX’s Users Profiles) … nasce Bad Penguin.

Nel 1997, in quest’ambito ho sviluppato una soluzione ad-hoc (costituita da script ed eseguibili stand-alone in Delphi) che affiancata a tool di software distribution (IBM Tivoli o HP SD) consentiva l’installazione di una postazione di lavoro standard (Windows 3.11 o Windows 95) in remoto.

Nel 1999 ho fatto esperienza come sistemistica in ambiente Windows NT4 in Alitalia (backup e ripristino di server su rete mista TCP e Token Ring).

A fine 1999 ho operato come Sistemista per IATA su sistema UNIX/AIX e DMBS Informix (ottimizzazione di query export/import di dati biglietti aerei; backup; automatizzazione di operazione con robot a nastro; manipolazione e conversione di stampe Postscript e elaborazioni in formato PDF).

Dal 2000 per alcuni anni sono stato co-sysadmin di www.linux.it

Dal 2000 ho iniziato a usare attivamente anche FreeBSD sui server icicampus.it

Nel 2001 ho creato l’applicance Leibniz (vedi R&D) di cui ho scritto da zero il sistema di firewalling (iptables).

Nel 2003 ho redatto e tenuti corsi di formazione come docente su: amministrazione di server Linux Red Hat.

L’esperienza in AX Digital System, sempre dal 2001 al 2003, mi ha permesso di acquisire conoscenze nell’ambito di:

  • Gestione di progetti di Risk e Security Assessment della rete informatica.
  • Analisi, sviluppo, realizzazione e gestione di servizi firewall e di rilevamento delle intrusioni.
  • Progettazione e realizzazione di reti Wi-Fi integrate.

Dal 2003 al 2004 mi sono occupato come freelance di installazione e gestione di server Debian, Red Hat, Suse/Novell; documenti sulla sicurezza infomatica (DPS); firewall (Fortinet); PBX (asterisk); installazioni in HA (HearthBeat).

Dal 2001 al 2005 ho spostato via via le attività su Debian (senza tralasciare Red Hat, SuSE, Fedora, CentOS, Ubuntu) e ho realizzato diverse soluzioni di condivisione di files (samba), posta elettronica (postfix, courier, amavis) e di proxy server (squid, squidguard, dansguardian).

Invece di utilizzare tool open source di monitoraggio (Nagios & c.) spesso preferisco creare soluzioni ad-hoc, dove una serie di script raccolgono i risultati e una console centrale li sintetizza e li visualizza via web.

Ho alcune competenze anche nella realizzazione e tuning di applicazioni Java enterprise via Tomcat. E nella realizzazione di sistemi HA con HeartBeat.

Dal 2004 al 2005 per il gruppo Bolici mi sono occupato dell’infrastruttura interna (firewall, mailserver, fileserver, faxserver, centralino).

Nel 2006 ho sviluppato una procedura Linux per l’installazione remota di PC con Windows su catena di montaggio.

Fino al 2007 ho continuato a occuparmi degli stessi argomenti di cui sopra. Nel 2006 ho avuto esperienze non divulgabili in campo militare.

Nel 2008 ho sviluppato una procedura per il deploy di un sistema Linux in 10 minuti via rete o supporto CDROM o USB.

Dal 2007 al 2010 ho acquisito esperienze di emulatori (QEMU) e virtualizzazione con KVM, OpenVZ e VMware.

Dal 2010 la mia esperienza su linux si bassa principalmente sul tuning e l'ottimizzazione di server Web e database (VPS) su sistemi cloud.

nelle Telecomunicazioni

Nel 2001 all’interno di Leibniz ho realizzato la conoscenza di H.323 e OpenMCU per creare un server di videoconferenze tramite client NetMeeting.

Nel 2002 ho realizzato server per gestione e invio di Fax via Hylafax e modem ISDN o analogici.

Sepre nel 2002 ho acquisito competenze di programmazione e gestione schede ISDN PRI Sangoma con API proprietarie.

Nel 2004 e 2005 mi sono occupato di telefonia VoIP realizzando collegamento interno a 3 sedi del gruppo Bolici su PBX Alcatel e protocollo VoIP eliminando i costi delle telefonate intrasede. Ho realizzato videoconferenze H323. Ho installato e configurato apparati Polycom per videoconferenze via rete (H323 o SIP) o ISDN affasciate.

Nel 2006 ho iniziato a fare manutenzione a server Asterisk installati da altri e a creare i primi risponditori con AGI in Perl. Ho creato un tool per gestire i trouble ticket dei clienti con casella vocale, dare priorità alle chiamate in arrivo in base al codice del cliente (livello di contratto memorizzato nel DB) e tipologia del problema con assegnazione automatica al tecnico libero con competenze adeguate (skill based routing).

Dal 2005 al 2010, ed in particolare con Mercurius PBX, ho acquisto conoscenze in ambito TLC ed in particolare nel mondo VoIP SIP e T.38 su piattaforme Asterisk, Freeswitch e CallWeaver; creando patch per Kernel Linux, patch per driver di schede telefoniche, patch per le piattaforme SIP utilizzate.

Ho realizzato numerosi call center con gestione di code e autorisponditori e diversi tool per collegare sistemi telefonici a dataware house per realizzare le automazioni più disparate. Integrazione di rubriche telefoniche con gestionali, ad esempio SalesForce.

Una mia patch del 2000 per utilizzare FAX su asterisk 1.4 (app_fax) ha avuto un discreto seguito in rete ed è utilizzata anche da provider importanti (MixVOIP).

Ho redatto utili consigli per migrare da Asterisk a Freeswitch

nell’ambito della R&D

Le aziende start-up e la creazione di qualcosa da “zero” (from scratch) mi ha sempre affascinato. Oggi la considerò un pò la mia specialità: la creazione di appliance Linux-based ridotte all’osso per ospitare una serie di servizi customizzati.

Nell 2001 la mia prima esperienza in al senso. Leibniz, macchina innovativa all’epoca, aveva una scheda WAN HDLS Sangoma (che in Italia si facevano fatica a trovare) e una scheda ADSL Pulsar interna (australiana); quindi si connetteva nativamente a HDSL e ADSL senza un router. La macchina era diskless, funzionava da cdrom, era presente un disco ma solo per velocizzare le operazione; in caso di guasto del disco la macchina era in grado di funzionare senza. On board una serie di servizi di security: firewall, VPN IPSec, analizzatore di traffico, intrusion detection, http proxy con antivirus, etc. E una serie di servizi multimediali: MCU per fare conferenze H323 con OpenMeeting. Il tutto gestito da un’interfaccia Webmin HTTPS.

Nel 2005 per il gruppo Bolici mi sono occupato di Domotica realizzando una stanza di albergo in scala 1:1 con i componenti BUS EIB Siemens e ABB. Ho anche realizzato un sistema di trasmissione di film e musica on demand via IP da poter essere utilizzato in hotel o navi da crociera.

Nel 2006 per Ergo Italia ho realizzato VipNet: un appliance con Firewall, HTTP Proxy Cache, HTTP filtering & blocking per biblioteche e altri punti di accesso. Nello stesso anno per un’azienda di Latina ho realizzato un JukeBox video mp3 con telecomando.

Dal 2007 ho realizzato Mercurius PBX, realizzazione molto impegnativa: Debian ridotta all’osso; kernel patchato; avvio del sistema ottimizzato al massimo parallelismo possibile; autodiagnostica dei guasti; sistema di aggiornamento del firmware su flash personalizzato; gestione dei numeri di serie delle macchine e dei contratti di abbonamento agli aggiornamenti. Il sistema era anche in grado di agire come: casella vocale, registratore e intercettatore di chiamate, fax server, call center, gestore di code e tante altre funzioni oltre a quelle classiche di PBX.

Per l’installazione rapida delle appliance ho creato un installer dedicato che replica l’immagine di produzione su sistema eterogenei in meno di 10 minuti. Il Linux quick unattended distribution installer che è disponibile ancora su SourceForge.

nell’ambito del Project Management e Problem Solving

Dal 2010 sono diventato un fan della PNL, di Antony Robbins e di David Allen. Adoro “one minute manager”, “che fine ha fatto il mio formaggio?”, fare mappe mentali e cercare di tenere la mia Inbox vuota. Sono diventato un maniaco della gestione del tempo: schedulo e rischedulo.

Utilizzo strumenti di CRM (Sugar CRM, VTiger CRM) collegati a sistemi di trouble ticket (OTRS). E’ anche possibile collegare il CRM al PBX per avere un dettaglio del tempo speso a telefono a seconda del cliente (se digita un codice cliente o se chiama da un numero conosciuto). Ho realizzato tool interni per la gestione delle commesse, timesheet e tracking spedizioni.

Sin dal 2000 mi sono occupato anche del recruiting dei miei collaboratori quando necessario.

Il Problem Solving è l’argomento in cui eccello, dove altri hanno fallito prima di solito anche se non competenze approfondite nella stessa materia riesco a risolvere il problema.

Dal punto di vista del project management lavoro in autonomia sui progeti sin dal 2000; non ho mai gestito gruppi numerosi, sulla maggior parte dei progetti lavoro da solo affidando a max. 1 o 2 persone le attività oppure esternalizzando i lavori a freelance reclutati via rete (oDesk e simili).

Impegno sociale nel promuovere Linux

All’epoca della grande contrapposizione tra Microsoft e il mondo Open Source ho deciso di militare in ILS (Italian Linux Society), l’associazione che in Italia si occupa di Linux (sopratutto dal punto di vista tecnologico) e gestiste il dominio www.linux.it

Ho scritto diversa documentazione su come utilizzare Linux per chi e alle prime armi e contribuito alla nascita di diversi LUG (Linux User Group), cioè associazioni di utenti Linux scrivendo documenti su cos’è e come si gestisce un LUG e più in generale di come si crea e si gestisce un’associazione

Con Davide Cerri siamo riusciti in un impresa epica, mettere d'accordo oltre 130 gruppi locali, per far nascere il Linux Day, evento annuale in cui tutte le associazioni Linux d’Italia si adoperano per promuovere il sistema Linux sia dentro che fuori le scuole. Con Davide abbiamo organizzato le prime due edizioni, le successive tre le ho gestite in solitaria lasciando il timone dopo 5 anche che la manifestazione aveva raggiunto 123 città.

Talk & Conferenze Tecnologiche

Negli anni in cui sviluppavo attivamente Bad Penguin oppure organizzavo il Linux Day mi sono adoperato in diverse conferenze su questi temi:

  • “Le distribuzioni GNU/Linux” – Pluto Meeting – Padova, settembre 1999
  • “Bad Penguin” – Linux Day – Milano Bicocca, marzo 2000
  • “Bad Penguin” – Linux Meeting – Bologna, ottobre 2000
  • “Bad Penguin” – LiMe 2000 – Roma, novembre 2000
  • “Italian Linux Society” – LinuxExpo – Milano, giugno 2001
  • “Italian Linux Society” – Pluto Meeting – Padova, settembre 2001
  • “GNU/Linux nella Pubblica Amministrazione” – Linux Day – Agrigento, novembre 2003.
  • “Il Linux Day 2004” – Linux World Expo – Milano, settembre 2004.
  • Voip e Software Libero” – LinuxDay – Verona, 2010.

Articoli e Pubblicazioni Tecnici

Negli anni in cui Linux sbocciava mi sono dedicato alla scrittura di articoli tecnici sulle riviste italiane del settore.

  • “CVS : sistema di controllo di versione del software” – Login nr. 16 – giugno 1999
  • “Compilare programmi sotto Linux” – Login nr. 17 – agosto 1999
  • “Autoconf ed Automake per la portabilità del software” – Login nr. 18 – ottobre 1999
  • “Gestire l’aggiornamento di più siti web con sitecopy” – Login nr. 19 – dicembre 1999
  • “Gdb: il debugger C sotto Linux” – DEV nr. 69 – dicembre 1999
  • “StarOffice 5.1″, DEV nr. 75 – giugno 2000
  • “Realizzare una semplice interfaccia grafica in Gnome” – DEV nr. 75 – giugno 2000
  • “Introduzione al PHP” – (parte 1) – DEV 82 – dicembre 2000
  • “Il linguaggio PHP” – (parte 2) – DEV 83 – gennaio 2001
  • “Usiamo il PHP” – (parte 3) – DEV 84 – febbraio 2001
  • “PHP e database” – (parte 4) – DEV 85 – marzo 2001
  • “Linux in giacca e cravatta” – Open Source Magazine nr.1 – settembre 2003

Libri, Ebook, e altre pubblicazioni

Rassegna Stampa

  • intervista su Bernabè digital magazine http://www.bernabe.it/Bernabe/default.asp?i00=02&i01=06