Professional focus

Where I add value

I design systems, build .NET software and help teams make technical decisions. I stay involved in implementation as well as architecture.

01Architecture

Design systems that can evolve

I consider how a system will change, which teams own it and what it will cost to operate.

Architecture and trade-offs

Assess where services or modules belong by looking at ownership, dependencies and how often parts of the system change together.

Distributed and event-driven systems

Define message contracts, consistency requirements and how workflows handle retries, delays and failures.

A design the team can explain, maintain and change.

02Engineering

Build software that works in production

I build APIs, services and integrations, and work through the performance and support issues that appear in production.

C# and .NET delivery

Write and review C# code, define API contracts and investigate performance problems.

Cloud and operational reliability

Plan deployment, monitoring and recovery alongside the code, so the team can release and support it.

Software the team can deploy, monitor and support.

03Technical direction

Make the team more effective

I help engineers understand the reasons behind decisions and give them the context to make their own.

Clarity and standards

Explain design decisions, review code and agree conventions the team can use day to day.

Mentoring and developer experience

Help engineers develop through mentoring, code reviews and better tools, including reviewed use of coding agents.

Share the knowledge needed to make and maintain technical decisions.

04AI development

Working with AI agents

I have spent the past three years learning how to work with AI agents in software development, from structuring tasks and providing context to building tools that help them work with code.

Process and feedback

Give agents a defined task, the relevant context and a way to check their work. Review changes in small steps and use test results and other evidence to guide the next step.

Guardrails and review

Set boundaries around what an agent can change and when it needs approval. Keep changes reviewable, protect secrets and check the result before merging or releasing.

Tools for working with code

I built Roslyn Workbench MCP to give coding agents access to C# symbols, references, analysis and refactorings. It lets me inspect proposed changes before applying them and roll back edits when needed.

I remain responsible for the design, the code and the decision to release it.

The technical foundation

C# and .NET are my starting point.

C# and .NET are where I have the most experience. I choose other languages when they better fit the requirements.

  • Choose for performance, platform support, libraries and maintainability.
  • Consider the team that will build and support the software.
  • Use AI to work beyond familiar languages, with code review and testing.
C# / .NETAzureAPI designMessagingObservabilityDeveloper tooling
The decisions behind the work