About me

I make
software easier
to evolve

I’m Marco, a senior full-stack engineer with more than seven years of professional experience, currently working at Zupit as a software engineer.

My work is strongest in the .NET ecosystem: backend development with C# and modern .NET, frontend applications with Angular and TypeScript, SQL databases, and cloud-hosted business software. I also contribute to the work around the code—reviews, technical discussions, release coordination, mentoring, and decisions that keep a system maintainable as it changes.

"Make the change easy, then make the easy change"

I care about readable code, tests I can trust, and keeping the system maintainable over time. In my day-to-day work, this means thinking about boundaries, persistence, deployment and failure modes in addition to the feature itself.

I prefer a pragmatic approach over following the current hype. Sometimes the right move is to simplify an application: introducing seams, improving pipelines, make old code safer to change. Code reviews and technical conversations are part of that work, as are the less visible parts: coordinating releases, working with product owners and customers, and helping other developers find their way through a system.

Making my way through different domains on all layers

My route into application development was not a straight web-development path. At NECSTLab during my Computer Science Engineering studies at Politecnico di Milano, I worked on FPGA-based high-performance computing and cloud orchestration. That research led to papers on FPGA acceleration and serverless computing, which you can find in my publications.

At e-Novia, I worked across industrial software and product contexts: C++ and C#, desktop applications, web systems, and projects in areas including IoT, automotive, robotics, and VR/AR. The variety was challenging, but it made me comfortable with different technologies and domains. I also learned how software is used in the real, physical world, not only in a browser.

Today at Zupit I work closer to the application layer, building and modernising business software with modern .NET, Angular, Azure services, SQL Server, and PostgreSQL. I still benefit from my earlier experiences, but now I'm focused on building software that is maintainable, reliable, and easy to change, all while keeping the user in mind.

Learning is part of the job.

I’m continuing to grow as a senior engineer, with a longer-term interest in software architecture and systems engineering. I’m reading and experimenting around architectural trade-offs, observability, reliability, distributed-systems concepts, and the engineering practices that make complex software less difficult to change.

I'm currently exploring Rust as a bridge between product and systems engineering, connecting domain thinking and high-level abstractions with performance and low-level engineering. I like using a small experiment to understand a system from a different angle: for example, I built a simple load-balancer to understand Rust async and HTTP handling. I also regularly exercise with coding challenges. My projects and blog are where I keep those investigations visible.