Skip to content

Background

About

Freelance software engineer working in .NET and Blazor — I turn unclear requirements into systems that run in production and keep running after I leave.

Placeholder portrait — replace with a real photograph and rewrite this line to describe it.

The portrait is a placeholder. Replace src/assets/images/placeholder-portrait.jpg and rewrite its alt text in both locales. The schema takes any non-empty string, so this sentence is the only thing standing between a stand-in and production.

Most work arrives as a problem rather than a specification: something is slow, something won’t scale, two systems that should talk don’t, or nobody is quite sure what the thing needs to do. The first job is usually turning that into a set of decisions someone can actually agree to. The second is building it.

I do both halves — architecture and delivery — because splitting them is where projects tend to go wrong. A design nobody has to implement drifts towards the elegant and away from the buildable, and an implementation with no design behind it becomes a pile of choices nobody made on purpose.

How I work

Structured and reproducible, which sounds like a slogan and means something specific: the build runs the same way on my machine as in CI as in production, environments come up from configuration rather than from memory, and the steps to deploy are written down and run by a machine. That is not process for its own sake — it is what makes it possible to hand something over.

Documentation is part of delivery, not an afterthought to it. If you need me in order to run what I built for you, I have not finished. The measure of a good handover is that the next person — your developer, your ops team, your next contractor — can operate it from what is written down.

I communicate in plain language, and I would rather raise a problem early than manage it quietly. Where a decision has a real trade-off, you get the trade-off and not just the recommendation.

Working together

Engagements run from a few weeks of advice to building and operating a system end to end. Confidential work is normal — projects here may be anonymised, which means no client name and abstracted diagrams, but the role, the scope and the scale are still stated, because those are the parts that tell you anything.

Tech stack

What I work with day to day. Deliberately unexotic: common tools have documentation, hiring pools and long support windows — a client’s system is not the place to be clever at their expense.

Languages & frameworks
C# / .NET · Blazor · Razor · ASP.NET Core · TypeScript · SQL
Data & integration
PostgreSQL · SQL Server · Entity Framework Core · Dataverse · REST APIs
Cloud & hosting
Azure Functions · Cloudflare · Hetzner · Linux
Delivery & operations
Docker · CI/CD pipelines · GitLab · Monitoring & logging

Contact

Work together?

Tell me briefly what’s in play, and we’ll work out what your project needs.

Get in touch