Curriculum Vitae

Other languages

Legal notes

Some of the information below is defined as sensitive under the terms of Italian law n. 675 of December 31, 1996 and later modification. Their being shown here does not imply any authorization to their use. Anyone wishing to extract, archive or in any way use the following information (for non personal use, see Art.3) is required to contact me asking for authorization.

Personal data


Gianni Ceccarelli

Place and date of birth:

San Giovanni Valdarno (AR, Italy), 1977-04-05 (April 5, 1977)

8 Union Road
Northolt UB5 6UE


+44 756 4023 056


Graduated from high school (“Diploma di maturità scientifica”) from “Liceo Scientifico Francesco Redi” of Arezzo (Italy) in 1996, course MFI (special course with additional mathematics, physics and computer science lessons), with top marks (60/60). As part of the final exam I presented a short thesis about photo-realistic image generation with computers, with emphasis on ray-tracing.

On 2001-10-19 I graduated (“Laurea”) in computer science from Pisa University with top marks (110/110 e lode); moreover I've been a fellow at the Scuola Normale Superiore di Pisa for all the five years of university.

My university thesis was about an extension of reinforcement learning algorithms using recurrent neural networks for structured data, allowing the treatment of (for example) sets of cooperating agents with communication networks. Both the thesis (Italian only) and the associated C++ library are available on SourceForge. The library is released under the terms of the GNU LGPL and the thesis under the terms of the GNU FDL.

From 2002-01-01 to 2002-12-31 I've been a PhD student at the Computer Science Department of Pisa University. I quit to find a job.

Work experiences

At Hyperborea

From 2003-02-03 to 2005-06-31 I worked for Hyperborea.

Working for Hyperborea, I've learned several design and development techniques, and I've polished my knowledge in several areas. Specifically:

  • Programming in Python.
  • Integration into a group of developers and coordinating with them.
  • Tracking bug reports (using GNATS).
  • Distributed development and version tracking (with CVS).
  • Design and development of web/CGI applications.
  • Integration of relational databases with web applications.
  • Usage of Oracle (8 and 9i), PostgreSQL, MySQL.
  • XML and related technologies: XPath, XSLT and XSL-FO, XML Schema

Among the various projects I participated in, the most significant are:

  • “iboFlex”, a framework to ease the development of web applications for data-entry into a database, based on ibo (an in-house application server) and XSLT.
  • A general, highly flexible framework for web-based questionnaires. It can handle arbitrarily complex questionnaires, with validation of the answer, and variable presentation (questions and answers in arbitrary order, with multiple formulations for each). It uses XML as representation format and XSLT for presentation.
  • Arianna version 3, a program for the cataloging and description of historical archives, based on XML, for which I've defined the internal representation formats and developed the full-text indexing and searching system.
  • A system for the distributed planning and programming of didactic activities in universities, developed in collaboration with Università di Milano Bicocca, for which I worked on the high-level design and the definition of formats and protocols for data interchange. At the moment the system is being developed by the spin-off TabulaeX.
  • The Ecumene project, a national projects for the distribution of knowledge about artistic and historical heritage of the Italian Catholic Church, in which I worked on the architectural design, on the design and development of some modules, and on the definition of formats and protocols for data interchange.

At Blackbit

In 2005 I helped to start Studio Blackbit, and worked there for about a year. Among the projects we worked on:


From 2006-04-04 to 2009-07-31, I've worked for the Italian R&D office of

Among the various projects I participated in, the most significant are:

  • In the “BigNews” project, I wrote most of the image-selection algorithms, and half of the code that handles images and videos; all the images and videos you see on the BigNews site passed through my code
  • I lead the “News Triggering” project, whose goal is to identify when a query implies that a user may be interest in the latest news about a topic, and then inject those news into the web results; this project required large amounts of statistical analysis on news clusters, the development of several heuristics to filter out noise, and the implementation of dedicated server software

Working for I've refined my project management abilities, and increased my knowledge in several areas. In particular:

  • Programming in C++, especially in large-scale projects
  • Handling communications between geographically-dispersed developers: some of my colleagues were 6 and 9 time-zones away
  • Writing code that handles large amounts of data, in as little time as possible
  • Medium-scale system administration: before we hired a real sysadmin, I and a colleague administered 8 servers and helped with the various desktop machines in the office
  • Screen-scraping of dynamic (JavaScript-enhanced) web sites
  • Video downloading and recoding
  • Working around Microsoft-centric policies imposed by the parent company, using free software


