Matteo D'Urso · software developer & product engineer
Software for real problems.From products to connected systems.
I design applications, automation and integrations that can extend from software to infrastructure, Linux/edge and devices when the problem requires it. Direct collaboration, verifiable decisions and solutions designed to evolve.
Solid
A reliable foundation that is testable and straightforward to maintain.
Outcome-focused
Workflows and features start from the problem to solve, not from a preferred technology stack.
Verifiable
Reasoned decisions, explicit limits and progress that can be checked.
Adaptable
Application, backend, infrastructure and edge are combined only when they are actually needed.
Products and projects
Featured work
Vistario
Desktop application
A desktop application in development for organising films and TV series with a local catalogue, separate profiles and an optional remote-sync path.
View the productHome Energy Meter
Flagship edge case study
An edge energy-monitoring system that connects Modbus measurement, local persistence, F1/F2/F3 time bands, tariffs, bills, cost estimation and month-end forecasting.
Engagement modes
The right starting point depends on what is already clear
Analysis / Architecture Sprint
For clarifying the problem, requirements, constraints, risks and architecture before investing in implementation, with a bounded and usable output.
Development Sprint
For delivering a defined technical objective — a feature, automation, integration, dashboard, API or product slice — against explicit verification criteria.
End-to-end project
For taking a system from the problem through deployment, coordinating UX, software, backend, data, infrastructure and edge when the context requires them.
From a problem to a system that works in practice
I work with professionals, businesses, startups and technical teams to turn operational requirements, manual processes and product ideas into maintainable, verifiable software.
The scope may stop at an application or extend to backend services, APIs, automation, Linux infrastructure, edge systems and device integration. The solution follows the problem rather than a technology chosen in advance.
Technical experience and operational context
My background combines software development with direct experience in electrical systems, photovoltaics, public lighting, remote control, connected devices, servers and networks.
That context helps surface constraints that often appear only in real operation: incomplete data, connectivity, permissions, failure modes, maintenance, deployment and the interaction between software and physical infrastructure.
From analysis to verification
- Understand the problem, users and expected outcome.
- Define scope, constraints, risks and priorities.
- Choose architecture and technologies for the actual context.
- Develop in stages with verifiable outcomes.
- Test failures, recovery and real operating conditions as well as happy paths.
- Deploy, document and plan support, maintenance or evolution when required.
New project
Start with the problem that needs solving.
Share the objectives, constraints and current situation. The first review is meant to determine whether an Analysis / Architecture Sprint, a Development Sprint or an end-to-end project is the right next step. Support, maintenance and evolution can follow when they have a clear operational scope.