The WikiMapper project aims to take a ~100GB XML Wikipedia dump file and transform it into a graph
database that can be explored visually.
So far, a multithreaded parser has been developed that extracts each page and the links associated
with it, and writes them to a CSV file is parallel. These CSV files can then be used to quickly
generate a Neo4j database using the Neo4j-admin tool.
Now that the database can be created, a method is needed to visualise this data. Due to the sheer
size of the database (over 300 million links), the default Neo4j visualiser will not cut it. A
program is being developed using OpenGL to visualise the data. On top of this, in order to
efficiently access the data from the Noe4j database, I am implementing the Bolt protocol in C++ to
access data from the database.
C++
XML Parsing
Bolt Protocol
Neo4j
CMake
Parallelisation
OpenGL
GProf
After completing an intership in a cloud infrastructure department, I decided to build my own home server. I wanted to learn more about cloud infrastructure, as well as having a place to host my own projects. Initially, I set up a Kubernetes cluster to learn more about it. However, I eventually settled on using Proxmox to manage to containers and VMs.
Linux
Kubernetes
Networking
Cloud
Proxmox
Spanner is a website that allows users to analyse their listening habits and playlists. I undertook this project to learn about web development, gain some expereince on the front end, as well as giving me an escuse to build a sever to host the site! The frontend was developed in Typescript with React. The backend, which communicates with the Spotify API and processes the data, was developed in Go.
Go
Typescript
Oauth
API Design
HTML
CSS
SQL
For my masters project, I developed a gesture controlled robotic hand. I designed and 3d printed a hand with 6 degrees of motion, controlled via a microcontroller. The microcontroller recieves data from a Raspberry Pi, which recieves position data via UDP from a desktop application that I developed in QT over the internet. The desktop application utilises computer vision to track the user's hand with a webcam and the MediaPipe library.
MediaPipe
OpenCV
QT
Raspberry Pi
Fusion 360
C++
Python
UDP
At the Nottingham 24 hour Hackathon - HackNotts84, I led a team to win Intel's 1st place prize,
building a table football robot and competing against over 40 teams from 25 Unis across the UK.
This was acheived using computer vision and parts of a 3D printer. We were able to
track the location of the ball in real time using a webcam and OpenCV and send Gcode commands to the
robot control board in order to intercept and kick the ball towards the goal.
Hackathon
Intel
OpenCV
GCODE
C++