During my first (and second) marathon training cycle 2016 I used the Jack Daniels 2Q training plans which are pretty much on on the complex side for individual workouts.
Workouts such as 9.6E + 5 * (3 min I + 2 min jog) + 4 * (1min R + 2 min jog) + 3.2E
are not only difficult to remember but it's actually pretty difficult to judge the overall duration and
overall distance.
Since I was playing around with the Rust programming language at this time I started a CLI tool able to parse the workout syntax and calculate total time and distance.
This was 2016, just a couple of months after Rust 1.0 was released. I have maintained the code over the years (including updating Rust versions, dependencies and rewriting the parsing code 3 times). 8 years later I also wrote a simple GUI that is embedded on this page (with egui, all code compiled to WASM).