zeeguu / web

Frontend for the zeeguu web application.
https://www.zeeguu.org
3 stars 5 forks source link

fixed length exercise session is a bit funny #428

Open mircealungu opened 1 month ago

mircealungu commented 1 month ago

today i had 14 words to practice.

i did one session, and I am in the following situation:

image

there are still three words to practice. my thinking, as a user is: why weren't they included in the practice? i wonder what's the simplest way to solve such situations?

tfnribeiro commented 1 month ago

The fixed number of words is worth reviewing in the future. There is a balance to find, and due to the randomness of selecting exercises, sometimes despite the 13 words we can select, some of them will be placed in a multiple bookmark exercise, where only one or two are reviewed.

However, in this topic - sometimes I see that sometimes when doing exercises with for example 5 bookmarks there is a split of like 2 sessions. Personally, I think that now that we can just keep doing exercises and it's quite responsive it's OK, but tuning the concept of an "Exercise Session" is worth looking at.

tfnribeiro commented 1 month ago

Having a look at this, I have found that it's all due to the fact we have introduced a few exercises that require 3 bookmarks. This means that out of the 12, if we have 2 exercises that require 6 bookmarks, we essentially will only practice 6 more (if they are all used in 1 bookmark exercises).

I think since we currently we use a random assignment, it makes it somewhat inconsistent, where some sessions can be quite small. I think to solve this, we could attempt to not consider the extra bookmarks as "used", but this would mean that we could have some overlap with the bookmarks. Another alternative could be to increase the number of bookmarks we review, but we limit the Exercises (rather than the bookmarks) to make it consistent of doing at least 10 bookmarks each session.

tfnribeiro commented 1 month ago

A simple solution for this might could be:

mircealungu commented 1 month ago

A simple solution for this might could be:

  • We set a maximum session to be, let's say 15 bookmarks. If the total bookmarks is under that number, we then just do all those bookmarks.

My original point is the following: if I'm scheduled to rehearse 20 exercises today, then the fact that one "session" is going to test 10 or 15 is still quite arbitrary anyway. Why not schedule all the words that are due today?

I guess the answer is: what if somebody has 99+ words? In that case, I guess it would be useful to have an upper bound, but 10 and even 15 words seems quite low for me...

  • To ensure that they are all reviewed in a single session, we include a new property in the exercises: "totalBookmarksTested", this allows us to say that for instance, in the Match we only really test 2 bookmarks, and in the multiple choice that take multiple bookmarks we only test a single one. The only issue with this is in the Match we don't really know which words the user might get wrong/right, so they could theoretically get one of the words they got correct twice that session.

This is a better idea than what we have now I think.

  • Otherwise if we have more than 15, we use our fixed number of maybe 10 that means at most a user with 50 words to review would have a total of around 5 exercise sessions.

If we keep the current system with a limited number of exercises in a session then we should at least use this opportunity to make it clear to the reader what's happening. So instead of:

image

we could do something like:

image

do you see what I mean?

tfnribeiro commented 1 month ago

My original point is the following: if I'm scheduled to rehearse 20 exercises today, then the fact that one "session" is going to test 10 or 15 is still quite arbitrary anyway. Why not schedule all the words that are due today?

I guess the answer is: what if somebody has 99+ words? In that case, I guess it would be useful to have an upper bound, but 10 and even 15 words seems quite low for me...

I think it's hard to say, obviously it's rather subjective what an exercise session should be. I think if we had a time objective for each user it would allows us to check - have they completed their 5 minutes goal for today? And base the decision from there. We can try to set the upper bound to 20 and see how that feels. I think in the current setup we could end with a very long review screen with 20 word sessions. Maybe in the desktop we could sorta have a two column design, the problem would still remain for the phone screen:

image

If we keep the current system with a limited number of exercises in a session then we should at least use this opportunity to make it clear to the reader what's happening.

I think this could work. Personally, I don't think it makes so much of a difference to not show the words you got correct/wrong, maybe just adding the string above the buttons could be enough:

image

mircealungu commented 1 month ago

My original point is the following: if I'm scheduled to rehearse 20 exercises today, then the fact that one "session" is going to test 10 or 15 is still quite arbitrary anyway. Why not schedule all the words that are due today? I guess the answer is: what if somebody has 99+ words? In that case, I guess it would be useful to have an upper bound, but 10 and even 15 words seems quite low for me...

