craigthompson.dev ./get-in-touch

$ whoami

Craig Thompson

Head of Engineering · hands-on, AI-first

Illustrated portrait of Craig Thompson smiling at his laptop Illustrated portrait of Craig Thompson smiling at his laptop at night, by the light of a desk lamp

20+ years’ experience in software development and management, from start-up to acquisition.

I’m a hands-on, full-stack engineer across UI, back end, infrastructure and AI, with extensive engineering leadership experience. I led an engineering department to AI-first development, where most code is now generated by AI, then reviewed by AI and people. Problem solving is what I do best, whether the problem sits in the code, the platform or the team.

I’ve led engineering teams for 12+ years, growing and developing teams of 10+ engineers, both in-house and outsourced. I’ve set strategy, supported the people and steered the platform with them, from monorepos and build engines to AWS, authentication and AI tooling.

I’ve reported directly to CEO and CTO level, turning the roadmap and technical direction into plain-English board updates. I’ve been part of ISO 27001 and GDPR accreditation and the annual audits.

./get-in-touchcat cv.pdf

$ cat career.log # experience

#
Next

Open to new roles

  • Head of Engineering
  • Hands-on technical leadership
  • AI-first engineering

Remote, or flexible hybrid in the North East · get in touch

Dec 2018 — present (8 years)

Head of Engineering · Hive HR

Led engineering for a B2B SaaS employee engagement platform (surveys, peer-to-peer recognition and confidential feedback) that runs 24/7 for enterprise, mid-market and SME customers, with a cross-functional team of up to 12 engineers.

  1. 2019–21 · Founding & foundations. Led the consolidation of ~18 repositories into one TypeScript monorepo, with history intact, and set up its , Docker and local dev. Started the React design system and led front-end work on the core product.
  2. 2021–24 · Platform ownership. Moved CI to self-hosted Buildkite as code, driven by an in-house TypeScript build engine. Helped take the company to , led repo-wide toolchain migrations and hardened AWS access.
  3. 2024–26 · Architecture, security & AI. Led the move to and an edge behind and with the infrastructure as code in Terraform and CloudFormation, the replacement of our authentication system and an evidence-led push on AWS costs, and helped start an AI agent service.
  4. 2026 · Acquisition by WorkBuzz. Saw the company through from startup to its acquisition, providing technical leadership along the way and representing engineering right through due diligence.
Dec 2013 — Dec 2018 (5 years)

Technical Lead · Communicator

  • Led a Scrum team of junior-to-mid engineers, setting the code quality standards, building the next generation of an email marketing SaaS platform that sends billions of emails, leading front-end development and mentoring two software engineers.
  • Architected a React drag-and-drop WYSIWYG Email Designer so non-technical clients could build compatible HTML emails.
  • Built a Node.js/Cheerio microservice to automate CSS inlining and HTML optimisation and keep rendering consistent across major email clients.
  • Led the team’s move from TFS to Git and TeamCity, then introduced GitLab with runners hosted on our own servers for centralised, faster CI/CD.
  • Built Node.js functionality for new products.
Jan 2011 — Sep 2012 (2 years)

Front-end Web Developer · Eutechnyx

Turned visual mock-ups into interfaces and CMS pages for the Auto Club Revolution project with JavaScript and Backbone.js.

Apr 2008 — present (18 years) · alongside

Consultant & open-source maintainer · craigsworks

One-off projects for smaller and larger clients worldwide, from single websites to larger builds such as a crop management application, using Node.js, Express and modern SPA frameworks; UI libraries built to WCAG; and maintaining open-source tools like qTip2, from issues and documentation to releases.

$ ls ./responsibilities # roles & responsibilities

#

The responsibilities I've held beyond the code, and the impact they had: leading and growing the team, hiring, working with product and customers, incidents, budgets, ways of working and the move to AI-first engineering, seeing a startup through to acquisition, compliance and internal IT. It plays through each file on its own and holds while you hover or read. Jump to any file, or open it on its own page.

01 / 12 · leadership.mdteam
// engineering leadership · head of engineering since 2018

Led the team, not just the platform

