Curriculum Vitae

Name Fabio Lopiano
Citizenship Italian
Date of birthApril 21, 1971
e-mail
Address 17, Untere Zaune, 8001 Zurich (CH)
Education
April 1995 University of Pisa, Italy

Computer Science Degree, Mark: 110/110 Laurea Summa cum Laude

Thesis about computational complexity (relationships between various computational resources as space, parallel time, randomness etc).

Among the special topics covered : Parallel Algorithms, Neural Networks, Computer Networks.

Work Experience
June 2004 - present

Zurich, Google Switzerland Gmbh

I work as a Software Engineer for the European Google Labs in Zurich.
After a training period of three months at the Googleplex in Mountain View (CA), I now work permanently at the Zurich Office, mostly on international search quality.

June 2001 - June 2004

Paris, Eutelsat Multimedia Labs (consultant)

I worked (as a consultant from MBI srl, located in Italy), at the Open-Sky Platform, which allows to use satellites as a medium for the internet protocol.

Three kinds of services are currently provided:

  • Fast Internet (via dynamic satellite routing),
  • Video Streaming (satellite broadcasts are encoded in mpeg-4 by some WindowsMedia Encoders and sent in multicast via satellite) and
  • Push services (big files and info are sent to the users in multicast via satellite).

I worked as a technical advisor for the three teams, and I have been busy with design issues on almost all the projects related to the three services.

The main programming languages used are Java, C++ and Python, the configuration managment software is Rational Clearcase, the platform is mainly Linux (Red Hat Advanced Server) for most applications, while only the Video Streaming is done on Windows platforms. The database used is PostgreSQL

The first application I developed here was the Login/Logout server for the fast internet service, which processes requests coming from a JServer (via servlets) and communicates with a satellite gateway which will route the IP traffic directed to a specific address through an uplink. During the connection this server will also interrogate the gateway on the volume of traffic done and update the accounting tables on the database, eventually changing some bandwidth parameters for the users according to the kind of contract they bought.

Moreover I designed and implemented most of the Conditional Access System module, which provides encryption for the content being broadcasted (based on the Java Cryptography Extensions technology) and designed a Multicast Transport Framework in Java which allows applications to send and receive content through "channels" hiding all the details of transport (sockets, multicast addresses, splitting and recomposition of the content in packets, encryption, redundancy etc.). This Framework is strongly object oriented and allows to compose a chain of filters through which the content is processed.

I also designed some libraries in C++ used to build network oriented applications. These libraries provides interfaces for sockets, threads and a framework for easy development of servers. In particular I developed a monitoring application for the streaming video platforms which collects information from the Windows Media Encoders and provides html pages with the status of the encoders, sending alarms if some values are out of certain bounds.

Beside design and development I also work at the training of junior programmers and in 2002 I held a series of seminars on Object Oriented Programming and on Design Patterns, based on the book by Gamma et al.

September 2000 - May 2001

Rijen, Ericsson Laboratories Netherlands (consultant)

I worked for Ericsson as a consultant through two companies, SIGMA and Pegaso srl (now PLP srl).

Pegaso is a company located in Rome and I had a permanent position there.

I worked as design team leader within a project for the charging and billing services of UMTS for the Ericsson telephone switch (AXE). The software was developed on both Unix and Windows NT and it runs on an adjunct processor directly connected to the switch.

The project I worked on was made up of a couple of processes that fetch data from the AXE and send them to the billing centers via various protocols (like FTP and RPC). All the data are safely stored within the process and particular care is given to grant persistence and reliability.

My team was involved in the design and implementation of the main module and in other minor modules about configuration and statistics.

May 1998 - September 2000

Roma, Teseo srl (Permanent)

Teseo srl is a small company of the SNAI holding, which is the main betting company in Italy, with about 800 hundreds betting shops over the national territory.

Teseo takes care of the technological aspects involved in the selling of bets.

Bets are sold on line through a private IP network (frame-relay and ISDN) which links all the betting shops to the SNAI Servers in Lucca. The bets are stored in a Sybase DBMS. The totalizer at the Department of Finance computes in real-time the rates for the bets and periodically sends the best rates in multicast to the providers and all betting shops.

