Skip to main content

I build reliable software, with AI as part of my toolkit.

Software engineer in Belfast, Northern Ireland. TypeScript, React, C# and .NET. Since 2015, I've built production systems, modernised legacy applications and shipped products.

AI helps me move faster. Engineering judgment shapes what ships.

/verify

Run 1

Feature: discount codes at checkout

How /verify, from my own agent skills and validation framework, works: a scoped change is implemented with help from AI, then /verify starts the whole app, an agent uses the feature end to end and checks the logs, screenshots and database. If something is wrong, the agent fixes the code and runs /verify again. When the scenario passes, the change is ready for engineering review.

A scoped change is implemented with help from AI.

Running…
An illustrative example of /verify, a verification workflow I built for coding agents. This animation always passes on run 2; it is not a live run or a report from a production system. Evidence supports my review of the implementation.

Selected work

Production systems, application migrations and an independent game. A closer look at the problems, decisions and results.

Production engineering at On-Music Ltd · 2025–present

Explainable metadata matching

Film and TV transmissions need to be linked to the right productions and episodes, even when source metadata is incomplete or conflicting.

  • C# weighted scoring with named signals and conflict detection
  • SQL Server audit trails and React inspection tools

A matching pipeline with confidence bands, score breakdowns and a reviewer feedback loop. Operational issues can be investigated from the recorded evidence.

C#, .NET, SQL Server, React, TypeScript

Read engineering notes

Professional work at Watch Portfolio Management · 2018–2024

Incremental React migration

Internal applications had separate jQuery and server-rendered interfaces, making UI changes difficult to reuse and maintain.

  • New React routes alongside legacy pages
  • Shared components and a generated TypeScript API client

A consistent frontend foundation that made components reusable across applications and reduced friction when delivering changes.

React, TypeScript, C#, .NET Core, Vite

Read case study

Independent project · playable game in active development

Koi Katana

A mobile browser game needs responsive controls, reproducible combat and reliable multiplayer without loading every feature up front.

  • TypeScript and Three.js with a deterministic combat simulator
  • WebSocket co-op and browser-driven verification

A playable fishing and samurai game, with replay checks, save compatibility tests and verification evidence tied to the code that was exercised.

TypeScript, Three.js, Vitest, WebSocket

Read case study

Engineering across the whole system.

Portrait of Eamon Boyle

Software engineer
Belfast, Northern Ireland

I've built software professionally since 2015, working across agency websites, business-critical .NET systems and React applications. My core stack is TypeScript, React, C# and .NET.

I enjoy work where the interface, data and operational details all matter: modernising an application while people still use it, making a matching decision explainable, or tracing a failure through a production system. I've worked across architecture, implementation, deployment and support.

AI is part of my development process. I use coding agents to help implement changes, and combine that with automated checks and hands-on verification. I'm responsible for the technical decisions and the quality of what ships. Alongside my professional work, I'm learning machine learning through coursework and Python projects.

Outside work, I'm into photography and running LLMs locally, mostly to find out how loud my GPU fan can get.

Experience

Professional software development since 2015, across business systems, data pipelines and web applications.

Independent work and writing

Personal development, freelance projects and technical writing alongside my employed roles. My independent work began before my professional career.

How I use AI

Coding agents help me implement changes. Clear scope, automated checks and review make that useful in a real development process.

  1. Define

    Make the task testable

    I set the scope, constraints and expected behaviour before asking an agent to implement a change. A clear task gives us something concrete to check.

  2. Build

    Use AI for implementation

    Coding agents help with the first pass. I keep responsibility for architecture, integration and the decisions that affect the rest of the system.

  3. Verify

    Exercise the real feature

    Automated tests and browser scenarios check different things. My verification workflow collects logs, screenshots and recordings so I can inspect the behaviour as well as the code.

  4. Review

    Decide what is ready

    Evidence supports a review; it does not settle every question. I look at the change, its tradeoffs and what still needs checking before deciding to merge.

My /verify workflow starts the application and exercises a feature before collecting evidence for review. In Koi Katana, that includes gameplay scenarios and checks that the evidence still matches the code.

Read how I verify agent-written changes

Projects

Independent products and developer tools. Each project explores a different engineering problem, from multiplayer state to AI-assisted review and database access.

Playable · active development

Koi Katana

Replayable
Combat checked against seeded inputs
200 kB
Gzipped entry chunk budget
Co-op
Browser and server checks
Traceable
Verification evidence tied to the code

A phone-first fishing and samurai game that I designed in TypeScript and Three.js. The engineering work spans deterministic combat, multiplayer synchronisation, versioned saves and mobile loading. I use coding agents for implementation, supported by tests and browser verification. The game is playable; the repository is private.

  • Browser scenarios exercise gameplay on a phone-sized viewport and produce screenshots and recordings for review.
  • Co-op tests exercise multiple players, while server tests check the state shared between them.
  • Combat replays check that the same seed and inputs produce the same outcome. Property tests exercise network messages and older save formats.
  • The verification harness records the commit, scenario and artifact hashes so stale or incomplete evidence can be rejected.
  • The build caps the initial JavaScript entry chunk at 200 kB gzipped. Three.js and lazy-loaded features are separate; this is not the total game download.

