Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Future plan #9

Open
tommyod opened this issue Aug 22, 2019 · 9 comments
Open

Future plan #9

tommyod opened this issue Aug 22, 2019 · 9 comments
Milestone

Comments

@tommyod
Copy link
Owner

tommyod commented Aug 22, 2019

Quick history of streprogen for the interested

Streprogen is something that I've worked with for many years, in several languages as with several interfaces. At one point it was a website built in PHP, at one point it was a website built in Python, and so forth.

I always made it for myself, to automate my own training regimes. It's also used by my real-life circle of friends with the same interest. As I

  1. got better at programming,
  2. learned more math and
  3. got feedback from my own usage and my friends

it's converged to what it is today: a Python package with a (hopefully) simple AI, yet a powerful engine in the background.

The future plan

I have three main objectives that I want to accomplish over the next months:

  1. I've written a mathematical optimization formulation of a multi-day meal planning problem.
    This will be included, so streprogen will allow both strength and nutritional planning.
    I'm very excited about this. It's insanely powerful stuff and I've used it with great success myself.
  2. I've added a few example training programs in the README. I hope to increase the number to 5-10 programs.
  3. I should do some promotion, e.g. post it to forums and websites. I really think it could be useful for a lot of people,
    but putting something up on github rarely leads to attention on its own (you're an exception in this case).

Apart from those three goals, it's the common maintenance: fixing typos, making sure code is clean, adding features if needed, etc.

Anyone is welcome to contribute to any of the above. I'll of course add your name as a contributor.

@tommyod tommyod added this to the v2.1.0 milestone Aug 22, 2019
@Timonsc
Copy link

Timonsc commented Aug 25, 2019

Hi @tommyod
Very nice project. For me personally I'm interested in planning strength training, but only if there is functionality to also keep track of progress. I've always been doing that in many excel sheets. Do you have any ambition to add workout logging functionality to the library? E.g. my progression depends on the amount of reps I finished and RPE. Depending on your ambitions I'd be open for collaboration.

@tommyod
Copy link
Owner Author

tommyod commented Aug 26, 2019

Hi! Thanks @Timonsc. I'll try to answer your question.

I don't see how tracking progress closely is something streprogen can clearly beat an Excel sheet at. It's essentially just storing information one way or another: either in a Python data structure or in a spreadsheet application. To me it seems that the work of closely logging progress is: (1) deciding how much and how often to log and (2) actually inputting the data to the computer. I don't see how streprogen can make that process more efficient.

I would be interested in hearing more about your use case, but workout logging is not a priority that I have. If there's an elegant way to automate, optimize or improve workout logging using Python I would of course accept a PR.

@Timonsc
Copy link

Timonsc commented Aug 29, 2019

Well I saw some opportunities to implement a feedback loop in order to adapt the training to how well a trainee is performing. Imagine that training is too easy (bigger increase would be optimal), or the trainee is failing at the predicted rate of progression (smaller or no increase would be better). That is how I train at least. And of course this can be done in excel, I'm already doing it. It's all just for fun/elegance/practice...

@tommyod
Copy link
Owner Author

tommyod commented Aug 29, 2019

Personally I do the following:

  1. Create a training program with some weights and progression that seems sensible.
  2. Use the program for 2-3 weeks to get a feel for the weights.
  3. If it's too heavy or too light, I go back, edit the weights in the program (which I saved when I created it) and re-generate a new version.

I store all my programs, so I implicitly have a log how my strength levels. Over the years I've learned pretty well how much progression and what weights are reasonable, so I rarely have to go through this loop. If I do, I usually adjust the weights very slightly.

For logging, you'd need local files or a local database to store records in. And you'd have to interact with it through Python. I think Excel is easier for most people. To be clear - I'm not necessarily against your general idea, but the elegance would have to be concertized for it to be worth implementing.

@RPallas92
Copy link

RPallas92 commented Oct 19, 2019

First of all, congrats for such a great tool and thank you. I have looking for something similar for some time.
I have a couple of ideas I want to work on:

  1. We could add more example training programs such as Sheiko, 5/3/1, or any 5x5 program, for new people.
  2. My second and main idea is to create a web interface to:
    • Create a profile with body measures, 1RM in basic exercises, age, gender and daily kcal.
    • Create an input form where the user will select how many time he could train per session and how many sessions per week. Then the system would create a predefined routine that the user would be able to customize (exercises)
    • Using the algorithm you already have, create a calendar with progressions and periodization for that routine. We would create them based on the level of experience of the user and the kind of exercise. ( For deadlift , the progression would be different than biceps curls. Also progression would be different for beginners than advanced). The system would offer the opportunity to customize the proposed progression.
    • Track the progress the athlete is doing and change both progressions and periodization based on it.
    • This web interface can be even simpler to use than excel sheets, with the advantage to have everything in the same place and hosted in cloud.
    • We could even integrate with existing mobile apps like HeavySets.

I want to develop that User interface and user your work. I would like to ask you if this is something interesting for you and if you will be open to contribute. The idea would be to have something similar to https://github.com/wger-project/wger with less features, but more useful (thanks to streprogen).

Thank you very much.

@tommyod
Copy link
Owner Author

tommyod commented Oct 19, 2019

Thanks for reaching out @RPallas92, I really appreciate it! 👍

  1. Absolutely. A review of existing notebooks plus adding other well-known training programs would be a very useful and welcome contribution.

  2. Having a web interface would be great. I'm obviously biased, but I really think streprogen with sensible parameters beats almost anything people come up with for medium/long term strength progress planning. Having a web interface might make it easier to use, and therefore help people.

    Unfortunately I don't have time to actively help with a web app (even if I did, I have little experience and would be of little use). My primary interest is the Python API and the mathematics used (the equations for modeling and the optimization routines used internally).

    If you want to build something on top of streprogen I am very positive. I can help with improving and fixing issues in streprogen itself and I can make comments, but I won't have time to help code the user interface. The bullet points you list seem sensible. A graphical user interface with step-by-step explanations sitting on top of streprogen, and perhaps automating PDF generation, would help a lot in making it more usable and visual. Simple tracking seems sensible. I would probably start out simple and get some feedback before implementing advanced ideas.

Hope this answers your questions. Keep me updated! Let me know if anything is unclear.

@tommyod
Copy link
Owner Author

tommyod commented Aug 3, 2020

@RPallas92 @Timonsc @jmromanos @josete89 and other interested parties: version 3.0.0 is out.

It includes:

  • New optimization routine for computing sets and reps. More flexible and with better defaults.
  • New options for setting variables, such as min_reps and max_reps on the Program object (previously only on DynamicExercise).
  • New options for specifying increase of weight. Choose 2/3 out of: start weight, final weight, increase per week in percentage. The third one will be interred from the other two.
  • Added compuation of Wilks score (might be useful for some).
  • More tests.
  • An additional example notebook.

I also changed the default parameters, so the release is not fully backwards compatible. Mostly the API is the same though :)

@RPallas92
Copy link

Thanks @tommyod, this release looks very good!
Some weeks ago, I was thinking on how to use streprogen to plan different blocks (volume, strength, peaking)
Do you usually use it for programming blocks?

Thank you

cc: @jmromanos @josete89

@tommyod
Copy link
Owner Author

tommyod commented Aug 4, 2020

@RPallas92 streprogen basically allows you to do periodization/blocks for 3 variables: volume (total number of reps), intensity (repetition weighted average of % of 1RM) and strength level. I manipulate all 3 in my training.

It's not super easy to get started. I wanted to allow arbitrary functions for periodization schemes, as this is the most general approach. So you have to supply functions to the Program instance. The drawback is that sending functions into objects is probably difficult to comprehend for a non-programmer. That being said, there are example notebooks :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants