Robbie Hill

Full Stack Software Engineer

I build modern web applications, working across the full stack, ranging from polished user interfaces to robust APIs and backend pipelines. I'm currently working at Metrea and available for freelance work.

A picture of Robbie Hill
About

Background & Experience

I'm a full stack software engineer with over 3 years of professional experience building web applications. I'm comfortable working across the entire stack and have worked on projects using a range of modern frameworks and technologies.

My experience spans frontend development with React, Angular, and Svelte, as well as backend engineering with FastAPI, Spring Boot, and Hono. I also have solid experience with DevOps tooling, CI/CD pipelines, and containerised deployments. Check my skills section below for a breakdown of what I've worked with.

Alongside my professional work, I love to work on a variety of personal projects, and I take on freelance web development for a variety of clients. Feel free to get in touch to discuss your requirements.

Location United Kingdom
Role Full Stack Software Engineer
Experience 3+ years
Focus Web technologies
Freelance Available for new projects
Skills

Technical Expertise

A working knowledge of modern web technologies built up over 3+ years of professional development and personal endeavours.

Frontend
Angular · React · Svelte
Backend
FastAPI · Hono · Spring Boot
Languages
Python · Java · JavaScript · TypeScript · Go
Databases
MySQL · PostgreSQL · Microsoft SQL Server · SQLite
DevOps / CI/CD / Testing
Jenkins · GitHub Actions · Playwright · Argo CD · Kubernetes · Docker
Projects

Personal Projects

Personal projects spanning native applications, embedded firmware, web apps, and containerised deployments.

4-Player Minecraft PythonJava
Built using Python, this application connects a host to up to 3 clients over TCP. The host then assigns each user a control scheme. Control schemes include action, movement, camera, and utility. Each control scheme provides unique functionality within the game, with only one player having access to each at a time. Once all players are connected, the host only processes inputs from other clients that match their assigned control scheme. This effectively requires all 4 players to coordinate in order to play the game on the host game instance. An accompanying Minecraft mod written in Java communicates with the Python program over UDP, sending game menu states to help handle certain control edge cases.
Spotify Stream Stats Dashboard SvelteHonoD1
A web app built using Svelte + Tailwind, backed via Hono querying a Cloudflare D1 Database. The web app shows the streaming stats for all tracks associated with an artist on Spotify. ApexCharts is used for visualisations, with heavy use of caching and other optimisations to reduce network bandwidth and increase performance and load times. A GitHub Actions workflow runs daily on a cron job to retrieve up-to-date streaming information from Spotify via API calls, which then writes to the D1 database via a SQL migration script.
Kingdoms of Amalur: Re-Reckoning Modding Framework and Multiplayer Mod C++Ghidra
A modding framework with an accompanying multiplayer mod for the game Kingdoms of Amalur: Re-Reckoning. The mod framework is written in C++, compiled as a DLL. The DLL hijacks the process space as it proxies dinput8.dll which the game expects. Once loaded in, the framework hooks onto game functions discovered via pattern matching and reverse engineering the game executable via Ghidra. This allows standalone execution of native C++ code, loading of other DLLs entirely, as well as hooking into the game's Lua VM for executing predefined (in-engine) or custom Lua commands programmatically. The multiplayer mod utilises this framework by allowing players to connect over TCP, in which the mod spawns proxy in-game actors (NPCs), via Lua commands, representing other players. The mod sends player state packets to the other connected players, which are then parsed and the XYZ locations of the proxy actors are updated to the new locations of the other players.
Personal Media Library ReactFastAPI
A web app built using React + Tailwind for the frontend, backed by a FastAPI backend for serving local media files. This is a personal media library which allows easy viewing and organisation of local media files, sourced primarily from YouTube or TikTok. A daily cron job utilises yt-dlp and ffmpeg to update the media library as necessary. Vidstack is used for media playback, with customised functionality such as zooming/panning, frame stepping, and clipping/screenshotting utilities. Both the frontend and backend are hosted locally via Docker.
Exercise Bike ESP32 Cadence Sensor ESP-IDFPython
An ESP32 loads custom-written firmware to detect the triggering of connected hall effect sensors. Magnets placed on the pedals of an exercise bike pass the hall effect sensors, simulating a "step". These pings are then sent to a host PC over BLE, which are then received and parsed by a Python app. Each step is then translated via the Python app into emulated controls to a vJoy virtual controller. These steps can then effectively be used to manipulate forward movement of characters in games, derived from physical movement of the exercise bike pedals.
WoW Classic Challenge Addon Lua
This addon, written in Lua, provides a new, challenging way to level characters in WoW Classic. The addon provides custom interfaces which show the character a grid of tasks to complete to "unlock" the world and character functionality. Rewards on the grid are slowly revealed as the character completes more tasks, with rewards scaling from low-level to high-level unlocks as you branch out from the centre. Progress against tasks is tracked via the addon, with additional features such as a hint system, a death penalty system, and a "re-roll" system, all requiring the completion of tasks as the main "currency".
TikTok Live Recorder SvelteFastAPIR2DockerKubernetes
A Svelte web app served via a backend written with FastAPI, utilising a combination of Cloudflare's D1 database, R2 object storage, and Kubernetes orchestration of microservices. The web app provides users with the ability to record and view VODs of TikTok livestreams, with videos being stored in R2 object storage and served via presigned URLs from the API. Various microservices orchestrated by Kubernetes handle the pipeline, with watchers checking the live status of livestreamers, which in turn trigger recording jobs which use ffmpeg to save the FLV stream, transcode for better storage, and save to object storage.
F1 2021 Machine Learning Python
A machine learning project aimed at creating a neural network that autonomously drives tracks in F1 2021 based on telemetry. The game supplies a telemetry stream over UDP with a variety of information such as location, timing, and car status. Various telemetry metrics make up the observation space, with temporal look-back to influence decisions over multiple steps. The action space consists of continuous throttle and brake application as a single action (so that the model cannot simultaneously brake and throttle), with steering as a discrete action containing 5% increments. Actions are sent to the game via a vJoy virtual controller with an iteration loop of 30 Hz (matching the telemetry stream).
Contact

Get In Touch

Got any questions? Want to work with me? Send a message.

robbie@rhill.uk
github.com/RHill2000
linkedin.com/in/robbie-hill
Message sent. I'll be in touch as soon as possible.