As Head of Engineering I've set the engineering strategy and kept the technical roadmap aligned with product goals, leading a cross-functional team that grew to 12 engineers at its largest. I've explained problems to whoever needed to understand them, from engineers to directors and the CEO, and I'd rather remove friction for the team than add process.

  • The technical roadmap was aligned with product goals, so platform investment was visible alongside features.
  • The team adopted new tooling together, from CI to AI-assisted workflows, rather than in silos.
  • We moved to continuous delivery, with daily releases.
  • Incidents led to better tooling and runbooks, not finger-pointing.
  • Outsourced engineers were onboarded into the team itself, and many stayed for 2+ years.
12
engineers in the team at its largest
// what the role covered
strategy & roadmappeopleoutsourced teamsdeliveryincidentsstakeholders
next: hiring.md

leadership.md on its own page

$ ls ./case-studies # case studies

#

The technical projects I've led with my teams: what we built, what changed, and what it means in practice. Open a file.

// monorepo & developer experience · 2019 → today

One codebase, kept modern without stopping delivery

I’ve taken a platform spread across about 18 separate repositories and led merging them into one TypeScript monorepo with their history intact, along with the tooling around it: CI/CD, Docker and local dev. That one codebase is what makes the repo-wide migrations in refactor.md possible.

2019 · 18 repositories
  • 12 services
  • React app
  • 3 Lambdas
  • Terraform
  • QA suite
today · one monorepo
100+
packages today, including the shared React design system
# in practice
  • Every engineer works in one repo, with one toolchain and one way to build, test and deploy.
  • Generated OpenAPI 3.1 docs for 12 services replaced a hand-maintained Postman collection.

monorepo.md on its own page

$ ls ./stack # skills

#

87 tools across 12 areas · type to search

languages/ 7 TypeScript, JavaScript, HTML, CSS, Node.js, Bash, HCL
  • TypeScript
  • JavaScript
  • HTML
  • CSS
  • Node.js
  • Bash
  • HCL
backend/ 7 Express, GraphQL (Apollo), Koa, REST / OpenAPI, Zod, RxJS, Microservices
  • Express
  • GraphQL (Apollo)
  • Koa
  • REST / OpenAPI
  • Zod
  • RxJS
  • Microservices
data/ 5 MongoDB Atlas, Atlas Search, Elasticsearch, Redis, DynamoDB
  • MongoDB Atlas
  • Atlas Search
  • Elasticsearch
  • Redis
  • DynamoDB
frontend/ 8 React, Apollo Client, Emotion, Vite, Storybook, Playwright, Cypress, WCAG
  • React
  • Apollo Client
  • Emotion
  • Vite
  • Storybook
  • Playwright
  • Cypress
  • WCAG
compute/ 8 ECS, Fargate, Service Connect, EC2, Auto Scaling, Lambda, Batch, ECR
  • ECS
  • Fargate
  • Service Connect
  • EC2
  • Auto Scaling
  • Lambda
  • Batch
  • ECR
networking/ 9 VPC, CloudFront, WAF, Route 53, Elastic Load Balancing, API Gateway, PrivateLink, VPC endpoints, NAT / fck-nat
  • VPC
  • CloudFront
  • WAF
  • Route 53
  • Elastic Load Balancing
  • API Gateway
  • PrivateLink
  • VPC endpoints
  • NAT / fck-nat
messaging/ 2 SNS, SQS
  • SNS
  • SQS
access/ 7 IAM, IAM Identity Center, Control Tower, Organizations, Systems Manager (Session Manager), CloudTrail, VPC Flow Logs
  • IAM
  • IAM Identity Center
  • Control Tower
  • Organizations
  • Systems Manager (Session Manager)
  • CloudTrail
  • VPC Flow Logs
delivery/ 8 Git, Terraform, CloudFormation, Packer, Docker / BuildKit, Buildkite, GitHub Actions, pnpm
  • Git
  • Terraform
  • CloudFormation
  • Packer
  • Docker / BuildKit
  • Buildkite
  • GitHub Actions
  • pnpm
