My Projects
Filter by:

Rentalcars.com Premium
Rentalcars.com Premium
As a part of the Graduate Scheme at Booking.com, I joined the team that develops the "Premium" insurance product, which offers exclusive benefits to the customer such as skipping the line at the car pickup counter, low deposit and a dedicated helpline to deal with claims. We built the UI in React, developing various components (a comparison of the available insurance options for the car details page, a few upsell banners and information sections) that we then integrated in the main webapp.
As a part of the Graduate Scheme at Booking.com, I joined the team that develops the "Premium" insurance product, which offers exclusive benefits to the customer such as skipping the line at the car pickup counter, low deposit and a dedicated helpline to deal with claims. We built the UI in React, developing various components (a comparison of the available insurance options for the car details page, a few upsell banners and information sections) that we then integrated in the main webapp.

Werner's Restaurant
Werner's Restaurant
A full Restaurant Manager webapp in Java is the final project my team developed for the Internet & Mobile Services course: it allows customers to reserve a table or to book a takeaway order, and the restaurant managers to verify the status of the reservations and orders, add and remove takeaway meals and check other employees' accounts, mostly in the form of CRUD tables.
I've recently made a v2 in Spring and deployed it on Heroku - check it out!
A full Restaurant Manager webapp in Java is the final project my team developed for the Internet & Mobile Services course: it allows customers to reserve a table or to book a takeaway order, and the restaurant managers to verify the status of the reservations and orders, add and remove takeaway meals and check other employees' accounts, mostly in the form of CRUD tables.
I've recently made a v2 in Spring and deployed it on Heroku - check it out!

BSc Dissertation -
Technical Debt
Technical Debt
BSc Dissertation -
Technical Debt
My BSc graduation project: I developed an heuristic algorithm that parses the so-called "SATD methods", that is Java methods that are affected by "Self-Admitted Technical Debt", instances of Technical Debt that the developers self-documented in the form of comments. The research then analysed how such methods evolve from the moment the comment was introduced through Version Control and, based on the bugs reported in the code's issue tracker, how the presence of technical debt affects the amount of bugs on average.
Technical Debt
My BSc graduation project: I developed an heuristic algorithm that parses the so-called "SATD methods", that is Java methods that are affected by "Self-Admitted Technical Debt", instances of Technical Debt that the developers self-documented in the form of comments. The research then analysed how such methods evolve from the moment the comment was introduced through Version Control and, based on the bugs reported in the code's issue tracker, how the presence of technical debt affects the amount of bugs on average.

Cloud computing and GDPR
Cloud computing and GDPR
Disclosing personal data for a purpose not known by data subjects is a practice that the 2018 EU General Data Protection Regulation (GDPR) is supposed to prevent. This article gives an overview of the major aspects of GDPR related to provision, use, and maintenance of cloud services and technologies.
The article was written in collaboration between professors and associates of the faculties of Law and Computer Science of the Free University of Bolzano, and was accepted by IEEE for publication.
Disclosing personal data for a purpose not known by data subjects is a practice that the 2018 EU General Data Protection Regulation (GDPR) is supposed to prevent. This article gives an overview of the major aspects of GDPR related to provision, use, and maintenance of cloud services and technologies.
The article was written in collaboration between professors and associates of the faculties of Law and Computer Science of the Free University of Bolzano, and was accepted by IEEE for publication.

Hack-my-town
Hack-my-town
A day of December 2014, four UniBZ computer science and design students were sent to the smallest town in South Tyrol, Glorenza-Glurns, with a challenge from their professors: find innovative ideas to improve the life of a mountain village, often isolated and closed in its daily life, which would offer history and attractions but fails to entice tourists to stay. Our solution, winner of the contest between UniBZ and other Italian universities, was to create a brand for Glorenza and a consortium for the towns in the area - a brand to promote the history, the beauty of the landscapes and the tastiness of the food and that tourists get to know and trust.
A day of December 2014, four UniBZ computer science and design students were sent to the smallest town in South Tyrol, Glorenza-Glurns, with a challenge from their professors: find innovative ideas to improve the life of a mountain village, often isolated and closed in its daily life, which would offer history and attractions but fails to entice tourists to stay. Our solution, winner of the contest between UniBZ and other Italian universities, was to create a brand for Glorenza and a consortium for the towns in the area - a brand to promote the history, the beauty of the landscapes and the tastiness of the food and that tourists get to know and trust.

