my headshot
Projects
This section contains notes on a few of my projects. You can find my open source projects on my GitHub!
Atomistic Spin Dynamics
Throughout my PhD I've been working on a closed-source atomistic spin dynamics code. It is a modern code, highly modular code which is optimized to run on GPUs. I've become an expert in scientific computing, algorithm design, and software optimization (among other things).

I personally designed and implemented a new algorithm to calculate free energy differences which is highly parallelisable and optimized to run on GPUs. The new method required new science advances, and has over a thousand fold increase in performance over the previous state of the art. It pushes the boundaries of atomistic modelling. The previous method (which can be found here) cannot be parallelised, and only works with Monte Carlo methods which have been largely replaced by dynamical methods (see here for an example of why).

As well as low level programming, I use Python for data analysis. Visit

Below are some links to some mathematical derivations I've done during my PhD:
Quantum Computing (TBC)

I'm currently training to take the IBM Quantum Developer Certification. I expect to take the exam in summer 2023.

I've been a user of quantum mechanics since 2015; I studied it during my undergraduate, I used it to derive well known formulae in magnetism during my Masters and I regularly use it in my PhD to come up with expressions for material specific dispersion relations and calculate expectation values at finite temperature – even my classical simulations use quantum statistics to calculate the strength of stochastic thermal fields (see here for the original paper).

I also understand quantum information and quantum computing very well. I studied the foundations of quantum information during my undergraduate and masters. In my undergraduate I learnt how photonics components are used with single photon sources to apply different quantum operations on the polarisation of a photon. In my masters, I used learnt about classical information and communication theory including:
  • Universal computation
  • Shannon and Von Neumann entropy
  • Quantum circuits using Qiskit
  • The density matrix (and decoherence in quantum systems)
  • Measurement of multiqubit states
  • Algorithms
    • Shor's
    • Grover's search
    • Deutsch's
    • Teleportation
    • Quantum Hamming code (error correction)
    • Quantum key distribution (and how it prevents common classical attacks)
  • The effect of unobserved degrees of freedom
  • DiVincenzo's criteria
Programming

Aside from scientific computing, I have a range of personal projects as well. Most of the associated GitHub repos are private, but I've listed some of the more interesting ones here:
  • A stock screener written in Python and uses my own algorithms to determine the value of an asset.
  • Solutions to quantum problems using the quantum Python libraries Qiskit and Q#.
  • A web3 app written in Rust.
I love using programming as a tool to make useful applications that automate tasks, scale calculations beyond what is humanly capable, and creating minimalist and intuitive visualisations and user interfaces.

Here are some of the tools and programming languages I've used to make projects:
  • C++
  • CUDA
  • Python
  • Git
  • Rust
  • Svelte
  • BASH
  • CMake