Next step
Tell me what you're building
Send me a short description of the problem and I'll tell you whether I'm the right fit, what it would cost, and how long it would take. No pitch deck.
- Phone
- +46 70 753 73 78
- elinorwigertz

Real-time scoring system for GYMRACE fitness competitions
Fitness / Hardware / IoT

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.
01
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.
02
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.

03
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.

04
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.

05
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.
Principal Engineer
Raspberry Pi / Node.js / TypeScript / React / Docker / GitHub Actions / 3D Printing / Tailwind CSS / IoT

CE-certified radio hardware
Advanced Humidity Monitoring System
Firmware & Application Developer
Embedded C / FreeRTOS / React Native / Hardware QA +2

BLE and storage redesign
Wearable ECG Monitor Hardware Redesign
System Developer & Hardware Engineer
Hardware Design / PCB Design / Embedded C / BLE +2

1000+ units shipped
IoT Health Tracker for Children
Founder & Technical Lead
Hardware Design / Embedded C / FreeRTOS / BLE +4
Next step
Send me a short description of the problem and I'll tell you whether I'm the right fit, what it would cost, and how long it would take. No pitch deck.