I think it's hard to say, obviously it's rather subjective what an exercise session should be. I think if we had a time objective for each user it would allows us to check - have they completed their 5 minutes goal for today? And base the decision from there. We can try to set the upper bound to 20 and see how that feels. I think in the current setup we could end with a very long review screen with 20 word sessions. Maybe in the desktop we could sorta have a two column design, the problem would still remain for the phone screen:

image

Nice. Alternatives:

If we keep the current system with a limited number of exercises in a session then we should at least use this opportunity to make it clear to the reader what's happening.

I think this could work. Personally, I don't think it makes so much of a difference to not show the words you got correct/wrong, maybe just adding the string above the buttons could be enough:

image

That's a good point. What I would have liked is that that message is at the top, because I think it might be better for them to be aware that they still have words to study that are due today. That seems to me to be important info that should not be relegated to the bottom of the screen, potentially outside of the screen on small devices?

If we simply move it at the top as below, it also feels like there's too much context switching.

image

Now, the more I think about this, the more a separate screen could make sense. A screen that simply asks if they want to extend the session with more words. If they want, then they don't even review the words here, but rather continue with the new words. If they don't want, then they can go to words review.

Do you see what I mean?

mircealungu commented 1 month ago

Note that your wording with "Words progressed" and "Words that you'll need to repeat" should probably be kept irrespective of the horizontal layout on big screens, or if the layout stays the same!

tfnribeiro commented 1 month ago

Yes, the little tiles it's part of the whole finding out a better wording for them.

I think what we could do indeed is to have some way of revealing the words reviewed or going to a review screen, maybe that would make more sense. Maybe just revealing instead of loading a new page would make it snappier. Could be the idea of a collapsible component that we have talk in the past. I could look into developing that. I feel like it would fit here.

mircealungu commented 1 month ago

collapsable panel... or just a visibility boolean would be fine indeed here :)

tfnribeiro commented 1 month ago

Yes, that is essentially what the component would do! I will get it ready!

tfnribeiro commented 1 month ago

First mock-up, what do you think? I think the collapsible menu might need a bit more responsiveness - but I am not sure exactly what to give it, maybe a background color or something?

Desktop Mobile
image image
image image
tfnribeiro commented 1 month ago

I also experimented with + / - and some border at the bottom to people see it's part of the colapsable menu :

image

image

mircealungu commented 1 month ago

I think I like more the arrows. I think the lines are too thick and too black. More subtle would be better (i.e., minimize non-data ink). A single underline for the title, e.g. Words you have progressed is better than two horizontal lines per category.

Unfortunately, even with the collapsable component I find the message of the page a bit unfocused.

and if i continue, then i never get to see the word review?

Do you see what I mean?

mircealungu commented 1 month ago

although, i guess we could solve it all based on phrasing of the text maybe? something like this would help things be more focused: top part encouraging to continue with a new "segment"; bottom part summary of current segmennt? and in this case we can start with the panel un-collapsed. such that the learner can collapse the correct words to get faster to incorrect ones? though scrolling might still be faster?

image
mircealungu commented 1 month ago

or something like this:

image
tfnribeiro commented 1 month ago

My fear of leaving it uncollapsed is that the user wouldn't see the wrong words in a small screen - if we assume a situation where a user gets most words correct it's could be very likely they wouldn't see the wrong words.

It seems to only make it more confusing to introduce a segment & session idea to me. I think it's fine to say that You review these words to now, and not worry too much about segment/session distinction for a user. If we are too worried about the time spent this session, we can just change it to "Time spent exercising: " and that would solve that issue.

Maybe it would be more important to look at the words that are incorrect rather than the ones that are correct, so changing the order would be good?

I think we also have an issue if we do this, then we also need to adapt the screen to say you have words that can be started to be practiced, because before it would just rely on the keep exercising.

So to recap, I would keep the following:

Screen once all words are reviewed

I don't know about this screen, but we certainly have to think about a way to make it "flow" for a user.

tfnribeiro commented 1 month ago

I also realized there is the matter of if you are reviewing a word a second time, and you get it wrong - you technically can review it in the same day - so you could have this screen appear and you are reviewing the same word.

mircealungu commented 1 month ago

Uff. This is complicated. Y know what's the simplest thing? Create a session with all their words. If they have 100 so be it.

Less code for us. And not work for the lazies. Win - win!

They can always stop before the end of the 100 words, and they will anyway have a feeling of progress because of your badge.

On Fri, 9 Aug 2024 at 11.58, Tiago Ribeiro @.***> wrote:

I also realized there is the matter of if you are reviewing a word a second time, and you get it wrong - you technically can review it in the same day - so you could have this screen appear and you are reviewing the same word.