it/ 10 Google Workspace, MDM, Mosyle, Jamf, Apple Business Manager (ABM), macOS fleet, ThreatDown, IT service desk, Jira Service Desk, Status page
  • Google Workspace
  • MDM
  • Mosyle
  • Jamf
  • Apple Business Manager (ABM)
  • macOS fleet
  • ThreatDown
  • IT service desk
  • Jira Service Desk
  • Status page
observability/ 7 Sentry, OpenTelemetry, Fluent Bit, Grafana, CloudWatch, Container Insights, AWS X-Ray
  • Sentry
  • OpenTelemetry
  • Fluent Bit
  • Grafana
  • CloudWatch
  • Container Insights
  • AWS X-Ray
ai/ 9 Claude Code, Anthropic API, Amazon Bedrock, Amazon Q, Mastra, promptfoo, Pi, Superset, GitHub Copilot
  • Claude Code
  • Anthropic API
  • Amazon Bedrock
  • Amazon Q
  • Mastra
  • promptfoo
  • Pi
  • Superset
  • GitHub Copilot

$ ls ./open-source # open source

#
Merged pull requests to other projects, by quarter
as a table
yearmergedprojects
2012 1 andris9/highlight
2013 6 cdnjs/cdnjs, jsdelivr/jsdelivr, Mottie/tablesorter
2014 12 etodanik/veinjs, itsjavi/bootstrap-colorpicker, BlueSpire/Durandal, dobtco/jquery-resizable-columns, giggio/npm-nuget, jsdelivr/jsdelivr
2015 9 codesuki/react-d3-components, aurelia/skeleton-navigation, rniemeyer/knockout-delegatedEvents, mbest/knockout.punches, jakubburkiewicz/uncss-brunch, BlueSpire/Durandal-Bower, cdnjs/cdnjs
2016 6 preactjs/preact, jakubburkiewicz/uncss-brunch, unindented/stats-webpack-plugin, shipshapecode/tether, electrode-io/electrode-webpack-reporter
2017 16 communicator/dockerized-magento, camwest/react-slot-fill, robinweser/fela, ianstormtaylor/slate, KoryNunn/scroll-into-view, faceyspacey/babel-plugin-dual-import, lerna/lerna, tomkp/react-split-pane
2018 4 communicator/magento-plugin, gregberge/recompact, Popmotion/popmotion
2019 1 slefevre/gitin2it
2022 2 swc-project/swc-node, buildkite/test-collector-javascript
2026 2 shuding/nextra, better-auth/better-auth
open-source/qtip2

qTip2 — pretty powerful tooltips

Widely adopted jQuery plugin and a go-to tooltip library in its day: ~2k stars, 458 forks and 1,384 commits, built with extensive help from community contributors. Featured in Smashing jQuery (2011).

open-source/micromouse

Micromouse simulator

Interactive maze-solving simulation using the classic flood-fill algorithm, with the Arduino code to run it.

communicator/email-designer

WYSIWYG Email Designer

React drag-and-drop builder with a Node.js CSS-inlining service behind it, for a platform sending billions of emails.

59 merged pull requests across 35 other projects since 2012, usually fixing something I hit in production. A selection:

  1. Git worktree support for the docs framework shuding/nextra PR #4995
  2. Fixed SAML metadata so an organisation's default SSO provider works better-auth/better-auth PR #9398
  3. Path prefixes so Test Analytics works in monorepos buildkite/test-collector-javascript PR #30
  4. Made the require hook revertible swc-project/swc-node PR #647
  5. IE11 compatibility fix for the animation library Popmotion/popmotion PR #506
  6. Custom pane class names and CSS order support tomkp/react-split-pane PR #226
  7. Improved canary releases for the monorepo tool lerna/lerna PR #904
  8. Selection and node-lookup utilities for the rich-text editor ianstormtaylor/slate PR #728
  9. Clearer display names for themed React components robinweser/fela PR #193
  10. Positioning for elements inside iframes shipshapecode/tether PR #179
  11. Fixed handling of multiple camelCase CSS properties preactjs/preact PR #66
  12. Observable app titles and an optional view plugin for the SPA framework BlueSpire/Durandal PR #486
  13. Published qTip2 releases to jsDelivr jsdelivr/jsdelivr PR #203
  14. Published qTip2 releases to cdnjs cdnjs/cdnjs PR #1071

