I'm a software engineer, former academic and electronic music producer.
Although in the last couple of years my main focus have been on music technology and audio programming (C++/JUCE), I also have a keen interest in functional programming (with hands-on experience in languages such as Haskell and Clojure) and extensive research experience in the field of formal methods and programming language theory. I've been recently learning Rust and I hope to be able to work more with it in the future.
- π§βπ» stuff I'm working on
- π± stuff I'm learning
- π§ past projects (audio / music technology)
- π₯οΈ past projects (misc)
- π§ͺ research & publications
For more details, please see my CV and LinkedIn profile.
Co-author & Lead developer
2024-Present
An audio FX plugin designed in collaboration with acclaimed trance producer Steve Allen. It should be the first of a series of releases.
More info soon π₯
Author
2025-Present
As I've been learning Rust during the last couple of months, I decided to get some practice by building this fun little project that converts image files to ASCII art.
One of the goals was also to familiarize with functional programming techniques in Rust
(e.g. I didn't use any for
loop to iterate through the image pixels, but relied on iterators facilities; also tried not to use mut
able variables)
Check out the README!
As a C++ developer with some familiarity with functional programming languages such as Haskell, Rust definitely caught my attention.
I love Rust's memory safety (coming from C++, it's a big thing!), modern and smooth tooling experience and those language features (expression-oriented, algebraic data types, iterators, immutability by default etc.) that makes it feel a bit more like a functional language while still giving you all the power and performance of C++ (and the ability to work on audio plugins, which is pretty much exclusive domain of C++!)
To get started with the language I am...
- reading the official Rust Book
- completing the Rustlings exercises
- as a little, fun project, developing a small CLI app to convert images to ASCII art (repo)
Developer
2020-2024
Since 2020, I contributed to the development of the Loopcloud desktop app and its companion audio plugin (which syncs the app to the user's DAW for a more integrated experience).
I delivered several new major features (such as collections, MIDI support and an onboarding interactive tutorial), and an extensive UI rework, in addition to countless bug fixes and workflow improvements.
Lead developer
2021-2022
TATAT is a MIDI plugin designed for 3 main purposes: to create always-changing sequences, to quickly sketch and store music ideas, to add unexpected events to fixed patterns.
Developer
2016-2017
I had the privilege of working at legendary SSL headquarters in Oxford.
During my tenure there I helped develop and maintain the software powering Solid State Logicβs high-end digital consoles in both the Broadcast (System T) and Live (L200, L350 etc.) product families (C#).
Author
2020-Present
A Max4Live device I built for helping me quickly come up with lead patterns when writing trance. It started as a 2020 lockdown project but it's still receiving updates!
Author
2018
A bunch of free audio plugins I wrote while learning JUCE.
- a nice drum synth
- a simple waveshaper
- stereo width utility
- a [bitcrusher][https://github.com/dfilaretti/bitcrusher-demo-2]
Clojure Developer (full-stack)
2019 - 2020
Helped developing Yapster - a messaging app for the workplace; contributing new features across both frontend and backend as well as bug-fixes (Clojure/ClojureScript).
I really enjoyed learning and working with the Clojure programming language!
Developer
2018
According to its official docs,
"K is a rewrite-based executable semantic framework in which programming languages, type systems and formal analysis tools can be defined using configurations and rules"
I loved using K as the foundational framework for my research work as a PhD student,
and I was privileged, a couple of years later, to be able to contribute
back to its community (as well as practicing some Haskell!)
Developer
2018
IELE is an improvement on the Ethereum blockchain virtual machine. It was created after the KEVM project demonstrated that a K formal specification of EVM could automatically generate a VM comparable in performance to hand-crafted implementations.
I helped developing the Solidity to IELE compiler.
Lead Developer
2016 - 2017
Lead the development of DIMMAND, a cross-platform digital solution for detecting literacy difficulties & strengths in children.
I hold a PhD in Computing from Imperial College London, where I worked in the field of programming language theory and formal methods.
My thesis was about the formalisation of the PHP programming language and the development of a static analysis tool derived from the formal semamtics (see below).
Here are the main research projects and publications I worked on during the years.
Lead Developer / PhD Student
2018
KPHP is a formal specification of the PHP programming language written in the K-Framework, together with a prototype bug finding tool based on the theory of abstract interpretation and derived directly from the formal semantics.
Developer / PhD Student
2018
JSCert is a mechanised specification of JavaScript, written in the Coq proof assistant. JSRef is a reference interpreter for JavaScript in OCaml, which has been proved correct with respect to JSCert and tested with the Test 262 test suite.
- IELE: A Rigorously Designed Language and Tool Ecosystem for the Blockchain with T. Kasampalis, D. Guth, B. Moore, T. Serbanuta, V. Serbanuta, G. Rosu and Ralph Johnson - International Symposium on Formal Methods 2019.
- A Digital App to Aid Detection, Monitoring, and Management of Dyslexia in Young Children (DIMMAND): Protocol for a Digital Health and Education Solution with MR Sood, A. Toornstra, M. Sereno, M. Boland, A. Sood - 2018
- An Executable Formal Semantics of PHP with Applications to Program Analysis. PhD Thesis, Imperial College London, 2016.
-
An Executable Formal Semantics for PHP - with S. Maffeis - ECOOP 2014.
-
A Trusted Mechanised JavaScript Specification - with M. Bodin, A. Chargueraud, P. Gardner, S.Maffeis, D. Naudziuniene, A. Schmitt, G. Smith - POPL 2014.
- Building bricks with bricks, with Mathematica - with P. Codara, O. D'Antona - Mathematica Italian User Group Meeting 2011.