Curriculum Vitae

Transcript

Curriculum Vitae
Curriculum Vitae
Ultimo aggiornamento: Ottobre 2012
Anagrafica
Marco Trentini
Cell.: (+39) 348 8423567
Email: [email protected]
Web: http://datasked.com
nato a Seregno (MB) il 26/06/1979
residente in via Stampa Soncino n.7 - 21047 Saronno (VA)
Sintesi
Laureato in informatica specialistica con una tesi sullo scheduling dei processi nei sistemi operativi Linux
e FreeBSD con aspetti di real-time. Esperienza lavorativa di 7 anni come progettista software embedded
nei settori di telecomunicazioni, automotive, energia e networking. Appassionato di sport, del fai-da-te e
di informatica in generale.
Esperienze lavorative
Ottobre 2010 – Oggi
ADB broadband solutions (ex Pirelli)
sede di Milano Bicocca (MI)
Sviluppatore C embedded – Settore Networking
Progettazione software embedded per router xDSL. Attività di sviluppo,
integrazione e bug fixing su piattaforme Broadcom/OpenWrt con kernel Linux su
MIPS/ARM. Lavoro in team.
Attività:
(*) integrazione e bug fixing device driver ethernet/wifi (hook in rx/tx per
accelerazione di rete software/hardware)
(*) integrazione e bug fixing device driver switch ethernet in kernel e in CFE (hook
driver ethernet, problematiche di GPIO in CFE, arl table, vlan table)
(*) integrazione e bug fixing device driver xDSL
(*) sviluppo e bug fixing extension target di ebtable (kernel e userspace)
(*) integrazione e bug fixing QDISC scheduler WFQ, WRR, SP (problematiche di
overflow, QoS)
(*) sviluppo nuovi moduli di match e target per iptables (kernel e userspace)
(*) sviluppo patch per usare QDISC con fkbuff (strutture dati simili a skbuff
utilizzate dagli acceleratori di rete di broadcom)
(*) sviluppo nuovo acceleratore di rete (hook in rx/tx driver eth/wifi/xdsl per
saltare parte dello stack di networking di linux, da netif_receive_skb())
(*) sviluppo nuove ioctl
(*) integrazione regole iptables/ebtables
(*) sviluppo nuove proc entry
(*) integrazione e bug fixing shell script (bash)
(*) integrazione e bug fixing html (GUI router)
1/6
(*) integrazione e bug fixing tunnel ipv6->ipv4 (QoS)
(*) enforce coding style
(*) integrazione Makefile
(*) analisi kernel panic/oops con call trace
Tecnologie:
Linguaggi: C, shell scripting, html, javascript
OS: Kernel Linux, Debian
Strumenti di supporto: datasheet hardware, trac, hpqc
Strumenti di sviluppo: geany, vi, diff, cvs, svn, cross compile, quilt, IRC
Strumenti di debug/test: sysrq, printk, gdb, objdump, wireshark, tcpdump, iperf,
tcpreply
Hot words:
net_device, net_device_ops, spin_lock, skbuff, fkbuff, dev_queue_only, blog, flow
cache, iptables, hairpinning, frammentazione, header L2, DMA buffer,
tcp_timeout_close_wait, 6rd tunneling, multicast, dhcp, tr69, igmp, snooping,
kernel panic, oops, vlan, qdisc, mtu, fifo, shaping, tr18, bucket, fin/ack, bcm6368
Aprile 2010 – Settembre 2010 (6 mesi)
Snap-on Equipment
sede di Correggio (MO)
Sviluppatore C++ – Settore Automotive
Progettazione software per strumentazioni relative al settore automotive su
hardware Intel. Una prima attività ha previsto un porting da RS232 a Ethernet
(socket) in C++ di un protocollo di comunicazione per gestire gli assetti auto. Una
seconda attività ha previsto un’integrazione di una procedura grafica di assetto auto
e allineamento sensori. Le attività hanno richiesto una certa autonomia nelle fasi di
analisi, progettazione e verifica.
Attività:
(1) Analisi di fattibilità (partendo da un documento di design) di porting da
protocollo seriale a ethernet (socket) di una libreria che viene utilizzata da una
applicazione grafica per la gestione della strumentazione assetti auto.
Stesura di un documento di design con le specifiche della medesima libreria
implementata con protocollo di comunicazione ethernet.
Implementazione in C/C++ (Visual Studio 6) della libreria con utilizzo di
socket. Test di validazione tramite lo sviluppo di un applicativo in Visual
Basic che, tramite la libreria implementata, si collega alla strumentazione che
gestisce gli assetti auto, impostando e rilevando le misurazioni opportune.
(2) Sviluppo di una procedura grafica per gestire assetti auto e calibrazione sensori
per un modello di auto specifico. La procedura, sviluppata in C++ (con parte
grafica) viene inserita all’interno di un applicativo che indica all’operatore i
passi necessari per effettuare l’assetto dell’auto e l’allineamento di alcuni
sensori.
Tecnologie:
Windows, Visual Studio, linguaggio C/C++, socket, rs232.
2/6
Dicembre 2005 - Dicembre 2009 (4 anni)
Nokia Siemens Network (NSN)
sede di Cinisello Balsamo (MI)
Sviluppatore C embedded – Settore Telecomunicazioni
Analisi, progettazione, realizzazione e supporto di software embedded per apparati
di rete GSM/GPRS su hardware Interl/PowerPC. Le attività, svolte con il metodo
waterfall, hanno toccato tutte le principali fasi di ciclo di vita del software: analisi
delle specifiche di progetto producendo documentazione di design (in inglese) della
soluzione; implementazione in c-linux (circa 22.000 righe di codice) della
soluzione secondo gli standard previsti (ansi C); validazione del software tramite
ambiente di test; analisi delle malfunzioni riportate relative al software prodotto e
bug-fixing con patch in assembly (x86/powerPC). Lavoro in team.
Attività:
(1) Applicativo per la gestione delle matrici di interconnessione dei due end-point
della comunicazione GSM/GPRS. Processo single-thread posto sulle schede di
linea, comunica con gli altri processi tramite lo scambio di messaggistica
basata su socket e si occupa di programmare in FPGA/DSP il livello fisico e il
livello data-link (link di segnalazione come LAPD, SS7 e FR) per permette
l’instaurazione di comunicazioni GSM e GPRS.
(2) Device handler per la gestione di un dispositivo elettronico che, tramite
interrogazioni di apposita sensoristica, si occupa di verificare e garantire
(tramite procedure di switch/backup) i livelli di tensione e di corrente del rack,
verificare e regolare ventole di raffreddamento, gestire un pannello allarmi
riportando eventuali anomalie all’applicativo utilizzato dall’operatore. Inoltre
fornisce ad altre applicazioni informazioni sulla topologia del rack (es. single o
double shelf).
Tecnologie:
Linux Montavista, Eclipse, linguaggio C, assembly x86 e PowerPC, clearcase,
make, gdb, wireshark, shell unix.
Luglio 2005 - Novembre 2005 (5 mesi)
Centro Elettrotecnico Sperimentale Italiano (CESI)
sede di Milano
Sviluppatore C – Settore Energia
Analisi e sviluppo di una componente software in linguaggio c (circa 2.000 righe di
codice) inserita in un progetto industriale di ricerca. L'attività ha previsto una prima
fase di analisi e valutazione dell'architettura del sistema in esame e dei protocolli di
comunicazioni utilizzati. Sono state poi sviluppate alcune librerie in linguaggio C
al fine di implementare un protocollo speciale di comunicazione (ModBus) tra
dispositivi elettronici. Inoltre sono state effettuate attività di monitoring di alcuni
parametri di funzionamento dei dispositivi stessi.
Tecnologie:
Windows, layer cygwin, linguaggio C.
3/6
Istruzione
Novembre 2011
Laurea Specialistica in Informatica (voto 101/110) presso l'Università degli Studi di
Milano-Bicocca
Tesi: Real-time EDF scheduling per il kernel FreeBSD: analisi, implementazione e
risultati sperimentali.
Tesi e materiale disponibile su http://datasked.com/marco-thesis/
Dicembre 2003
Laurea di primo livello in Informatica (voto 98/110) presso l'Università degli Studi
di Milano-Bicocca
Giugno 1999
Diploma di Perito Industriale Capotecnico Specializzazione:
Informatica con votazione: 67/100, conseguito presso l'I.T.I.S Pino
Hensemberger, Monza (MI)
Conoscenze linguistiche
Inglese scritto: Buono
Inglese parlato: Discreto
Skill informatiche
Sviluppatore software
Analisi/Documentazione:
propensione allo studio di specifiche di progetto producendo documentazione
di design, anche in lingua inglese
utilizzo a livello accademico di UML (Rational Rose) per realizzare il modello
ad oggetti della soluzione software partendo da requisiti e disegno
architetturale.
stesura documentazione con Latex, doxygen
Implementazione/Sviluppo:
gestione dei sorgenti con cvs, cvsup, svn, clearcase e git;
linguaggi di programmazione: C, C++, assembly, script unix;
compilazione con gcc, cross-compilazione, make;
aspetti di networking: socket, stack TCP/IP, ipv6, modello client/server;
aspetti di programmazione concorrente: thread, semafori/mutex;
aspetti di sviluppo software in kernel-space (moduli e device driver):
allocazione memoria; gestione interrupt top/botton half; comunicazione con
l'hardware (I/O port, I/O memory); implementazione di system call; aspetti di
scheduling dei processi;
4/6
Debug/Fix:
compilazione kernel con opzioni di debug;
utilizzo di kgdb/gdb, printk, wireshark, tcpdump;
patch in assembler x86/powerPC.
Sistemista
Sistemi operativi: FreeBSD;
Installazione OS su server con tuning del Kernel (CPU, scheduler, debug,
networking, device driver, file system, ecc);
Sicurezza: uso dei secure level, delle Jail, firewall (ipfw e pf) e user limit (es.
quoting);
Networking: NAT/PAT, routing table, proxy;
Maintenance: script in cron di verifica con segnalazione via email, nut;
Backup: sistema di backup tramite Bacula (con tape drive);
Demoni: dns, ssh, ftp, http (apache), smtp/pop/imap (postfix+dovecot), samba,
openntpd, cvs, altri;
Attualmente gestisco n.2 server con FreeBSD per scopi vari.
Altre competenze
Realizzazione di un compilatore in linguaggio c (fasi di analisi lessicale e
analisi sintattica) per un linguaggio di programmazione di alto livello (uso
dei tool flex e yacc).
Conoscenza e utilizzo di clutser paralleli: progettazione in c++ della
versione parallela (MPI) dell'algoritmo di Dijkstra.
Utilizzo di sistemi a code di famiglia Torque/PBS.
Sviluppo applicazione client/server per la gestione di un sito di
ecommerce con l'ausilio di XML e servelet JAVA
Discreta conoscenza degli FPGA e microcontroller
Realizzazione di macchine sequenziali tramite un simulatore (XPLA
Professional della Xilinx) del circuito integrato FPGA PZ5064-xA44
(programmazione in linguaggio Abel, HDL) e tramite microcontroller
ST6225 (programmato in assembler).
La relazione e altro materiale di questi progetti sono disponibili su
http://datasked.com/category/corsi-uni/
Sviluppo e mantenimento di un proprio portale web: http://datasked.com
Discreto uso degli strumenti di laboratorio come oscilloscopio, volmentro,
saldatore.
5/6
Aspirazioni professionali
Il settore lavorativo desiderato è quello della ricerca e sviluppo nell'ambito della
scienza dei calcolatori. Di particolare interesse i seguenti argomenti: progettista
software embedded/realtime, OS internals (device driver, moduli kernel, scheduler,
gestore della memoria, sicurezza, custum kernel), protocolli di rete (es. protocolli
di routing), cluster paralleli/GRID, amministrazione di sistema/rete.
Informazioni aggiuntive
Patente A/B (automunito).
Disponibile a trasferimenti/trasferte.
Tipologia di contratto: P.IVA
Interessi e hobby
Appassionato del fai-da-te e di informatica in generale pratico diversi sport tra i
quali tennis e corsa. Seguo diverse mailing list su Linux (LWN), FreeBSD,
DragonFlyBSD e sono un membro del Progetto di Documentazione Italiana di
FreeBSD dove svolgo diverse traduzioni e revisioni. Tra alcune delle letture di
informatica cito “Linux Kernel Development” di Robert Love – “PGP” di Simson
Garfinkel – “I segreti di Unix” di James C. Armostrong.
Autorizzo il trattamento dei dati personali ai sensi della Legge n.196/2003
Saronno, Ottobre 2012
6/6