Posts tagged fitness

Lifescripts: Stochastic routines

:: flipism, racket, coding, fitness

By: Pookleblinky

Since November I’ve been doing a form of intermittent fasting I created based on coinflips, that I call coinfasting. Every morning flip a coin. Heads, you eat, tails you fast. The expected value of heads over 7 days is 3.5, so it’s identical in effect to a scheduled alternate day fast.

(As an aside: since August I’ve lost about 22kg, or about 24% of my bodyweight.)

The introduction of randomness makes things interesting: you can’t just binge on heads days, because you may get a bunch in a row. And you can’t restrict too much on fast days, because you may get a bunch of fast days in a row. This makes it easier to dial in on the right amount of calories, and lets the meals be a bit less absurd than on a normal ADF.

After doing this a while, I love it. It feels fun and sustainable, and is easily modifiable. When I hit maintenance, I can such as switch heads to TDEE+15%, tails to TDEE–15% easily. The only actual daily habit that needs to be engrained is one cointoss.

I decided to embrace more flipism.

Each morning I do 20 minutes of cycling. On heads days I add another 30 minute afternoon cycling session. This gives a baseline of 140 minutes, which is the minimum recommended dose of cardio, and averages over time to another 105 minutes for a total of 245 minutes a week. Maximum: 350 minutes a week. This is a good amount of cardio, as the maximum effective dose of cardio is about 450 minutes a week The Right Dose of Exercise for a Longer Life.

So that’s both calories and LISS out of the way, with one coinflip.

I then based my kettlebell on dice. After flipping the coin, roll 2d6 and multiply by a number to get the number of swings that day. I chose a multiplier of 10. On average, 70 swings a day, maximum 120. This is because any more swings right now would bite into my deficit too much. Later, I can toggle the amount based on the coinflip: heads 25, tails 10. This’d bring me to a maximum of 300 swings a day, and an average of 210.

So that’s what I’d been doing for a while. Some days I’d physically flip a coin and roll dice, other days I’d just ask my phone to do so.

I decided to automate this.

I created a git repo called Lifescripts, and began making small racket programs to at first simply do what I’m already doing.

Now I can simultaneously flip and roll for the day with one command.

The git repo is here: pookleblinky/lifescripts

I then added a script to decide whether to engage in argument, a script to decide whether to cuss. One to decide the music of the day, one to decide which topic to boost for the day. A script to decide whether to refactor or write new code. One to assign a random small task like doing kettlebell swings or clean something.

My workout routine

:: fitness

By: Pookleblinky

    | Day   | Type        | Main  | Secondary      | Assistance                                  | Strongman    |
    | Mon   | Heavy Upper | Bench | Row            | kettlebell pullups kroc rows dumbbell bench | loaded carry |
    | Tues  | Heavy lower | Dead  | Squat          | kettlebell Lunges                           |              |
    | Wed   |             | OFF   |                |                                             |              |
    | thurs | Upper       | OHP   | Rows           | kettlebell Bands                            | Loaded carry |
    | fri   | Lower       | Squat | Ruck Complexes | kettlebell Sprints                          |              |
    | sat   |             | OFF   |                |                                             |              |
    | Sun   |             | OFF   |                |                                             |              |

Each day has a main lift, a secondary lift, an assistance, and a strongman thing. Assistances don’t matter much. I could technically do whatever the hell I want after main and secondary, but I prefer to only have one or two other things mixed in. The best assistance is the movement itself, after all. I’ll throw in the listed assistances, and maybe something else if I feel like it.

Secondary lifts are generally BBB-style sets: lower intensity, higher rep range. I prefer this, it gives a better sense of balance to a workout and to the week.

Everything is a multijoint compound movement, and I try to keep the ratio of push to pull as close to 1:1 as possible, to the point of doing more pushes than pulls.

Each workout is structured in the form of giant sets: main, assistance, secondary, rinse and repeat. Rest in between giant sets.

Mondays are heavy uppers: heavy bench, heavy rows, finished by kroc rows. Loaded carries.

Tuesdays: heavy lower: heavy deadlift, BBB-style squats, finished by lunges. Squats after the deadlift sets, this lets me get lower back volume without increasing deadlift volume to the point where it’d become risky and too draining.

Thursdays: Upper: heavy OHP, BBB-style rows. Loaded carries.

