Portfolio

Glimpse
Glimpse Mnemonic key bindings for VSCode commands

Glimpse is a VSCode extension that allows you to run VSCode commands with easy-to-remember key bindings. You no longer need to remember complex shortcuts — Glimpse shows the available key bindings as you type.

 
Release-plz
Release-plz Release rust packages without using the command line.

Release-plz updates the versions and changelogs of your rust packages, by analyzing your git history, based on conventional commits.

 
Rust GitHub Template A template to create an amazing rust project hosted on GitHub in no time.

A template for cargo generate that aims to be a starting point suitable for the vast majority of rust projects that will be hosted on GitHub. It includes documentation, continuous integration and continuous delivery.

 
Poke Speare Toy project to experiment with rust async, actix, reqwest and wiremock.

REST API that, given a Pokémon name, returns its description in Shakespeare's style.

Pokemon description is taken from PokéAPI and it is converted by using Shakespeare translator.

You can use poke-speare both as a web server and as a rust library.

 
VUnit GitHub Action
VUnit GitHub Action Test your vhdl and verilog code with VUnit on GitHub

This action uses the VUnit docker image to test your vhdl or verilog code hosted on GitHub. You can see some examples of how I used this action here.

 
STM32f407G-DISC1 + rust
STM32f407G-DISC1 + rust A bunch of personal experiments with STM32f407G-DISC1 and rust.

In this GitHub organization I collect all the personal experiments I do on my STM32f407G-DISC1 with rust. If you are interested give it a look, but please do not copy-paste in production. 😅

 
Doc-org
Doc-org Generate pdf files by combining org-mode and latex.

The main goal of doc-org is to bring the conciseness of org mode to latex users. While latex is great at specifying how the document should be formatted, it is a little bit too verbose at describing the content of the document itself.

Doc-org runs on docker, which means you don't need to have latex or emacs installed on your machine and you can use it to generate documents with Continuous Integration.

 
Poetry book builder Create a poetry book in latex, starting from plain text.

My mom during her spare time writes some poems and I wanted to collect them in a nicely formatted book. In the meantime I really wanted to learn rust, an amazing systems programming language with no garbage collector that ensures memory safety and data-race freedom.

Therefore, I created poetry-book, a rust library that allows to create a poetry book in latex, starting from plain text and poetry-book-cli, which is a command line interface frontend. Examples repository contains some example latex books aumatically generated via github actions continuous integration.

 
GitHubStats
GitHubStats GitHub statistics web scraper.

After reading "Clean Architecture" by Robert C. Martin, I really wanted to put into practice all the amazing concepts lovely explained in the book. In the meantime, I was also studying Kotlin, a programming language developed by Jetbrains that in my opinion really brings java to the next level.

Therefore I developed GitHubStats, a CLI program that uses web scraping in order to parse some public information about repositories and users. Data retrieved from github.com are cached locally and you can specify cache validity time from settings.

 
Spaceclipse Spacemacs' like key bindings for Eclipse.

Spacemacs is my favorite text editor therefore, to keep my sanity, whenever I have to use another IDE I try to bring spacemacs key bindings with me.

This project tries to mimic Spacemacs key bindings in Eclipse IDE.

For instance, SPC b b in Spacemacs let you switch between buffers, so it makes sense to map it to the Quick switch editor Eclipse command.

 
Intellimacs Spacemacs' like key bindings for IntelliJ platform.

Spacemacs is my favorite text editor therefore, to keep my sanity, whenever I have to use another IDE I try to bring spacemacs key bindings with me.

This project tries to mimic Spacemacs key bindings in IDEs based on the IntelliJ platform, i.e. IntelliJ IDEA, PyCharm, CLion, PhpStorm, WebStorm, RubyMine, AppCode, DataGrip, GoLand, Rider, Cursive, and Android Studio.

For instance, SPC f f in Spacemacs opens a file, so it makes sense to map it to the GotoFile IntelliJ action.

 
City4Age
City4Age Patience management system