Food Saver (GESS 2017)
Food Saver (GESS 2017)
I was selected (among 1200+ applications) to attend the Global Entrepreneurship Summer School (GESS) 2017 in Shanghai. This year's topic was “Food“, and our goal was to find solutions to related problems - such as food waste, obesity, hidden hunger and food safety. My team designed a mobile app that connects users to supermarkets and local food suppliers: most food markets have an “expiring soon“ section with aliments that cannot be displayed as too close to their expiration date. This app would be a database listing such products, so that customers can save money and help reduce food waste.
I was selected (among 1200+ applications) to attend the Global Entrepreneurship Summer School (GESS) 2017 in Shanghai. This year's topic was “Food“, and our goal was to find solutions to related problems - such as food waste, obesity, hidden hunger and food safety. My team designed a mobile app that connects users to supermarkets and local food suppliers: most food markets have an “expiring soon“ section with aliments that cannot be displayed as too close to their expiration date. This app would be a database listing such products, so that customers can save money and help reduce food waste.

Library Manager
Library Manager
I developed a Library Management app as final project for the Database Systems course of my BSc. Written in Java and with a PostgresSQL database, it offers most functions a Library software is expected to have - book search by author, title and other data, user account to check borrowed books and deadlines to return them, and librarian account used to insert new titles into the database and to register book loans and returns.
I developed a Library Management app as final project for the Database Systems course of my BSc. Written in Java and with a PostgresSQL database, it offers most functions a Library software is expected to have - book search by author, title and other data, user account to check borrowed books and deadlines to return them, and librarian account used to insert new titles into the database and to register book loans and returns.

Daily Programming
Daily Programming
They say "Practice makes perfect", and that's why a good programmer should write code every day.
The way I like to practise, when I don't have more complex projects to work on, is to pick a coding challenge (e.g. from r/dailyProgrammer, CodeWars, Project Euler, Advent of Code, ...), or simply to think of a problem I want to tackle, and write my solution for it. This repository is a collection of all such challenges.
They say "Practice makes perfect", and that's why a good programmer should write code every day.
The way I like to practise, when I don't have more complex projects to work on, is to pick a coding challenge (e.g. from r/dailyProgrammer, CodeWars, Project Euler, Advent of Code, ...), or simply to think of a problem I want to tackle, and write my solution for it. This repository is a collection of all such challenges.

Fiscal Code Calculator (Desktop app)
Fiscal Code Calculator (Desktop app)
Another Java app developed for my uni programming course. It allows the user to calculate their Italian tax code (Codice Fiscale) by entering their personal data.
The app was designed to exploit various advanced features of the Java language, such Exception handling, Multithreading, Generics, Reflection, RegEx and Streams. Also, I recently reused the code and built an Android app.
Another Java app developed for my uni programming course. It allows the user to calculate their Italian tax code (Codice Fiscale) by entering their personal data.
The app was designed to exploit various advanced features of the Java language, such Exception handling, Multithreading, Generics, Reflection, RegEx and Streams. Also, I recently reused the code and built an Android app.

Project "EMMA"
Project "EMMA"
"Inventing by recycling" was the theme of the final project of my Management Engineering course at University of Bolzano: starting from the collection of old everyday objects, my team used a lamp container, a LED matrix and a Raspberry Pi to build a wall panel that displays scrolling messages and pictures. The software was a simple bash script that converted images and text into a suitable format and displayed it on the matrix.
"Inventing by recycling" was the theme of the final project of my Management Engineering course at University of Bolzano: starting from the collection of old everyday objects, my team used a lamp container, a LED matrix and a Raspberry Pi to build a wall panel that displays scrolling messages and pictures. The software was a simple bash script that converted images and text into a suitable format and displayed it on the matrix.

mpancaldi.web.app
mpancaldi.web.app
This very website :)
Built with ReactJS and later migrated to Typescript, it's also a chance to play around with my web development skills and experiment with front-end technologies.
This very website :)
Built with ReactJS and later migrated to Typescript, it's also a chance to play around with my web development skills and experiment with front-end technologies.

Twitch-to-Slack notifier
Twitch-to-Slack notifier
I never want to miss a live show from my favourite Twitch streamers, and I'm used to grouping notifications on Slack channels as a way to organise them. After testing services like Zapier and IFTTT and getting quite dissatisfied with the licence limitations or the lack of customisation, I decided to write my own cron job in Python: it queries the Twitch API to find which of the streamers I follow goes live and then connects to a Slack webhook, displaying a nice-looking message.
Never gonna miss a show again!
I never want to miss a live show from my favourite Twitch streamers, and I'm used to grouping notifications on Slack channels as a way to organise them. After testing services like Zapier and IFTTT and getting quite dissatisfied with the licence limitations or the lack of customisation, I decided to write my own cron job in Python: it queries the Twitch API to find which of the streamers I follow goes live and then connects to a Slack webhook, displaying a nice-looking message.
Never gonna miss a show again!

