I am a software engineering consultant, researcher, and former Computer Science teacher. My work is driven by a simple idea: difficult technical concepts become more useful when we can understand, observe, and test them.
Engineering
I have been programming for more than twenty years, first as a self-taught hobbyist and later professionally. I specialise in C++ and work on software where correctness, performance, real-time behaviour, and maintainability matter. My wider engineering work also spans C#, Python, JavaScript, DevOps, technical leadership, and project delivery.
Education
Before returning to professional software engineering, I spent several years teaching Computer Science at secondary and sixth-form level. I hold a PGCE and Qualified Teacher Status. That experience still shapes how I think about software: explanations matter, mental models matter, and technical difficulty should never be confused with intellectual gatekeeping.
Research
I am studying for an MSc in Computing with a Software Engineering specialism and developing a programme of empirical work around software behaviour, AI-assisted programming, software quality, and reproducible experimentation. I am particularly interested in research that produces both credible evidence and practical engineering value.
Why this site exists
Human progress depends heavily on our capacity to be curious, to ask better questions, and to test our explanations against reality. Science and engineering turn that curiosity into methods. Education allows the resulting knowledge to travel further than the person who first discovered it.
This site is where those parts of my work meet. I use it to document research, publish educational material, share technical experiments, and argue for ideas I think are worth examining more closely.
Start here
Research
Follow my work on AI-assisted programming, software quality, reproducible experimentation, and the developing Visible Systems research direction.
Education
Browse technical explanations and learning material designed to make difficult behaviour visible without reducing it to misleading rules.
Writing
Read research notes, technical explainers, and commentary on software engineering, C++, AI-assisted development, and computing education.