All writing
4 May 2026

Staying fit in a hybrid work environment

Hybrid work is quietly bad for your body. Not in a dramatic way — no single day kills you — but the pattern compounds. You skip the commute walk. The meeting runs over so lunch becomes a sandwich at your desk. By 5pm you’ve moved about 2,000 steps and sat in roughly the same position for eight hours. Multiply that by five days a week and you notice, eventually, that you’re slower, stiffer, and more tired than you should be.

I started paying attention to this about a year ago. Not obsessively — I don’t want to optimise myself like a SaaS product — but enough to understand what my baseline actually looks like and whether I’m drifting from it.

What I’m tracking and why

I use an Apple Watch, so Apple Health was the obvious starting point. The metrics I care about fall into two categories.

Activity tells me whether I’ve actually moved this week: steps, walking and running distance, active calories, exercise minutes. These are the signals most likely to drop when work gets intense and I stop leaving the house. A week where I’ve covered 40km on foot is a fundamentally different week from one where I’ve covered 15km, regardless of how productive I felt.

Daily steps
14.6kyesterday
30d avg 11.3k
Live data from Apple Health, updated nightly. Last synced 2026-05-12.

Recovery tells me how my body is coping: resting heart rate and heart rate variability (HRV). Resting HR trending up over a week usually means I’m not sleeping well, overtraining, or under-recovering. HRV is a reasonable proxy for stress and readiness — a higher number generally means my nervous system is in better shape. Neither metric is magic, but together they give me a signal I’d otherwise miss.

I’m not tracking food, weight, or sleep in granular detail. That way lies obsession. This is just enough data to answer the question: am I taking care of myself this week, or am I not?

The setup

Data lives in Apple Health on my phone and watch. I use an app called Health Auto Export to push a JSON file to Google Drive every day — one file per day, named HealthAutoExport-YYYY-MM-DD.json, containing every metric reading for that 24-hour period.

From there, a Python script runs nightly via GitHub Actions. It:

  1. Authenticates with Google Drive using a service account
  2. Fetches the last 30 days of JSON files from the Drive folder
  3. Aggregates the per-minute readings into daily totals and averages — summing steps and distance, averaging HRV, taking the single resting HR reading
  4. Calculates week-on-week comparisons (last 7 days vs the previous 7)
  5. Passes the summary data to Claude to generate a short plain-English summary
  6. Writes everything to _data/health.json in this repository and commits it

Jekyll reads that data file at build time and renders it on the /now page. The charts are drawn client-side with Chart.js, reading from an embedded JSON blob in the page.

The whole pipeline costs essentially nothing to run — a free GitHub Actions runner, a free Google Drive account, a service account with read-only access to one folder. The Claude API call is the only cost, and at a few hundred tokens a day it’s negligible.

What it looks like in practice

The now page shows the data in three sections.

Activity — a week comparison table showing last 7 days vs previous 7 days for steps, distance, exercise time, and active calories. Once I have enough history, the percentage change column will tell me at a glance whether I’m moving more or less than last week.

Last 7 days Prev 7 days Change
Steps 79.6k 83.5k ↓ 5%
Distance 73.9 km 76.3 km ↓ 3%
Exercise 510 min 674 min ↓ 25%
Active cal 6783 6032 ↑ 12%
Live data from Apple Health · last synced 2026-05-12

Recovery — two panels showing resting HR and HRV as 7-day sparklines, with a delta against the 30-day average. A resting HR below average is a good sign. An HRV above average is better still.

Resting heart rate
41bpm
↓ 4 vs 30d avg
Heart rate variability
116ms
↑ 28 vs 30d avg
Live data from Apple Health · last synced 2026-05-12

Workouts — a simple list of recent sessions: type, duration, distance, average heart rate, and elevation. Mostly walks and strength sessions at the moment.

What I’ve learned so far

I’ve only had the dashboard running for a couple of weeks, so I don’t have meaningful trends yet. But the act of building it has already changed how I think about the data.