The same software is used in Italy for the Tris bet by Sarabet; in London by Snai International to collect bets by Internet and it has been used in South Korea by Trigem-Snai for the betting on the 2002 Soccer World Cup.

All the software has been developed in C++, based on Unix machines (HP and Compaq). The servers have a web interface to manage the status of the processes and of the services.

I designed and coordinated the development of a framework to manage a big amount of transactions in a concurrent environment. The requests are managed through a number of processes which run concurrently on the same machine and communicate through shared memory and sockets. The clients issue their requests through an UDP protocol and continue issuing the same request until they get a reply. The requests are buffered on the shared memories and the number of transactions open may be larger than the number of processes. A scheduling policy on the managing of requests aims to minimize the service time for transactions, this time is around one hundred ms, passing through two server and four WAN connections.

I also worked for a development of http servers which generate synthetic html and give information about the activities of the main servers, such as statistics about the number of tickets solds or the service time, information about the state of the races and real-time odds and so on. I wrote a class library for this kind of servers as well.

December 1996 - May 1998

Roma, IPACRI spa (consultant)

IPACRI spa (now Elsag) is a company which develops software for banks.

I worked in a project for finance accounting, in a team of a 10-12 people. The software has been developed in C language, in several Unix environments (HP-UX, OSF1 and AIX) and Oracle was the used DBMS. There I developed an application for monitoring the on-line trading on the Italian bonds market and an application for the management of portfolios-trees.

I also designed and implemented a graphical library to easily convert the text-interfaces of the old programs to a X-Motif GUI.

I wrote also a simple application-server for scheduling of programs and control of their execution.

September 1996 - December 1996

Lucca, MAIOR srl (freelance)

I implemented a maximum flow algorithm on directed graphs in C++. This algorithm was used inside a program for the optimization of public transport routes and time tables.

August 1996

Rome, CodeLab srl (freelance)

I implemented an encryption algorithm in C for encrypt/ decrypt records in data base files (dbf).

September 1995 - July 1996

Rome, Dept. of Defense (military service)

During military service I was employed at the Department of Defense, where I developed a program for the automatic assignment of conscience objectors to the sites for civil service according to several kinds of constraints (like geographical distance and areas of interests) Clipper was the programming language; the program is still processing thousands of assignments each month.

Technical Skills
Platforms
  • Good knowledge of Unix (various flavors) and Linux both as system-administrator (also ha-clustering configuration, apache, bind etc.) and as programmer (process management, IPC and network programming).
  • Good experience on concurrent programming, and threads synchronization (posix threads).
  • Good knowledge of network protocols TCP/IP and UDP/IP and sound experience on network programming (BSD sockets)
  • Good knowledge of shell scripting (sh, csh, ksh) and of most Unix filters and scripting tools (sed, awk).
  • Fair knowledge of Osf/Motif and Xt libraries
Programming languages
  • Strong experience of C and C++.
  • Good Knowledge of Java.
  • Good knowledge of Object Oriented Design principles, UML and Design Patterns.
  • Fair knowledge of SQL.
  • Good knowledge of HTML, Javascript and CGI scripts.
  • Some experience with Python
Tools
  • Use of Revision Control Systems RCS, CVS and ClearCase
  • Use of HP-Softbench development environment.
  • Use of Rational Rose, Purify and Pure Coverage
Other technologies
  • Use of UML for design (class diagrams, use cases, etc.)
  • Knowledge and practice of Extreme Programming tecniques (Pair programming, tests, refactoring etc.)
  • Knowledge of XML
Spoken languages
  • Italian : native speaking.
  • English : good writing, fair spoken ToEFL test passed in 1995 result: 600/660
  • French : Intermediate.
Articles
C/C++ Users Journal Sending Objects Across Platforms C/C++ Users Journal, October 2001

Article showing some handy classes to move complex objects across networks, bridging the network format chasm.

Brainbench Certifications
Score: 4.53
Date: 2001-02-16
Scored higher than 97% of all previous test takers
Score: 4.46
Date: 2001-02-15
Scored higher than 97% of all previous test takers
Score: 4.32
Date: 2001-02-15
Scored higher than 92% of all previous test takers

Last Update on February 6, 2005