Steven Holdsworth

Principal engineer. I build platforms on the BEAM: AI systems, data platforms, and the services around them. Nineteen years in.

Northern Ireland (Remote UK/EU)GitHubhex.pm

2026

Project

cherrypicker: named .localhost URLs for local dev servers

  • Stable named .localhost URLs for local dev servers: an app registers a name and a port with a loopback proxy, and nothing gets wrapped or launched on its behalf
  • Pure BEAM, with two runtime dependencies (Bandit and Finch): no Node toolchain to install and no root certificate authority to trust
  • Built over three days in August 2026 as a companion to Cherry, which speaks the same control API from about eighty lines of standard library instead of taking a dependency

Project

Cherry: a static site generator for hackers

  • A batteries-included static site generator written in Elixir; this site runs on it
  • Releases 0.1.0 to 0.6.1 through a solo PR-driven release flow
  • Typed content collections, a versioned theme contract with thirty official themes, portfolio and CV surfaces with JSON Resume output, one CLI seam shared by the binary and mix
  • Companion tools: cherrypicker (stable named .localhost URLs for local dev servers, pure BEAM) and a themes exhibition site

Project

codebase-memory-mcp: Elixir support for a C code-intelligence engine

  • Contributed Elixir semantic resolution to DeusData's code-intelligence engine, a pure-C binary that indexes a repository into a knowledge graph and answers structural queries over MCP
  • A resolver ladder built a phase at a time: scopes, aliases and imports, name/arity identity across pipes, captures and default args, cross-file fallback, use-macro tables, protocol dispatch, defdelegate edges, behaviour and impl linkage, and Struct nodes from defstruct
  • Then an F1 to F9 field-hardening campaign, validated against a 1,240-file production Phoenix application: every defect reproduced against a from-scratch index before it was written up, artefact findings discarded
  • Impossible call edges from typespecs and struct-field reads went 174 to zero on that application, and grouped multi-line alias and import expansion took resolved imports from 7 to 13
  • Also Phoenix router extraction including resources expansion and if/unless descent, index invalidation on binary upgrade via an indexer fingerprint, Cypher WITH-clause scalar grouping, and OTP entry-point flagging from behaviour tables
  • Four days of work on a fork, with an upstream submission plan written alongside them; merge status is the maintainers' to report

Project

ASDLC: an agentic software development lifecycle

  • Sole-authored the reference architecture: eight design principles and an eight-stage loop mapped onto git artefacts
  • GitHub-native coordination template and a catalogue of 59 agent skills across twelve layers
  • Versioned, runnable specification, v1 to v3.0.0. v3 deleted v2's bespoke control plane: the substrate dies, the discipline survives
  • Proven on real builds: a product in 30 days, a Shopify app in eight, my own agent framework

Project

Storeguard: Shopify merchant-health app

  • Sole author: a complete embedded Shopify app in eight days (React Router 7, Prisma, BullMQ)
  • CI chain from schema generation through lint, types, tests and build to two dependency-audit gates, the production audit zero-tolerance; 57 Playwright specs in about 46 seconds
  • A visual end-to-end loop that screenshots every UI state at three breakpoints into a README index, built for AI-assisted review

2025

Project

A Christmas of hex packages

  • Three personal Elixir libraries written and published to hex in one December: conjure, deep_eval_ex and chatterbex
  • conjure implements Anthropic's Agent Skills for the BEAM: SKILL.md parsing, .skill packages, progressive disclosure, and one Session API formalised as a behaviour over local shell, Docker, the hosted Skills API and native Elixir modules, so moving a skill between backends does not touch the calling code
  • deep_eval_ex ports Confident AI's DeepEval to Elixir, keeping the test-case shape compatible with the Python original and the Apache-2.0 attribution explicit
  • conjure began as skillex over Christmas week, then went out under a new name and an Apache-2.0 licence
  • chatterbex, bindings for Resemble AI's Chatterbox text-to-speech with zero-shot voice cloning, was written on Christmas Day and on hex the day after

