Skip to content

Experience

  1. Jul 2025 — Dec 2025

    Well-Sorted.org, Heriot-Watt University · Edinburgh

    Built a card-sorting research platform used by research groups across UK universities and research councils: 2,300+ participants sorting 8,200+ items.

    • React, TypeScript and Next.js 14 front end with a REST API of 20+ endpoints for auth, studies and sorting workflows
    • SQLite with optimistic locking, JWT auth in HTTP-only cookies, automated email through Mailjet
    • D3.js dendrograms, heatmaps and treemaps backed by UPGMA hierarchical clustering
    • Deployed on Railway with CI/CD
  2. Aug 2023 — Aug 2026

    Residence life warden

    Heriot-Watt University · Edinburgh

    On-call support for 500+ students in halls, from medical incidents to welfare concerns. Ran community events and acted as the link between students and university staff.

  3. Jul 2022 — Sept 2024

    Custom mechanical keyboards

    Sole trader · Edinburgh

    Designed and built bespoke keyboards to client specs, including QMK/VIA firmware. Handled everything from requirements to delivery.

Education

  1. Sept 2021 — May 2026

    MEng Software Engineering, First Class

    Heriot-Watt University · Edinburgh

    Industrial Programming, Data Visualisation & Analytics, AI & Intelligent Agents, Web Programming.

  2. 9 SQA Advanced Highers and Highers

    Harris Academy

    Including Mathematics, Computing Science, Cyber Security and Engineering. Deputy Principal's Award.

Projects

  1. Jan 2026 — Mar 2026

    Course materials

    Hands-on labs and lectures on Prompt Declaration Language for reliable LLM integrations, shipped as a docker-compose environment with an Ollama model server and Jupyter.

    PDLJupyterOllamaDocker
  2. Jan 2026 — Mar 2026

    Masters group project

    ROS 2 server that turns a Raspberry Pi Pico 2 W touchscreen and joystick into TIAGo robot commands, over a UDP protocol with e-stop handshake, packet-loss detection and safety timeouts. Dockerised for both simulation and the real robot.

    PythonROS 2rclpyDocker
  3. Jan 2025 — Apr 2025

    Data analytics coursework

    D3.js dashboard with linked views and animated transitions, built to tell a story with the data.

    D3.jsJavaScript
  4. Nov 2024 — Dec 2024

    Coursework

    C# Windows Forms browser with async HTTP, tabs, history, favourites and bulk downloads.

    C#.NET
  5. Sept 2024 — Apr 2025

    Dissertation

    Flask login that checks passwords against 900M+ known breached credentials in real time. Using Marisa-Trie and mmap cut memory use by 85% compared with a conventional approach.

    PythonFlaskbcryptmmap
  6. Sept 2024 — Oct 2024

    Coursework

    Python app for exploring usage patterns across 100k+ JSON records, with a tkinter GUI, matplotlib and Graphviz.

    Pythonmatplotlibtkinter
  7. Jan 2024 — Apr 2024

    Concurrency coursework

    Thread-safe simulation of a non-preemptive OS scheduler with priority ready queues, extrinsic monitors and ReentrantLock.

    Java

Hardware & craftsmanship

Custom mechanical keyboards

Alongside software, I've built and tuned 117 custom mechanical keyboards — from QMK/VIA firmware and hand-lubed switches to custom-dyed keycaps. Every build is archived here with photos and sound tests, and spare builds looking for a desk are listed on my eBay page.

No. 134 · On eBay♪ Sound test

Keychron K8 HE

Mario keycaps · Stock purple

TKL