About

I'm a software developer and systems analyst who enjoys solving real business problems with clean code, reliable systems and a focus on long-term value. With strong experience in C#, ASP.NET Core, SQL Server, MIS and reporting, I build systems that are scalable, maintainable and designed around real operational needs.

I also work with practical AI integration, including the OpenAI API, structured outputs, retrieval-augmented generation (RAG) and controlled AI-assisted automation where they offer a clear operational benefit.

I am open to permanent development roles, either office-based in Southampton/Hampshire or remote, as well as selected software and systems projects.

Core Technologies

C# ASP.NET Core Razor Pages SQL Server SSRS JavaScript HTML CSS Git REST APIs AI Integration OpenAI API Structured Outputs Retrieval / RAG AI-Assisted Automation

Experience Timeline

2022 – 2026

Software Developer / Systems Analyst

Designed and developed internal web applications, management information systems, integrations, reporting solutions and business tools using C#, ASP.NET Core, SQL Server, JavaScript and SSRS.

2009 – 2022

Data, MIS & Systems Development

Worked extensively with data, SQL, reporting and management information systems, while increasingly developing software, integrations and automated business solutions.

Alongside Main Roles

Selected Freelance Software Projects

Designed and developed selected bespoke systems and web-based solutions alongside my main employment.

2006 – 2009

Graphic & Web Design

Worked in graphic and web design, developing a strong foundation in visual communication, interface design and user-focused design.

AttendanceService.cs
public class AttendanceService
{
    private readonly AppDbContext _context;

    public AttendanceService(AppDbContext context)
    {
        _context = context;
    }

    public async Task<AttendanceSummary>
        GetSummaryAsync(int courseId,
                        DateTime from,
                        DateTime to)
    {
        var data = await _context.Attendances
            .Where(a => a.CourseId == courseId)
            .Where(a => a.Date >= from &&
                        a.Date <= to)
            .ToListAsync();

        return new AttendanceSummary(data);
    }
}

What I Bring

Problem Solving

I break down complex problems and deliver practical, maintainable solutions.

Clean UI

I design and build clear, responsive interfaces that are straightforward to use.

Business-Focused Solutions

I align technology with real operational requirements, business goals and measurable outcomes.

Long-Term Maintainability

I write clear, structured and documented code designed to remain understandable and supportable.