About

James Summerill

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.

How I work

Boundaries before services

A modular monolith with real domain boundaries — enforced by the build, not by convention — is usually the cheaper place to start than a network of services. Split when the boundary has earned it.

Evidence over assertion

Generated or hand-written, a change is only as good as the test that fails without it. I would rather record a reproducible result than a confident one.

AI, held to evidence

A model's output is a proposal, not a result. I build agent and AI tooling around tests, independent verification and recorded evidence, so a change is accepted because it passed something rather than because a model said it did.

Upgrades are maintenance, not projects

Keeping a long-lived Rails application upgradeable is continuous work: dependency hygiene, a suite that catches regressions, and CI that makes the change cheap to prove. Left alone, it becomes a rewrite.

Boring infrastructure

Containers that are pinned, unprivileged and read-only; one public path in through a tunnel; logs that are bounded. The goal is that nothing about running it is interesting.

Experience

Newest first. The City Electrical Factors entry is one employer across a sequence of contracts and then a full-time role, written up by phase rather than as four separate appointments.

  1. Career break & independent technical projects

    Independent October 2024 — present County Durham, United Kingdom

    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.

  2. Ruby on Rails Engineer → Senior Back End Developer

    City Electrical Factors October 2019 — October 2024 (contract, then full time) County Durham, United Kingdom

    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.
  3. Senior Developer / Lead Developer

    clixifix January — October 2019 / May — October 2020 United Kingdom

    Led and supported Ruby on Rails developers in a lean team, providing hands-on guidance, feedback and technical direction.

    • Analysed the existing platform and documented recommendations, supporting continuity across development work.
    • Contributed to hiring, collaborative working practices and iterative delivery.
  4. Ruby on Rails Software Engineer

    Imfuna October 2016 — February 2018 Remote

    Maintained and extended the Rails platform and collaborated remotely with colleagues across functions.

    • Worked with the Transcription Manager on an AI transcription service, reducing validation time for human reviewers and the cost of running it.
  5. Earlier roles

    Various June 2013 — December 2015 United Kingdom

    Four roles across agencies and product companies, in Ruby and the web stacks of the time.

    • Evvnt · Ruby Developer, April — December 2015: maintained the Ruby/Heroku website and infrastructure, and developed Ruby, Watir and Sidekiq automation that reduced manual work.
    • Arnold Clark · Ruby / Web Developer, July 2014 — March 2015: worked across legacy systems and new features, including Worldpay, AWS, Rails and Swift, and built an internal office dashboard on Raspberry Pi, Dashing and Debian.
    • Appkick · Lead Backend Engineer, February — November 2014: led backend development, migrated the core application from Node.js to Ruby, and introduced CI practices and improved remote-team delivery workflows.
    • Green Gorilla Apps · Full Stack Web Developer, June 2013 — May 2014: maintained and extended existing web applications and fixed defects, following Git-based review practices.

Toolkit

Languages & frameworks

  • Ruby
  • Ruby on Rails
  • Python
  • SQL
  • JavaScript
  • TypeScript

Architecture & design

  • Modular monoliths
  • Domain-driven design
  • Packwerk
  • Domain boundaries
  • Transactional outbox
  • Event-driven integration
  • Legacy integration

Delivery & quality

  • TDD
  • CI/CD
  • Bitbucket Pipelines
  • Docker
  • Dependency & framework upgrades
  • Code review
  • Developer mentoring

Data & platforms

  • PostgreSQL
  • MySQL
  • Sybase
  • Kafka
  • Heroku
  • AWS
  • Linux

AI & systems

  • Local LLM inference
  • Agent systems
  • Model routing
  • Evaluation & verification harnesses
  • PyTorch

Education

Working on something that fits?

Available for senior backend and Rails engineering roles in the United Kingdom — remote or hybrid, permanent.