I'm a human being living in Italy, near Milan.
I love music and technology, reading and writing, science and philosophy.
I listen to italian and american punk rock, drum and bass, jazz, electro swing, many different kinds of metal.
I played guitar from the age of 6 till the age of 23 and singed for more than 10 years; back in the day I recorded 2 albums with 2 different bands; in the last years I've been playing the drums as a hobby.
I did PR for clubs, planned and organized parties, events and concerts, ran my own disco at 23 years old; it didn't go well. I reinvented myself first as an ICT consultant and then as a software developer. I'm a dynamic person and a fast learner. I put creativity at the service of reasoning and reasoning at the service of creativity.
Reading and writing saved my adolescence; Seneca, Epictetus, Marcus Aurelius saved my life.
Romantic relationships gave me clarity. I like women and prefer open relationships, absence of jealousy and trust-based bonds.
I have a long-standing, sustainable relationship with cannabis, which I've never hidden to anyone.
I'm a good money saver, a modest investor, an ambitious aspiring enterpreneur.
I left a safe job in a big structured company for a more adventurous job in a small software house; I envisioned, founded and ran the startup phase of a new business unit offering an up-to-date set of skills in modern web development in terms of technologies and practices, leading a process of innovation that positively affected the whole company and was vital to deal with the covid pandemic.
I decided to become a freelance developer because I felt the need for a wider exploration of new tecnologies and teams, expanding and growing my set of professional and human skills.
I'm a passionate student of coding, software architecture, programming languages, design patterns, project management, agile methodologies, digital transformations, human structures and organizations, politics and macroeconomics.
I may have many strong opinions about many subjects, but I have flaws too ๐โ
From February to July 2023 I worked as tutor and main teacher for Boolean. Here I helped students learn the basics of web development and held a full C# and OOP course.
The main topics I trated are:
I also co-hosted the Boolean Coding Week, a free webinar showcasing what can be accomplished with basics web skills.
From February to July 2023 I worked as senior dev for Zerouno. I contributed building the next generation of their main product and developing ad-hoc projects for their customers, as well as taking care of their DevOps platform.
I worked mainly on Angular projects and developing GitLab CI/CD features on Docker containers.
From September to December 2022 I worked as a senior full-stack web developer for Buildo. Here I took part in the development of a small suite of web apps for Abbott, with the following stack:
In buildo I had the opportunity to work in a larger team with more specialized roles (UI/UX, project management, testing, dev). We also integrated our artifacts in a larger platform build by other teams from the customer side.
While I was working in CAPP I wrote some articles on a variety of programming subjects for the Aulab blog. Aulab is a coding hackademy that has helped more than ten thousand people to start their web development career with JavaScript and PHP.
From 2017 to 2022 I worked for CAPP srl, a software house founded in Milan in 1973, which had historically dealt with software dedicated to the industry, in particular in the logistics and production field. In practice, from the warehouse control systems to the set of human-machine interfaces that allow personnel to monitor and control the plant integrating with CRMs, shipments, etc.
In CAPP I contributed to many projects for a variery of customers.
I worked on a warehouse control system and many companion applications for Fater Group, one of the company's main customers with more than 20 years of collaboration.
As my first job in CAPP I took part to the creation of a brand new production and warehouse plant in Campochiaro. We built a set of software layers integrating both with the field (PLC) and the management (ERP) solutions provided by other companies.
My last work for CAPP was a complete rewrite in Angular of a huge set of features operating across all the core areas of the Fater main production and warehouse site in Pescara. It took 6 months only to complete the first tier (out of three) of higher priority features!
I contributed in creating and mantaining a set of UWP applications for Windows 10 handheld devices for Scavolini. In the latest years in CAPP I worked also on mantaining and evolving the legacy software base that CAPP had built for this customer throughout more than a decade of collaboration.
I also worked as a consultant for Consoft in Rivoira (Nippon Gases Italia); here I developed an advanced logging service working across many different middlewares (with both REST and SOAP APIs), with advanced payload and error serialization and the capability to replay the faulty calls in a diagnostic environment.
In Rivoira I worked mostly with ASP.NET Core and Entity Framework Core.
I conceived and directed a branch of the company called CAPPLite; in concrete terms, it was a team of 4 people (including me). We made (they still make) progressive web apps, in the cloud and on site, in war and in peace, in industrial and office environments, in a perspective of product and service.
At CAPPLite I've used and mastered the following stack of technologies:
I've also studied, adopted and promoted an agile approach to project management and operations:
As a business branch providing modern web solutions, in CAPPLite we built internal tools that the whole company adopted.
Here are the main ones:
Over the course of my carreer I've worked with a variety of technologies and developed many skills; I've also privately studied or experimented various programming languages, frameworks and some more theoretical/philosophical topics.
Here follows a brief summary of key topics that I've worked with, privately studied, or that I'd be interested in exploring more deeply.
I love studying how languages and syntaxes mould how programmers think of the requirements and their actual implementation. I started by studying Clean Code by "Uncle Bob" for practical reasons and never stopped my research in this field.
I've used these two languages both backend and frontend side, mastering them over half a decade of experience. I have a profound knowledge of the powerful TypeScript type system, as well as a deep understanding of the features and constructs of the underlying language JavaScript.
I've worked with C# for most of my carreer; I used it in backend web services as well as in command line tools. I worked with the Razor syntax in MVC projects too, and I made some personal experiments using C# in the frontend with Blazor.
Even if I've never worked with these two languages, it's worth mentioning that I actually learned programming with them in my university years, while I was studying physics.
This is a programming language that I'm really curious about. In particular it has some really innovative features like computation expressions, but I also like the powerful type system and the way it mixes FP static modules with proper OOP classes in a really synthetic syntax.
This is a FP language that I've privately studied and that I'm very curious about. In a world of catch-all languages, I find its rigorous, pure, paradigm-oriented approach almost romantic.
I think Rust is overall the most promising language in the field at the moment. Its main peculiarity is the capability to grant memory and thread safety with low level performances. Rust has also an amazing community and a fast and complete toolchain. Although I'm not an expert with this language, I'd be really interested in working with it.
As a full-stack developer I just have to master HTML/CSS. I've worked a lot with flex and grid layouts and with UI toolkits, but I have to say, aesthetics is not really my biggest strength.
I simply love the simplicity of this markup language.
I used SCSS in a single but long work project, I wouldn't call myself an expert but I definitely see value in using this CSS extension to improve the organization and architecture of modular, customizable design systems.
I worked with this language but honestly, I see no reason for using procedural extensions of the SQL language. I worked with many monolithic database-centric backends at the very beginning of my career and I really disenjoyed the experience.
This is by far the echosystem I've worked with the most. My dev career started in 2017 with .NET Framework, using WPF to build native Windows applications. At the time it was usual to query the database directly from the client, so I had few opportunities to use ASP.NET (and, alas, IIS) to build backend services. I started working with .NET Core starting from version 2.0 and I still keep up to date with the latest releases. I really love the new, rewritten framework and I've used it for many work and personal projects.
Since my backend experience is mostly built on .NET projects, in the past I used Node mostly for trivial backend services. Lately I've been using Node with Express and tRPC in professional real-world projects, experiencing the tremendous benefit of having a single language to share data types and utilities all across a project that could include many backend services and different frontend apps.
Here I am, Captain Obvious. As a web developer I know how a web browser works. Having created a huge lot of tiny vanilla HTML5 projects, I know what's needed about DOM manipulation, Service Workers, and many other native JS APIs. I think this is worth mentioning just to enphasize the fact that I'm able to understand (and interested in studying) what the most common frontend frameworks are doing under the hood.
I'm not a DevOps expert, but I have definitely used docker a lot. I know the basics of docker and compose and I've used it in development and deployment contexts. Still in my opinion the use of this kind of abstraction layers over pure software packages is often an overkill in small projects.
It is said that frameworks are the new languages, and in a sense that's true. Learning different architectural approaches to common problems is what gives the programmer a wide range of possibilities to represent domain and business logic.
In my early days in CAPP I worked with these two frameworks, but I've never been a fan of XAML.
I've user this framework for most of my work and personal projects. I've played a little with Blazor and find WASM an opportunity to bring on web browsers many technologies that are by far stronger than JS-based ones.
Even if this is not the most liked frontend framework, I still find it the most powerful and complete development enviroment that I've ever worked with. That said, I've ascertained that having too many ways of accomplishing a task is not always the best choice for a dev team.
After years of experience on Angular, learning React was kind of a joke. In fact, I think the learning curve is the biggest strength of this UI rendering library. I'd call it a frontend framework, but let's be honest, that's not what it is. Anyways, along with React Router and a set of other libraries, it can also be used for real-world applications. I know Next.js fills this gap, but I've never used it.
Despite being super young, this framework is already my favourite, and I bet it's going to be a game changer in the approach to web frontend technologies. The main goal of Qwik is to get completely rid of the hydration process, making web apps super fast and scalable and reducing the distance between frontend and backend rendering and development in general. Along with Qwik City (the Next.js of Qwik) it's really powerful and productive.
I have to be honest, I never found a database engine able to fully convince me, so I'm still looking for something different. I never had the opportunity or the urgency to use one of the most famous NoSQL databases, but I know the main ones and I have a feel of how they work.
This is my first option for small and medium projects that just need a data store.
I also like this solution as a lightweight NoSQL file based database.
This is the database engine I've worked with the most. It's powerful and works really well with Entity Framework.
This is my favourite solution for big databases hosted on linux or with docker. Works well with Entity Framework, at the cost of massively underuse its most powerful, non-standard features.
Since I'm not so enthusiast about the database engines and APIs I've worked with, this far I've usually just opted for a good reliable ORM in my projects.
This is just the right solution for the backend developer who isn't in love with SQL (i.e. me). The data modeling is complete and powerful, the developer experience is easy and straightforward.
Lately I've been using this ORM, and I have to say, it's really powerful. However, I overall disliked the developer experience. It uses a dedicated language to declare the data model and you have to manually scaffold the TypeScript models and repositories every time you update the schema. Also, it generates only forward-migrations (that means, no easy migration rollbacks).
Here are some specific topics I had the opportunity to deepen and master.
While I was in CAPP I wrote a library that implemented the OAuth 2.0 Authentication Code flow with PKCE because I was not fully convinced by the npm libraries that were available. This gave me the opportunity to implement a complex set of features, from the creation of cryptographically secure strings to the flow of redirects and validation steps, starting from the bare RFC description of the protocol.
While I was trying to truly master Angular, I took the chance to get to master reactive programming and RxJS. I really like how this kind of programming make you think of a portion of the application state as a consequence of changes that happen over time. Observables make it possible to have immutable, declarative state in an object-oriented architecture.
I'm present on the following social media platforms as @belelabestia (Bel รจ la Bestia) or @jasone_mb, but I don't post regularly on any of those; insomnia and spare time determine my publishing schedule. Most of my content is in italian.