← Web Projects

Backtrace

July 2026 - August 2026

Backtrace screenshot

Project Overview

Role
Solo build
Timeline
July 2026 - August 2026
Stack
HTMLTypeScriptVector mathematics Sensor fusionDocument Generation Software
Status
Shipped

What I worked on

A field instrument for reasoning about where a wildland fire started. You walk the burn with a map, flag physical fire-pattern indicators, and record the direction each one points. Backtrace fuses those bearings — each carrying its own angular uncertainty — into a probability field for the origin, rendered as a heatmap with credible regions rather than a single dot, and generates a PDF report from the result.

The Challenge

Staying honest about uncertainty. The instinct is to draw one confident point where the bearings cross, but real bearings are noisy — so the hard part was fusing them into a credible probability field with honest regions instead of a false-precision single point.

The process

  1. Indicator taxonomy

    Catalogued the physical fire-pattern indicators a walker flags in the field.

  2. Map + bearing capture

    The map-based walk-the-burn workflow for recording each indicator's direction.

  3. Angular-uncertainty model

    Gave every bearing its own angular uncertainty rather than a hard line.

  4. Bearing fusion

    Fused the noisy bearings into a single probability field for the origin.

  5. Probability field / heatmap

    Rendered credible regions as a heatmap — not a false-precision dot.

  6. PDF report generation

    Generated a shareable report from the fused result.

Backtrace — image 1
Backtrace — image 2
Backtrace — screenshot
Backtrace — image 3
Backtrace — image 4

I built Backtrace because finding where a wildland fire started is a much harder question than it sounds, and the honest answer is usually that we're not entirely sure. The work is physical. You walk the burn with a map, you look for the marks the fire leaves behind as it moves, and for each one you record the direction it points back toward the origin. Every mark gives you a bearing, and the thing nobody tells you is that no single bearing can be trusted on its own.

I wanted something that admitted what it didn't know.

That was the part I kept coming back to. Most tools want to cross a few lines and drop one confident pin, which feels reassuring and is often wrong. I wanted something that admitted what it didn't know, so I leaned on a simple idea: treat every bearing not as a hard line but as a bell curve of belief around a direction, wider when the reading is shaky and tighter when it's clean. In plain terms, a point on the map scores well when it sits close to the direction a bearing points, and its score falls off the further it drifts:

P(origin) ∝ ∏ᵢ exp(−θᵢ² / 2σᵢ²)

You can read that left to right without knowing the notation. Each bearing gives a candidate point a score based on how far off its angle is, softened by how uncertain that reading was. You multiply the scores together rather than add them, because independent pieces of evidence should agree with each other to count, and one confident bearing pointing elsewhere can quietly veto a spot. Do that across the whole map and the numbers stop being lines and become a landscape: tall where the evidence piles up, flat where it doesn't.

That landscape is the answer Backtrace actually gives you. Instead of a single false pin, you get a heatmap with credible regions showing where the origin probably is and how sure the evidence lets you be. Getting that honesty right was the whole point, and easily the hardest part to build. From the fused field it generates a PDF report, so the reasoning travels with the conclusion and the person reading it can see how you got there rather than trusting a dot on a map.

Backtrace — wide screenshot
Backtrace — banner

Bearings are noisy. An honest instrument says so — and shows you where the evidence points anyway.