Introduction
I build systems. But first, I understand them.
That order matters where I work: building the wrong system costs far more
than taking the time to understand it first.
What I do
- Systems architecture
- Architectures designed for complex environments, where operation, security, traceability, and evolution carry as much weight as the code.
- Legacy modernization
- I transform systems that are already running, without losing the knowledge accumulated inside them.
- Technical transformation
- I connect technology, processes, and organization so that a structural problem becomes an implementable plan with owners and verifiable stages.
- RegTech & enterprise systems
- Systems where rules, security, and audit belong to the architecture from day one.
- AI-native engineering
- Agents, local models, and automation applied to the way software gets built.
How I think
Every problem starts with the same question:
what is actually happening here?
- Problem
- Model
- Architecture
- System
- Evolution
- Problem first
- The first formulation of a problem is rarely the real one. I renegotiate the problem before designing anything.
- Structure over symptom
- A symptom is cheap to fix once and expensive to keep fixing. I look for the structural cause.
- Decomposition
- Ambiguity gives way to decomposition: domains, processes, data, rules, actors, states, integrations.
- Levels
- Decisions travel across levels, from code to services to architecture to organization. I design at the level where the problem actually lives.
- Debt is a decision
- Technical debt taken deliberately buys time. Taken by accident, it charges interest.
- Explicit complexity
- Complexity never disappears. The work is making it explicit enough to manage.
Architecture
Recurring models from real projects.
- Metadata over branches
- When variations multiply, I move them out of the code and into metadata. Configuration is cheaper to audit than a code path.
- Incremental replacement
- Stable contracts around the old system, then replacement piece by piece behind them. The risky version of modernization is the big bang.
- Lineage and observability
- If a number matters, its origin matters. Data lineage and observability are designed in from the start, long before any incident.
- Identity as a layer
- Access control modeled on business functions, enforced centrally, adapted locally.
Experiments
I learn by building. Most of this will never ship, and that is the point.
- Embedded interfaces
- ESP32 boards and small physical interfaces, where the limits are physical and the feedback is immediate.
- Local models & agents
- Running models on my own hardware and wiring agents into real workflows to see where they break.
- Developer tooling
- CLI tools and automation for my own workflow, where I am the first user.
- Linux
- My daily environment, and where everything above runs.
Notes
A working notebook: decisions, patterns, mistakes, and what they taught me.
Code is a means
The product is a system that runs, gets audited, and survives maintenance. Code is one of its materials.
The system is also the organization
An architecture has to coexist with teams, budgets, regulation, and deadlines. Diagrams that ignore them are fiction.
AI is a new layer
Agents and models change what the engineering process is. That shift deserves the same rigor as any architecture.
About
I arrived at architecture through problems nobody owned end to end: a report
failing somewhere between two systems, a platform too old to leave alone and
too critical to stop. Someone had to understand the whole thing, and I kept
volunteering.
I'm not the engineer who receives a system and asks how to change it.
I try to understand what system should exist.
That is why modernization interests me more than a blank page. The constraints
are real and the knowledge is buried. The reward is a system that keeps its
history without being trapped by it.
Working materials
.NET · Java / Spring · Angular · React · REST APIs · microservices · serverless ·
Docker · Kubernetes · Azure · distributed systems · ETL · RBAC / Entra ID ·
Linux · ESP32