Project

Faria data platform

  • Founded and architected it in February 2025: the README defining the platform, the Phoenix scaffold, the AWS foundations, and the Athena client library that became the platform's data-access spine
  • Bronze, silver, gold on S3 with Athena, Glue and Parquet: raw data from four external source systems standardised into a unified silver layer, then analytics-ready star schemas plus pre-computed aggregates, indicators and signals in gold
  • Per-school isolation written down as platform law: the school id is mandatory in every table location, so separation is a property of the storage layout rather than a query someone has to remember
  • Oban Pro cron workflows run the ETL; the first production pipeline, attendance, merged three weeks after the platform was founded
  • Wrote the data architecture: the cross-source entity reconciliation strategy (co-authored) and the student-attendance star schema with dims, facts, ETL mapping and a worked query index
  • Led the versioned data exports that fed one source system's bronze tier, January to September 2025: dated then semantically versioned drops, PlantUML data models and a data dictionary, and a changelog written as a migration guide for the consumers downstream
  • Runs in production in three AWS regions as the engine behind the analytics product

Project

Spotlight school analytics

  • Founded it in January 2025: a product vision document and a draft attendance star schema landed in the repo before any application code
  • Top author from the first commit through to March 2026; in production across three AWS regions
  • Attendance first (report views, student detail, insight cards for declining and partial absence, alerts, trends), then grades and assessments with historical comparison across terms; sole author of the design docs for two of the report-view epics
  • Came up with and implemented the dynamic insights functionality: statistical models computed in the warehouse (consecutive-absence blocks, mixed-attendance detection, month-over-month decline with severity bands, and a sliding-window early-warning score with an acceleration term and configurable weights and thresholds) that provide intelligence over the data in a reliable, predictable way, producing the higher-level signals that drive user insights and the LLM-based interaction on top
  • Top author of the query layer the product reads the warehouse through: Athena query module, SQL parser, SQL protection, results parser; sole author of its AWS module
  • "Ask Spotlight": natural-language questions answered over a semantic layer and data providers with a structured-metadata context builder, merged July 2025
  • Ask Agent: an OTP skills system with a session process per conversation, a resumable matcher for filter extraction and a block protocol for the UI, merged January 2026
  • Every model call goes through the company AI platform rather than a provider SDK, so usage, auditing and token cost sit in one place

2024

Project

Data and analytics prototype

  • Founded the prototype that proved the full analytics chain end to end: source API clients into S3, generated schemas into Glue and Athena external tables, dashboards embedded in a school-facing app behind single sign-on
  • Built a declarative test-data composer that generated referentially intact, cross-synchronised datasets across both source products, so the pipeline could be exercised without touching real school data
  • Produced the negative result that redirected the platform: embedding a third-party BI tool gave a poor user experience, and the analysis that mattered needed precomputed indicators rather than live query-time aggregation
  • That finding is why the platform that followed is a medallion warehouse with curated views rather than embedded BI

2023

Project

Faria AI platform

  • Originated in August 2023 as a near-solo LLM framework in Elixir: prompt templates as data, streaming APIs, OTP agents, self-hosted embeddings and vector search, provider fallback
  • Re-architected in November 2023 as a platform of named, versioned, auditable AI operations consumed by ManageBac, OpenApply and Atlas, so product teams ship AI features without owning prompts, providers or safety machinery
  • Principal architect and co-lead since: a versioned prompt catalogue and 129 releases across two and a half years in production
  • Multi-provider: OpenAI, Azure OpenAI, Anthropic direct and via Bedrock, plus Chinese providers for a separate China deployment
  • Adversarial red-team evaluation suite and a safeguard middleware layer in front of every operation
  • 2026: sole-led the AI gateway, a raw-byte relay that holds and signs upstream credentials, tees an audit trail with token usage and pricing off the byte stream, and pre-flights spend; 27 ADRs
  • Fleet-wide model migration of 46 production operations off deprecated models, old prompt versions preserved

2022

Position