Fridays: lower: squats, and ruck/complexes. A lot of people would put the 2 day rest after deadlift, but a lot of people also don’t ruck after doing heavy squats. Fridays are the days I wish I had a prowler.

Squats: twice a week. One heavy, one not.

Rows: twice a week. One heavy, one not.

This routine gives me a nice balance between push/pull, uses every basic human movement, hits each muscle group with sufficient frequency, and provides enough recovery. It’s also flexible enough to allow me to plop new things in without changing too much: I could plug in almost any kind of periodization, cycle out deadlifts every other week with something else, adopt 531 or such, and really not alter the whole thing.

workout.org

:: orgmode, fitness

By: Pookleblinky

I believe that org-mode will drive you mad if you try to use more than the bare minimum of features necessary for what you need to do.

Here’s how I’m using it to track workouts.

I have a workout.org file, which is in org-agenda-list

Workout.org has a local status header:

#+TODO TODO STARTED | DONE

The STARTED status is just handy to have, even if I don’t use it much.

workout.org contains the following structure:

Datetree
Schedule
Regimen
Stats

I have the template

("w" "Log Workout" entry (file+datetree+prompt
     "~/org/workout.org") "* %? %U" :empty-lines 1)

in my org.el which lets me create a new entry in the datetree. This entry is only to log details of the workout: weights, level of perceived effort, etc. The workout tasks are outside the datetree, in the schedule node. The schedule node contains subheaders of repeating scheduled todos:

** TODO Daily: 300 KB swings
DEADLINE: <2017-06-15 Thu +1d>
** TODO Monday: Squat/row
DEADLINE: <2017-06-19 Mon +1w>

etc. I can clock in, mark done to clock out, and then log the details in the datetree. Keeping the todo separate from the details seems like a good idea, as I don’t have to go hunting around: every workout todo is in a single spot. Each workout task has a link to a description in the regimen node: giant set blah, use these accessory movements blah, etc.

Note that these tasks are deadlines, not scheduled. org-mode considers a scheduled task to be when the task is to be started. A deadline task will appear as DEADLINE on the designated day, and org-agenda will show the number of days til a deadline.

The regimen node just contains such as giant set templates, notes on progressive increments, etc. Eventually I may use org-babel to add a such as a 531 calculator and template generator.

Stats contains my bodyweight, BF%, not in a datetree but just time stamped.

This is the simplest setup that does what I want. I could get fancier: adding tags, tweaking a report function that’ll show a plot of weights used for a specific lift over time, setting org-habit properties, writing a function to slurp the data right out of my phone’s FitNotes .csv into the appropriate places, etc.

None of that’s really necessary. FitNotes tracks and graphs specific movements and muscle groups and weights much more nicely than I would do myself. Org-habit, while useful for some things, doesn’t really make sense in this context. And directly integrating FitNotes data seems redundant. What workout.org does allow that fitnotes doesn’t, is the ability to track and schedule things in plaintext, portably.

The one justifiable increase in complexity is the abovementioned desire to incorporate a workout calculator and generator directly into the file via org-babel. For instance, being able to generate a datetree pre-filled with 531 workouts for a specified number of mesocycles. However, I’m not doing 531 although I am inspired by it. If I do switch over, I’ll probably get around to it.

That’s workout.org. It uses barely any of org-mode’s features, does what I need it to do, and can be endlessly refined into one of those org setups where the user seems to be attempting to use every feature of org-mode to weave an elaborate robot web around their lives.

The prime rule in emacs is to start from scratch. The absolute worst thing you can do is plop someone else’s stuff into your setup and expect it to work for you. In org-mode especially, this is vital. Every one of those absurdly-polished gems of org mode configurations you see, where the blogger seems to have automated themselves away, is the result of years of tweaks and personal itch-scratches built up over time in the way that only lisp allows. Few will want to show you how they did things the lazy way, only the final result guaranteed to utterly annoy anyone who plops it into their config and tries to use it. In org mode especially, that lazy way that doesn’t show off any of the really nifty features is probably good enough for 80% of the time, and can easily be used as a guide by a newbie. If they’re foolish enough to steal it for themselves, at least it’ll be simple enough they will be able to understand it and find out how to tweak it. Either way, it’s much more useful than showing the fully chromed-out inscrutable code that the config inevitably becomes as emacs is tweaked into conforming to them.