William Lay
AI-Assisted Engineering.
Coding with AI assistance for 18+ months, and building the guardrails that keep an AI on the right side of the line.
Sumaid pal Singh BakshiI led the evaluation environment for the ARCD AI Cyber Range, a cloud platform measuring how effectively AI defends networks against adversarial attack. Alongside the infrastructure, I built the guardrails that constrained agent actions and blocked jailbreak attempts. That part of the job matters just as much as getting an agent to do something useful in the first place, since it's what stops the agent doing something it shouldn't.
I'm one of QinetiQ's Copilot Champions for AI-assisted engineering: the person colleagues come to when they want to know what's possible, what's actually worth trying, and what's still snake oil.
I've coded with AI assistance regularly for over 18 months, and maintain a public library of 200+ Claude Code subagents across 24 categories, reworked from an open-source original. Each one encodes a repeatable engineering task, from code review to release chores. The aim is fewer things I have to remember to do myself, and more consistency in the things I'd otherwise do slightly differently every time.
Constraining agent actions and defending against jailbreak attempts in an adversarial evaluation environment.
Designing repeatable subagents that encode a specific engineering task, not just one-off prompts.
Maintaining a public library of Claude Code subagents, reworked from an open-source original.
Uses an LLM to read a PDF's contents and rename the file to match, so a folder of anonymously-named scanned documents sorts itself out.
Since these documents are scans of potentially sensitive information, I used Ollama to run the LLM locally, ensuring that the document contents never left my machine.
My first real forray into vibe-coding, testing whether the same linting, CI and structure I expect anywhere else can be applied to a vibe-coded project. The answer is yes, but it takes some work to get there.
Enforcing test-driven development practices in a vibe-coded environment worked well for bug hunting. Linting and CI forced the AI to produce maintainable code, within a project structure that made sense to a human reader. The AI was able to produce a working game, and I learned a lot about prompting and iteration.