— Reply to this email directly, view it on GitHub https://github.com/zeeguu/web/issues/428#issuecomment-2277484838, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADRNB74TIB5PSXPSQYRQOTZQSACXAVCNFSM6AAAAABK4XI7CKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENZXGQ4DIOBTHA . You are receiving this because you authored the thread.Message ID: @.***>

mircealungu commented 1 month ago

And wrt. Therm not seeing the wrong words... Put those at the top?

On Fri, 9 Aug 2024 at 13.55, Mircea Filip Lungu @.***> wrote:

Uff. This is complicated. Y know what's the simplest thing? Create a session with all their words. If they have 100 so be it.

Less code for us. And not work for the lazies. Win - win!

They can always stop before the end of the 100 words, and they will anyway have a feeling of progress because of your badge.

On Fri, 9 Aug 2024 at 11.58, Tiago Ribeiro @.***> wrote:

I also realized there is the matter of if you are reviewing a word a second time, and you get it wrong - you technically can review it in the same day - so you could have this screen appear and you are reviewing the same word.

— Reply to this email directly, view it on GitHub https://github.com/zeeguu/web/issues/428#issuecomment-2277484838, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADRNB74TIB5PSXPSQYRQOTZQSACXAVCNFSM6AAAAABK4XI7CKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENZXGQ4DIOBTHA . You are receiving this because you authored the thread.Message ID: @.***>

mircealungu commented 1 month ago

For those that have 100 words we can simplu display an info box - "these are a lot. You don't have to finish. Do as many as you can and you'll see they decrease"

On Fri, 9 Aug 2024 at 13.55, Mircea Filip Lungu @.***> wrote:

And wrt. Therm not seeing the wrong words... Put those at the top?

On Fri, 9 Aug 2024 at 13.55, Mircea Filip Lungu @.***> wrote:

Uff. This is complicated. Y know what's the simplest thing? Create a session with all their words. If they have 100 so be it.

Less code for us. And not work for the lazies. Win - win!

They can always stop before the end of the 100 words, and they will anyway have a feeling of progress because of your badge.

On Fri, 9 Aug 2024 at 11.58, Tiago Ribeiro @.***> wrote:

I also realized there is the matter of if you are reviewing a word a second time, and you get it wrong - you technically can review it in the same day - so you could have this screen appear and you are reviewing the same word.

— Reply to this email directly, view it on GitHub https://github.com/zeeguu/web/issues/428#issuecomment-2277484838, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADRNB74TIB5PSXPSQYRQOTZQSACXAVCNFSM6AAAAABK4XI7CKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENZXGQ4DIOBTHA . You are receiving this because you authored the thread.Message ID: @.***>

tfnribeiro commented 1 month ago

Okay , yes - I don't see why not! At least it's worth a shot! :)

And wrt. Therm not seeing the wrong words... Put those at the top?

That's what I am doing now! I think it can work - let's see!

tfnribeiro commented 1 month ago

This is what I have now, and I have removed the limit:

image

image

tfnribeiro commented 1 month ago

There is just one thing I realized - if the user has 50 words already, maybe we should say a little warning before keeping to exercise ? But I think I like it!

mircealungu commented 1 month ago

This is what I have now, and I have removed the limit:

"removed the limit" means that now if I have 40 words due to day, i do all of them at the same time? this conversation got so long that I've a hard time following!

tfnribeiro commented 4 weeks ago

This is what I have now, and I have removed the limit:

"removed the limit" means that now if I have 40 words due to day, i do all of them at the same time? this conversation got so long that I've a hard time following!

Yes, that's what I meant by removing the limit, now the user will get all the words that are scheduled without a preset limitation.

Now, the only thing I am trying to figure out is how to explain to users that they might have extra words to learn besides the ones that they have scheduled. In this situation, there are also 2 possibilities: Either they are at the limit words they have to learn (which we set at 50) or not, where they could just start learning more. But I also think this can be a bit confusing.

Maybe the easiest is, if no exercises are detected I just show the "Back to reading" message rather than "Keep Exercising"

tfnribeiro commented 4 weeks ago

Okay, so I have tried to gather the different possible states the user can end up with:

There is:

  1. Simplest Case: The user completed all the exercises that were scheduled for today, and no bookmarks are available to add.
  2. The user completed all the exercises scheduled for today, but they can start learning new bookmarks, e.g. from a new text.
  3. The user completed all exercises, but got some wrong, meaning there are still some bookmarks that should be re-done, say that they completed X amount, but Y are remaining.
  4. Same as 2., but the user is already studying 50 bookmarks. In this case, alert the user and suggest they return to reading.