Web Scraper
Web Scraper
What to do when your energy supplier offers a live balance of the energy usage in your account and you wish to monitor it to know how much you're spending, but at the same time you don't want to login every few hours? For me it was the perfect chance to learn web scraping with Python. The result is a script that logs in to my account, calls the supplier's API at the desired time intervals and saves the results. A simple task, but a meaningful achievement and a fun way to apply coding skills to a real-life problem.
What to do when your energy supplier offers a live balance of the energy usage in your account and you wish to monitor it to know how much you're spending, but at the same time you don't want to login every few hours? For me it was the perfect chance to learn web scraping with Python. The result is a script that logs in to my account, calls the supplier's API at the desired time intervals and saves the results. A simple task, but a meaningful achievement and a fun way to apply coding skills to a real-life problem.

Pigeon family cam
Pigeon family cam
When a couple of pigeons nests on your balcony, what could be better than installing a RasPi webcam and broadcasting their lives on the internet?
When a couple of pigeons nests on your balcony, what could be better than installing a RasPi webcam and broadcasting their lives on the internet?

Fiscal Code (Android)
Fiscal Code (Android)
I started learning Android development recently and, in order to focus on the features of the mobile world, as well as on practising with Kotlin, I've been reusing the Java backend of the Fiscal Code calculator I built in university. The app has currently been downloaded 50000+ times and has a rating of ~4.1. Check out the result on the Play Store!
I started learning Android development recently and, in order to focus on the features of the mobile world, as well as on practising with Kotlin, I've been reusing the Java backend of the Fiscal Code calculator I built in university. The app has currently been downloaded 50000+ times and has a rating of ~4.1. Check out the result on the Play Store!

MSc Dissertation -
Automated Grading
Automated Grading
MSc Dissertation -
Automated Grading
I really liked building a wc clone as part of the Software Engineering course of my MSc - less that it took months to receive a grade for it. However, it gave me the prompt for the project of my dissertation project: designing a tool to automatically run tests for students' coding exercises, in order to ease the instructor's job when evaluating and grading them
Automated Grading
I really liked building a wc clone as part of the Software Engineering course of my MSc - less that it took months to receive a grade for it. However, it gave me the prompt for the project of my dissertation project: designing a tool to automatically run tests for students' coding exercises, in order to ease the instructor's job when evaluating and grading them

wc clone (Unix)
wc clone (Unix)
First complex project in Python - creating a clone of the Unix' word count tool, wc, based on re-engineering techniques and black-box testing and using only the Python Standard Library for the main functionality. The result is a program that produces the same output as the original wc for all known input sequences and file formats, including binary files.
First complex project in Python - creating a clone of the Unix' word count tool, wc, based on re-engineering techniques and black-box testing and using only the Python Standard Library for the main functionality. The result is a program that produces the same output as the original wc for all known input sequences and file formats, including binary files.

All-Star Advent of Code
All-Star Advent of Code
After taking part to the Advent of Code 2020 challenges, I decided to go back and solve all puzzles from the past years. I succeeded in a few weeks, and now I'm quite proud of my shiny 300 stars ⭐ — not to mention the huge progress I've made with Kotlin and complex algorithms.
After taking part to the Advent of Code 2020 challenges, I decided to go back and solve all puzzles from the past years. I succeeded in a few weeks, and now I'm quite proud of my shiny 300 stars ⭐ — not to mention the huge progress I've made with Kotlin and complex algorithms.

Holiday request manager
Holiday request manager
I interned for three months at the ICT-Group as a web developer, and my task was to build an additional feature to the company’s HR management software: a portal for the request and approval of the employee vacations, work permits, transfers and bank hours. The UI I developed consists of customisable calendars and timesheets, which offer different views according to the role of the logged user (employee or manager), and was built using AngularJS with the Boostrap CSS framework.
I interned for three months at the ICT-Group as a web developer, and my task was to build an additional feature to the company’s HR management software: a portal for the request and approval of the employee vacations, work permits, transfers and bank hours. The UI I developed consists of customisable calendars and timesheets, which offer different views according to the role of the logged user (employee or manager), and was built using AngularJS with the Boostrap CSS framework.