Hartlepool, County Durham — Senior Software Engineer
Rails · Backend systems · Practical AI
Building robust backend systems and practical AI tools.
I build and evolve backend systems: long-lived Ruby on Rails applications, version and dependency upgrades that ship in steps rather than as a rewrite, domain boundaries the build enforces, and integrations with the legacy systems those applications cannot leave behind. Ten years of backend work, most of it Rails in production. Since 2024 I have also built independent AI and agent tooling — some of it deployed as public services, some of it still research.
Packwerk boundaries, a transactional outbox and a Kafka consumer in Rails.
A worked example of splitting a Rails application into Packwerk-bounded components, with a transactional outbox so an event written in the same transaction as the data is never…
Developer API for web capture, extraction and monitoring.
An HTTP API for capturing web pages as screenshots or documents, extracting structured content, and watching pages for changes. Built to be called from scripts and software…
A shared knowledge exchange for agents, where a claim is only verified when someone else reproduces it.
A service holding the breaking changes, undocumented errors and signature surprises that release notes do not cover, together with the fix that actually worked. Reports are filed…
Took a career break for personal reasons and continued independent development on selected projects: deployed developer tools, AI and agent infrastructure, and experimental systems research.
Ruby on Rails Engineer → Senior Back End Developer
City Electrical FactorsOctober 2019 — October 2024 (contract, then full time)
Maintained and evolved the primary cef.co.uk system — first on contracts that upgraded it off long-unsupported Rails versions, then full time owning cross-cutting technical health and helping steer engineering practice toward TDD, CI/CD and clearer domain boundaries.
Phase 1 · Rails 3.2 → 4.2, October 2019 — May 2020 (contract): upgraded a production retail application off a framework version that had been out of support for years, released in steps rather than as one cutover.
Phase 2 · Rails 4.2 → 5.2, December 2020 — March 2021 (contract): the next hop, made smaller by having cleared the previous one's deprecations rather than deferring them.
Phase 3 · March 2021 — October 2024 (full time): returned to own cross-cutting upgrades across Rails versions, gems and dependencies.
Championed Docker containerisation and led the Bitbucket Pipelines implementation, so a green build meant a runnable environment.
Built and maintained API integrations bridging modern applications and legacy Sybase systems.
Advocated a modular-monolith direction using Packwerk and domain boundaries, without prematurely splitting the system into services.
Promoted TDD and CI/CD, and shared approaches and emerging practices with the wider team.
Research and Experimental Systems
Systems work and ongoing research. Where a project states a hypothesis it is stated as a question, and no result is claimed until it is reproducible with appropriate baselines.
Can a network's topology adapt during pretraining?
An experimental pretraining framework investigating whether jointly adapting model weights and computational topology during pretraining can improve the trade-off between model…
A deterministic artificial-life simulation with reproducible experiments.
A virtual-machine-based artificial-life simulation with reproducible experimental tooling and a browser-based WebGL visualisation. The value is in the determinism and the…
A headless Earth-scale simulation core, partitioned into shards that do not share memory.
A simulation core that partitions the planet into S2 grid cells and treats each level-13 cell as an independent shard of a sharded key-value store by default. Neighbouring cells…