Author: Henrik Tikanvaara


There is a short tutorial which I suggest you go through first. When you get interested in the details, refer to the rest of this documentation.


Fitness is a program for collecting and analyzing gym weight training results. It means you need to keep a training log, usually a small notebook or paper with you when you go to the gym and record your training results there. When you return from the gym you enter the information into Fitness which you can then use to analyze the results and form new training programs based on your results in the gym. The premise of Fitness is training to failure, eg. you select some exercise resistance and do as many repetitions as you can. You then record the number of repetitions and the resistance (weight) used in the log.

Beginning an exercise program

For Fitness to work, you need to follow a fixed exercise program. The most basic type of fixed exercise program would consist of selecting exercises to train your whole body. You would then keep on repeating this exercise program, resting some number of days in between. In practice it is usual to split the exercise program over many days (eg. Day 1, Day 2, Day 3), training different body parts on different days. When you have done the last training day workout, you rest some number of days and and the program then repeats.

You need to design this exercise program yourself and enter the details into Fitness. You then need to perform the program once, entering the initial data (exercises, repetitions and weights used) into the log. Before you have done this, Fitness cannot do anything useful.

Main window

Picture of the main window

Menu "Training log/Edit"

The main window is the heart of the program, the most needed analysis functionality is found here. The main window is divided in four distinct areas.

Day list widget

In the upper-lefthand corner of the window resides the Day list widget. Exercise programs are divided into different days, days can be either names of the weekdays you train on, or more abstract names describing the workout split such as "Upper body", "Lower body" etc. When you click on the name of an exercise day, analysis is performed.

Exercise list widget

Clicking on the name of an exercise performs exercise specific analysis.

Optimum reps checkbox

The optimum reps option analyzes exercise data in an attempt to find the optimal number of repetitions for an exercise for maximum strength gain. It is a very old feature and I would not trust the results it presents, but I have not had the heart to remove the code altogether yet. The logic of it is something like this: If on first exercise week you perform 8 repetitions at some weight, and on the next exercise week you are able to perform 10 repetitions at the same weight, then 8 repetitions is tagged as a good repetitions range to train at. But the model is clearly overly simplistic, too many variables affect strength gain.

"Progress analysis" / "Training weights" combobox

In the top middle of the main screen there is a combobox which can be set to either "Training weights" or "Progress analysis". When "Progress analysis" is selected and an item in either the Day or Exercise list box is clicked, progress analysis is performed on that item.

Progress analysis on an exercise

All exercise days in the exercise log are scanned for instances of the selected exercise. The found exercises are then printed out in a table. First column in the table indicates the date of the exercise, then comes a number which tells how many days had passed between the specific date and the previous date. Then the exercise sets are printed in order. If a set had improved or gotten worse relative to the same set in a previous exercise day, the change in strength is printed. Positive progress is printed in green, while negative change is printed in blue. The numbers in parentheses indicate change in theoretical 1 repetition maximum calculated from the set (repetitions and weight used).

Training weights

In the top middle of the main screen there is a combobox which can be set to either "Training weights" or "Progress analysis". When "Training weights" is selected and an item in either the Day or Exercise list box is clicked, optimal training weights are calculated on the selected item. The program looks at the latest time you trained, and adjusts training weights so that exercise repetitions (defined in exercise settings) would be reached. So, if you trained at some weight and were able to perform too many repetitions, the weight will be adjusted upwards. Similarly, if a weight proved too challenging, a lower weight will be suggested for the next workout.

Training programs

In the main window, there is a menu called "Training plan". From there you can perform various familiar actions on training programs, such as loading, saving, etc. The most interesting menu item is "Edit" which lets you edit your training program.

Editing training program

When you select "Edit" menu item, the main exercise program dialog opens. There you can set a descriptive name for you exercise program, set the file name of your exercise log, and add exercise days to the program. Fitness data consists two files, the training program file and training log file. The training program file defines training days and exercises, and the training log is used to log data of actual exercise sessions. The training program is split into units called training days, but of course you could only have a single training day, whole-body workout which you could then name "Whole body" or something similar.

Exercise days

Exercise days are an organizational structure, which live inside an exercise program and host some number of actual exercises under them. In the exercise program dialog one can create, delete and edit them.

Exercise day dialog

Picture of an exercise day dialog
In the exercise day dialog, one can add, edit and delete exercises for an exercise day and change their order.

Edit exercise dialog Logo