Director of Engineering (part-time) · Enzai

  • Engineering leadership through the early start-up phase of an AI-governance software company, alongside my Faria role
  • Established data-security controls and engineering processes
  • Led systems design and optimisation of the Elixir/AWS platform; designed and shipped product features hands-on as part of a fast-paced, creative engineering team

2020

Project

A realtime message-relay service

  • Sole author of service and client alike: a JWT-scoped pub/sub message relay over Phoenix Channels, the reusable replacement for a Rails product's ageing realtime transport
  • A scope/session model so messages fan out only within their scope; authorisation entirely by JWT
  • Shipped the service and its JavaScript client together, versioned to production

Project

MiniPD coaching marketplace

  • Founding architect and tech lead, from empty repo to a 14-app Elixir umbrella split into product apps and reusable platform libraries
  • Personally built the payments path: idempotent Stripe Connect checkout with compensating refunds, payouts and reversals, and a double-entry ledger for school balances
  • Scheduling and booking engine, Twilio Video sessions, and in-house chat over Phoenix Channels after a documented build-vs-buy
  • GenStage event pub/sub driving email, audit and payment side-effects; role-based access control; SSO

2019

Project

exile: Spawnfest 2019 winner

  • Originated and led the winning entry in the BEAM community's annual 48-hour hackathon: a realtime database-as-a-service with REST-path resource location and time travel
  • Sole author of the database: the ETS/OTP store engine and the realtime subscription layer. A colleague wrote the demonstration front end

Project

Technical hiring programme

  • Designed and owned the division's technical assessments for seven years, spanning three role tracks: software engineering, data engineering and full-stack
  • Challenges built to reward genuine reasoning: worked examples where the greedy algorithm fails, a round-two "extend your solution" stage, and candidate communication recorded and scored alongside code
  • 2025–26: AI-assisted calibration with generated exemplar solutions and agent-drafted, human-curated code reviews

Project

Account-linking and messaging service

  • Sole architect and author of a platform that gave web applications with different authorisation providers an Apple Handoff-like capability for the same human user: a user-consented, secure link between two accounts, and messaging over it so the apps could act for that person and surface integrations across the pair
  • Cross-product account association and pull-based messaging, with the protocol documentation written in week one
  • OAuth-style three-legged account-link handshake; messaging with visibility timeouts and acknowledgement; idempotency, at-least-once delivery and no-system-time-in-protocols written down as principles
  • From week one: contract-first OpenAPI, property-based tests running 500–1,000 iterations in CI, full infrastructure as code
  • Wrote the Elixir and Ruby client libraries and a reference-implementation consumer; a load-test harness rounded out the platform

2018

Project

School-authorisation application

  • Founding engineer (October 2018): the scaffold, the first domain model and entity APIs across seven entities, and the releases/Docker/CloudFormation deployment story later imitated in a sibling service
  • 2023–24: replaced a document-export bodge with a vendored conversion daemon of my own; built a queue-backed CRM export subsystem (durable database queue, supervised poller)

Project

spirit_fingers: SimHash for Elixir as a Rust NIF

  • SimHash operations for Elixir with the hashing done in Rust through Rustler, flagged for the dirty CPU schedulers so a long hash over a large binary never blocks a normal BEAM scheduler
  • Roughly 276× the throughput of the two pure-Elixir alternatives at about 13,700× less memory on the same input, from a reproducible Benchee run; the only one of the three that survives multi-megabyte binaries
  • Became the fingerprinting engine inside a near-duplicate detection service

Project

chroxy: pooled headless Chrome over the DevTools protocol

  • Headless Chrome as a service: one endpoint hands back a WebSocket URI to a fresh page, proxied transparently, and the page is destroyed when the socket closes
  • A dedicated Elixir process per connection under a transparent TCP proxy, a hook behaviour tying browser lifecycle to the socket, and every Chrome browser supervised as an OS process under erlexec
  • 266 stars and 26 forks; thirteen hex releases from 0.3.0 in May 2018 to 0.7.0 in January 2021, and still around 26 downloads a day years after the last one
  • Sole author, and reviewed and merged every community PR: six external contributors, among them a DockYard engineer, covering Docker support and permissions, a Cowboy 2.7 and dependency upgrade, and listener resilience

