All projects
Mud Masters Logo
Mud Masters2026

Mud Masters

Real-time scoring system for GYMRACE fitness competitions

FitnessHardwareIoT
GYMRACE Wall Ball Game scoring station
Station Units
50+
Sensors Assembled
100+
Concept to Delivery
~10 weeks

Mud Masters runs GYMRACE, a functional fitness competition staged across Amsterdam, London, Utrecht, Paris and Weeze. Its Wall Balls station asks every participant for 100 throws at a target, and this system does the counting: automatically, in real time, on the display beside them.

An event venue is a hostile place for a computer

No network worth trusting, no engineer on site, and power that comes and goes with the rest of the rig. Each station had to boot itself, keep scoring while a stranger threw a ball at it, and come back on its own after the power dropped. That settled the architecture before any code was written: fully standalone, offline-first, nothing in the path that needs the internet.

Three sensor technologies, and LiDAR won on boring grounds

LiDAR, ultrasonic and capacitive sensing were each evaluated against the same question: can it separate a scoring hit from a near miss, reliably, at competition pace? LiDAR took it for unglamorous reasons: a plain UART interface with no support circuitry or ADC behind it, an IP65 enclosure that survives a field, and stock at the big distributors at a price that still worked fifty units later. The mount holding it went through several 3D-printed revisions, because it takes the shock off the plate and then gets packed and unpacked at every event.

GYMRACE Wall Ball Game sensor mount

Counting is easy. Counting correctly is not.

A Node.js and TypeScript backend processes the live sensor feed through hit detection with noise filtering and validation, so the count on the wall is the count that happened. It reaches a branded React display over server-sent events, running on a Raspberry Pi 5 that boots straight into kiosk mode: no keyboard, no login, no operator, and automatic recovery if the power cuts mid-heat. The display splits the 100 throws into two counters and carries a mode selector, because a station has to serve whoever is standing at it. Field diagnostics are built into the frontend, since the person debugging it at an event is event staff.

Programming and quality control of scoring stations

Fifty stations, assembled by hand, deployed by plugging them in

Every unit ships as a plug-and-play SD card image from an automated build pipeline, so setting one up is power on and go. I assembled, tested and shipped 50+ stations and 100+ sensors, each one labelled and serialised and tracked through QC by serial, then handed over assembly instructions, wiring diagrams, a BOM, deployment guides and the full source. At GYMRACE Utrecht I worked the floor for two twelve-hour days, calibrating live with every station running in parallel.

On site
2 × 12h days
Participants
5000+
Contract
Fixed price, solo
Assembled sensors ready for delivery

Delivery was not the end of it

The fixed-price build shipped; the engineering continued hourly. Most of it went into the mixed-mode scoring engine, where a station counts a shared total and attributes each hit to the right side: hit timing anchored to the start of an event, the running total decoupled from attribution so a late-arriving paired reading reattributes without disturbing the count, holds anchored to the end of an event so a score already on screen never retracts, and coincidence checks over the event span to reject a beam crossing on the way back. Then the display itself: ten-per-second updates that no longer redraw the gauges. Image distribution moved to object storage.

What I owned

Principal Engineer

  • Took project from concept through MVP to production delivery - hardware, software, mechanical design, assembly, documentation
  • Evaluated and selected sensor technology for reliable hit detection
  • Designed custom 3D-printed sensor mounts, iterated through multiple revisions
  • Built the software stack end to end: Node.js/TypeScript backend and React frontend with client branding
  • Implemented hit detection algorithm with noise filtering and validation
  • Built automated build pipeline for SD card kiosk image generation
  • Assembled and delivered 50+ production units with full documentation including assembly instructions and wiring diagrams

Raspberry Pi / Node.js / TypeScript / React / Docker / GitHub Actions / 3D Printing / Tailwind CSS / IoT