Jonathan Woollett-Light
York, United Kingdom • +44 7941 079483 •
jonathanwoollettlight@proton.me
github.com/JonathanWoollett-Light
•
linkedin.com/in/jonathan-wl
I am a PhD student in Physics at the University of York, studying neuromorphic computing and spiking neural networks. Before that, I spent two years as a software engineer at Amazon Web Services, on the Firecracker virtual machine monitor, which underpins a significant portion of AWS’s serverless services, including AWS Lambda.
An active contributor to open source, I have expertise in Rust, PyTorch, Python, C, C++ and JavaScript, and experience of GPU programming in CUDA and GLSL.
Research
University of YorkApril 2025 – 2028 (expected)
PhD in Physics, supervised by Prof. Martin Trefzer
The thesis investigates the often-reported inherent robustness of spiking neural networks, treating robustness as a complex profile across kinds of perturbation rather than a single score, and tracing that profile to the networks’ mechanisms: the reset, the leak and recurrent connections.
The first study isolates the reset, the only nonlinear step in a leaky integrate-and-fire neuron’s recurrent update, which several recent methods remove so that spiking networks can be trained in parallel across time. Small feedforward networks without a leak, identical except for the reset (soft, hard or none), were trained on a synthetic modular-counting task and two spiking speech benchmarks, with the outcome on the counting task predicted in advance from expressivity results for linear recurrences. Results so far suggest that removing the reset costs these networks most of their clean accuracy on all three tasks, and that on Spiking Heidelberg Digits doubling the width of a reset-free network recovers little of it.
Robustness is compared between networks at equal clean accuracy, using weights saved during training, across the full range of each perturbation. At equal accuracy on Spiking Heidelberg Digits, networks with a reset appear to keep more of their accuracy when spikes are reversed in time and under an adversarial attack that only moves spikes, implemented from a recent paper; no version leads consistently when spikes are added or deleted. Written up as What Does the Reset Do? An Ablation of the Spiking Reset Under Structured Temporal Perturbation (manuscript in preparation for publication; extended abstract).
The code is written in Python with PyTorch, with training and evaluation captured as CUDA graphs. Training runs on remote GPU instances, often dozens of A100s for short periods, so the experiment design can be iterated on quickly, and Bayesian optimisation (Ax and BoTorch) was used to explore the space of hyperparameters and candidate network topologies. Perturbation sweeps run locally, with dozens of networks loaded on the GPU at once and CPU workers generating perturbed samples on the fly to feed it.
Experience
Amazon Web ServicesApril 2022 – June 2024
Software Development Engineer, Cambridge, UK
I worked on Firecracker, an open-source virtual machine monitor, written in Rust, that AWS developed for services such as Lambda and Fargate, starting with a rework of its CPUID handling around the separate Intel and AMD specifications. Replacing the filtering of host values with a normalisation of what each guest is shown laid the groundwork for the custom CPU templates released in Firecracker 1.4, which let users adjust the processor features exposed to a guest. I later worked on the safety of restoring snapshots across hosts, writing CPUID compatibility checks for Intel hosts, and updated Firecracker’s host-security recommendations for Spectre-like attacks, with a test of a host’s mitigations.
I led an initiative to test Firecracker’s performance in production-like conditions, coordinating across teams to build the test environment; it found significant performance regressions, which were fixed before they reached production. I also added source-level tracing, released in Firecracker 1.6: a Rust procedural macro that instruments functions, with a tool that adds, removes and checks this instrumentation across the codebase.
I took on maintenance work for rust-vmm, the open-source organisation of virtualisation components shared by Firecracker, Cloud Hypervisor and other virtual machine monitors, and became one of its gatekeepers, who administer all of its repositories. In that role I wrote its guide to handling security vulnerability disclosures, started the initiative to move it to a monorepo and updated its CVE management process.
Education
Swansea UniversitySeptember 2017 – July 2021
Master of Engineering in Computing (Second Class Honours, Division One)
Third-year dissertation on recognising handwritten mathematical expressions, using Cogent, a small neural-network library written in Rust for the purpose. Final-year project: GLSL-BLAS, single- and double-precision BLAS routines, from vector operations to matrix multiplication, as Vulkan compute shaders with reductions built from subgroup operations and shared memory, and an animated reference site for the routines.
Projects
With more than 200 of my own repositories on GitHub, this is just a small selection.
formal (2024–present): an experimental verifying compiler for bare-metal RISC-V, written in Rust. It accepts a program only if it can prove, by symbolically executing the machine code in parallel across every interleaving of hardware threads, that no assertion can fail and no memory access is out of bounds. Type inference is part of the same search, so a variable left untyped is accepted exactly when some typing makes the program verify. An infallible type system in a procedural programming language with formal verification.
CI Metrics (2023–2024): a prototype of a service, similar to Codecov, that tracks metrics produced in continuous integration, such as benchmark timings, and reports how each pull request changes it, prompted by the performance testing of Firecracker. A Rust backend (Axum, MongoDB), a GitHub Actions integration and a Rust SDK, with experiments in anomaly detection for flagging regressions in noisy measurements.
nix (2022–2023): contributions to the Rust bindings to Unix system interfaces, chiefly typed wrappers for epoll and eventfd and the move of several system calls to Rust’s I/O-safety model.
Property search (2026): a rental-search page that reads floor area from floorplan images with a vision-language model running in the browser, and ranks listings by weighted preferences, including a subjective score estimated from pairwise votes with the Glicko-2 rating system.
Neural networks from first principles (2020–2024): rust-ad, an early prototype that generates forward- and reverse-mode derivatives of straight-line Rust functions at compile time, and an animated video series deriving the mathematics of neural networks.
Hearts of Iron IV modding (2024–present): creator of The Think Tank and Rising Tide, both for the Old World Blues mod; a developer on Millennium Dawn, a large modern-day mod built by a volunteer team; and author of hearty, a formatter and linter for the game’s script files, written in Rust. The work means coordinating design and releases with volunteer, often non-technical contributors, with little formal process.
Genetic Draughts AI (2017): my first venture into machine learning and optimisation, a C++ program that plays draughts by searching the game tree and judging positions with an evaluation function evolved through tournaments between candidate players. I still remember the moment it beat me.