Project

Coursework near-duplicate detection

  • Originated the capability: wrote the 2018 RFC proposing near-duplicate detection for coursework submissions, and built the first service the same year (submit/similarity API, JWT auth, a CLI client)
  • 2020: green-lit and specified with the IB; the spec validated the normalisation-plus-similarity approach as 100% effective against a real-world 20-document sample
  • 2023: rebuilt it as a second-generation service on spirit_fingers, my own open-source Rust NIF; zero-knowledge design: only irreversible fingerprints are retained
  • 2025–26: scale-up from polling to Broadway to Oban Pro, streaming downloads, PDFium text extraction, 100 MB uploads, capacity-tested with published results

2017

Project

Performance harness on my own headless-Chrome service

  • Sole author of my earliest work at Faria (from November 2017): a latency- and geography-aware performance-recording harness for an exam-systems product, driving real user scenarios over HTTP
  • Built on chroxy and chroxy_client (my own open-source headless-Chrome service), a personal library driving employer performance tests (dependency stated, ownership personal)
  • A Phoenix front end to run the scenarios and visualise the timings; runs stored in Postgres for regression tracking

Position

Principal Polyglot Software Engineer & Architect, Strategic Engineering · Faria Education Group

  • Originated and architected the company's AI platform: governed, versioned, auditable AI operations consumed by ManageBac, OpenApply and Atlas, across OpenAI, Azure, Anthropic, Bedrock and Chinese providers, with a separate China deployment
  • Built the platform's safety and audit line: adversarial red-team evaluation, an AI-firewall middleware and a byte-level auditing AI gateway; migrated 46 production AI operations across model generations
  • Designed the product AI agent architecture: a role-routed assistant over a fleet of small in-app MCP servers, with a written MCP tool-design doctrine
  • Founded the data platform: a prototype that disproved embedded BI, then a medallion warehouse on S3/Athena/Glue and the Faria Spotlight analytics product, live in three AWS regions; now a second-generation warehouse designed for LLM-grounded analytics
  • Founding architect and tech lead of MiniPD, a coaching marketplace: 14-app Elixir umbrella, Stripe Connect payments with a double-entry ledger, video sessions and chat
  • Built the exam-systems services in Elixir: account linking and messaging, near-duplicate detection realising my own 2018 RFC, conversion services, ingestion pipelines
  • Built a .NET 7 document-processing daemon (DOCX to PDF, table repair, PDF merging) driven from Elixir over a Unix domain socket, and vendored it into the product that needed it in place of a Python and LibreOffice pipeline
  • Polyglot by need rather than preference: Ruby inside the Rails products my Elixir services integrate with, and Ruby client libraries for two of those services; Python for the Airflow and dbt analytics stack I architected in 2026 and for an OAuth2-scoped MCP server built inside a Django monolith in two days
  • Standing roles: AI strategy; founding member of the internal AI Ethics Board; technical advisor to leadership on AI, platform and M&A; hands-on technical due diligence; cross-department consulting architect
  • Pioneered agent-assisted delivery: designed and ran an agentic SDLC, proven by building a complete production-grade product sole-author in 30 days with 1,390 automated tests
  • Owned technical hiring for the division for seven years

2015

Education

Advanced Erlang and OTP · Erlang Solutions, taught by Robert Virding

  • A week of advanced Erlang and OTP with Robert Virding, co-creator of Erlang, taken in my first year at Alert Logic

Talk

Building neural networks in Elixir, and the maths behind your first neuron

  • A talk on building neural networks in Elixir from first principles, and the maths behind crafting your first neuron

Project

BeerExpert: an expert system in Elixir

  • An expert system written in Elixir in July 2015, in my first months with the language
  • 14 GitHub stars, the most of anything I put up before 2018

