Conceptual simplicity and underlying structural complexity. Elegant solutions powered by a rich and clear design.
This is what I strive to achieve and software development is my tool and my passion.
I enjoy the opportunity given to us by technology to support our creativity and bring ideas to life.
about me
I usually have my own opinions on different aspects of software development, architecture, code, culture; yet I'm fairly open to exchange and discussion regarding differing positions.
On the lookout for technologies that streamline the development process, the reasoning process, the delivery; it's not about the technology in itself but about the affordances it can provide.
Programming languages, software frameworks, C.S. theories are all valid means to simplify the daily chores of development and possibly reveal new unforseen opportunities.
I do care for the user, at the interface and interaction level.
I believe that an agile approach has its merits, as long as it stays grounded in day to day experience and feedback.
I learned to value observability as a structured approach to understand any running system.
I've been working with open-source software long enough to evaluate new technologies and their applicability to different business use cases.
I actively promote (and anticipated) the industry adoption of functional programming and reactive systems design. I have a special interest for distributed systems, Domain Driven Design, Artificial Intelligence (in the broader meaning), computer and tabletop games.
I'm constantly reading software books and articles and I'm keen to attend to software conferences, whenever possible. I attend and contribute to local developer groups, especially in presence.
professional experience
- Prima Assicurazioni
- 2024–today
- Senior Engineer on the system for Italy Country, Conversion domain.
Learned to deliver production-quality code in three different and previously unknown tech stacks (rust, php, elixir), understanding their programming model and evaluating their effectiveness, all within my first year with the company.
Merge to master as appropriate, sometimes multiple times a day.
Create observable systems to track live behavior.
Apply test-driven development when appropriate. Use automated testing to guarantee the system behavior and remove fear of regressions.
Simplify the code when useful, to remove complexity that slows down delivery — due to reduced understanding of both the current flow and the eventual impact of changes
Minimise code changes when shipping is more relevant than spending time to clean up and the effort isn't repaid for.
Actively contribute to design solutions that reduce inter-team coupling and keep a bound on complexity, by carefully understanding the actual problem requirements.
Help onboarding other team members to projects, business domain, the technology.
Shamelessly contribute to — or lead — production incidents, incident reviews, team retrospective.
Regularly evaluate new candidate developers with live coding interviews.
- Reflek.io
- 2023–2024
- Backend Team Lead for the Reflek.io industry platform — I've joined the company to take charge of the team that delivers the technical foundations of the platform. Overseen the delivery of a distributed cloud-to-edge digital platform to fulfill the modern requirements of the traditional industry, including e.g. Manufacturing Plants, Energy Plants, IIoT. My role was to coordinate the team efforts, give technical directions, evaluate and experiment on technologies and provide overall support the business with technical knowledge when interacting with other teams and the customers. Beign still a relatively small company, my role often included support in operating the platform, like handling incidents, helping the release process, and generic DevOps practices.
- Kensu
- 2020–2023
- Engineering team for the Kensu product — involved in all aspects of the system development, as part of the backend team I delivered new features, refactored the technical architecture, wrote tests, analysed and solved bugs and issues, regarding all aspects of the user-facing Saas solution. Among the many things, I was involved in transitioning the system to be cloud-ready, enabling both on-premise and on-cloud installations. I took charge of the GO language business modules, learning the language as I went, designing a data-oriented json handling solution to simplify common data-transformations. I took part in the interview process for new potential recruits both for scala and go positions. I migrated parts of the existing Go services to scala, now based on the ZIO library.
- Scalac
- 2016–2020
- Scala design, development and support for different projects, including: web-apis, streaming event storage, financial trading, blockchain. I specifically did most of the work to contribute for significant features of the scala Conseil Tezos indexer/explorer, as we transitioned it from an akka-based solution to a purely functional typelevel stack solution. I've supported a PoC distributed system to handle high-rate networking device events for anomaly detection, based on akka, kafka, cassandra and elastic, migrating from standard actors to a reactive-streams design, with end-to-end flow-control. I also gave relevant contributions as short term consultancy for the inception of a provisioning-chain software solution migrating from a spreadsheet-based manual process — including evaluation of tech stack — and auditing of a big-data software architecture for document-processing. I was extensively involved in the recruitment process, evaluating dozens of new potential devolopers.
- Scala-Italy
- 2016–today
- Co-organizer of the italian conference on Scala
- Fhoster & Integra Sistemi
- 2015–2016
- Core development team for the Livebase product. The job entails all aspects and the whole development lifecycle of a web-based backend-generating turnkey application provided as a PaaS solution.
- MC-link — now part of Retelit
- 2005–2015
- Design, development, testing, deployment of both back-office and B2B integration systems for a mid-sized ITC company.
- Multiple Companies
- 2001–2005
- Entertainment Platforms for the web & software consultancy
education and training
- 1994–2001University "La Sapienza", Rome — Master's degree in Physics
Thesis work at CNR (National Research Center) on Enterprise Knowledge Management applied to physics research - 2019Real World Functional Programming with ZIO — 3–days FP workshop with John DeGoes using Scala
- 2018Introduction to Elm — 1–day workshop with Richard Feldman
- 2014Vaadin 7 certified developer
- 2013Coursera — Principles of Reactive Programming
- 2012Coursera — Functional Programming Principles in Scala
- 2012Brief courses on Management and Communication
technical skills
Worked on different OS systems, mostly macos, linux
Lately gained a lot of direct professional experience with rust, elixir, php, elm.
Outstanding professional knowledge of scala and commonly used libraries: akka, zio, play! framework, slick, cats & al. typelevel libraries.
Long-term professional experience with java (familiar with 8+) and the java-ee platform, familiar with a wide range of open source libraries and the jvm in general.
Had my chance to work with Go, javascript/es6, html/css, typescript.
Working knowledge of haskell and clojure.
Professional experience with many tools, including vscode, neovim, git, docker, Google Cloud, AWS, datadog, build tools.
Professional experience with different development and deployment tools including sbt, maven, gradle, git, jenkins, docker.
Professional experience with sql, relational and nosql storage (including graph-databases, document stores, key-value stores, columnar databases)
Consolidated knowledge of object oriented, functional, declarative programming and related design principles and patterns.
Expertise in reactive distributed systems, test-driven design, domain driven design, cqrs, event-sourcing, rule-engines, category theory.
personal extras
I can drive cars and motorbikes
I play drums, sing and dance
I love ice-hockey, surfing and snowboarding
I read, almost constantly
I love my family and believe in God