About


I'm a history graduate and self-taught programmer currently looking for my first job in the technology sector. Having spent the last few months self-teaching, I'm particularly excited to understand how software is developed in a commercial setting and learn from the expertise of other developers.

I first caught the software bug when I challenged myself to build a website about my Master's thesis. Intrigued, I enrolled on Harvard's Introduction to Computer Science program online, which aims to teach its students to how to think algorithmically and solve problems efficiently over the course of 8 weeks.

Initially, I thought coding might be a challenging new hobby but by the time I finished the course, I had come to realise that programming in fact offered me everything I was looking for in a career: the opportunity to learn something new every day, a collaborative work setting and develop a set of skills with endless problem solving potential.

Thank you for taking the time to look at my work, I really appreciate it.

Education

University of St Andrews 2018-2019

Master's Modern History Merit

University of Cambridge 2014-2018

BA (Hons) History and Law First

Wilmslow High School 2012-2014

A-Levels: Maths (A); Chemistry (A);

History (A*); English Lit (A)

CS Courses

CS50's Introduction to Computer Science

HarvardX Online Problem Set Solutions Syllabus

CS50 Web Programming with Python and Javascript

HarvardX Online Syllabus

Work


Job Manager Demo Code

This is a job management web application that I built for my Dad who works as a locksmith. He needed a way of collecting and organising the details of his clients, addresses and job descriptions in one place.

The software performs three main functions: it allows new clients to submit their contact information, address details and job description in a standardised format; tracks the status of jobs, and; provides an interface for editing, searching and exploring the relational data in an intuitive way.

All server-side functionality is fully tested (test suite of 90+ unit tests).

Job Status:  New jobs are assigned the status of "Inbox" upon creation so they can edited, supplimented or deleted as required before they become "Current". "Current" jobs can then be moved to "Archive" once they are completed. The status of all jobs can be changed from any page.

Detail Pages:  Clicking on a job, client or address will open a details page. Once the "Edit" button is clicked, all elements in red are fully editable. Clicking this button again will save all changes without the need to refresh the page. To navigate between related objects, click on the related jobs/clients/addresss links (client/address pages), or on the Client/Adress headers (job pages).

Searching:  Searches can be performed by client, address or job. All jobs can be found using the Search tab irrespective of their status. A job can also be found by searching by the associated client name or address detail. All fields return entries containing the search query.


Maze Generator Visualizer Demo Code

This project was inspired by a blog post about visualizing algorithms by Mark Bostock, which uses a javascript library he created called D3.js to create highly aesthetic representations of how different algorithms execute. To create my own visualisations in Python, I chose to use Pygame because I wanted the tool to be interactive. I also drew upon James Buck's very helpful curation of different maze alogrithms.


Contact