Position

Senior Software Engineer, Processing Platform · Alert Logic

  • Erlang engineer on the original Processing Platform: a distributed-Erlang cluster over Riak doing big-data packet and log processing for real-time exploit and vulnerability detection
  • Architected and developed its ground-up replacement from the lessons of the first: serverless Erlang on AWS, with a custom bootstrap that brought an Erlang VM up inside a Lambda function and kept it warm for thirty minutes, fed by Kinesis and SQS, so capacity scaled horizontally with the firehose
  • Mentored an intern through building a GraphQL-based incident-analysis platform

Talk

Visualising Elixir: processes in 3D (lightning talk)

  • Watching 5,000 BEAM processes spawn and link in three dimensions, live on stage

2014

Education

Functional Programming Principles in Scala (verified certificate) · EPFL via Coursera

  • Verified certificate, June 2014, six months before my first Elixir commit

Project

ReactiveReact: an RxJS and React playground

  • Wired RxJS up to React in spring 2014, while writing Rx on the .NET side day to day
  • Seven GitHub stars for a two-month evening experiment

2013

Education

Principles of Reactive Programming · Coursera (EPFL / Typesafe)

  • Certificate, December 2013: the course behind the Rx demos on my GitHub from the same year

Education

High-Performance Lock-Free Data Structures and Concurrent Computing · Taught by Martin Thompson

  • A course on lock-free data structures for high-throughput concurrency, taught by Martin Thompson, taken in my first year at CME Group; my course notes from it are still on GitHub

Project

NHdrHistogram: HdrHistogram ported to .NET

  • A .NET port of Gil Tene's HdrHistogram, written in September 2013 during the low-latency trading years
  • Recording in constant time at a fixed number of significant digits, so the tail of the latency distribution survives the measurement

Position

Senior Software Engineer, CME Direct · CME Group

  • CME Direct trading platform (.NET) and stream-processing/CEP systems for market analysis
  • Co-designed a behavioural testing framework

2011

Position

Senior Software Engineer, Services & Mobile Platform · NaviNet

  • Mobile platform team for US healthcare: native and web medical applications
  • Next-generation medical-insurance transactions and a composite web architecture
  • Applied programming-language theory to test automation: designed a grammar for automated testing that testers could grow themselves, defining new words in terms of existing ones, an idea inspired by Guy Steele's 1998 OOPSLA talk, Growing a Language

2010

Position

R&D Lead & Technical Consultant · L&T Infotech, consulting at Citi

  • Lead developer on the middle-tier overhaul of an account system with 40,000+ active users, in Citi's Architecture & Technology Division
  • Introduced TDD, unit testing and automated regression testing; trained developers; consulted by senior staff on process improvement

2009

Position

Software Consultant (self-employed) · Holdsworth & Co Consultants

  • Three financial-sector contracts building high-performance analysis systems and tools for black-box trading systems and algorithmic trading strategies
  • A from-concept distributed execution platform scaling computation across a cluster for a private trading fund

2008

Position

Software Developer · Digital Future Solutions

  • Architected and built the next-generation 3D UI for a distributed multi-room media-centre product (.NET/WPF)

Position

Technical Specialist · Ulster Bank (RBS)

  • Two-month contract on process automation and compliance for a magnetic-tape system, done in UNIX scripting

2007

Position

Associate Software Developer · Autonomy Meridio

  • Placement year in the core development division, on legacy and new systems in ASP.NET, Silverlight, WPF and SharePoint, working Agile
  • Meridio was acquired by Autonomy in October 2007, mid-placement
  • My mentor Stuart had me read Code Complete by Steve McConnell in my first week, what a start to a career in programming. Coding horrors, if you know you know
  • A colleague's 2008 LinkedIn recommendation: 'very fast learning and committed developer ... pure pleasure to work with'

2005

Education

BSc (Hons) Computer Science · Queen's University Belfast

  • Concurrent programming, AI, data structures and algorithms, software engineering, information security, mobile computing, games programming