By Ben Nadel
Open The App → a work in progress
I added the ability to cycle through the "Previous Notes" section at the top. It still shows the most recent notes by default. But, if you tap on the left/right portions of the area, you can now cycle through earlier notes.
I added a "View manifest" link that allows the user to jump directly from the "select next exercise" back to the workout manifest. Previously, there was no clean way to cancel-out of this workflow without hitting the back-button on the browser or using the global navigation. This won't be used very often; but, I have need of it from time-to-time, especially if I ever hit the "next exercise" button accidentally.
When jumping in between the "select from all" and "select from recent" exercise selection, the current movement-kind (all, push, pull, legs) is persisted in the URL.
The weight helper modal now has increment buttons (+2.5, 5, 10, 25) to help quickly jump up in weight. And, if there is a remainder weight, which doesn't fit evenly on both sides, it now shows a message to this effect.
All dates now render in the user's current timezone.
I've added the ability to jump back-and-forth between exercises in a workout. This is helpful when super-setting two different exercises. I don't love the placement of these buttons (at the top of the page). But, it will at least reduce the friction of always having to jump back to the workout manifest.
I've added the ability to toggle between the standard text keyboard and the numeric keyboard. This choice is persisted in a keyboardMode
cookie; and, is used as the default keyboard on subsequent page visits. I want the numeric one in 99% of cases.
I've added the ability to "apply" the weight in the plate-loading helper modal back to the last-focused weight input. This way, if you adjust the weight in the helper modal, it's easy to get it back into the current workout.
It's been a while since I made any updates - I stepped away to write a book and deal with some work issues. But, now I'm back and trying to make incremental improvements to the app.
When performing an exercise, it used to only show a previous note if the note was from the most recent exercise. Now, it will show any note from the most recent exercise instances. This removes the need to include the same note again if you want to propagate it.
I recorded my first workout using the Dig Deep Fitness app! Obviously, there are still many, many user experience (UX) issues at this time. But, at least I have something that actually works. So exciting!
This is a perfect time to reflect on John Gall's Law on Building Complex Systems:
A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: a complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a simple system.
I am starting small; and, I'm making this system work one update at a time. This gives me confidence that it will actually succeed.
I'm starting to flesh-out the management of exercises. You can see the list of "catalog" exercises (that is, those provided by the system). And, you can create your own exercise; though, there is no way to edit or delete an exercise at this time.
As a reminder, my first pass here is going to have no user-experience (UX) work - it's the least amount of UI that I can get in place that allows me to flesh-out the back-end functionality. Once that is done, I'll come back and build-out a user interface (UI).
UPDATE: I've included the current list of exercises at the bottom of this page. This should provide a better illustration of how I'm thinking about organization the data.
I have all the low-level data-access in place for creating and tracking workouts. Now, I need to populate the "catalog" of exercises. This has been a particularly hard task as naming is crucial. I want to have a naming scheme that makes sense without being overly pedantic.
In an ideal world, users would find just about everything they need right in the catalog. The catalog is my opportunity to properly configure each exercise with the correct plane of movement, the correct type of movement, the correct laterality of movement, and the correct joint involvement. It's this configuration that will make reporting and introspection of the data much more powerful for the user.
My biggest fear is that people misuse exercises and end up with data that is actually counterproductive (from a reporting standpoint).
One thing that I am struggling with is whether or not to be exhaustively comprehensive in my list of exercise variations. For example, just about anything you can do with a barbell you can also do with a Smith Machine or a weight-stack machine. So, should I include all of those in my catalog? For example, should I include "Barbell Bench Press", "Smith Machine Bench Press", and "Machine Chest Press"? Or, should I simply include "Barbell Bench Press" and then offer a way for the user to Use a Variation on any given exercise?
If the goal is to let the user fall into the "pit of success", I think I would want to err on the side of being comprehensive. But, there are also a seemingly infinite number of machines each with a different variation. For example, some "Chest Press" machines are bilateral (ie, both arms move in unison); and, some machines are unilateral (ie, each arm can move independently). Would both of these machines have to be represented in the catalog? And, if they are not, will the user end up using an incorrect configuration?
Perhaps, the best move is just to include the most common variations for the major movements (ie, chest press, overhead press, row). Or maybe, I should just go to my local Planet Fitness and include any machine that they have.
SELECT
against the running database.
HTTP
to HTTPS
. For now, I'm using Let's Encrypt to provision the SSL certificates for the application. I've also adding error handling and logging via BugSnag.
www
site and one for the app
site.
www.
(marketing site) and app.
(the fitness application). They don't do anything at all yet - they are just landing pages. Also setting up my local development environment to work with Docker.
Name | Plane | Laterality | Shoulder | Elbow | Wrist | Hip | Knee | Ankle | Spine |
---|---|---|---|---|---|---|---|---|---|
Back Extension | Sagittal | Bilateral | Extension | ||||||
Barbell Bench Press | Transverse | Bilateral | Flexion | Extension | |||||
Barbell Box Squat | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Barbell Clean | Sagittal | Bilateral | Elevation | Extension | Extension | Extension | |||
Barbell Clean And Jerk | Sagittal | Bilateral | Flexion | Extension | Extension | Extension | Extension | ||
Barbell Curl | Sagittal | Bilateral | Flexion | ||||||
Barbell Deadlift | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Barbell Decline Bench Press | Transverse | Bilateral | Flexion | Extension | |||||
Barbell Floor Press | Transverse | Bilateral | Flexion | Extension | |||||
Barbell Front Squat | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Barbell Front-Foot Elevated Split Squat | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Barbell Good-Morning | Sagittal | Bilateral | Extension | ||||||
Barbell Hanging Clean | Sagittal | Bilateral | Elevation | Extension | Extension | Extension | |||
Barbell Incline Bench Press | Transverse | Bilateral | Flexion | Extension | |||||
Barbell Lunge | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Barbell Narrow-Grip Bench Press | Sagittal | Bilateral | Flexion | Extension | |||||
Barbell Overhead Squat | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Barbell Pull-Over | Sagittal | Bilateral | Extension | ||||||
Barbell Rear-Foot Elevated Split Squat | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Barbell Reverse Lunge | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Barbell Romanian Deadlift | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Barbell Row | Transverse | Bilateral | Extension | Flexion | |||||
Barbell Seated Overhead Press | Frontal | Bilateral | Flexion | Extension | |||||
Barbell Shrug | Frontal | Bilateral | Elevation | ||||||
Barbell Single-Leg Romanian Deadlift | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Barbell Snatch | Sagittal | Bilateral | Elevation | Extension | Extension | Extension | |||
Barbell Split Squat | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Barbell Squat | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Barbell Standing Overhead Press | Frontal | Bilateral | Flexion | Extension | |||||
Barbell Step-Up | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Barbell Stiff-Leg Deadlift | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Barbell Sumo Deadlift | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Barbell Upright Row | Frontal | Bilateral | Abduction | ||||||
Barbell Walking Lunge | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Barbell Zercher Squat | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Bench Dips | Sagittal | Bilateral | Flexion | Extension | |||||
Cable Chest Fly | Transverse | Unilateral | Flexion | ||||||
Cable Narrow-Grip Row | Sagittal | Bilateral | Extension | Flexion | |||||
Cable Rope Curl | Sagittal | Bilateral | Flexion | ||||||
Cable Rope Overhead Triceps Extension | Sagittal | Bilateral | Extension | ||||||
Cable Rope Triceps Push-Down | Sagittal | Bilateral | Extension | ||||||
Cable V-Bar Triceps Push-Down | Sagittal | Bilateral | Extension | ||||||
Cable Wide-Grip Row | Transverse | Bilateral | Extension | Flexion | |||||
Chin Up | Sagittal | Bilateral | Extension | Flexion | |||||
Dumbbell Alternating Curl | Sagittal | Unilateral | Flexion | ||||||
Dumbbell Bench Press | Transverse | Unilateral | Flexion | Extension | |||||
Dumbbell Chest Fly | Transverse | Unilateral | Flexion | ||||||
Dumbbell Concentration Curl | Sagittal | Unilateral | Flexion | ||||||
Dumbbell Decline Bench Press | Transverse | Unilateral | Flexion | Extension | |||||
Dumbbell Front Shoulder Raise | Sagittal | Unilateral | Flexion | ||||||
Dumbbell Hammer Curl | Sagittal | Unilateral | Flexion | ||||||
Dumbbell Incline Bench Press | Transverse | Unilateral | Flexion | Extension | |||||
Dumbbell Lateral Shoulder Raise | Frontal | Unilateral | Abduction | ||||||
Dumbbell Lunge | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Dumbbell Lying Triceps Extension | Sagittal | Unilateral | Extension | ||||||
Dumbbell Preacher Curl | Sagittal | Unilateral | Flexion | ||||||
Dumbbell Pull-Over | Sagittal | Bilateral | Extension | ||||||
Dumbbell Reverse Lunge | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Dumbbell Reverse Shoulder Fly | Transverse | Unilateral | Extension | ||||||
Dumbbell Romanian Deadlift | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Dumbbell Seated Overhead Press | Frontal | Unilateral | Flexion | Extension | |||||
Dumbbell Shrug | Frontal | Unilateral | Elevation | ||||||
Dumbbell Single-Arm Row | Sagittal | Unilateral | Extension | Flexion | |||||
Dumbbell Single-Leg Romanian Deadlift | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Dumbbell Standing Overhead Press | Frontal | Unilateral | Flexion | Extension | |||||
Dumbbell Step-Up | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Dumbbell Walking Lunge | Sagittal | Unilateral | Extension | Extension | Extension | ||||
EZ-Bar Curl | Sagittal | Bilateral | Flexion | ||||||
EZ-Bar Lying Triceps Extension | Sagittal | Bilateral | Extension | ||||||
EZ-Bar Preacher Curl | Sagittal | Bilateral | Flexion | ||||||
EZ-Bar Reverse Curl | Sagittal | Bilateral | Flexion | ||||||
Goblet Squat | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Horizontal Leg Press | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Horizontal Single-Leg Leg Press | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Incline Leg Press | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Incline Single-Leg Leg Press | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Inverted Row | Transverse | Bilateral | Extension | Flexion | |||||
Lat Pull-Down | Frontal | Bilateral | Extension | Flexion | |||||
Lying Leg Curl | Sagittal | Bilateral | Flexion | ||||||
Lying Single-Leg Leg Curl | Sagittal | Unilateral | Flexion | ||||||
Machine Assisted Chin Up | Sagittal | Bilateral | Extension | Flexion | |||||
Machine Assisted Pull Up | Frontal | Bilateral | Extension | Flexion | |||||
Machine Chest Fly | Transverse | Unilateral | Flexion | ||||||
Machine Chest Press | Transverse | Bilateral | Flexion | Extension | |||||
Machine Hack Squat | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Machine Lat Pull-Down | Frontal | Bilateral | Extension | Flexion | |||||
Machine Lateral Shoulder Raise | Frontal | Unilateral | Abduction | ||||||
Machine Preacher Curl | Sagittal | Bilateral | Flexion | ||||||
Machine Reverse Shoulder Fly | Transverse | Unilateral | Extension | ||||||
Machine Seated Overhead Press | Frontal | Bilateral | Flexion | Extension | |||||
Machine Seated Row | Transverse | Bilateral | Extension | Flexion | |||||
Machine Triceps Extension | Sagittal | Bilateral | Extension | ||||||
Nordic Hamstring Curl | Sagittal | Bilateral | Flexion | ||||||
Parallel-Bar Dips | Sagittal | Bilateral | Flexion | Extension | |||||
Pull Up | Frontal | Bilateral | Extension | Flexion | |||||
Push-Ups | Transverse | Bilateral | Flexion | Extension | |||||
Rope Face Pull | Transverse | Bilateral | Extension | ||||||
Seated Calf Raise | Sagittal | Bilateral | Extension | ||||||
Seated Hip Abduction | Frontal | Bilateral | Abduction | ||||||
Seated Hip Adduction | Frontal | Bilateral | Adduction | ||||||
Seated Leg Curl | Sagittal | Bilateral | Flexion | ||||||
Seated Leg Extension | Sagittal | Bilateral | Extension | ||||||
Seated Single-Leg Leg Curl | Sagittal | Unilateral | Flexion | ||||||
Seated Single-Leg Leg Extension | Sagittal | Unilateral | Extension | ||||||
Smith Machine Bench Press | Transverse | Bilateral | Flexion | Extension | |||||
Smith Machine Decline Bench Press | Transverse | Bilateral | Flexion | Extension | |||||
Smith Machine Inline Bench Press | Transverse | Bilateral | Flexion | Extension | |||||
Smith Machine Rear-Foot Elevated Split Squat | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Smith Machine Seated Overhead Press | Frontal | Bilateral | Flexion | Extension | |||||
Smith Machine Split Squat | Sagittal | Unilateral | Extension | Extension | Extension | ||||
Smith Machine Squat | Sagittal | Bilateral | Extension | Extension | Extension | ||||
Standing Calf Raise | Sagittal | Bilateral | Extension | ||||||
Standing Single-Leg Calf Raise | Sagittal | Unilateral | Extension | ||||||
Straight-Arm Lat Pull-Down | Sagittal | Bilateral | Extension | Flexion | |||||
T-Bar Narrow-Grip Row | Sagittal | Bilateral | Extension | Flexion | |||||
T-Bar Wide-Grip Row | Transverse | Bilateral | Extension | Flexion | |||||
Underhand-Grip Inverted Row | Sagittal | Bilateral | Extension | Flexion | |||||
Underhand-Grip Lat Pull-Down | Sagittal | Bilateral | Extension | Flexion | |||||
Vertical Leg Press | Sagittal | Bilateral | Extension | Extension | Extension |