Hi, I'm a Computer Science & Engineering (CSE) student at Politecnico di Milano.
I like to tinker with things, tear them apart and see how they work, be it software or hardware.
Below you'll find several open-source projects to which I've contributed to some extent. You'll also find some of my biggest, yet personal, projects on which I've worked during the years.
Jellyfin is a neat and free media library system.
I've contributed to this project by implementing SyncPlay, a feature that lets multiple people watch the same content synced on different devices scattered around the world.
SyncPlay got announced as the headline feature in their 10.6.0 release, woah. Also, I got a shout-out in this podcast by name (at around 7:21).
C#, JavaScript, WebSockets
SkipIntro is a plugin for Jellyfin which lets you skip the intros or repeated content of TV shows.
This is done by analyzing the audio of all episodes and finding similar sound cues (chroma-based features).
C++, OpenCL, C#, Vue.js, Python
OPAL is an administration layer for Policy Engines such as Open Policy Agent (OPA), and AWS' Cedar Agent.
OPAL uses fetchers to initialize and update its internal data. I've implemented the MongoDB OPAL Fetcher which allows retrieving data from a MongoDB database.
Python, MongoDB
Goldberg Steam Emulator emulates Steam online features on a LAN.
I've helped by writing some Linux specific callbacks that the library was missing. This required some reverse-engineering in order to understand what the different callbacks needed to do.
C++, IDA
blender2ogre is a Blender exporter for the OGRE 3D engine.
Minor contribution to add support for OgreMeshTool (basically OGRE released a new exporter so I've integrated it into the add-on).
Python, Blender
Side project made for fun (both in making and using it) that involved using different technologies.
Zero is a multiplayer shedding-type card game, aimed mainly to be played from mobile devices.
- The core can easily be adapted for new game rules.
- The back-end has been written with scalability in mind and relies on job queues to accomplish this. Hosted on Heroku.
- The front-end, which is statically hosted on GitHub Pages (thus removing workload from the back-end), combines Vue.js, Bootstrap and vector images to obtain a PWA that properly scales to fit the screen size without losing visual quality.
- Proper DNS configuration to merge the back-end with the front-end.
Node.js, Vue.js, lots of SVGs, Heroku, Redis, PostgreSQL, RabbitMQ, Progressive Web App
This was my attempt at creating an open-source version of the game ˝Rocksmith 2014˝.
GuitarSmith is a desktop game that teaches the player how to play its guitar with gradual levels of difficulties. Even though it's still in an alpha stage, the key features are present and working, just in a rough way.
Key points of the project are:
- uses the original game's songs, that is, it reads the propietary psarc format;
- first attempt at writing a game engine (render loop, audio loop, game loop, threads);
- some basic GLSL shaders placed on objects modeled in Blender;
- should be cross-platform, further testing needed;
- GitHub Pages deployment with CI/CD builds on Travis-CI.
A code-editor-inspired watch face for the Zepp OS platform.
clockface.json is a watch face I initially developed for my Amazfit GTS 4 Mini, which is a device with limited APIs and functionalities. With a custom editor and parametric design, it allows for a wide range of customization.
- Easy customization with live preview in the editor.
- Custom font support with offline rasterization. Native support for fonts is missing in Zepp OS 1.0.
- Custom PNG and Targa images generator. Using color-palette-based images, the watch face can be customized with a wide range of colors, while reusing the same images.
- On-device customization with a settings page.
- GitHub CI/CD pipeline for automatic deployment to the Amazfit store.
- Has +19k downloads on the official Amazfit store.
TypeScript, Vue.js, PNG, Targa, GitHub Actions, Zepp OS SDK
A custom Find My Device Network Accessory implementation on Newt, targeting the Nordic's nRF51 series, nRF52 series and Espressif Systems' ESP32.
Following Google's FMDN specification, the implementation allows for a device to be paired with Fast Pair and registered on the Find My Device network.
- Fast Pair BLE packet broadcasting.
- GATT server for the device's information, like characteristics and services.
- Authentication with Anti-Spoofing keys and encrypted messages with exchanged keys.
- Android successfully registers the device through the Fast Pair process.
- Find My app will block devices mid-procedure when Model ID is in development mode.
- Next step is to extract the private key of a commercial device and test the implementation.
C++, Bluetooth Low Energy, FMDN, Android
A 3D First-Person Endless Runner game for the Zepp OS platform.
Tunnel Runner is my submission for the Zepp OS 2024 Global Online Hackaton.
- Custom 3D engine with simple collision detection.
- Uses the Canvas API added in Zepp OS 3.0.
- All draws are either lines or image planes, aiming for a retro look with the benefit of being lightweight.
JavaScript, Targa, GitHub Actions, Zepp OS SDK
A custom native module for the Zepp OS Simulator firmware that is used to demonstrate the ability to load and run custom code on the simulator.
By injecting a custom code section and then patching the existing firmware, the module can be loaded and run on the simulator.
- ELF injection is done using lief.
- Patching is done manually with Ghidra by taking over the native WebSocket handler used by the simulator.
- Custom module is able to call new functions and interact with the firmware, accessing unexposed methods too if needed.
- Objective is to inject realtime data into the simulator from host-system sensors, like Bluetooth dongles.
ARMv8, Ghidra, Assembly, C++, WebSocket
Visual Studio Code, vim
Linux (mainly Ubuntu), MacOS
zsh