I’ve wanted a super minimal app that just “counts reps of any repeating motion” without using the phone itself, for many many years.
It’d work for pushups, squats, chinups, etc etc. So many exercises are the same idea of “move body repeatedly”.
I don’t want my phone in my pocket while doing it, I like having my phone in front of me while I do pushups/situps/chinups/etc so I can see the timer/stats.
I’d happily pay for an app that could do that and just let me tag what each one was to add to a log.
I'm mostly doing dips pushups pullups and abs, and it counts each rep.
The simplest form is starting a generic strength activity, where pressing the lap button moves to "rest" and displays a quick optional "Hey I counted this, fix the count" thing before resuming to the next exercise with the lap button. Once you're done with your workout and it synced to the phone both each exercise type and reps can be fixed after the fact.
You can also set up more structured, scripted workouts with exercises known beforehand, which slightly improves rep counting (otherwise it's very generic and approximate)
I wish I didn't have to start activities with my garmin fenix. I would like it to just prompt me "I've noticed it appears you just went for a walk, confirm yes/no"
When I enter an activity such as weight lifting it seems to be able to infer what exercise I performed, it seems like it should be able to infer when I am going for a run or a walk.
Seems like it does for walking/running/cycling, they appear as icons on various graphs X (well, T, for time) axes... but there's no way to turn it into an actual activity after the fact.
Might have to do with the fact that during an activity it's actively tracking, full sensors blaring (notably HR) whereas otherwise it's lazier to save battery.
Still, I agree it'd be nice to have the option to either auto-create after the fact, or auto-start (and stop) live, or both.
For Garmin watches, auto activity tracking is under Settings > Activity Tracking > Status On. This shows up in Garmin Connect under graphs such as Body Battery, Heart Rate, etc. These auto tagged items don't show up as discreet activities and will not show up in other systems like Strava.
This is on the Forerunner 945 and will auto tag things like walks, runs, and cycling.
Someone else mentioned garmin has the feature, but it's finicky enough that for me it's just easier to write on phone. Sometimes I wish there was a casio calculator watch for logging/syncing lifts.
I use Strong. It’s free to log and works perfectly. It costs to get all the graphs and I found it to be too expensive for what it is. But it has a free export function to csv, so I’m making my own PowerBI dashboard. Just have to export once a month to see the progress for example of max weight, calculated 1RM, (max) volume per exercise.
I used various custom overkill spread sheets for platemath, recently migrated latest version to custom google sheetapp. When you can't PR, spreadsheet.
log weightxreps@rir in comma seperated long text field, calculates repRMs, and other stats like volume/inol. Visualizations in appsheets very weak though.
Most important feature for me, having gone off program/fuckarounditis is having UI that clearly indicates how long ago I've done an exercise, and associated stats / percentages. This way I can train intuitively using my own meso/microcycles, i.e. right now my microcycle is is every 10-12 days instead of 7, which helped me blow past some stalls. I try to visualize in: how many days ago I last did an exercise [how many rest days in between]. I can glance at exercise charts (can be fuzzy to match all exercise of certain tag, i.e. #bp shows data for all bench variations), and get a sense of periodization/progress. Trying to figure out a fatigue/recovery system (PRF = performance, RCV = fatigue). Big part is finding out how body responds to stress in various blocks, i.e. figuring out whether to push/add sets despite soreness/fatigue. Anyway apart from occasionally slow syncing, the new appsheet has made logging very convenient, since it precalculates dates/sesssion, just have to pick exercise and enter weightsxsets.
TLDR flexible training.
---
Before this, I've used for years where you log using syntax in giant textarea:
Their website is a little busy and they had some redesigns that I didn't like, but it's easily one of the best logging experiences out there since you're not wasting time filling individual setsxreps etc. They have an app now, which I haven't tried, but the web experience was very good for me. I logged in a note, and copy and paste into log file when done. Visualizations pretty good.
---
My ideal logging, if I knew how to code (only decent in excel formula), would be basically something like a population pyramid style chart where y axis is training days, x axis is inol/weight x or whatever stat. You tap on the horizontal/bar training day to view relevant details but otherwise have high level overview of essential stats.
Last couple photos in album shows old spread / visiualization sheet format, the 2nd last photo last like rows that represent past training days (empty = rest days) with inol for each exercise tag. I've blacked out some of my repmaxes in case it identifies me online powerlifting competition DBs.
It’s called a gym buddy ;) Only half-joking. I found having someone spot you, count or just stay accountable is a game changer. Whether thats a friend, or a personal trainer, it's always more fun in company!
Oh awesome!! I was curious whether it was feasible to distill that kind of information from the Watch. Looking at this, apparently it is! Thanks for sharing.
I hear you! Finding an app that does just what you want can feel pretty overwhelming sometimes. I like how you phrase “counts reps of any repeating motion”, that’s sparked some ideas! Thanks!
We kinda built this back in 2009. You strapped an iPhone to your arm and it counted reps by looking at the waveforms from the three axes of the accelerometer. It ended up becoming a (not very successful) YC W11 company.
This is cool. I am using body pose angles to determine the correct pose for a pushup/squat/whatever. It will be really nice not to use the camera for this and somehow determine the correct pose only using the CoreMotion data. I will dig into this.
A combination of watch + airpods should probably solve the overall body pose and positioning.
However, people would still want videos for reference and to get visual feedback.Perhaps not. Just an audio feedback supplanted by occasional video should help.
(1) Thanks for the writeup, this is classic HN content, a simple app that solves a person's problem with enough interesting technical detail to make it interesting.
(2) Definitely post this to the App Store! I'd happily pay a few $ for it even.
(3) How would it handle burpees? Would it just ignore the 'jump' phase? But still count the push-ups since it's zeroed in on the up/down motion of the push-up itself?
Hey thanks for your feedback, it’s really appreciated!
Since there’s interest, I’ll publish the source code to help others learn, and put the app on the App Store for those who just want to use it.
Regarding burpees and other types of motion, I’m looking into their motion characteristics, so that I can include them for detection.
Burpees would likely require recognizing different phases (the jump, the stand, the push, etc) and then when it detects them in sequence, incrementing the count. Something like that, but stay tuned! :)
Makes sense! For burpees, I think the jump part is perhaps 'just noise', in the sense that if you are accurately counting the push-up at the bottom (i.e. can ignore 'the noise' in-between push-ups) then it would work fine. Just a thought.
I wish I could get accurate HRM data from AirPods. I have an Apple Watch and do kettlebell training. I have to take it off to train or else I’d smash the watch to pieces with the heavier bells. I always wear my airpods when training though. Would be a killer feature.
Is this data that could be fed into the Health app (type of training, time of training, repetitions, duration of training)? The Health app is relatively picky about what sports are supported though…
That’s a great idea. HealthKit doesn’t track anything at the granularity of the number of reps, and while it doesn’t have a workout type specifically for pushups, this could probably be classified as Strength Training. I’ll add it!
Maybe there are other exercises with similar motion (squats?) that you would like to support as well?
Great idea to use these sensors and I also like the idea of providing audio feedback btw.
I’d love to see whether you could tease out heart rate and respiration from this data. If you already wear an Apple Watch or Fitbit, that data is continually collected. Shoving everything into a time series model with enough samples might do the trick.
I wonder if "accurate enough" hr could be achieved through filtering accelerometer data? You'd have to be quite still, but if the device knows you're doing push-ups, and what range your heart-rate could be in, it may be able to filter out other movements.
Respiration can be measured with microphones, and again, movement, but I suspect this may be more challenging than filtering HR.
I've considered using CoreMotion data from AirPods to recognize at least yes/no head-shaking, but mainly targeting a vigorous shake in order to mute without hands or voice. An open-source example would be a great starting-point!
I remember an android app years ago that would simply use the proximity sensor to count push-ups. I think you could put it on your abdomen and count sit ups too using the accelerometer/gyroscope.
I have seen people with tripods in the gym. Filming the exercise and doing video analysis is probably the way to go - for example it can track bench press, like the other comment mentioned. The author here mentions that there are "plenty of apps on the App Store" that do that. But the tripod itself is an investment that I am not sure everyone will make.
Very cool! Have been trying to complete murph workouts in prep for Memorial Day, and this app would be a perfect companion for counting the reps, which get pretty hard to track in your head during the workout. So, feature request - please add squat and pull up detection!
That’s true, and since it’s only tracking head movement at the moment, some further refinements would be needed to account for good positioning. I’d like to develop it further to see what else this technique can recognize.
Yeah wearables limitation is they rarely track both open and closed chain exercises. closed chain = dips/pullup where you move body through space, usually hands locked so watches/bands don't work, open chain = body fixed, move limbs like BP where this method won't work well. If it's something being worn, it needs to be adjusted to differnt positions to track different exercises, which makes implementation finicky.
The amount of engineering that goes into these things is truly phenomenal, as highlighted by the CT scans done by Lumafield - check it out here: https://youtu.be/kRpIg23qGY8?si=r2t8_8VHVCwkDDLP
I liked this article a lot - information-dense but approachable. It feels like you can understand the entire app using only the code snippets in the article, which speaks to the quality of the design. The only part that made me roll my eyes was the AI piece - I don't think there's any actual AI involved in the app, it seems like the author just used it to figure out what metrics to use, and then hardcoded them into the app? (That's probably how I'd do it, tbh - I just think the AI part distracts from the overall point and doesn't need to be in the post.)
It’d work for pushups, squats, chinups, etc etc. So many exercises are the same idea of “move body repeatedly”.
I don’t want my phone in my pocket while doing it, I like having my phone in front of me while I do pushups/situps/chinups/etc so I can see the timer/stats.
I’d happily pay for an app that could do that and just let me tag what each one was to add to a log.