If you don’t know anything about computers, just remember that they are machines that do exactly what you tell them but often surprise you in the result.
– Richard Dawkins, The Blind Watchmaker (1986), III, p.50
Lorenzo Villani is a software craftsman who demands the best from his tools and takes pride in a job well executed. He has been speaking to computers since he was three, to the astonishment of his own Olivetti 386 SX.
In 2008 he was chosen to participate to Google Summer of Code between thousands of candidates all over the world. In 2011 he co-founded a startup, Kiwi S.r.L. where he covered the role of Android Development Director and DevOps lead until 2013.
He then joined Develer S.r.L. to work as a software engineer on a wide variety of projects ranging from low-level C/C++ to high-level desktop and server-side development with Python, Qt, and Web technologies. He also gave speeches at conferences and taught classes about Android development in multiple-day courses, without freaking out in the process.
In his spare time he contributes to open source software, cooks, takes pictures with DSLRs, and publishes long-winded blog posts. From time to time he also enjoys to write about himself in the third person.
Technologies & Tools
Software Developer at Develer
March 2013 - Present
- Reverse engineered a software system used to monitor train vitals. Wrote an adapter (in Go) that lets the old software communicate with new hardware that we developed in house.
- Ported a 2D CAD software targeted to the fashion industry, written in C/C++/Python, from Qt 4.6 to 5.3. Came up with a new toolchain to build custom Qt SDKs. Brought CI tools (BuildBot) and Vagrant to the development process.
- Developed a mobile application based on HTML5, Angular and Socket.IO used to process and visualize data streamed by an high-power amplifier, overcoming the challenges of a tight deadline and performance-constrained mobile devices.
- Worked on a cross-platform 2D dental CAD. Restructured a large portion of the code-base and overcame limitations with Qt’s Graphics View Framework. Introduced CI tools (Jenkins) to the development process.
- Customized a low-level C library which interfaces with an USB software protection dongle through the HID protocol.
- Worked on a 2D SCADA system which coupled the desktop CAD itself with a server-side Django application interfacing with a Microsoft SQL Server database. Restructured the code-base to ease further growth. Introduced Vagrant and Ansible to ease development and deployments.
- Taught a two-day introductory course on Android development covering the inner workings of the system and application development.
Co-Founder and Android Director at Kiwi S.r.L.
January 2011 - January 2013
- Director of Android Development: chose technologies, libraries and tools to develop the flagship mobile application which made heavy use of GPS, WiFi and mobile data connection. Optimized the application to make the best use of battery life and data connection. Managed to single-handedly develop the application despite the requirements. Overcame platform limitations by writing internal tools to support the development process.
- DevOps Lead: Helped define development processes, set-up development workstation and servers, chose tools, technologies and set coding standards to steer teams toward Agile development.
Summer of Code Student at Google
April 2008 - September 2008
Worked on the Kexi project (a FLOSS alternative to Microsoft Access, part of the Calligra office suite) to make data entry forms available over a Web interface. The server side component was developed in C++, with a mix of Qt and non-Qt libraries.
University of Florence
2012 - Present
ISCED 5, Computer Science
Pursuing a Bachelor’s Degree in Computer Science while also working at Develer S.r.L.
Liceo Scientifico Guido Castelnuovo
2004 - 2009
ISCED 3, Sciences