On 2010-01-04 I moved to London to work for as a Perl developer. The most significant projects I worked on were:

  • automating the process to add new products to the catalogue
  • integrating the in-house warehouse management system with a robotic warehouse system, with emphasis on the communication protocol between the two, and on integration testing
  • a non-blocking protocol adaptor (STOMP on one side, binary serial protocol over TCP on the other) to integrate with another robotic warehouse system; I also ran the whole protocol-level integration testing
  • a set of policies and helpers to simplify starting new projects and encourage consistency and code quality
  • a complete messaging client solution for all inter-application communication
  • custom Puppet functions to configure a complete ActiveMQ broker network from a declarative description of message routing
  • non-blocking client libraries to integrate with UPS and DHL shipping services
  • a framework to build non-blocking RESTful APIs (should have been open-sourced as well, but it got lost in bureaucracy)

At Broadbean

I started working at Broadbean on 2015-06-15 as a Perl developer, mostly concentrating on improving the quality of code and tests, and reducing technical debt.

Other experiences

In 1992 I started development of the program “Scegli la ruota giusta” (“Choose the right wheel”) for tellure Rôta of Formigine (MO, Italy). They make and sell wheels for industrial applications; the program was to be put on counters of hardware stores, so that customers could use it to choose, among the various products, the best wheel (in terms of both pricing and performance) for their application. The first version was written in MS Quick Basic 4.5, later it's been completely rewritten in Borland Pascal. It has a complete graphical user interface, with explicative drawings and animations (it was meant to run on Intel 386 systems, with standard VGA cards, under DOS). The database system for searching the catalog is based on functions I wrote solely for this program. Latest versions include an internationalization system, and I supervised (with the help of tellure Rôta's specialists) translation in English, French, German and Spanish.

In 1995 I developer for PFB (Modena, Italy) a program for a test bench for overspeed governors. They make and sell mechanical lift components; the “overspeed governor” is a pulley, in which runs a cable linked to the lift proper: if the cable (i.e. the lift) exceeds a fixed speed, the pulley must block, in so doing pulling the cable and activating the emergency braking system. The program, using a dedicated interface I developed to a speed sensor (an optical encoder hooked to the parallel port), is able to read with high precision the intervention speed of the governor (that is, the highest speed reached before blocking); it allows then to archive tests and print certificates of conformity. The system runs on PCs, in text mode under DOS, and it's written in Borland Pascal. The database system is, also in this case, written ad-hoc.

From 1996 I took part in the construction of a Ethernet local area network among heterogeneous machines (Macintosh and PC with Windows, DOS, Linux). Between 1997 and 2001 I've been "unofficially" responsible of the computer room in the Collegio Carducci of the Scuola Normale (where I lived): when I left it consisted of 8 PC, running MS Windows NT 4 and Linux (we used the RedHat distribution), and two iMac. There were also two laser printers, accessible from every machine on the network; the whole room was protected from external attacks with a NAT (Network Address Translator) made with a PC running Linux. The merit for the good results is not only mine: I've been helped by four colleagues, without whose collaboration it would not have been possible to realize everything we did. I organized a course of introductory lessons on the use of computers for users of the room; the lessons have been held by my colleagues.

In 1997 I translated from English some articles about programming for IBM OS/2 Presentation Manager for the on-line magazine Just Warp!.

Between July and August, 2000 I've been invited to University of Wollongong in Australia to work with prof. Ah Chung Tsoi and his group on neural networks for structured domains.

In 2000 I held some lessons on Perl programming for some of my fellow students, showing the basics of the language (and some obscure characteristic because of “evil” questions)

I've also held a short lesson on the workings, usage and problems of Internet as part of a course for junior high school teachers, organized by my junior high school math teacher.

I wrote the Italian translation of SourceForge, and I helped the Italian translators of KDE 2.

I've been on the organization team of the Italian Perl Workshop for all its editions (4 of them so far), and the European Perl conference (YAPC::EU) in 2010 in Pisa, handling the web-site, the selection of submitted talks, and the scheduling.

I've written a couple of articles for, and I have a CPAN account. Some of my code can be found on my CGit pages and on my GitHub account.


I know several programming languages:


Knowledge level


Very good








Good but a bit outdated



I prefer imperative and object-oriented languages; I have some (design) difficulty with functional languages (Scheme, ML, Haskell).

I have a strong interest (and strong opinions) on user interfaces. The best ones (in my opinion), text mode: WordStar 4.0, Pine; file/folder management: IBM Work Place Shell for OS/2; for PDAs: Apple Newton. Because of this I have designed many user interfaces (many more than I actually implemented).

As a manager/responsible I had some successes, coordinating a team of five people in the administration of a computer network, keeping at first place security and at second place reliability for users (which includes not changing users' habits in the name of innovation). At I've co-ordinated a small team of people, and kept our developments in sync with other teams on the other side of the Atlantic.

I am sysadmin for my Linux machines, all running Gentoo Linux, including the dedicated host that runs the domain.

I speak, read and write fluently in Italian and English; I can read French and with some difficulties Spanish. I've attended a first-level course of Japanese, and I passed the final exam.

DatesCreated: 2003-01-28 10:09:25 Last modification: 2009-10-27 14:01:49