Overview
Each dot is a run, placed by the day's temperature (x) and average heart rate (y); the dashed line is a per-sport linear fit with its R². The toggle switches the x-axis between air temperature and apparent temperature (heat index, which folds in humidity) so the two can be compared 1:1 on a shared axis. Apparent temp has lower backfill coverage, so its view uses fewer runs — the exact shortfall is noted at the bottom of that view.
Strava segments are sport-specific, so to compare running against mountain biking on the same dirt I matched run and MTB segments whose start points fall within 60 m of each other, whose lengths are within ~10%, and whose average grades are within 3 points of each other (to rule out matches run in opposite directions) — the same trails, run and ridden. Each dot is one such segment, placed by its grade (x) and its average pace per mile (y, faster = up); using pace per mile normalizes the different segment lengths so the run-vs-bike comparison is fair. The dashed lines are linear fits per sport. They cross near 6.1% grade: on flatter or downhill terrain (left) the bike is faster, but on climbs steeper than that, running overtakes mountain biking (shaded) — grinding a bike uphill costs more than it saves.
Places
Places · The Passport
Everywhere that wasn't home
Each stretch of days away from Boston or San Diego gets one stamp — weighted by memory, not miles. A multi-day summit sits beside a single morning run.
Mt. Whitney from Whitney Portal & JMT
Maine Hut Trail — Days 1–3
Vancouver — Stanley Park
Snow Snake
Muggy in Michigan
Jay Peak Spring Riding
Whaleback & Hanover holiday
…and a few brief stops
Places · The Peaks
A short record book
Every activity of a calendar year in one figure. Around the ring, one spoke per activity placed at its exact day — length is distance, thickness is duration, color is the sport family. Activities with no distance recorded (gym, climbing) sit as short ticks just inside the ring rather than vanishing. Behind it, every GPS track of that year drawn from a shared origin and rotated to its day of year: the dense knot is home, and the long limbs are trips. Point at a spoke to light its route in the ground layer, drag to scrub through the year, and use the legend to filter by sport. Years marked with a dot are partial.
Every recorded activity's altitude profile is drawn as one ridgeline, normalized to the same length and stacked down the page with the nearer row filled opaque so it hides the one behind. Height is scaled to the fourth root of the day's relief rather than to the relief itself: against the biggest climb in the record, a linear scale would flatten a typical day into a straight line. Sort by date and the poster becomes a seismograph of two years. The sawtooth rows are ski days, not glitches.
The routes repeated most often (across every sport, although most are runs). Each drawn route is drawn solid with every one of its repeats ghosted behind it. Repeats are matched by laying a 100 m grid over each track after recentering it on its own start and asking how far the two overlap based on the Jaccard similarity (threshold 0.5). This means that GPS variation as well as minor details/alternatives all get selected as a match. The fastest repeat is picked out in amber.
Every looped route in the record laid head to tail as a single unbroken line, each one starting where the last one ended. One-way activities are left out to maintain a common center. However, a few frequently repeated routes where the finish is 20-60 meters away from the start contribute to an overall southeasterly drift.
This section was created entirely by Claude — Anthropic's Claude Fable 5 model (claude-fable-5) acting as orchestrator, dispatching the strava-data-analyst, strava-creativity, strava-viz-design, strava-developer, and strava-qa subagents. The two newest charts — Heat & Sun and The Verdict — were added in a later build by Anthropic's Claude Opus model.
When the weather cools down, runners often feel like they're getting fitter — but is that real? This chart tracks aerobic efficiency (pace per heartbeat) over time: the dashed line is the raw trend, the solid line adjusts for temperature using a statistical technique called OLS regression. The annotation in the top-right corner shows two correlation values (r) and their p-values — one before and one after the temperature correction. If the adjusted r is smaller or less significant, some of your apparent fitness gains were weather-driven, not true fitness gains. The toggle re-runs the temperature correction against apparent temperature (heat index) instead of air temperature; the raw trend stays put since it doesn't use temperature at all.
A technique called PCA compresses 8 workout metrics — distance, elevation, pace, heart rate, calories, and more — into two summary axes, then k-means clustering groups activities into 3 natural archetypes. Think of it as a map where nearby dots are workouts with similar effort profiles. The arrows show which original metrics pull in each direction; longer arrows mean that metric has more influence on the layout. The convex hull outlines and legend show how many activities fall into each cluster.
These overlapping histograms compare average heart rate across all runs (teal) vs. mountain bike rides (amber). The vertical dashed lines mark the mean heart rate for each sport. The annotation box shows the gap (Δ bpm) between those means plus a Welch t-test result — a statistical check that confirms whether the difference is real or could be random chance (p < 0.05 means it's real). The triangle markers at the top track max heart rate: despite the sustained intensity gap, your cardiovascular ceiling is nearly identical across both sports.
Each violin shape shows the spread of run paces across four fixed temperature bands — cool, mild, warm, and hot. Wider = more spread in that band; the box inside marks the middle 50% of runs. The teal line (right axis) tracks average heart rate across those same bands. The toggle above switches the whole chart between air temperature and apparent temperature (heat index, which folds in humidity) so the two can be compared 1:1. The bottom annotation gives the exact average pace for the coolest and warmest conditions, plus two p-values: one confirming pace does change significantly with temperature, and one showing heart rate does not — meaning in the heat you move slower without working cardiovascularly harder.
The teal filled area shows total running distance per month; the amber bars show MTB ride counts; the faint dot-dash line is average temperature. Where one sport rises, the other falls. The shaded "MTB blackout" annotation marks a stretch where ride counts dropped to near zero — the label inside it shows how few MTB rides occurred that month, likely due to trail conditions rather than preference.
Each dot is a run, colored by heart rate intensity (darker teal = higher HR). The dashed trendline shows the OLS-fitted relationship between cadence and pace. The annotation box in the top-left reports two correlations: cadence→pace (r and p-value) and cadence→heart rate (r and p-value). A strong cadence–pace r with a weak cadence–HR r means cadence functions like a mechanical gear ratio — spinning faster makes you go faster without necessarily driving your heart harder. The vertical dotted line marks the median cadence.
Two side-by-side distributions: run pace in min/mi (left) and mountain bike speed in mph (right). The shaded band on the left covers the middle 80% of runs (p10 to p90 — the 10th and 90th percentiles); the vertical dashed lines on the right mark the same percentile boundaries for MTB. The annotation on the left's slow tail identifies what those outlier runs actually are — trail workouts with heavy elevation gain, or group social runs where pace takes a back seat.
The violet line (left axis) is your 7-day rolling suffer score — a Strava-derived measure of cumulative training stress. The gray line (right axis) is the ACWR ratio: your current week's training divided by your 4-week rolling average. A ratio near 1.0 means you're training consistently; the colored bands show risk zones — teal is the sweet spot, amber is elevated risk, and red is the spike zone (>1.5) where injury risk rises sharply. The labeled arrow marks your highest single-week training peak; the counter at the top shows how many days you spent in the spike zone.
Does weather actually change how fast she runs? The honest answer needs a fair test. Raw pace is dominated by how far and how hilly a run is, so this chart first strips those out: it regresses pace on distance and elevation, then plots what's left over — the pace a run had after accounting for its length and climb — against the day's weather (faster = up). The toggle swaps the x-axis between air temperature (°F, with a quadratic fit to allow the inverted-U that the marathon literature reports, with a fitness optimum around 50 °F) and UV index (a linear fit). The annotation reports each predictor's partial R² — the share of that left-over pace variance it explains. One caveat is baked in: UV index is not an independent physiological driver; it is a stand-in for solar radiant load / clear-sky conditions and is strongly correlated with temperature, so its effect largely echoes the temperature one rather than adding a new signal.
The direct answer to the research question. Each bar is a weather metric's partial R² — how much of the distance-and-elevation-adjusted pace (running, teal) or speed (MTB, amber) it explains — for air temperature, UV index, and a combined temperature+UV model. The combined model is an explicit “WBGT-lite” proxy: the sports-science gold standard for heat stress is WBGT, which also folds in humidity, and this dataset has none — so “Combined” is temperature and sun only, not true WBGT. Read it honestly: temperature is the best-supported single predictor and edges out UV for running, combining the two adds only a little, and — the real headline — all of these bars are small. Once distance and elevation are accounted for, weather explains only a few percent of pace. Temperature and UV are also collinear (their correlation is noted on the chart), so they are largely telling the same story twice.