Printing tool Download PDF

Summary

I'm an experienced Software Development Engineer with +5 years of experience. I designed and implemented scalable systems running under heavy loads and dealing with large amounts of data in real-time. I also have working experience in applied Machine Learning. I'm passionate about ML, especially Deep Learning for Computer Vision. I also occasionally contributed to open-source projects and write technical posts on my blog.

I'm an avid learner and passionate about state-of-the-art technologies. I'm very proactive and a team player that can work independently, capable of building and deploying a system from the ground up. I also have experience in working remotely.

Work experience

December 2018Current

Software Development Engineer

source{d}

Software Development Engineer at Applications Team

July 2018December 2018

Software Development Engineer

Tech Engines

Working on the core of the system written mainly in Scala with some small parts in Python. The core consists in processing data through Spark using custom transformers and building predictive models using H2O.ai. Given the early stage of the product I had the opportunity to experiment and deploy different proof-of-concepts using different technologies such as: Apache Hive, PrestoDB, Apache Kafka, Apache Livy. These POCs were deployed on AWS using EC2 or EMR and provisioned using Vagrant, Ansible and Docker.

Technologies I've dealt with:

  • Programming languages: Scala, Python
  • Analytics frameworks: Spark (+ Spark SQL, Spark ML, Spark Streaming, Apache Livy)
  • Distributed messaging system: Kafka
  • Data warehouse and SQL engine: Apache Hive, PrestoDB
  • Testing: Scala - ScalaTest
  • Building tools: Scala - sbt
  • Deployment and provisioning: Vagrant, Ansible, Docker
  • Development environment: Python - Conda | Generic - Docker
August 2013July 2018

Software Development Engineer

Viralize

Mainly working in Python on the backend especially on the AdServer and on the real-time ETL Analytics pipeline. The AdServer must ensure HA and low-latency in serving hundreds of millions of ads a month and the Analytics pipeline must ensure data-consistency, HA, and scalability in crunching billions of events a day in real-time.

I used some basic Machine Learning techniques, in the specific for Sentiment Analysis applied to YouTube comments and for Recommendation System applied to content selection.

I occasionally had to analyze results of A/B testing experiments by exploring data using data visualization and by applying basic statistical hypothesis testing. The architecture enabling running experiments was built in-house by my team.

Technologies I've dealt with:

  • Programming languages: Python, Javascript, Java, R
  • Scripting languages: Bash (basics)
  • Web development: Html, CSS, JQuery, React.js (basics)
  • Web frameworks: Django (Python), Tornado (Python)
  • Data analysis and scientific computing: numpy, scipy, pandas, matplotlib, ipython, scikit-learn
  • Databases: SQL - Postgres, SQLite | NoSQL - MongoDB, Redis
  • Cloud object storage: Rackspace Cloud Files, Google Cloud Storage
  • Data store: Druid
  • Distributed messaging system: Kafka
  • Distributed coordination: Zookeeper
  • Testing: Python - Unittest, Tox, Mock, Coverage, Travis
  • Development environment: Python - Virtualenv, Virtualenvwrapper, Conda | Generic - Vagrant, Docker
November 2017December 2017

Machine Learning and Computer Vision Engineer Contractor

Muse

The project consists in building a MVP of a Face Recognition System. The deliverable is a Docker image running a single-page webapp that permits to upload a video and train a model using the faces extracted. The faces extracted are then clustered, and the UI permits to label them and train a model. A trained model can then be used to predict the faces of another video.

Technologies I've dealt with:

  • Programming languages: Python, Javascript
  • Web development: Html, CSS, JQuery
  • Web frameworks: Flask (Python)
  • Image/Video manipulation: OpenCV, FFmpeg
  • Face clustering and recognition: OpenFace, dlib, scipy
  • Development environment: Python - Virtualenv, Virtualenvwrapper | Generic - Docker

Education

20092013

Bachelor of Science (BS) in Computer Science

University of Florence

Final grade: 110/110 cum laude (elective courses: Artificial Intelligence, Neural Networks)

Projects

2018Present

Self-Driving Car

Github link

Python project that implements a Convolutional Neural Network  for a self-driving car running in a simulated environment. The structure of the network is based on a paper by NVIDIA. The project covers data gathering, data cleansing, data augmentation, model selection, training and testing.

2016Present

Image Quantizer

Github link

Python project that implements and shows the difference between different methods for performing image color quantization.

Other Projects

Github link

All other projects available on Github. There are various personal open-source projects and I also contributed to some repositories related to data engineering such as: druid, pydruid and kafka-python.

Publications

2016Present

The Central Limit Theorem by Simulation for the Exponential Distribution

RPubs

The simulation compares the theoretical mean and the theoretical variance of the exponential  distribution with the sample mean and the sample variance of the sampling distribution of the mean. It's also shown that this sampling distribution is approximately normal thanks to the CLT.

2016Present

Analysis of the Effects of Vitamin C to Guinea’s Pigs Tooth Growth

RPubs

The purpose of this analysis is to evaluate the effects of vitamin C to tooth growth of Guinea’s pig with different combinations of supplement type and dosage.

2012Present

A New Training Algorithm for Kanerva's Sparse Distributed Memory

arxiv

The SDM was thought to be a model of human long term memory. Its architecture permits to store binary patterns and to retrieve them using partially matching ones. This introduces a new training approach that can handle efficiently even non-random data, and adds the capability to recognize inverted patterns. This approach uses a signal model and suggests a different way of creating the hard locations in the memory.

Created withVisualCV