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

Circuit-based training representation #3

Open
sashaafm opened this issue Mar 13, 2021 · 4 comments
Open

Circuit-based training representation #3

sashaafm opened this issue Mar 13, 2021 · 4 comments
Labels
enhancement New feature or request
Milestone

Comments

@sashaafm
Copy link

Hello 👋, I've become quite interested in Traindown and using it for my training logs, and possibly develop some personal software on top of it. Great work so far!

I've read the guide, but I could not find the proper way to represent circuit-based training like EMOMs? If one does a circuit of 20 rounds it's too cumbersome (and may be error-prone) to just repeat the same information over and over.

Could some kind of loop directive could be added to better represent this?

I'm still quite new to Traindown, but after I get a better hang of it I'd be happy with attempting to suggest some syntax for this, if it's not possible to represent with the current version.

Thanks for your work and attention 🙏

@scottt2
Copy link
Member

scottt2 commented Mar 14, 2021

Hey @sashaafm !

Thanks for your interest in Traindown.

You can get at expressing simple circuits using the + operator for supersets but it is very suboptimal for cases like EMOMs.

Here is a discussion about a new | operator for denoting loops: #1 (comment)

An example would be something like:

| # Rest: EMOM
| Pull-ups: 15, 12, 12, 10, 10
| Box jumps: 5, 5, 5, 5, 5
| Dips: 20, 18, 15, 15, 15

I'd be happy with attempting to suggest some syntax for this

I would love to hear your suggestions. I have my own ideas about this but I honestly don't do a whole bunch of circuit based training so I would rather defer to users that live it for guidance.

So TL;DR--we don't yet have a great way to represent circuit base training. We have a proposal to use the |. I would love to hear your thoughts on how you would like to express this.

@scottt2 scottt2 pinned this issue Mar 14, 2021
@scottt2 scottt2 transferred this issue from traindown/traindown Mar 14, 2021
@scottt2 scottt2 added this to the Circuits milestone Mar 14, 2021
@scottt2 scottt2 added the enhancement New feature or request label Mar 14, 2021
@scottt2
Copy link
Member

scottt2 commented Mar 14, 2021

Reference to previous thread discussing circuits

#1

@daveliepmann just a friendly ping letting you know the discussion has moved to here. I am behind on implementing new features due to spending time getting some of the library functionality roughed in.

I have tentatively marked wanting to have this feature shipped within one month. Let's hash out the details here and get this thing built.

@sashaafm
Copy link
Author

Hello @scottt2, sorry for the delayed response.

My idea for circuit training is that it should be flexible enough to cover the following cases:

  1. EMOM: have to represent how many rounds and how many reps per exercise (or round). Should support multiple exercises in the same circuit (i.e., each round may have a different exercise).
  2. Tabata: similar to EMOM but rest time and round time should be represented as well. Thus, besides supporting classic Tabata (20 seconds on; 10 seconds rest).
  3. For reps: support variable round time. For example, when performing rounds for target reps (e.g., 15 kettlebell snatches in the least amount possible with 45 second rest).
  4. Crossfit-like: I believe the cases above combined already support Crossfit-like training. Nevertheless, ideally Traindown would be flexible enough to represent any possible Crossfit workout (which I believe is quite a range of possibilities).

The current proposal:

| # Rest: EMOM
| Pull-ups: 15, 12, 12, 10, 10
| Box jumps: 5, 5, 5, 5, 5
| Dips: 20, 18, 15, 15, 15

Does work for something like classic EMOM and Tabata. If we use the # Rest: <circuit_type> to accept both EMOM and Tabata then the user/client already knows it means 1 minute on/0 second off, or 20 seconds on/10 seconds off, respectively.

However, it doesn't support:

  1. Variable Tabata
  2. For reps
  3. Probably some CrossFit workouts

As an improvement I believe we could have something like this:

| # Rest: [ EMOM | TABATA | <ON>/<OFF>] # => the last option represents ON/OFF in seconds (takes an integer for both values)
| <EXERCISE>: <REPS> [<TIME>]t # => the TIME option represents how long that round took in the given time unit (default to seconds)

As an example for variable Tabata

| # Rest 30/15 # => rounds of 30 seconds with 15 seconds of rest
| Pull-ups: 5 5 4 4 3
| Squat: 8 8 7 5 5

As an example for a circuit done for reps:

| Pull-ups: 10 65t 8 60t 6 75t
| Squat: 10 45t 8 45t 8 45t 

This is just a first proposal to enhance the proposal you gave 🙂 I'm sure there are still some cases missing. I find Traindown quite interesting and I think I'll give it a shot to post another improved proposal soon.

@scottt2
Copy link
Member

scottt2 commented Apr 1, 2021

Oooh @sashaafm I am digging where you're going with this!!

I'll start playing around with the proposal in the Dart library because that's the one I use most due to the mobile app. Maybe once we start to settle the UX we can kick out some release candidates to the client libs?

I should have time in the next week to explore this in earnest. Thanks so much for the collaboration on this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants