New streak behaviour doesn't work for all use cases #560
Replies: 13 comments
-
Hey @sersorrel, could you maybe provide a specific example to when this pattern is that relevant? I cannot think of anything specific so it's hard to justify having both approaches which would come with a significant cost in regards to usability and code complexity. |
Beta Was this translation helpful? Give feedback.
-
It's not a great example, but: I guess if you imagine that the app supported completing a task multiple times per day, then imagine you have a task to brush your teeth twice a day – it wouldn't make sense to brush your teeth three times in a day after you forgot to brush them once on the previous day. Generally it would be useful for any other task where the need to complete it increases over time, but each time you complete it the need to complete it again drops to zero, so probably other stuff related to cleaning or topping up fuel or changing batteries or something like that. It's not a big deal if it's too much work and complexity to keep both algorithms, I can just keep using the old version (or compile my own, if I can find the commit where the new algorithm was added). |
Beta Was this translation helpful? Give feedback.
-
Loop 1.8.8 (available soon for beta testers) has yet another algorithm, which should work well both with the example you show here, as well as the one from #124. Please try it out when it becomes available to you, and let me know if it behaves as you expect. Here is a screenshot for "1 time every 2 days" habits:
|
Beta Was this translation helpful? Give feedback.
-
This somehow looks more like "2 times every 7 days" ... are you sure it's 3 times @iSoron? I've got quite the same use case as @sersorrel, but "1 time every 7 days". PS: Thanks for the great app!! ( PPS: FWIW, I once have been using HabitRPG, and they had (or still have) a similar issue.. |
Beta Was this translation helpful? Give feedback.
-
@myrdd You're right; my example was wrong. Below is a fixed example, "2 times per week". Also, thanks for the link. Very interesting to see how other apps deal with this. |
Beta Was this translation helpful? Give feedback.
-
It'll take me a few days to see how notifications behave now, but from how my history looks this looks like exactly the behaviour I was hoping for. Thank you so much! |
Beta Was this translation helpful? Give feedback.
-
I just tested 1.8.8 and the "1 time every 7 days" case works exactly how I would have expected. So indeed, thank you so much! FTR, here's a screenshot of my use case: Still, @iSoron, I'm wondering why in your screenshot (I cite below) days 24 to 28 of march are marked. I tried to reproduce the result of your screenshot, using v1.8.8, but 24–28 appear gray. (Well, that's what I would have expected. Just wondering.) |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
IMHO it should be possible to distinguish between
@sersorrel's use case would fall into the first type, but with 2d groups instead of 7d ”calendar week“ groups. |
Beta Was this translation helpful? Give feedback.
-
I think I figured out what is happening. When the habit must be done more than once a week, we are heavily double counting days. If we look at the staircase example I gave above, this is a 2 times per week habit, but if you change it to 1 times per week, you get the same graph for the middle weeks, which intuitively sounds wrong. If we stop double counting this is what the staircase example looks like with 2 times per week: While this fixes the double counting where 2 repetitions are counted for both the previous week and the next week, see example of current behavior: |
Beta Was this translation helpful? Give feedback.
-
For each one of these examples, could you let us know what did you expect the result to be?
How did you produce this chart? Was it manually or did you modify the app in some way?
Until I understand these examples better, I am erring on the side of caution and giving the user more "off" days than they potentially deserve. In the chart where you stop double counting, why have you decided to mark July 12-18 as "not completed", even though the user did complete the habit twice during that week? I understand that you decided to pair July 12 with the previous checkmark, instead of the following one, but why? |
Beta Was this translation helpful? Give feedback.
-
I modified the app, when we are building intervals and you make a successful one, continue the logic from the repetition after the last one used. This avoids the double counting I mention.
I guess it depends on your definition of "two times per week" habit. In my mind if I hear that someone is doing something 2 times per week, I expect that after a year (52) weeks, they would have done that habit at least 104 times. In the current state of the app, you can get away with doing it 5 times less every 7 weeks (the staircase example I showed with the current behavior) for an overall minimum of around 70 times for the app to show the entire year as "completed".
It's hard for me because it really depends on the habit and how we implement "X times every Y days". Are these Y days overlapping or not? @myrdd's use case is different than mine. For most of my habits "2 times per 5 days" means that it doesn't matter which days exactly I do the habit, I can even do it in four consecutive days, but as long as I have the timeline split somehow into 5 day chunks, and for each of them I have at least two repetitions, that means I was successful. Right now if you have enough consecutive repetitions to abuse the double counting behavior ( |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
I track a habit which I can only do once every 2 days; this used to work fine, but in the 1.8 beta (since #124 was fixed) the reminders now aren't scheduled properly if I miss a single day.
For example:
Under the old system, day 3 would be uncompleted (day 5 would be completed instead), which is for this task the correct behaviour. Under the new system, when I complete the task on day 4, day 3 also gets completed, and I get a reminder to do the task on day 5 – even though I can't do it yet, because I did it yesterday.
I don't really have a good idea for a solution to this, sorry. Is it possible to implement an option to switch between the old and new streak calculation for each task?
Beta Was this translation helpful? Give feedback.
All reactions