TypeScript, Three.js, Vitest, Render

MSSQL MCP Server

Published on npm · experimental tooling

I built this MCP server to give coding assistants structured access to SQL Server schemas and data. The assistant interprets the request; the server validates and executes database operations. Read-only mode, write previews and an explicit schema-change gate make the permitted operations visible. Published on npm for experimentation and evaluation.

npm downloads
7,331
last 30 days
1,536

TypeScript, Node.js, MCP, MSSQL

Better PRs

Live demo · independent project

A GitHub pull request inbox and review tool I built to make large changes easier to navigate. AI explanations organise a review into chapters and suggest likely issues or testing gaps, alongside the full diff and inline comments. Suggestions support the reviewer’s judgment; the diff remains available to inspect.

Next.js, TypeScript, AI SDK, GitHub API, Clerk, Neon Postgres, Drizzle ORM, Playwright

MCP Frontend Issue Finder

Source available · developer tooling

An MCP server I built to bring React codebase analysis into Cursor and Claude Code. It surfaces potential type, security, performance and refactoring issues for investigation. Findings are review prompts, rather than a guarantee that a codebase is correct or secure.

TypeScript, MCP

More projects

  • SwoopsterLive site · independent product

    A reverse marketplace I built where buyers post requests and sellers make offers. The full-stack work connects offer and payment state, real-time conversations and moderation. Stripe Connect handles payments, with funds held before release and flows for refunds and disputes.

    Next.js, TypeScript, Drizzle ORM, PostgreSQL, Clerk, Stripe Connect, Pusher

  • Keyboard BattlesSource available · multiplayer project

    A real-time typing game I built around a shared round schedule. The server coordinates matchmaking, rounds and rematches over WebSockets, with latency handling to reduce the effect of connection differences on competition.

    Node.js, TypeScript, Vite, React, WebSocket

  • Drone Weather AppSource available · mobile project

    A React Native app I built for checking forecast conditions against a drone pilot’s chosen weather limits. It presents live weather and hourly and weekly forecasts to help plan a flight. The comparison covers weather conditions; pilots still need to assess the location, equipment and flight requirements.

    React Native, Expo, TypeScript, NativeWind

Show 1 more project
  • CodeMasterSource available · practice platform

    A coding practice platform I built with challenges, courses and in-browser code execution. It brings the exercise interface and signed-in learning experience into a full-stack Next.js application.

    Next.js, TypeScript, Clerk, Prisma, shadcn/ui

Learning projects

Coursework and experiments in machine learning and AI applications. These sit alongside my professional engineering experience.

  • EV charging load predictionSource available · ML learning project

    A learning project predicting home EV charging energy in kWh from Norwegian charging and traffic data. I developed it from a notebook into a Python package with scikit-learn baselines and a PyTorch model, plus tests, CI and a CLI. The repository contains the modelling work; this is an exploration, rather than a deployed forecasting service.

    Python, PyTorch, scikit-learn, Jupyter, FastAPI, Streamlit

  • Ask PDF.ioSource available · AI learning project

    A full-stack learning project where a signed-in user uploads a PDF and asks questions about its contents using AI. I used it to explore an AI interaction inside a web application, alongside document upload, authentication and persistence.

    Next.js, Prisma, PlanetScale, tRPC, Kinde Auth

  • Wine dataset k-meansNotebook · ML learning exercise

    A Jupyter exercise exploring k-means clustering on the classic wine dataset. I worked through feature scaling and cluster interpretation to understand how preprocessing affects an unsupervised model.

    Python, Jupyter, scikit-learn

  • Masculinity machine learning projectNotebook · ML learning exercise

    An exploratory notebook working with survey data about masculinity. I used it to practise preprocessing, modelling and evaluation. It is a learning exercise whose conclusions need to be read in the context of the survey and modelling choices.

    Python, Jupyter, pandas, scikit-learn

Toolkit

TypeScript, React, C# and .NET are my core stack. AI tooling supports development; machine learning is an area I’m actively studying.

Languages
TypeScript, C#, JavaScript, SQL
Frameworks
React, Next.js, Node.js, React Native, .NET
Data and cloud
SQL Server, Postgres, MongoDB, AWS, Azure
Tools
Git, GitHub Actions, Docker, Playwright
AI tooling
Cursor, Coding agents, Custom verification workflows, MCP servers, AI SDK, Local LLMs
Machine learning · learning
Python, PyTorch, scikit-learn, pandas, Jupyter

The machine learning tools here reflect coursework and exploratory Python projects. My professional experience centres on web applications, backend systems and data pipelines.

Writing

Notes from my engineering work, including AI-assisted development, migrations and the details that make systems easier to trust.

AI-assisted engineering4 min read

How I verify agent-written changes

A walkthrough of Koi Katana’s browser scenarios, replay checks and evidence manifests, and how they support review of AI-assisted changes.

Matching systems3 min read

Building matchers that explain themselves

A practical note on weighted scoring, audit trails, and reviewer feedback loops for metadata matching systems that people can actually trust.

Elsewhere

Source code, experiments and the tools I use in my development workflow.