Abstract. I'm a First Class Computer Science graduate from Durham University, joining Accenture as a Technical Analyst. My academic work centres on computational methods for political language, using transformer models to quantify rhetoric at a scale that qualitative analysis can't reach. Alongside this, I've built learning agents, generative models and real-time tracking systems under deliberately tight constraints. All the figures on this page are taken directly from that work.
Index Terms. Natural language processing, transformers, reinforcement learning, generative modelling, sensor fusion, data engineering
My route into industry ran through a year-long placement at Procter & Gamble, where I worked as an IT project manager on internal data platforms. The role combined directing outsourced developers with hands-on delivery, including an ETL redesign, a Power BI to Databricks migration and application deployment on Azure App Service.
Alongside my degree, I've spent over seven years tutoring GCSE, A-level and IB Maths and Computer Science, which has shaped how I communicate technical work. I also evaluate large language model outputs on tool-calling and code-review tasks, and I'm currently building a fully local, modular AI assistant on self-hosted hardware. Outside of computing I skydive, recording each jump in a logbook app I built for the purpose.
2.1 Dissertation · Securitising the Ballot
Computational modelling of securitising rhetoric in UK party manifestos
My dissertation operationalises securitisation theory as a continuous, multi-dimensional regression problem. A shared DeBERTa-v3 encoder feeds three regression heads that score each manifesto sentence for threat, urgency and justification of extraordinary power. Because gold labels are costly to produce, auxiliary heads also learn from roughly 44,000 lexicon-derived pseudo-labels, supplementing 1,500 sentences that I annotated by hand.
The selected model reached a macro Spearman correlation of 0.524 and a macro QWK of 0.623 on held-out data, with 5-fold cross-validation confirming generalisation at 0.487 ± 0.016. Applied across six general elections from 2005 to 2024, it shows that securitising rhetoric diverged between parties. Threat became a shared baseline among the largest parties, urgency distinguished the governing party, and that party legislated most when its own securitising rhetoric was weakest.
![]() Fig. 3. Hardcore run clearing stairs, stumps and pits. The Walking Dead-Ends PyTorch · Gymnasium · NumPy |
![]() Fig. 4. Roll, pitch and yaw under the complementary filter. VR Spatial Rotation System NumPy · OpenCV · pandas |
![]() Fig. 5. Uncurated class-conditional samples from the GAN. Efficient CIFAR-100 Modelling PyTorch · clean-fid · LPIPS |
![]() Fig. 6. Semantic drift in each party's public-health framing, projected with PCA. Public Health Rhetoric Before and After COVID-19 sentence-transformers · spaCy · scikit-learn |
![]() Fig. 7. Placing light installations as visitors arrive, at roughly 4× speed. Lumiere Festival Planner JavaScript · Plotly · HTML/CSS |
![]() Fig. 8. Each pipeline stage applied to a single scan. Image Cleaning for Pneumonia Diagnosis OpenCV · NumPy |











