Software

Open-source libraries and infrastructure

Software is a first-class output here: it makes the research reproducible and gives others a benchmark to build on.

Shepherding Library

The C++ framework behind the shepherding line of work: force-based sheep and sheepdog agents with driving, collecting, and regulated-force behaviours, six spatial initialisation patterns, and seeded, exactly repeatable runs. The same unchanged sources build three ways: a Visual Studio and SDL2 visualisation, a headless command-line build for batch experiments, and a WebAssembly build, so the live demo is the research code itself running in the browser, not a reimplementation. This is the library behind the IEEE Access study that located the cliff where reactive shepherding collapses, and the testbed the adversarial patrolling work (IEEE SMC 2024) now extends.

The full story, in plain language →
Live demo: run it in your browser →
Repository →

Weighted Gate Layer Autoencoder (WGLAE)

An autoencoder that recovers missing or corrupted channels by learning how a dataset's variables depend on one another, using a controller-driven curriculum of gating and a weight layer that focuses learning on the channels that matter. The paper's Experiment 1 now runs on current TensorFlow (a faithful TF 2.15 port and a Keras 3 rewrite), validated against the original results, alongside the original Code Ocean capsule.

The full story, in plain language →
Repository →
Original capsule (Code Ocean) →

PWC4.5

A decision-tree algorithm for pairwise comparative classification, extending C4.5 to problems where the signal lives in the relationship between paired instances rather than their individual values. Ships as a runnable JAR with the synthetic benchmarks, the translator-stylometry datasets (CC BY 4.0), and scripts reproducing every experiment from the ACM TALLIP paper, where PWC4.5 lifted translator identification from 52.12% to 80.23%.

The full story, in plain language →
Repository →

Open science

Reproducibility as a default

Releasing the infrastructure behind the papers is a deliberate part of how I work: it lets others verify, reuse, and extend the methods, reduces onboarding time for new researchers and students, and turns each publication into something the community can build on rather than only read.