Legacy .NET systems,
modernised without downtime.
Freelance software architect · Legacy modernisation with .NET, Azure & AI
I modernise existing .NET systems, bring them to the cloud where it pays, and accelerate delivery through AI-assisted engineering — pragmatic, no downtime.
Services
.NET modernisation
Lift existing .NET-Framework codebases to .NET 10. Strangler-fig over big-bang, production-stable at every step.
- Migration .NET Framework → .NET 10
- Monolith → modulith → microservices
- Test harness & CI for brownfield
- Performance & memory profiling
Cloud transformation (Azure)
Lift-and-shift rarely works. I move workloads to Azure structurally — Container Apps, AKS, Functions — with IaC and cost awareness.
- Azure Container Apps · AKS · Functions
- Terraform · GitHub Actions · Azure DevOps
- Observability (App Insights, OpenTelemetry)
- Container & AKS tuning · cost guardrails
API & backend engineering
REST, gRPC, event-driven. Clean domain models, clear contracts, test coverage where it earns its keep — not everywhere.
- ASP.NET Core · Minimal APIs · gRPC
- EF Core · Dapper · PostgreSQL · SQL Server
- Event-driven · Service Bus
- DDD / Vertical Slices, in measured doses
AI / agent-assisted delivery
LLM workflows embedded in engineering — code migration, test generation, spec discovery. Measured, not magical.
- Coding agents in CI/CD pipelines
- LLM-driven code migration & refactoring
- Test & doc generation from existing code
- Evals & guardrails for production use
Agents as a tool,
not as marketing.
The productive wins from LLMs and coding agents live in unglamorous places — migration scripts, test coverage, reconstructing API contracts from legacy code. I wire that into the pipeline, with evals and clear stop conditions.
- Migration with agents: boilerplate automated, the rest goes through structured review.
- Test generation from legacy code: characterization tests before refactoring.
- Eval-first: an agent ships only when it passes a held-out eval set.
By the numbers
Stack
.NET
- .NET 10
- ASP.NET Core
- Blazor
- WPF · WinForms
- EF Core · Dapper
- xUnit · NSubstitute
Cloud
- Azure (AKS, ACA, Functions)
- Service Bus · Event Grid
- Cosmos DB · SQL Azure
- Terraform
- GitHub Actions · Azure DevOps
- App Insights · OpenTelemetry
AI / Agents
- Claude · GPT-5
- Local LLMs (Ollama, llama.cpp)
- Coding Agents (Claude Code, Cursor)
- Semantic Kernel · RAG
- Evals · Guardrails
- MCP integrations
Method
- Domain-Driven Design
- Trunk-Based Development
- Strangler-fig migration
- Continuous Delivery
- Pair / mob programming
- Architecture Decision Records
Cases (anonymised)
E-government · federal agency
Microservice platform for a federal domain process
Built a microservice architecture in .NET Core for a domain process at a German federal authority. CI/CD on Azure DevOps set up from scratch, Azure services integrated into the service landscape — in production inside the agency.
3D · cloud platform
Cloud platform for 3D model processing
Redesigned a microservice architecture in ASP.NET Core for processing and serving 3D models. Internal and public UIs in Blazor, reusable CI/CD pipelines on Azure DevOps. Later as Co-Head of Development & Team Lead Microservices, owning the technical direction of the platform.
Industry · ERP
WPF ERP & mobile for mid-market manufacturing
Designed and implemented an ERP system in WPF for mid-sized production companies, paired with a Windows Mobile application for mobile order processing — right at the production line.
About
Senior software architect with 17+ years in the .NET world — from WPF desktop to distributed cloud systems. I work as an independent for mid-market companies, software vendors and enterprise teams.
My focus sits where existing code and new requirements collide: modernisation over greenfield romance, cloud architecture with a budget, AI-assisted delivery without the hype folklore.
I deliver code, not workshops. If a whiteboard makes more sense, I'll say so up front.
Concrete plan?
Drop me a line.
A short email with context and timeframe is enough. I reply within 24 hours on weekdays — usually the same day.