See them all on GitHub →

# used by My jQuery plugins were used on sites by Mozilla, Salesforce, Lloyds TSB, ASOS, Syngenta, Urban Dictionary, Northumbria University, Skrill, models.com and ThinkTag.

$ ls -t ./blog # writing

#

26 posts from my old blog on craigsworks.com, 2012–2015, kept as they were written. Some of the tools have since moved on.

  1. Generating Roman Numerals generating-roman-numerals.md JavaScript · 1 min
  2. Tether.js - Transition small movements tether-js-transition-small-changes.md 1 min
  3. Durandal and Webpack: Introduction durandal-and-webpack-introduction.md Knockout.js · Durandal · jQuery · 2 min
  4. Durandal and Webpack: Part 1 - Module format durandal-and-webpack-part-1-module-format.md Knockout.js · Durandal · jQuery · 2 min
  5. Durandal and Webpack: Part 2 - Composition durandal-and-webpack-part-2-composition.md 4 min
  6. GitHub Pages + Webpack Chunks = output.publicPath github-pages-and-webpack-2.md 1 min
  7. gulp-watch-less - Watch LESS @imports gulp-watch-less.md Plugins · JavaScript · Gulp · 1 min
  8. LESS - Generate a deep list of all a file's @imports less-file-import-list.md JavaScript · LESS · 1 min
blog/ index →

$ cat recommendations.txt # recommendations

#

From LinkedIn, quoted as written. See them on LinkedIn →

I worked with Craig over a number of years whilst we were both in the development team at Communicator. Craig's passion towards getting the best solution in place is unmatched. He cares about both the smaller details and bigger picture. I enjoyed working with Craig on a number of projects, we developed a great rapport and I would happily highlight that Craig went from colleague to friend whilst we worked on a number of fantastic features that were added to the Communicator platform.

Craig keeps himself ahead of the game, he understands all of the bleeding edge technology, when it would be worthy of considering as a developmental option and when it's still too much in its infancy to risk adopting. I'd recommend him to anyone and believe his front end skillset is of a substantially high quality.

Even after a number of years separated professionally, I still call Craig a friend and wouldn't think twice about accepting the invitation of a catch up over a cold beverage. I'd also jump at the chance to collaborate again in the future and I really hope our paths will cross again!

Lloyd Rodrigues Powell
Head of Software Development at Northumbria Healthcare NHS Foundation Trust
May 2021 · worked with Craig on the same team

Craig is a very able developer, who is capable of putting together high-quality front-end solutions at lightning speed. Always friendly and willing to lend his expertise JavaScript, jQuery, CSS and related web technologies, he is indispensable part of the Auto Club Revolution web team.

Joe Forster
Senior AI Programmer at Ubisoft Reflections
October 2012 · worked with Craig on the same team

At the time of writing I am working with Craig on an ongoing very large and complex web-development project. Craig is the go-to person for all of the frontend jQuery and CSS related issues. He is also increasingly getting involved with the backend-development. An all-round excellent web-developer.

Peter Davies
Software Engineering Leader | Product Business | Technology
October 2012 · worked with Craig at different companies

$ cat recognition.txt

$ cat education.txt # education

MEng, Electronic & Computer Engineering
Newcastle University · 2008 — 2013

$ cat faq.md # faq

#
What roles are you open to?

Hands-on technical leadership roles, such as Head of Engineering, where I stay close to the code and to AI-first delivery while setting direction for the team. I’m most at home in start-ups and scale-ups.

Remote, hybrid or office?

Primarily remote. I’d consider hybrid for a North East–based company with genuinely flexible attendance, but not a fixed “X days a week” commitment.

Where are you based?

Newcastle upon Tyne, UK.

What's your notice period?

Three months.

How big a team have you led?

Up to 12 engineers as Head of Engineering, and before that a Scrum team of junior-to-mid engineers as a Technical Lead.

