Skip to content

Adaptive training mode#67

Draft
Sulroy wants to merge 8 commits into
ranelpadon:masterfrom
Sulroy:ema
Draft

Adaptive training mode#67
Sulroy wants to merge 8 commits into
ranelpadon:masterfrom
Sulroy:ema

Conversation

@Sulroy
Copy link
Copy Markdown

@Sulroy Sulroy commented Apr 26, 2026

This is only an early proposal of an idea I had from Monkeytype's weakspot funbox and kopachef's fork of Monkeytype.
I'm using an exponential moving average (EMA) to adapt generated phrases to my current weaknesses. The score of each n-gram depends on typing speed, number of mistakes, and consistency*.
All of the parameters are user facing, with explanations on what they do in the tooltips, which is important in my eyes as I believe every user has different needs.
You can test it here. I recommend using only 1 repetition and many combinations for the EMA mode, and lower the required accuracy as the algorithm will drill your mistakes automatically.

I'm making this pull request to see if people are interested in that, and if so I will work on making a proper feature, not just a personal prototype.

*currently has no effect on bigrams, as I use the normalized variance of inter-key intervals between each character of the n-gram, but while typing this message I just thought of using some sort of ratio between the intervals and the typing speed

…stency independant of each other in the score calculation.

mistakes are tracked trough the amount of chars since last mistake on that metric. That allows us to have continuous mistake tracking rather than discrete, as the EMA works way better with continuous variables.
@Sulroy
Copy link
Copy Markdown
Author

Sulroy commented Apr 29, 2026

Speed, consistency and accuracy are now completely independent. you can tune the parameters to focus more on a certain aspect.
Please keep in mind that you need 5-10min of typing (at least for me as I'm slow) to gather enough samples before it works properly.
I made a spreadsheet to visualize your profile, you just need to make a copy and paste the CSV export on the top left. It shows your weak and strong points on every n-gram.

If you have questions you can either open an issue on my fork or comment on this draft's thread.

Sulroy added 2 commits May 1, 2026 17:37
made sure combined weight is never infinite as it would cause weightedPickIndex to always pick the first infinite weight
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant