Why I bother checking numbers before I write a single line of code
I used to treat my body like a hosting plan.
Unlimited everything. It will be fine. Just push one more late night deploy. Then I hit a wall. Brain fog, random injuries, and days where my code reviews looked like they were written by someone throttled to 2G.
So I started tracking stuff. HRV. Resting heart rate. Sleep score. Body weight. The usual biohacker starter pack.
The problem was simple. I had dashboards and zero decisions. Data as decoration.
Now I run a strict 5‑minute biometric check every morning. And every single number has a simple rule attached to it. If X, then I do Y. No vibes. No overthinking.
This post is exactly what I check, the thresholds I use, and how it changes my day as a developer, builder, and baseball coach who still wants to hit the gym without breaking.
The tools on my body and on my desk
This is not a gear flex. You can do a lighter version of this with almost anything. But for context, here is my actual setup right now.
- Oura Ring for HRV, resting HR, and sleep stages.
- Apple Watch as a rough backup for HR and sleep when I travel.
- Withings smart scale for body weight.
- Apple Health as the central pipe.
- Notion for a simple morning check template.
I have used Whoop, Garmin, and other toys in the past. The pattern is the same. I just care about four numbers, and I only care about them at one time: right after I wake up, before coffee, before email, before Slack.
The 5‑minute script: what I check and in what order
I follow the same script every morning.
- Open Oura and note HRV and resting HR.
- Check last night’s sleep score and a couple of sub‑scores.
- Step on the scale.
- Open my Notion page, log four numbers, apply rules.
The logging part takes 30 seconds. The decisions take 4 minutes. The rest of this post is just those decisions written out.
HRV: my recovery traffic light
HRV is the number I respect the most. Not because it is perfect science, but because it correlates brutally with how my brain feels around 14:00.
My personal baseline HRV sits in a band. I do not care about the absolute value. I care about the trend and deviation.
Here is how I treat it.
If HRV is normal or slightly above baseline
For me this means the rolling 7‑day HRV is within roughly 5 percent of my baseline or slightly above.
What I do:
- Work: I schedule at least one deep focus block of 2 hours. Hard problems. Architecture, performance work, experimental features. No meetings allowed in that slot.
- Training: Green light for a heavier session. This might mean kettlebell swings, squats, or sprint work at baseball practice. I push volume or intensity, not both.
- Caffeine: Normal intake. For me that is two coffees before 11:00, none after.
In short: normal HRV means I stop babying myself. I treat the day like my capacity is actually there.
If HRV is moderately below baseline
This is the most common “warning” state. A drop of 5 to 15 percent from my baseline or a clear negative trend over 3 days.
What I do:
- Work: I shift big creative tasks to earlier in the day. No heroic late afternoon pushes. If something cognitively heavy is not done by 15:00, it moves to tomorrow.
- Training: I keep the session, but I change the intent. Less load, more technique. For example, I will hit skill work on my swing, light kettlebell work, or a walk instead of intervals.
- Caffeine: I cap it at one coffee. I have learned that using caffeine to fight a mild HRV drop just steals energy from the next morning.
- Evening: I set a hard screen cut‑off at 21:30. Blue light filter, no late coding session “just to finish that feature”.
The key here: I do not cancel the day. I just stop pretending I am at 100 percent. It is a tactical retreat, not a rest day.
If HRV is tanked
This is when HRV drops more than ~15 percent, or I see two bad nights in a row.
This usually happens after late baseball games, travel, or a dumb combination of heavy lifting plus mindless Netflix scrolling until midnight. So it is usually my fault.
What I do:
- Work: I deliberately schedule a “maintenance day”. That means bug fixes, refactoring, documentation, admin, or content planning. No high stakes shipping.
- Training: I either skip training or do a 20 to 30 minute easy walk. Zone 2 at most. Heart rate low. I do this even if my brain tries to guilt trip me with streaks.
- Caffeine: I watch it like a hawk. One coffee max, and ideally I push it to after breakfast instead of first thing.
- Sleep: I pre‑commit to an earlier bedtime. For me that means starting wind‑down by 21:00, not starting a movie at 21:00.
Tank HRV days hurt my ego. They save my next three days though. Every time I ignore this number, I pay interest on fatigue for a full week.
Resting heart rate: the infection detector
Resting heart rate pairs nicely with HRV. HRV tells me how my system is balancing stress. Resting HR often tells me if there is an extra invisible load, like an infection or recovery debt.
My resting HR sits lower on days where I am actually recovered. It bumps up when I am fighting something or when alcohol sneaks in.
If resting HR is normal
Normal is boring. That is good. I mostly ignore it if it is within a few beats of my weekly average.
What I do:
- I use it as a sanity check for HRV. If HRV is slightly down but resting HR is fine, I treat it as psychological or just noise.
- No specific change to training or work. Other numbers take priority.
If resting HR is elevated by 5+ bpm
This is where it gets useful. For me, anything more than 5 beats above my baseline resting HR gets attention.
What I do:
- Work: I assume my body is fighting something. I pre‑emptively reduce my ambition for the day. Smaller to‑do list. One key outcome, not three.
- Training: No intense work. No heavy squats. No sprint sessions. I keep movement but switch to walking, mobility, or light throwing at baseball practice.
- Food: I prioritize actual food over snacks. Protein, salt, water. Simple.
I treat a high resting HR as a polite warning from my immune system. It is usually right.
Sleep score: the lie detector for “I feel fine”
Sleep is the most boring topic in health, but it controls almost everything I care about: focus, mood, and whether I throw lazy pitches at practice.
My Oura sleep score is not sacred, but it is a decent lie detector for how I slept compared to how I think I slept.
If sleep score is 85+
For my body, anything 85 and up usually means enough deep and REM sleep, decent latency, and low disturbance.
What I do:
- Work: I front‑load my hardest problem. I aim to ship something that actually matters. Not tweak fonts. Think performance tuning, architecture decisions, or writing longform content.
- Training: If HRV agrees, I treat this as a good day to push skill plus intensity. Heavy lifts, hard batting practice, or sprints.
- Social: I am more selective about late social stuff. Ironically, feeling good is when I am most likely to wreck my next night by staying out too late.
If sleep score is 70‑84
This is my gray zone. The night was okay but not great.
What I do:
- Work: I keep one hard block but I reduce expectations on creative output. I also avoid stacking lots of meetings, because they drain more when sleep is mid.
- Training: I let HRV be the tiebreaker. If HRV is fine, I keep my planned session but cut volume by 20 to 30 percent.
- Evening plan: I explicitly plan a calmer evening. No new series, no scrolling rabbit holes. Book, stretch, maybe a walk.
If sleep score is below 70
This is the red zone. I know people who function like this daily. I do not.
What I do:
- Work: I shift into “ship small things well” mode. Fix a bug. Tighten a UI animation. Write a short post. I avoid starting anything broad or strategically important.
- Training: No intensity. I treat it like jet lag. Walks, mobility flows, maybe some very light kettlebell work if I am restless.
- Caffeine: I schedule my last coffee by 10:00. I know I will be tempted to slam an espresso at 16:00. That one shot alone will trash the next night.
One bad night does not ruin me. Two or three in a row do. The score keeps me honest before I drift into that pattern.
Body weight: the quiet background signal
Weight is the least dramatic metric in my morning routine, but long term it is the most unforgiving.
I weigh myself daily. Not because every day matters, but because the trend does. I care about the 7‑day average, not today’s spike.
If weight is in my target band
I keep a 1 to 1.5 kilo range that I am happy with for performance and aesthetics. If the 7‑day average sits inside that band, life is easy.
What I do:
- No change to food. I keep the same meal template: protein heavy breakfast and lunch, lighter dinner.
- I focus more on performance in the gym and on the field, not the scale.
If weight trend drifts up for 2+ weeks
I do not panic over a weekend spike. But if the 7‑day average creeps up for more than two weeks, I act.
What I do:
- Food rules: I add one simple constraint. For example, no liquid calories during the week, or no snacks after 20:00. Only one rule at a time so I can see cause and effect.
- Training: I keep strength work and increase low intensity movement. More walking, more easy cycling between meetings.
- Weekends: I plan one “higher calorie” day rather than three accidental ones.
If weight trend drifts down when I do not want it to
This has happened during busy shipping phases where I forget to eat properly between deep work and coaching baseball.
What I do:
- Food: I anchor one extra proper meal with 30 to 40 grams of protein. Usually a second breakfast or a bigger lunch.
- Training: I keep intensity but reduce overall volume. Strength needs fuel. If the fuel is not there, I would rather hold the line than push.
Weight moves slowly, which is exactly why I want a daily quick check. It is a guardrail against drift.
Gluing it together: my actual Notion template
I like systems that fit on one screen. So my morning biometric check lives in a tiny Notion page pinned to my “Start” dashboard.
The template looks like this.
Date: [ ]
HRV: [ ] Trend: [up / flat / down]
RHR: [ ]
Sleep score: [ ]
Weight (7d avg): [ ]
Work focus today:
- [ ] Deep / Creative / Maintenance (circle one)
Training today:
- [ ] Heavy
- [ ] Moderate
- [ ] Easy / Off
Rules for today:
1) ___________________________
2) ___________________________
I do not write essays in there. I tick one option for work, one for training, then write one or two short rules for the day. Things like:
- “No caffeine after 10:00.”
- “Walking and mobility only.”
- “Ship X feature before lunch.”
That is it. The whole routine fits between brushing my teeth and making coffee.
Why this 5‑minute check beats chasing perfect data
Most people I know who wear rings and watches make the same mistake I made at the start. They collect everything and change nothing.
I do not think better sensors will fix that. I think better rules will.
My rule now is simple. If a metric does not change my plan for the day, I stop tracking it. That is why I care about exactly four in the morning.
- HRV sets my recovery and intensity ceiling.
- Resting HR tells me if there is hidden stress or sickness.
- Sleep score shapes my cognitive load and caffeine plan.
- Body weight keeps my long‑term trend honest.
If those four numbers say “go”, I go hard. If they say “easy”, I listen. Not because I turned into a health monk, but because I like shipping work that does not feel like wading through mud.
I build web experiences, I coach baseball, and I still want energy left to be a human at the end of the day. This 5‑minute biometric routine is how I stack the odds in my favor, one very boring, very practical morning at a time.
Subscribe to my newsletter to get the latest updates and news
Member discussion