I love building side-projects. These are some of the ones I've worked on in the past.
Rust, C++, Objective-C
Espanso is a Cross-platform, System-wide Text Expander written in Rust.
It detects when you type a specific keyword and replaces it with something else, while you're typing.
- Rust, to build the majority of business logic.
- C++, to build the Windows and Linux compatibility layer.
- Objective-C, to build the MacOS compatibility layer.
- Windows, macOS and Linux support
- A powerful extension system
- Built-in package manager and an official store
- Emoji support
More info on the official website and the Github page:
Python, Arduino, Machine-learning, Scikit-learn
The Gesture Keyboard is a device capable of converting gestures into characters, made using an Arduino.
That makes possible writing as you would normally do with a keyboard, by moving the device in the air.
- Arduino, to build the device that records the movements.
- Python, to make the library capable of converting movements into characters
- Scikit-learn, a python machine learning library.
More info on the Github page or the video below.
TypeScript, Parser, Async, JSON
Really Async JSON Interface: a non-blocking alternative to
JSON.parse to keep web UIs responsive.
In a nutshell:
- RAJI guarantees that JSON parsing won't freeze your UI, especially on slower mobile devices.
- It does so by dividing the parsing work in chunks.
- It's extremely easy to integrate with web apps, you just need to change the
- RAJI chunks the work only when necessary. If the payload is small enough, it invokes
JSON.parsesynchronously under the hoods so you won't pay an additional overhead.
- RAJI is extremely lightweight, only 1.71kB gzipped.
More info on the Github page:
Sublime Music Manager
Android, Java, Kotlin
It enables you to easily transfer your music files from your computer to your phone over WiFi. It also supports transfers between phones using WiFi Direct.
- A powerful Web Server, built-in the app itself, that makes possible managing your files from every device connected to the same local network.
- Sharing capabilities. Transfer your files over WiFi, or even WiFi direct if a local network is not available.
- Automatic Tags search for your songs, with album cover image as well.
- Multilanguage: both Italian and English languages are available for the Android app and the web app.
- Java to build the app itself.
- React + Redux for the web app that makes possible managing your music over WiFi. It is automatically loaded in the browser when you connect to the app web server.
Check out the app in the Google Playstore by using the button below.
PHP, Symfony, MySQL
Memlight is a Web App developed using PHP / Symfony, MySQL, jQuery and Bootstrap.
It's used to study effectively by repeating concepts. It features:
- A powerful Quiz system, with recovery and statistics.
- Multilanguage support, with English and Italian included.
- Admin Dashboard, to create and edit Courses and Questions.
C++, Optimizations, AI
O(sarracino) is a Tablut Engine written in C++ with a strong focus on performance. It was written by me and Massimo Schembri for the 2019 yearly challenge hosted by Prof. Mello for the Fundamentals of AI course. O(sarracino) got the 2nd place out of 22 participants.
In order to achive the best performance, O(sarracino) took advantage of:
- Bit operations
- CPU intrinsics (native processor instructions)
The engine is capable to evaluate ( on my Intel i5-8400 machine ) about 35 million possibile moves each second.
webTablut is an experimental WebAssembly port of our O(sarracino) Tablut Engine written in C++ to make it capable of being played online.
Lua, Multi-player, Game
Tapzy is an online, turn based puzzle game, written using the Corona SDK framework ( Lua ) for the client and PHP/MySQL for the backend.
- A booking system, to match players around the world.
- A referral system, to recommend the game to other players.
- Gamer Bots to play with if no player is available.
Python, SVM, Machine learning
pyGARL is a Python library that can be used to build complex gesture recognition systems.