Skip to main content

Saddles 100 An installation for an ultramarathon.

Field Prescott, AZ · October 2026

A projected wall built from the race's data, and a scanner at the finish that reads your bib and pulls up your race data.

Overview

For

The Saddles 100, an ultramarathon in Prescott, AZ

Role

Installation, data, and code

Status

Ran at the 2026 race

Tags
  • Installation
  • Data Visualization
  • Computer Vision
  • TouchDesigner

The Saddles 100 is an ultramarathon in Prescott. I built two things for it: a TouchDesigner data visualization projected at the finish line, and an interactive display that uses a screen and camera to scan runners' bibs and load a sci-fi interface card they can download at a hosted URL.

I've been learning TouchDesigner for a few years now, mostly for audio-reactive concert visuals. This pushed me into a new zone: creating a somewhat immersive environment, pulling in data for over 300 runners, and updating it live throughout the race so spectators at the finish line could stay updated. My part was the wall, the scanner, the cards, and the code.

36

Scenes in the wall loop, seamless

3

Race distances: 100, 50, and 6.66 miles

9:37

Loop runtime, built to play from a USB stick

300+

Runners' data, updated through the race

As run, October 2026

The wall

A projected loop for the finish area, indigo on black with a CRT treatment, built from the race's own data: the elevation model, the GPX routes, the entrant list, then the results. Thirty-six scenes over nine and a half minutes.

The look comes straight from the race's theme: CRT scanlines, radar sweeps, classified-looking reports. I built it in TouchDesigner and vibe coded the Python pipeline with Claude Code: fetching elevation data, baking routes, merging the start list.

On race night it's just a video file playing off a USB stick. No network, no laptop to fall asleep, nothing to crash.

Fig. 01 · Evidence · Three of the thirty-six scenes From the loop itself

Scene 14 is a Borges quote about a labyrinth that consists of a single straight line.

The console

A TV at the finish with a camera on top. It scans a runner's bib and loads their sci-fi interface card, which they can download at a hosted URL and keep. Before the race the card had their stats from UltraSignup; after, their results: split times at the aid stations, place in the race.

Fig. 02 · Evidence · Scan to card, the whole sequence From the demo capture
Runner card variant: voxel astronaut with skull visor over waveform terrain
Runner card variant: voxel astronaut with a face, over waveform terrain
Runner card variant: dotted skeleton figure
Runner card variant: contour-lined head in profile
Fig. 03 · Evidence · Four of the card figures Rendered by the console

If there were errors in the scan, runners could also just go to the URL and type their bib number. The URL is printed on the screen the whole time.

The card leans into the race's horror and sci-fi theme: your splits drawn as terrain, your name and number in the race's numerals. Everyone who finishes gets one.

A Saddles 50 bib, number 401: distressed lockup, three moon phases, the race's italic numerals The console's attract screen: hold your bib up to the screen when you cross the line, or collect your card any time at the printed URL
Fig. 04 · Context · The bib, and the screen that asks for it At the finish line

The data

Fig. 05 · Working figure · Three courses, one map Drawn from the race's GPX files

Before the race, everything ran on UltraSignup data: who was coming, what they'd run before. The wall's entrant scenes and the early cards came from that.

After the race, the official results took over: finish times, places, split times at the aid stations. The same card at the same URL updated with what happened.

Field notes

  • The USB stick is the uptime strategy

    No laptop to sleep, no app to crash, no cable to kick.

  • Fix it from your side of the lens

    The bibs were already printed, so every scanning fix had to come from my side: the code, the lighting, or what the screen asked people to do.

  • Out of the comfort zone

    This was my first installation. On the web I know where things break. Out here I didn't, so I kept making everything simpler until I trusted it.

Race production, bibs, and branding by the Saddles 100 crew. The wall, the console, the cards, and the film, designed and built by me.