Riccardo Vitale
Verified Expert in Engineering
Software Developer
Riccardo has been working for almost seven years for startups and big corporations. His past experiences include: Google, Skimlinks, Thought Machine, and Facebook. Riccardo focuses mainly on Python and Java development. He is fluent in many technologies with the ability to speak Go and a bit of front-end languages/technologies.
Portfolio
Experience
Availability
Preferred Environment
Java, Python, Git, PyCharm, IntelliJ IDEA
The most amazing...
...projects I've worked on were Google's Text-to-Speech system for Italian and building the ML infrastructure for a personal finance service at Thought Machine.
Work Experience
Software Engineer
- Improved the News Feed relevance and the process of the identification of the closest connections in the work social graph.
- Created an experimentation framework for testing various Machine Learning configurations through A/B testing and check the results in real time.
- Contributed to the development of Buck build system for the company's build infrastructure. The goal was to reduce build times and improve the reliability and correctness of the builds.
Machine Learning Software Engineer
Thought Machine
- Supported the Machine Learning team with software engineering best practices in order to create the infrastructure for the training of models and guarantee repeatable experiments and maintainable code.
- Developed and maintained several Machine Learning components from research and model training to deployment. These included a transaction classification engine, data aggregation to produce useful insights, customer clustering, and cash flow prediction.
- Contributed to the development of the core platform and other microservices for user onboarding and storage of bank accounts and transactions.
Software Engineer
Skimlinks
- Designed, developed, and deployed new projects to generate new revenue streams, such as price comparison tools.
- Automated and improved the entire product import process to store the merchant products into the database, for a content monetization product.
- Contributed to the NLP infrastructure for product matching from raw text.
Software Engineer
- Supported the development of Text-to-Speech in Italian by developing and embedding the unique linguistic features of the Italian language into the system.
- Developed a system for the automatic preparation of the data necessary for the training of the Text-to-Speech voice system.
- Worked on the improvement of internal tools for the collection of samples for the training of both Text-to-Speech and Automated Speech Recognition systems.
Experience
Italian Text-to-Speech
Under the linguistics point of view, we worked hard on adapting the engine to support each language's unique features around text normalization, syllabification and verbalization. All these efforts produced noticeable results in the quality of the voice and in the overall rating metrics.
Transactions Classification
Eventually we utilized an ensemble of these models to benefit from the better accuracy of the classifiers in some categories (i.e. the Naive Bayes classifier would be better at classifying transactions of category X vs Logistic Regression which would be better at classifying Y).
This component was the core for other bits of ML insights we provided, such as intelligent alerts on spending, cash flow prediction, user clustering, and so on.
Automated Data Collection for Products Database
I improved the existing process, written in Python, to a more structured and tested component. After the overall execution was more reliable, I introduced parallelization in the data collection component, which would make use of multiprocessing in order to overcome Python's natural issues with multithreading. This brought down the running time while allowing to add more product feeds into the system, thanks to the gain in execution speed. The total running time was brought down to ~12 hours for ~40 million items.
This was the hard limit for how the component was designed in terms of tech stack. So, for the next iteration, I started working on a complete rewrite of the tool in Go, to exploit the excellent parallelization paradigm it offers. Rewriting the component brought down the execution time to ~8 hours for ~60 million items
Skills
Languages
Python, Java, Go, C++, Hack
Libraries/APIs
Pandas, Protobuf, Scikit-learn, NumPy
Tools
Git, Atom, PyCharm, IntelliJ IDEA, Phabricator, GitHub, GitLab, Mercurial, Bitbucket
Platforms
Linux
Storage
MySQL, PostgreSQL, Redis, Memcached, MongoDB, Cassandra
Frameworks
Flask, Django
Paradigms
Concurrent Programming
Other
Tornado
Education
Master's Degree in Computer Engineering
Università degli Studi di Roma Tre - Rome, Italy
Bachelor's Degree in Computer Engineering
Università degli Studi di Roma Tre - Rome, Italy
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring