Running Meditation
Race reports, training science, and what the data tells us.
On Running Long
There’s a particular kind of honesty that comes from mile eighteen of a long run. Your body has used up its easy fuel. Your form has degraded. The part of your brain that generates excuses is running at full capacity.
And you keep going anyway.
Marathon training isn’t really about the marathon. It’s about the two hundred days before it — the early mornings, the tempo runs in rain, the long runs that consume your Saturday. The race is just the receipt.
I’m training for Chicago in October. The real goal is Boston, eventually. That means hitting a qualifying time, which means the training has to be honest. No junk miles. No skipped workouts disguised as “rest days.”
The body doesn’t lie. The watch doesn’t lie. The only person who lies is you, and running has a way of making that very obvious.
Building a Personal Data Lake
Your health data is scattered across a dozen apps. Oura knows your sleep. Strava knows your runs. COROS knows your cadence and ground contact time. Apple Health tries to be the hub but mostly just collects dust.
I wanted all of it in one place. Not a dashboard — a queryable data store I control.
The stack is deliberately simple: Python scripts pull from each API, land raw JSON in a bronze layer, then transform to Parquet files in a silver layer. DuckDB provides SQL access without a server. The whole thing runs on a machine with 512MB of memory.
Why Parquet? Columnar storage is perfect for time-series health data. Compresses well, queries fast, and you can read it with anything — Python, R, DuckDB, even Excel.
The real insight came when I started joining datasets. Overlaying sleep quality on training load. Correlating HRV trends with mileage ramps. Seeing how a bad night of sleep shows up two days later in your running power.
Your body generates incredible data. The least you can do is keep it somewhere you can actually use it.
What HRV Actually Tells You
Every morning, my Oura ring gives me a readiness score. Under the hood, the most important input is heart rate variability — the tiny fluctuations in timing between heartbeats.
High HRV generally means your autonomic nervous system is in a good state. Parasympathetic dominance. Your body is recovered and ready to absorb stress. Low HRV means you’re still processing something — a hard workout, bad sleep, alcohol, anxiety.
What most people get wrong: HRV is not a daily score to optimize. It’s a trend line. One bad night doesn’t mean anything. Five bad nights in a row means you need to back off.
The data lake I’m building pulls HRV, resting heart rate, sleep stages, and training load into one place. The patterns that emerge when you overlay training stress on recovery metrics are genuinely illuminating. Your body is already telling you everything. You just need to learn to read it.
The hard part isn’t collecting the data. It’s being honest about what it says.
Winter Base Building
January in Michigan is not inspiring running weather. It’s 22°F, the sidewalks are iced over, and sunset comes at 5:15. The treadmill beckons.
But base building doesn’t care about your feelings. This is the phase where you lay down aerobic capacity — slow, easy miles at a conversational pace. Zone 2. The kind of running that feels like you’re not trying hard enough.
You are. The mitochondrial adaptations happening at easy pace are the foundation everything else sits on. Tempo runs, intervals, race-pace work — all of it is built on the base you develop now, in the dark, when nobody’s watching.
Three months from now, when the speed sessions start clicking, I’ll know why. It’ll be because of these grey January miles.