// havox — v4

John Gatward

Software Engineer

I like building useful things and figuring how they work.

Havox & me

day job

CS graduate from the University of Nottingham (2022), now working as a backend engineer at Sainsbury's Supply Chain & Logistics — building microservices with Spring Boot on AWS, designing REST APIs, connecting services with Kafka, and storing data in MongoDB.

home infra

I run a home server that hosts media and projects for friends and family. I enjoy building things that feel solid and useful — from small games like Crack the Quote to websites and services running on my own hardware.

linux

Long-time Linux user. Used to distro-hop obsessively and be deep in the ricing community — these days it's Hyprland on Void Linux and a growing collection of scripts that make the day job easier.

teaching

I tutored during school and university — CS, maths, English. Teaching stuck with me. Explaining things clearly is a skill, and it's why I also write tutorials here.

havox

Havox started as a place to document whatever I found cool — tutorials, visualisations, experiments. It's been running in some form since 2017, gone through four major redesigns, and outlasted several domains. It represents my entire journey through technology, and it's still going.

Havox V4 — this one
2025 → present
Catppuccin Mocha. Single page. Trying to get a new job this time.
Havox V3
2023 → 2025
Borrowed a template. Nord theme. Took SCSS seriously. Considered mobile widths.
Havox V2
2019 → 2022
First SCSS project. First site on own hardware — a Debian box running nginx. Nord theme.
Havox.org
2017 → 2019
Entire site in one PHP file 🤣. Had a Python quote-of-the-day via cronjob though. Counts.

skills

What I know

Backend

Professional Java experience building RESTful APIs with Spring Boot. Testing with JUnit & Mockito. Data persistence with MySQL, H2, JDBC.

Java Spring Boot REST JUnit MySQL
🌐

Frontend & Creative

JavaScript, p5.js, HTML/CSS/Scss. I enjoy visualising algorithms interactively — it's more fun than a console output.

JavaScript p5.js Scss HTML/CSS
🖥

Systems & Infra

Long-term Linux user. Self-hosted web & media servers. Comfortable with networking, security practices, and the command line.

Linux nginx Networking Self-hosting
🎓

Academic Breadth

C, C++, Haskell from uni. Coursework across Android dev, distributed systems, graphics, cryptography, malware analysis.

C / C++ Haskell Algorithms Security

tutorials

Things I wrote down

Best way to learn is to teach. When I find something interesting I write a short tutorial — mainly to consolidate my own understanding, but if it helps someone else that's a win.

3 Jan 2021 Summed-area tables Integral images — what they are, how they work, and why they're surprisingly useful for image processing. 3 Feb 2019 Midpoint displacement terrain generation Generating random, natural-looking 2D terrains using the midpoint displacement algorithm. 22 Sep 2018 Travelling salesperson Different implementations of the TSP problem — a classic that never gets old. 14 Feb 2018 Convex hull generator Wrapping algorithms — visualising how to find the convex hull of a point set.

projects

Things I built

Mostly p5.js — visualising algorithms in ways that look more interesting than they have any right to. Most use mouseClicked() so desktop only, sorry mobile.

1 Oct 2021 Drawing Bézier curves Interactive animated diagram for quadratic and cubic Bézier curves. Click to place points. 23 Sep 2021 2D Marching squares Marching squares in action — click a tile to edit the terrain. 11 Apr 2020 Bubble sort visualiser Bars sorted by height, one frame per loop. Classic. 2 Apr 2020 Müller-Lyer illusion A visualisation of the Müller-Lyer optical illusion rendered in JS. 27 Feb 2019 Fourier series Building a square wave from nothing but sine waves. Mesmerising. 23 Feb 2019 Constructing an ellipse How an ellipse can be constructed with a circle and radial lines — inspired by 3Blue1Brown. 2 May 2018 Game of Life A JS implementation of Conway's classic. Still fascinating. 18 Mar 2018 Calculating PI Monte Carlo method — ratio of randomly placed dots in a square vs circle. 17 Dec 2017 Oscillations in 3D JS implementation of a Bees and Bombs gif. One of my oldest. 13 Nov 2017 Maze generator A maze generator in JS. The first project that made me think "oh, I like this".

contact

Let's talk

I'm currently employed but open to the right opportunity — backend or full-stack, somewhere that ships interesting things with people who care about their craft.

GitHub has the most complete picture of how I think. LinkedIn if you're formal. Either works.