These cases make it a bit hard to handle all situations, but I think I have found an OK compromise, let me know what you think!

Examples
1.
image
2.
image
3.
image
4.
image
mircealungu commented 3 weeks ago

Love this Tiago!!

In case 1: why do we have "keep exercising" if the situation is "there are no more words for you to practice"? Or is the situation: All the words that were due today are done so the user can still practice some of the words that are not due today?

In case 2, does the code get more complex if the button becomes: Start Exercising New Words? Or would the UI be too complicated?

In case 3, could the button become: Practice the remaining 4 words due today? Or that would be too big a button I guess?

In case 3 we're in this situation because the user got four words wrong, right? Maybe we could say that explicitly? You still have 4 word to revise today because you got the corresponding exercises wrong?. Or could the reason be something else?

All these above are minor observations, so feel free to handle them quickly and send a PR when you want. After all, this feature should also be usability tested with users for better fine-tuning :)

tfnribeiro commented 3 weeks ago

In case 1: why do we have "keep exercising" if the situation is "there are no more words for you to practice"? Or is the situation: All the words that were due today are done so the user can still practice some of the words that are not due today?

This was an oversight, in case one we should just have the Back to Reading button.

In case 2, does the code get more complex if the button becomes: Start Exercising New Words? Or would the UI be too complicated?

I think this would be nice and I have done this now. I had to increase the button size slightly, but it still looks OK.

In case 3 we're in this situation because the user got four words wrong, right? Maybe we could say that explicitly? You still have 4 word to revise today because you got the corresponding exercises wrong?. Or could the reason be something else?

There could also be the case where a word progresses into productive knowledge and the user can do it right away. I had thought about the possibility of always repeating the ones you got wrong, but I think that would mess up with our schedule too much. If you are at stage 16 and go back to 8 you don't repeat the word immediately for example.

While working on this I have also given it some thought, and I still think maybe it is good that sessions aren't extremely long (> 20 words) as I have seen my girlfriend go over words at the revision stage, and if there is many words I think this revise step might be a bit too overwhelming. Like you say, we can maybe do some testing before rolling this out completely, but I like informing better the users about the learning new words/words that are due to study.

I am updating the screenshots to the current state of the branch. For clarity, I have also decided to just say Words Correct and Words Incorrect to simplify the language there as well (this is shown in screenshot 3).

Desktop Mobile
1 - Now only the reading back button
image image
2 - Now I have made the button say: "Start Learning New Words"
image image
3- There are still some words remaining due to errors
NOTE: Here despite getting 4 wrong, I only have to repeat 1, as the other were further ahead in the cycle.
image image
4 - I reduced the number required to be a bit easier to create the condition
image image
mircealungu commented 3 weeks ago

In case 1: why do we have "keep exercising" if the situation is "there are no more words for you to practice"? Or is the situation: All the words that were due today are done so the user can still practice some of the words that are not due today?

This was an oversight, in case one we should just have the Back to Reading button.

Cool!

I wonder... can we make it more forward-looking? Instead of "back to reading" we could simply say Go to Reading? I guess in the extension it actually goes back to the article. But on the web, IIRC, we send them to /articles so we could call it "Go to ...". Though this is really minor :)

In case 2, does the code get more complex if the button becomes: Start Exercising New Words? Or would the UI be too complicated?

I think this would be nice and I have done this now. I had to increase the button size slightly, but it still looks OK.

Agreed!

In case 3 we're in this situation because the user got four words wrong, right? Maybe we could say that explicitly? You still have 4 word to revise today because you got the corresponding exercises wrong?. Or could the reason be something else?

There could also be the case where a word progresses into productive knowledge and the user can do it right away. I had thought about the possibility of always repeating the ones you got wrong, but I think that would mess up with our schedule too much. If you are at stage 16 and go back to 8 you don't repeat the word immediately for example.

Fair enough.

While working on this I have also given it some thought, and I still think maybe it is good that sessions aren't extremely long (> 20 words) as I have seen my girlfriend go over words at the revision stage, and if there is many words I think this revise step might be a bit too overwhelming. Like you say, we can maybe do some testing before rolling this out completely, but I like informing better the users about the learning new words/words that are due to study.

That's a good point! I think with the current setup we could do a 20words session.

I am updating the screenshots to the current state of the branch. For clarity, I have also decided to just say Words Correct and Words Incorrect to simplify the language there as well (this is shown in screenshot 3).

Looks cool! And yes, correct and incorrect are unambiguous and more precise than the previous version!