How Vibe Coding Made Me a Hobbyist Again
By Tom Norton
May 20th, 2026 · 8 min read
These days, I have very little time to work on side projects, between work, sports, social life, etc. Life tends to get in the way. Earlier in my career, I used to be able to find time for little side projects, working on tools, etc. Since the arrival of Claude and agentic coding, it's finally possible to build these sorts of things without the same time investment. I get to focus on making tools to help me answer my own conundra, building stuff the same way I used to, small iterations, going feature by feature, focusing on correctness. I love building products, and I love tinkering with code, and I missed it. Vibe coding has given me the chance to get back to that, even if it's just for a few hours at the weekend.
Over the last six weeks I've been quietly publishing a small collection of free, browser-based tools for cyclists, climbers, and people training for endurance events. There are six of them now. Each one started with a question I had while training, where the answer either didn't exist as a free tool online or was hidden behind a SaaS subscription. They're all free and run in the browser, with no account required.
Here's a short tour.
1. Bike Split Estimator#
Upload a GPX route and the tool predicts your finish time at a given power output, broken down section by section. The physics covers air drag (CdA), rolling resistance, gravity, drivetrain loss, air density, and headwind. You can also reverse-solve it: enter a target time and it tells you the wattage you need to hit.
The route is split into sections based on actual terrain changes rather than equal distances, so a steady 7% climb shows up as one section instead of being averaged into the surrounding flats. For each section, a Newton-Raphson solver finds the speed at which rider power matches total drag, accurate to a thousandth of a watt.
I built it because I'm doing the bike leg of a sprint triathlon this summer and wanted to model exactly what wattage I needed on the climb versus the flat to beat last year's third-place split. The closest paid equivalent is Best Bike Split at around $19 a month.
I also wrote a follow-up post where I validated it against four of my own rides. The model came in about 2 to 8% optimistic on real-world finish times, with the error growing on longer and more descent-heavy routes (because the model doesn't yet know about cornering).
https://tpjnorton.com/tools/bike-calculator
2. Training Week Planner#
The most recent of the six, and the only one without any physics under the hood. It's a weekly calendar where you add people, drop in sessions with auto-picked emoji based on what you type, assign one or many participants per session, and drag sessions around to reorder them.
I built it because I needed somewhere to plan a training week for me and my partner. I'd tried a shared Google Sheet, a Notion page, and Apple's Reminders app. The sheet was readable but a pain to edit. Notion was the opposite. Reminders was fine for solo use but bad at "her ride, my run, joint swim on Sunday."
What I wanted was a planner that lived in a browser, saved locally without an account, and could be printed on one page for the fridge.
Things I'm pleased with:
- Type "deadlift" or "fingerboard" or "open water swim" and the emoji picks itself from a small keyword index
- Multi-person assignment with colour-coded chips, so a joint session reads at a glance
- Local storage only, so no account and no data leaves the browser
- ICS export, so a planned week can be loaded into a calendar app if you'd rather
- A print stylesheet that actually looks good on paper
https://tpjnorton.com/tools/training-calendar
3. FTP Calculator#
Functional Threshold Power is loosely defined as the wattage a cyclist can sustain for about an hour, though recent research has shown most riders only hold theirs for 30 to 50 minutes in practice, and the metric is fuzzier as a physiological threshold than its name suggests. It's still the anchor for most training-zone work, and most riders find theirs out by doing an 8-minute or 20-minute maximal test.
This calculator estimates FTP from a single max effort at any duration between 3 and 30 minutes, using a hyperbolic power-duration curve calibrated against the two canonical FTP tests:
- FTP = 90% of 8-minute power
- FTP = 95% of 20-minute power
Both rules assume an average rider. Cyclists with above-average anaerobic capacity (sprinters and anyone whose short-duration power sits well above population norms) get an inflated FTP from the 8-minute test, because so much of an 8-minute effort comes from W', the anaerobic capacity that the flat 90% coefficient assumes to be average across riders. The 20-minute test is less affected but still imperfect. The calculator can take an explicit W' value to switch to a fully personalised Morton-3P solve for these riders.
Mathematically that's Morton's 3-parameter critical-power model written in a scaled form where the anaerobic work capacity W' scales with FTP. The scaled form has a nice property: the duration coefficient depends only on time, so the same curve fits every rider.
If you have two or more efforts at different durations (say a 5-minute and a 20-minute), the tool switches to a proper 2-parameter critical-power fit and recovers both CP and W' from the data using ordinary least squares. With three or more efforts it also reports R² so you can tell when your inputs are noisy or your efforts were too similar.
Output includes FTP in watts, W/kg if you supply weight, a performance band from "Untrained" through "World class" based on Coggan's published power-profile tables, and the full Coggan 7-zone training breakdown.
https://tpjnorton.com/tools/ftp-calculator
4. Cycling Drafting Calculator#
If you're sitting on someone's wheel in a paceline, how much wattage are you actually saving? Most of what's online is either vague or paywalled.
Give the calculator the leader's wattage and the group size, and it returns each rider's wattage in absolute watts and as a percentage of the leader, plus the speed the group is travelling at.
The drag-savings figures come from Blocken et al. (2018) wind tunnel and CFD measurements on full pelotons, plus on-road field studies. Position 2 saves about 27%. Savings deepen through positions 4 to 6, then taper. The leader gets a small ~3% bonus when anyone's sitting on their wheel (the trailing rider's low-pressure bubble pushes them along, a measurable effect in field data). The rider at the back of a long line of five or more loses a couple of points because there's no one behind them filling in their wake.
It's a flat-road steady-state model, so it won't tell you what happens on a climb. For a paceline on rolling terrain it's a useful reality check on what each pull is actually costing the rider on the front.
https://tpjnorton.com/tools/cycling-drafting-calculator
5. Bike Gear Calculator#
A chainring-cassette-wheel calculator with the usual outputs: gear ratio, gear inches, development in metres per crank revolution, and a cadence-to-speed converter that works both ways. A reference table shows your speed at 60, 70, 80, 90, 100, and 110 rpm so you can see at a glance which gear puts you at the cadence you want to ride.
Presets cover the common road and gravel chainrings (50/34, 52/36, 53/39, 48/35, 46/33), cassettes from 11-25 up to 10-46, and wheel circumferences for standard tyre sizes. Your last setup is saved locally so the page comes back the same way each time.
https://tpjnorton.com/tools/gear-calculator
6. Bouldering Calorie Calculator#
If you climb, you've probably been irritated by the fact that an Apple Watch puts a 90-minute hard bouldering session at the same calorie burn as standing around. The problem is that no consumer wearable knows how to score climbing properly. The activity is mostly rest, the active bursts are short and intense, and the energy cost depends on grade, wall angle, and how much you rest between attempts.
This calculator estimates calorie burn for a session based on:
- Body weight
- V-grade (interpolated MET values from the 2024 Compendium of Physical Activities, Watts et al. 2000, and Callender et al. 2021)
- Session duration
- Rest fraction, the proportion of session time spent resting between attempts
- Wall angle (slab, vertical, overhang, steep cave)
- Subjective intensity on a 1 to 10 RPE-style scale
- Session type (boulder gym vs. board climbing on a Moonboard / Kilterboard / Tension)
- Sex (Compendium MET values come predominantly from male subjects, so a small correction applies)
The output is a calorie total with a ±20% confidence band, broken down into active calories, EPOC (excess post-exercise oxygen consumption, the after-burn from intense efforts), and rest calories.
https://tpjnorton.com/tools/bouldering-calories
Getting moving again#
All of them came from the same place: a specific question I had while training, no good free answer online. Writing the tool used to take a weekend or two, and now I can get it done in a day or less. Once it's done it stays online for anyone with the same question later.
It feels so great to be able to ship something again, even if it's just a little tool for a niche audience. It's a reminder of why I got into engineering in the first place: to build things that solve problems, even small ones. If you have a question about your training that you wish there was a free tool for, or if you find a bug ,or want to suggest a feature, let me know. Maybe I'll build it next!
Everything lives at tpjnorton.com/tools, all of it free. Go try them out and let me know what you think!
