// havox.org — v4

John Gatward

Software Developer

I like building useful things and understanding how they work.

Havox & me

day job

Backend engineer at Sainsbury's Supply Chain & Logistics. Microservices, Spring Boot, Kafka, MongoDB, AWS. It's good fun.

dev

Fascinated with new languages, frameworks, and shiny tech I probably don’t need. Constantly tinkering, breaking things, and learning just enough to build something cooler next time.

linux

Long-time Linux user and recovering distro-hopper. Currently: Hyprland on Void. Home server running 24/7 for friends and family who didn't ask for it but appreciate it.

havox

Started in 2017 as a place to dump whatever I found interesting. Four redesigns and several dead domains later, it's still going. Less a portfolio, more a paper trail.

skills

What I know

Backend

Professional Java experience building microservices & RESTful APIs with Spring Boot. TDD with JUnit & Mockito.

Java Spring Boot AWS Kafka MongoDB
🎨

Frontend & Creative

Comfortable with react and CSS. I enjoy visualising algorithms interactively — it's more fun than a console output.

React.js TypeScript HTML/CSS
🖥

Systems & Infra

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

Linux Docker Self-Hosting Wireguard
🎓

Academic Breadth

C, C++, x86_64 assembly, Haskell, R & MatLab from uni. Modules in Advanced networking, algorithms, compilers, graphics, cryptography, malware analysis & many more.

C / C++ Haskell Algorithms Security Low Level OS

projects

Things I built

Recent projects & things I found interesting. I have gone to painstaking lengths to not edit my older projects... we all start somewhere.

14 Nov 2024 Thin Ice A small tile game created inspired by a childhood game. 20 Mar 2024 Travelling Salesman Problem A* Pathfinding algorithm, backend in zig, rendered with WebGL. 31 Jan 2024 Flocking A flocking simulator, inspired by The Coding Train's video. 21 Jul 2023 Game of Life After previously implementing game of life in p5.js, I implemented a generic simulator, for more obsquere automata. 5 Feb 2022 Percolation A small demonstration to show liquid percolating through a medium as more cracks appear - and at what p value this happens. 1 Oct 2021 Drawing Bézier curves Interactive animated diagram for quadratic and cubic Bézier curves. Click to place points. 17 Sep 2021 2D Marching squares Marching squares in action — click a tile to edit the terrain. 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. 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. 13 Nov 2017 Maze generator A maze generator in p5.js. Using DFS & recursive backtracking.

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.

Had to really try my best to not touch anything here. Every tutorial here is exacty how it was when I wrote it in sixth form.

3 Jan 2021 Summed-area tables Counting cells in a summed-area table, investigating how they work and why they're efficient. 3 Feb 2019 Midpoint displacement terrain generation Generating random, natural-looking 2D terrains using the midpoint displacement algorithm. 14 Feb 2018 Convex hull generator Wrapping algorithms — visualising how to find the convex hull of a point set. 22 Sept 2018 Travelling Salesperson Problem Different implementations of the TSP problem — a classic.

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.