Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: EverActiv, an ML personal trainer for iPhone (appstore.com)
36 points by kareemsabri on April 28, 2016 | hide | past | favorite | 21 comments


For those interested in the engineering behind it, there's a few elements of this app that might be of interest.

1. Workout builder: there's no stored workouts. Given a bunch of inputs: # of minutes, muscles to target, goals, the builder generates a workout for the user. The goal is to constantly get new workouts.

2. Workout calibrator: workout builder gives a workout that consists of exercises, sets, and reps. Workout calibrator assigns weight to all the sets, based on the user's past performance for that exercise and other strongly correlated exercises. If it isn't confident enough (not sufficiently high correlation coefficient for any past exercises) it leaves it blank for the user to fill in.

3. Set calibrator: the set calibrator is for calibrating a single set while in a workout. If it tells the user do 100lbs x 8 reps, and the user does 12 reps, it will adjust all subsequent exercises of that type to a more appropriate weight for 8 reps. There's no ML here, it's just a formula (8 rep weight = .6 * 12 rep weight, for example), but it works pretty well. This has the nice effect that if you don't know how much weight you can lift for x reps, just grab any weight, do what you can, tell the app how much you did, and it'll be accurately calibrated in 2-3 sets.


A slightly different approach: I was doing the hacker's diet exercise ladder (https://www.fourmilab.ch/hackdiet/e4/exercise.html), which is supposed to be completed in 10-15 mins; if you can't complete it in that time, move down a rung. But keeping track of the numbers at each level got annoying, and it was unclear if you were on track to complete things fast enough.

So, I wrote code to take those lists and a number of beats for each exercise, with a gap between to change position, take the completion time and calculate a bpm to make this fit. I then processed the output using the built in voices on the mac to read instructions in the gaps, count down reps and so on, and set up the metronome, so I never had to look at the screen. Now I could just type a command to kick off the whole thing.

I ended up not using it so much, I got sidetracked into the yak shave of making it play generative music in time with the plan, and just went running more.

One I did use more was a simple timer for cycling on the turbo, for eg watching movies instead of using a planned session like The Sufferfest. All this did was, you pick how long to ride, and then at decreasing random intervals it would read out the remaining time, then add a robot-based insult for encouragement (movie quotes and suchlike)


Curious about the sports science and kinesiology considerations in selecting a training set for the ML engine.


Not available in my App Store (Norwegian). Why not make it international?


Just FYI, on my iPhone 6S the date selector for scheduling your introductory workout is dark grey over a grey background....almost impossible to read.


Ah yes, will fix. Thanks.


Cool! Could you elaborate on the ways ML is used within the app? So far I gather it learns the optimal weight to be used for repetitions.


Thanks!

The main ML component is to guess how much weight you should lift for an exercise you've never logged before. To accomplish this, I periodically ingest all the exercise data offline, and for all possible pairs of exercises, see which ones are most strongly correlated. The client app downloads the latest data before every workout, and uses it to calibrate exercises if the user hasn't performed them before. If the user has logged the exercise before, guessing the optimal weight is pretty trivial, but if it's been a while, which can happen because every workout is somewhat randomized, it will override and make a prediction based on more recent exercises.

There's also some learning of progress rates, it'll slow down or speed up the rate of increasing weights based on the user's performance.


Im also just curious what technologies you are using, specifically for the ML. Is there a particular ML technique that works well for this use case?


Just python. I'm by no means an ML expert, this was my first foray into it. I used some basic stats to identify correlated exercises, and then simple linear regression to fit the data to a line. In my mind, linear regression is sufficient for such a simple ML problem.


Just running to a meeting but I'll reply in more detail in an hour.


I'd love to try it, but it says that the app is not available on the German store. Is there a specific reason why you limited it to (as I suppose) the US store?


Just an oversight. I'll add it to the German store. There's no metric option though!


Oh ok, well I may still give it a try.


Available in all territories now.


Excellent onboarding, it's not common to see it well done.

By the way, the Scheduler widget's text is black, which doesn't appear well on the dark background.


Looks neat, but it won't run on my Nexus 6P. Any plans for an Android version?


Not enough traction to justify two apps currently. Maybe down the road.


All weights are in lbs. Please provide an option for kg as well.


What's the best way to provide feedback?


PM or email kareem [at] everactivapp [dot] com




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: