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'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.
professional experience
- Reflek.io
- 2023–today
- 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. We deliver 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 is 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 includes 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
- 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.
- Integra Sistemi
- 2015
- Support for the Livebase team. 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
- 2005–2015
- Design, development, testing, deployment of both back-office and B2B integration systems for a mid-sized ITC company.
- MC3 Informatica
- 2004–2005
- Software consultancy including design, developement and maintenance of web applications to manage fiscal audits for the italian tax agency.
- Sinergy Group
- 2003–2004
- Software consultancy for website and mobile development.
- Ludonet
- 2001–2003
- Development of game and entertainement platforms for web and mobile.
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
Experience working on macOS, linux and windows systems.
Outstanding professional knowledge of scala and commonly used libraries: akka, play! framework, slick, 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.
Working experience of Go, javascript/es6, html5/css3, typescript, angular–2.
Working knowledge of haskell, clojure and elm.
Professional experience with many editing tools, including vscode, neovim, intellij idea, sublime.
Professional experience with Google Cloud platform.
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