Have you hired and grown engineers?

Yes. I’ve hired 10+ engineers, through an interview process I designed with the CTO and Deputy Head. Many of the people I’ve led have been promoted, including one from Software Engineer to my Deputy Head of Engineering. See hiring.md and people.md.

Have you worked with customers and the board?

Yes. I’ve joined sales, customer and due-diligence calls as the technical expert, been the primary escalation point for major customer issues alongside my Deputy, and reported to the CEO and CTO with board material in plain terms. See customers.md and product.md.

How do you use AI in engineering?

Over the past year I’ve led an engineering department from introducing AI-assisted development to a point where the vast majority of code is AI-generated, then reviewed by AI alongside human reviewers against style and coding guidelines iterated on in the repo. See ai.md.

Have you owned a budget?

Yes. I’ve owned the substantial monthly AWS budget for a SaaS platform, and managed the platform’s technical suppliers and the wider IT suppliers, negotiating renewals and contracts. See budget.md.

Have you led incidents and on-call?

Yes. I set up the on-call rota and status page, led on incidents from single-client issues to full outages, and helped produce the business’s disaster recovery process. See incidents.md.

Do you cover internal IT too?

Yes. I’ve been the point person for IT: the hardware estate, Google Workspace, the MDM that provisions and secures the Mac estate, and an IT service desk I set up for everyone. See it.md.

Have you worked with outsourced or offshore teams?

Yes. As Head of Engineering I worked directly with an outsourcing firm in India, onboarding 5+ Software Engineers and Automation Test Engineers to bolster the in-house team. Many of them stayed for 2+ years.

Have you been through an acquisition?

Yes. I’ve led engineering from startup through to acquisition, and represented engineering right through due diligence. See acquisition.md.

Are you still hands-on?

Yes. Alongside setting strategy and leading the team, I’ve remained a skilled, hands-on engineer and upskilled in AI-assisted development along the way. Several of the upstream pull requests on this page are recent.

What industries have you worked in?

Mostly B2B SaaS for enterprise, mid-market and SME customers, including Hive HR’s employee engagement platform and an email marketing platform sending billions of emails, plus consulting for clients worldwide.

Do you have compliance experience?

Yes: GDPR and ISO 27001 accreditation, the annual audits, and arranging the yearly penetration test. See compliance.md.

Which clouds do you know?

Primarily AWS, with some GCP and more limited exposure to Azure.

Can I get a copy of your CV?

Yes. There’s a plain version at craigthompson.dev/cv, also as a PDF and as JSON Resume, or email me and I’ll send it.

Do you track visitors?

No cookies, and nothing that identifies you. The site counts visits (the page, the country, the site you came from and which sections you saw), using its own counter and Cloudflare Web Analytics, and keeps ask.sh questions anonymously, so I can see what’s useful and fill any gaps. Both respect Do Not Track and Global Privacy Control.

$ ./ask.sh # ask about my experience

#

Ask anything about my experience, roles or skills. An AI model answers using only what's on this site and links to where it found it. Questions are kept anonymously, with nothing that identifies you, so I can improve the site.

Pick a question below or type your own. Type help for commands.

$ ./ask.sh --test # how answers are checked

After every change to the Worker, and every week, a script asks ask.sh these questions and checks each answer: the right facts, nothing invented, and no response to instructions slipped into a question. One wrong answer fails the run. The tests are in the repo.

The latest results load from CI on the live site.

$ cat get-in-touch.md # contact

#

Let's talk

I'm open to hands-on technical leadership roles. If you're hiring, or want to talk about anything on this site, email me.

[email protected]
Looking for
Head of Engineering, hands-on technical leadership, AI-first engineering
Working
Remote, or flexible hybrid in the North East
Based in
Newcastle upon Tyne, UK
Notice period
Three months

Keyboard shortcuts

Ctrl K
Search and jump to any section, file or action
/
Search and jump (single key)
?
This list (single key)
← →
Previous and next file in the responsibilities tour
esc
Close a dialog, the chat or a definition

Turn these off if they clash with your screen reader or speech software. The setting is saved in this browser.

Search and jump