Skip to main content
Neil ArmstrongSoftware architect and developer
Menu

Software

Engineering with tests at the centre

I’m an architect who cares who the product is for. I take ownership of complex systems, and I prove they work with tests written in the language of the product.

What sets me apart

  • Product first

    I start from what users need, then work back to the architecture.

  • Tests are the specification

    Acceptance tests in the language of the product make big rewrites safe.

  • Quality that is enforced

    Boundaries, linting, and pipelines checked by tooling, not good intentions.

  • Ownership of the messy parts

    I take on untested, half-finished systems and turn them into a plan.

Professional work

What I have delivered

These case studies are anonymised, but the systems, decisions, and outcomes are real.

2025–2026

Build it again, but better

Rebuilding a critical loan-processing application and more than 50 Lambda functions, with acceptance tests as proof that nothing regressed.

Read the case study

TypeScript · React · Redux Toolkit · AWS Lambda · Terraform · Playwright · Acceptance testing

2025

Replacing a legacy document builder

Replacing an end-of-life, plug-in-based editor for legal loan documents in a single summer, with a contract at stake.

Read the case study

React · TypeScript · XML parsing · Document editing · Performance tuning · Legacy modernisation

2025–2026

Getting a platform modernisation back on track

Recovering two struggling teams on a time-critical PHP modernisation, with a walkable rough frontend and a proxy between the old API and the new services.

Read the case study

React · Next.js · SST · AWS Lambda · Incremental migration

2022–2024

Reinventing audio installation software

Leading a ground-up rethink of professional-audio installation software, then carrying its core idea into a released companion tool that extended the team's contract.

Read the case study

TypeScript · React · Electron · Playwright · Ionic · Acceptance testing

2021–2022

A serverless insurance platform

Delivering a full digital motor-insurance journey on AWS serverless in twelve months, and the developer experience that made that pace possible.

Read the case study

TypeScript · AWS CDK · AWS Lambda · DynamoDB · EventBridge · SQS · Storybook

2020–2021

Simulating sound in 3D venues

Rebuilding an extremely old venue-modelling tool in TypeScript, React, and Electron, with a declarative 3D layer, until Covid cancelled it close to completion.

Read the case study

TypeScript · React · Electron · three.js · react-three-fiber · Cypress

2018–2019

Rewriting point of sale for Android

Winning an Android point-of-sale rewrite with a one-week prototype, then shipping it on a locked-down payment device.

Read the case study

Kotlin · Android · Coroutines · Point of sale · Automated testing

2015–2018

Modernising telecom middleware

Four products for one of Canada's largest telecoms, and the testing culture that made them safe to change.

Read the case study

Java · Android · Postgres · WebSockets · Gatling

Open source

Projects built in the open

Useful software you can use today, and a closer look at the architecture, testing, and delivery decisions behind it.

The Janggi app mid-game: a Korean chess board with red Han pieces at the top, green Cho pieces at the bottom, and a palace marked with diagonals in each fortress.

Janggi

An offline-capable Korean chess app, built as much to show how I engineer software as to be played.

React 19 · Redux Toolkit · TypeScript · Tailwind CSS 4 · Vite · Playwright · Fairy-Stockfish (WebAssembly)

The Titanic Quarter Cycling Club rides page, showing weekly Wednesday group rides with start times, distances, and pace levels.

TQCC

A fast, accessible site for a Belfast cycling club, with content that non-technical editors can maintain.

Astro · Tailwind CSS · TypeScript · Markdown content collections · Sveltia CMS · GitHub Pages