While I was a student at Politecnico di Milano I worked on the City4Age European project for 150 hours.

  • Development of both front-end (Javascript) and back-end (Python, PHP)of the City4Age website that allows geriatricians to keep track of their patience and to schedule messages to them or their families.
  • Apache web server setup on local linux machine.
  • Write queries for PostreSQL database.
 
Realization and performance evaluation of a hybrid UWB/WiFi indoor localization system
Realization and performance evaluation of a hybrid UWB/WiFi indoor localization system Thesis for M.Sc. Computer Science and Engineering at Politecnico di Milano.

The main purpose of this thesis is to analyze the performances of different hybrid localization approaches, which combine in a smart way some of the most relevant indoor localization techniques.

I developed a testbed for hybrid indoor localization, which is made of a DecaWave TREK1000 evaluation kit, which utilizes Ultra-wideband (UWB) as wireless protocol and two-way ranging (TWR) as localization technique, and four Raspberry Pi 3 model B, which enable to perform localization with WiFi and RSS.

I carried out the measurements at a laboratory with different wide areas, in which I was able to reproduce both Line-of-sight (LOS) and Non-line-of-sight (NLOS) conditions.

 
Accelerometer game
Accelerometer game A game for the stm32f407 microcontroller based on the accelerometer tap detection

A game for 2 to 4 players, where each player should tap the accelerometer once and then again after 5 seconds. The player who gets closer to 5 seconds wins.

The project is built for the STM32F4-DISCOVERY board, written in C++ on top of Miosix RTOS.

 
DICE Optimisation tool
DICE Optimisation tool Eclipse plugin

I worked for 150 hours, in which I contributed to the development of the Eclipse plugin "DICE Optimisation tool", which is part of the European project "DICE H2020".

The DICE Optimisation tool allows for designing public or private cloud clusters to support data intensive applications based on Hadoop, Spark or Stork technologies. Given the characteristics of the application at hand and a set of alternative deployments, the tool can determine the minimum cost configuration.

I had the oppurtunity to work with Prof. Danilo Ardagna and to improve my knowledge of java, linux and git, writing software that will be actually used in a working environment by other people.

 
MQTT system
MQTT system Modify extra-functional requirements in an adaptive application

Project for Advanced Computer Architecture course of M.Sc. Computer Science and Engineering at Politecnico di Milano.

A sender (Python) modifies extra-functional requirements in the adaptive application of the receiver (C++) using the Internet of Things protocol MQTT. You can find the project presentation here.

 
Walking bus challenge
Walking bus challenge Minimization of the number of chaperons needed for a walking bus.

Solution of the "Walking Bus Challenge" of the Foundations of Operations Research course of M.Sc. Computer Science and Engineering at Politecnico di Milano.

This challenge consisted in the minimization of the number of chaperons involved in the setup of a walking bus system for an elementary school, respecting some constraints that involved mainly the distance between students' houses and school and the risk of the roads.

In mathematical terms this problem is translated in a special case of the spanning tree problem, in which you have to minimize the number of leaves.

Since there was a time constraint, this solution involves heuristic and it classified fourth out of 36 proposed solutions.

 
Council of Four
Council of Four Board Game Computer adaptation

Adaptation of the Council of Four board game. The videogame is composed of a server and client, both written in java. The client can choose the User Interface (cli or gui) and communication method (socket or RMI).

 
HTTP-CoAP proxy A proxy module for CoAPthon

CoAPthon is a python implementation of the Internet of Things protocol CoAP.

This is a proxy that translates HTTP requests to CoAP requests and vice versa using the python 2.7 standard library.

 
Applications for smart environments based on MongoDB and CoAP protocol Computer engineering bachelor thesis

Management and monitoring system for sensors and actuators, that uses the CoAP protocol for the communication between the embedded devices and stores all the data produced by those devices with the DBMS MongoDB.