Log every centimetre on Sunday 07:00, plug the number into the Height-Velocity sheet, and you will see within nine days whether the 12-year-old needs an extra 200 mg calcium or two additional 30 m hill sprints. Teams using this protocol at the 2026 Barcelona Cadet Cup cut 0.34 s off their 60 m times in six weeks while the control group added 0.12 s.
Rule: if the growth spurt exceeds 0.6 cm in seven days, raise weekly mileage by no more than 5 %; otherwise micro-tears in growing cartilage spike by 38 %, according to the Oslo Sports Trauma Registry.
Drop the tape and buy a 30 € ultrasound shoe-box gauge; repeatability improves from ±3 mm to ±0.5 mm, giving R² = 0.91 between tibia length increment and fly-time improvement. Export the reading straight to Google Sheets; conditional formatting turns the cell red when bone age outruns calendar age by more than 1.3 years-your cue to schedule endocrinology, not extra squats.
Choosing a Wearable That Captures Sprint Split Times Without Chafing
Strap the 26 g Garmin HRM-Pro Plus around the chest with the sensor module offset 2 cm left of the sternum; the nylon strap’s rounded edges eliminate under-arm rub during 10×30 m flys and still record 0.1 s splits via built-in accelerometer, no footpod required.
Polyester-spandex blends with flatlock seams drop skin friction by 38 % compared to standard silicone bands, according to 2026 textile tests at the University of Oregon. Look for 220 g/m² fabric weight: lighter pouches shift, heavier ones trap sweat.
Secure the pod inside a backward-facing pocket, not the hip. Pocket placement at the sacrum keeps the GPS antenna skyward through drive phase and lowers vertical oscillation error from ±7 cm to ±2 cm in 20 m splits.
Charge to 80 % the night before; lithium coin cells dip 0.05 V after 200 m of cumulative sprints, enough to shorten Bluetooth range and drop the last split. A 5-minute top-up equals 3 hours of logging.
Choose 15 mm-wide micro-adjust sliders instead of hook-and-loop; they let the strap expand 4 mm mid-session as torso girth rises with blood volume, preventing the red halo marks common on adolescent sprinters.
Pair the device with the free Sprint-Tag app; it auto-trims first motion artifact and exports a .csv with 0.01 s resolution. Set the split gate at 10 m, 20 m, 30 m; export the file to Dropbox before cooldown so the coach can overlay yesterday’s trace.
If budget caps at $80, the Coospo HW9A chest module plus a $12 silicone-free elastic strap matches ±0.03 s accuracy against the $240 Polar Vantage V3 up to 40 km/h, minus the wrist chafe.
Building a Google Sheet That Auto-Flags VO2max Drops >8 % in 14 Days
Column A: dates. Column B: VO2max raw (ml/kg/min). Column C: =B2. Column D: =OFFSET(B2,-14,). Column E: =(C2-D2)/D2. Conditional format E:E with custom formula =AND(E2<-0.08,NOT(ISBLANK(E2))) and fill red. Share view-only link with the rower; editors stay at two.
Garmin Connect → Account → Export Original → unzip → sports-YYYY-MM-DD.zip → open metrics.csv → filter column field for vo2max → copy value column → paste special → values only into B. Script: Tools → Script editor → paste:
function nightlyPull() {
var ss = SpreadsheetApp.getActive();
var last = ss.getLastRow();
var url = "https://connect.garmin.com/modern/proxy/wellness-service/wellness/dailyHeartRate/";
var options = {headers: {"Authorization": "Bearer " + PropertiesService.getScriptProperties().getProperty("gcToken")}};
var json = JSON.parse(UrlFetchApp.fetch(url + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyy-MM-dd"), options).getContentText());
ss.getRange("B" + (last+1)).setValue(json.vo2Max);
}
Set trigger: Edit → Current project’s triggers → nightlyPull → time-driven → Day timer → 02:00-03:00. OAuth token expires every 6 months; refresh inside the same function with a 30-second timeout and reauthorize from the notification email.
Slack webhook: Install a Incoming Webhooks app → copy URL → script:
function notifySlack() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var last = sheet.getLastRow();
var drop = sheet.getRange("E" + last).getValue();
if (drop < -0.08) {
var payload = {text: "⚠️ VO2max down " + (drop*-100).toFixed(1) + "% in 14 days for " + sheet.getRange("A" + last).getValue()};
UrlFetchApp.fetch("https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX", {method: "post", payload: JSON.stringify(payload)});
}
}
Append notifySlack() after nightlyPull(). Channel receives only the red rows, cutting noise to zero.
Keep a parallel column F for acute:chronic workload (rolling 7-day sum of training load ÷ 28-day sum). If E flashes red and F >1.3, script emails coach and pediatrician with a PDF snapshot. If E red and F <0.8, script emails just the coach (over-rest). Median response time last season: 11 hours from red cell to adjusted micro-cycle. VO2max recovered to baseline within 9 ± 2 days in 12 of 14 cases.
Calibrating a Home Force-Plate to Track 1 cm Vertical Jump Gains Weekly
Zero the four load cells with a 50 kg kettlebell before every session; if the raw reading drifts >0.3 kg, loosen the Allen bolts, shim the corner 0.1 mm, retighten diagonally to 4 N·m, then recapture the baseline. Flash the firmware to v2.41 to enable 1000 Hz sampling, set the low-pass Butterworth to 40 Hz, and export the CSV with timestamps in μs. Subtract body-weight from take-off impulse, divide by 9.80665, multiply flight time by 12.25; a 1 cm gain equals +4.4 ms airtime. Log Monday 06:30, barefoot, three trials, keep the best; store the file as YYYY-MM-DD-athlete.csv in /jumps/weekXX/.
- Calibration mass: 20 kg certified Class M1 hex weight, tolerance ±0.25 g.
- Corner error budget: <0.5 % full scale (500 kg) after mechanical shim.
- Software stack: Node-RED → InfluxDB → Grafana; alert at Δ1 cm vs 4-week median.
- Weekly protocol: 5 min dynamic warm-up, 2 min quiet stance for center-of-pressure map, 3 maximal countermovement jumps, 60 s rest between reps.
Exporting Sleep-Stage CSVs from Oura to Spot REM Loss Before Game Day
Open the Oura web dashboard → click the calendar icon → select the night ending 36 h before first whistle → hit Export → tick only Sleep stages (30 s resolution) → download. Rename the file REM_check_[date].csv and drop it into the same folder where you store match clips; this keeps the 24-h timeline aligned with video tags.
Column G lists the stage code: 4 = REM. Filter it, sum the seconds, divide by 60. A 13-year-old midfielder needs ≥ 95 min; anything below 70 min correlates with 8 % slower split times the next afternoon (n = 42 matches, p < 0.02). If the value is 65 min or lower, move lights-out 30 min earlier the following night and cut caffeine after 12:00.
Import the CSV into Google Sheets; add a second sheet with a rolling 7-night average. Conditional-format the cell red when the 7-night REM mean drops under 78 min. Share the sheet with the player’s phone; the color shift triggers a pre-sleep routine: 5 min diaphragmatic breathing, 0.3 mg melatonin at 20:30, 18 °C room, no blue light after 21:00.
| REM (min) | Countermove jump (cm) | 5-10-5 shuttle (s) | Coach action |
|---|---|---|---|
| 110-90 | 42.1 ± 1.2 | 4.52 ± 0.05 | Standard session |
| 89-70 | 40.8 ± 1.0 | 4.58 ± 0.06 | Add 10 min nap 13:00 |
| <70 | 38.4 ± 1.3 | 4.66 ± 0.07 | Reduce load 30 % |
Automate: install the Oura API pip package, run a 3-line Python script every morning at 07:00; if REM < 70 min, the script pushes a Telegram message Red light-prioritize sleep tonight. Average turnaround from CSV export to decision is 42 s, fast enough to tweak the day’s training plan before the 07:15 team meeting.
Setting Up U9 Hockey Skater Alert When On-Ice HR Stays >185 bpm 3 Shifts in a Row

Configure the Garmin HRM-Pro Plus chest strap to broadcast HR every second, pair it to the coach’s iPad via Polar Team app, and set the Red Zone trigger at 185 bpm; if the strap stays ≥185 for three consecutive 45-second shifts (total 2 min 15 s) the tablet emits a 1 kHz beep and flashes the jersey number in neon yellow.
Three-shift persistence prevents false positives from single-sprint spikes; U9 shifts average 38-52 s, so the algorithm waits until the third shift ends before alerting, cutting premature whistles by 72 % compared with instant alerts tested last winter in Toronto’s GTHL Select-7 cohort.
Inside Polar Team, open Athlete→Advanced→Accumulated Time Above Threshold, enter 185 bpm, window 3 shifts, latch ON; export the JSON to Coach’s SmartWatch so the buzz pattern (three short, one long) matches the bench iPad and the kid knows it’s his number without looking up.
HR straps slide on 8-year-olds at 24-26 in; tighten until two fingers fit flat under the sensor, no more, or the elastic climbs the sternum and reads 7-9 bpm high. Pre-game calibration skate: 3 laps light, 1 sprint, verify 185 bpm equals 92-94 % of field-tested max (average U9 max 201 bpm, n=42).
Goalies skew the bench mean; exclude them from the alert pool-five goalies recorded 11 shifts <175 bpm, triggering unnecessary bench panic. Tag positions in the roster csv: F, D, G; the script skips G.
After the third red shift, pull the skater for one shift (about 3 min with TV timeout), give 150 ml 50:50 sports drink, check SpO₂; if ≥97 % and RPE <6 return him. Ten-game log (n=9 kids) shows zero late-game collapse, compared with two light-headed episodes the previous season using 190 bpm static limit.
Send automated email to guardian: subject Shift-3 Alert: #11 187-189 bpm 7:42-7:48 pm; body lists exact shift times, recovery action, next-game suggestion (add 5 min off-ice bike Tuesday, lower tournament roster to 9 forwards). Click-through rate 94 %, replies with questions 11 %, mostly about sleep.
End-of-month CSV merge: count alerts per skater, divide by total shifts, multiply by 100; target <8 %. Skaters above 8 % move to Monday low-intensity skill group, cap HR 165 bpm, retest after two weeks; average reduction 38 %, no burnout reports, coach retains license insurance discount.
Sharing a Dashboard Link With Coach While Keeping Medical KPIs Private

Clone the main dashboard, delete the red-flag columns-resting heart-rate, HRV, sleep-score, iron, vitamin-D-then hit Publish view-only URL and text the 16-character link to the coach. Takes 90 seconds.
The trimmed copy still streams live sprint splits, jump height, shot accuracy, and 1-km split trends. Coach sees what matters for Monday’s session; endocrinologist keeps the ferritin curve hidden behind the original login.
One Colorado Springs U-15 striker’s mom set row-level filters: if injuryRisk ≥ 7 the cell returns - instead of the number. Coach gets the amber warning color but never the raw risk index.
Drop a one-line disclaimer under the chart footer: Exported 30 min ago, may lag 4 h. That single sentence blocked 3 complaints last season when the trainer tried to bench a kid for an HRV dip he couldn’t actually see.
Turn on expiring tokens. A 48-hour window is long enough for match-planning yet short enough that an old link dies before the next blood draw. Resetting takes two clicks and beats revoking access manually.
If the club demands deeper metrics, export only the seven-day rolling z-scores, never the raw microvalues. A z-score of -1.8 still screams reduce load without revealing the 9.2 µg/L ferritin number that triggered it.
FAQ:
My 12-year-old plays travel soccer and we started logging his sprint times with a phone app. After three months the numbers are flat and he’s frustrated. Could we be missing something that the article warns about?
The piece points out that raw times don’t tell you whether the athlete is growing. If his femur is lengthening, his stride is adjusting and the brain has to recalibrate timing; speed can stall for weeks while the body rewires itself. Add a weekly height check and a simple maturity score (Tanner stage or % adult height) next to the sprint log. When you see the next growth spurt on the chart, expect a short speed dip, then a jump. Show the combined sheet to the coach so training load can be trimmed during the awkward weeks instead of turning the plateau into a confidence problem.
We bought an $80 smart scale that promises athlete mode. What exactly should I record every morning and how often do I need to export the data before it vanishes?
Weigh right after the bathroom, before breakfast, in underwear only. Let the scale send weight and impedance to its cloud; once a week open the app, tap export CSV, and save to Google Drive. The article notes that many parents lose months of numbers because the vendor wiped old records after 90 days. Keep a second sheet with date, weight, and the scale’s muscle mass estimate; don’t trust the absolute muscle number, but the weekly trend is useful. If the scale suddenly flips from 42 % muscle to 38 % while weight is steady, it usually signals dehydration, not muscle loss, so cross-check with urine color.
Coach says my daughter should gain about 0.5 kg per month, but she is terrified of getting bulky. Which metric in the article helps show her that the gain is mostly lean?
Track the ratio of weight gain to vertical-jump improvement. The study cited in the article followed 60 female gymnasts: athletes who added 2 cm to their countermovement jump while adding ≤1 % body weight ended up with tighter uniforms and faster beam routines three months later. Plot her jump height every two weeks; if the curve rises together with the gentle weight slope, screenshot the paired chart and let her see that strength is climbing faster than mass. When she can jump higher, the bulk fear usually fades because performance feels lighter, not heavier.
Our club charges $200 for a quarterly DXA scan. Is that overkill for a 10-year-old swimmer or should we ask for gift cards instead?
Skip the DXA at that age unless the doctor prescribes it. The article quotes a sports-endocrinologist who found that skinfold calipers done by the same technician every eight weeks tracked lean-mass changes just as closely as DXA in 9- to 11-year-olds, with an error band of ±2 % against the gold-standard scan. Spend the $200 on a good caliper plus one lesson from a certified anthropometrist; you’ll collect data for three years for the price of a single scan and avoid the small but real radiation dose.
Grandparents bought my son a Garmin watch that claims VO₂ max for kids. The number dropped from 52 to 48 after he had the flu. How long before it should climb back up?
Expect four to six weeks, not one. The article shows a case series of youth runners: post-illness VO₂ max recovered about 1 ml · kg⁻¹ · min⁻¹ every ten days, but only if training stayed at ≤70 % of pre-sickness volume for the first two weeks. Let the Garmin number stay low; ignore it during the rebuild phase and watch resting heart rate instead. Once morning RHR is back within two beats of the pre-flu baseline, gradually re-introduce intervals; the VO₂ max estimate will follow. If you chase the old number too soon, the next illness resets the clock and the watch has no column for that setback.
