This site works best with javascript enabled.


During my PhD I taught myself the basics of lattice QCD simulations by creating pyQCD: a Python package for building and testing small-scale lattice simulations on desktop and workstation computers. I wrote the underlying simulation code in C++ to overcome the performance limitations inherent in Python.

The core of pyQCD is written in modern C++ and leverages expression templates and the Eigen linear algebra library to achieve floating point vectorisation of the underlying arithmetic operations. OpenMP is used to parallelise both the heatbath update code and the Wilson Dirac operator. The C++ code is exposed to Python using Cython, which ... Read more

Labels: C++; Physics; Python; Cython; Monte Carlo; Lattice QCD; Git; CMake

Arduino Robot

Wanting to put the Arduino UNO I'd previously bought to good use, I decided to combine it with a LEGO Technic set to produce a rover with a web interface. This project was multi-faceted, with the following main elements:

  • construction of a rover chassis that could accommodate the Arduino;
  • creation of the electronic circuits required to control the rover's motors;
  • programming the Arduino UNO to control the rover correctly;
  • programming an interface that could use the Arduino as a slave to control the rover.

The rover chassis was constructed from this LEGO kit. The kit came with instructions ... Read more

Labels: Engineering; C++; Web Development; CSS; HTML; Arduino