Skip to content


Subversion checkout URL

You can clone with
Download ZIP


andrewroth edited this page · 16 revisions
Clone this wiki locally


To use my sansa mp3 player as a workout guide. I want it to tell me which workout to do, how many reps, how long to rest etc.

To be able to track long-term how I’m doing. Am I working out regularly? Am I lifting more weights than when I started?

To be able to record when I deviate from a workout. Maybe a friend shows up and I work out with him, doing something totally different from what I planned. I want to be able to record that, and be able to make up my original workout on another day and record that too.

To sit down at the start of a month and map out my workout schedule for the month. Or 3 months. Or 6 months. Whatever I find works best. But the point is to have long-term goals and not just go to the gym and see what I feel like doing.

technical approach

There will be two components: a database-driven rails app and the sansa app. Since I’m a rails programmer, the idea of a remote device is strange. I’ve come to think of it as a remote computer that has its own database. The databases then will get synced up with another database hosted on a web server (or a local computer, if you don’t have a web server). Mostly, the sansa will be creating rows of exercise logs.

The app will be responsible for managing workouts, exercises, and goals. Synchronizing the goals with exercises in a robust way is proving to be the most difficult part. If you have a goal to work out 2 times per week and increase weight by 5% each time, have you met that if you do one workout one week and two workouts the next? or if you jump 3% one week then 7% the next?

I’ve come to divide goals in two parts: time-based and weight-based. I can mark that I want to do a certain number of a certain workout (ex. upper body) or that I want to increase my bench press from 100lb to 140lb.


I’ve come up with a sort of linear goal storage schema, and where I store a # that means simply how many times I’ve done an exercise, and the goal component has a simple formula that can derive a goal amount based on the #.




Something went wrong with that request. Please try again.