I am a Senior Lecturer in Computer Science at Quillbury University, where I lead a small group of four working on graph algorithms and proof engineering. Before that I wrote my PhD at Pellbrook on shortest-path trees that carry their own correctness certificates1, and spent two summers building routing software for a logistics team.
Most of my work starts with an algorithm that is fast in theory and annoying in practice. I try to close that gap from both ends: prove a tighter bound, then write the implementation carefully enough that the bound shows up in the benchmark. When the code is concurrent, I also check it mechanically2, because tests alone have fooled me before.
I teach second-year algorithms to about two hundred students each autumn, and I build visual tools such as the player in Figure 1 so that loop invariants stop being abstract. I supervise PhD students in algorithms and verification, and I review for two symposia each year.
Outside work I run the Quillbury Theory Seminar, sail badly on the reservoir, and keep a list of proofs that were wrong in print, including one of mine.