Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

redesign the app with a new core conceit #33

Closed
glyph opened this issue Jul 20, 2022 · 3 comments
Closed

redesign the app with a new core conceit #33

glyph opened this issue Jul 20, 2022 · 3 comments

Comments

@glyph
Copy link
Owner

glyph commented Jul 20, 2022

So, this app has thus far been a prototype, and one of the nice things about prototypes is that they let you learn stuff and get feedback!

Unfortunately sometimes the learning takes you back to the drawing board 😬

What I've learned from this particularly prototype is that having a real-time timer running is good, but it creates a few unhelpful incentives, initially touched upon in #17 (thanks @nceder!) .

  1. If I return to the keyboard at 10:36, there's a feeling that I've "missed" the current block and I should just sit around and wait for the new one. This is bad because the goal of this app should be to maximize intentional time, and always be helping you to get started (if it's time to get started!). There's no incentive to get back to work when you've missed a given pomodoro.
  2. The big ❌s in the UI provoke a real feeling of negativity and futility if the first half (or more) of the day has been disrupted. The message should always be "Get the highest score you can". By the time the time has already elapsed, persistent visual punishments are counterproductive.
  3. The nature of attention-momentum is such that I probably start the day too scattered to finish a 30 minute pom and by the time I'm in the groove I am interrupted by needing to re-set every 30 minutes. Focus streaks should gradually scale up in length until encouraging you to take a break.

So the new design for the app I'm considering is something more like this:

  1. Whenever you're at the computer and have not set an intention during an intentional time, there should be an obnoxious (i.e. larger than a notification) but not time-bounded HUD element telling you that you should set an intention.

  2. This should come along with a "snooze" button, so you can say "remind me to set an intention in…".

  3. 🍅 / 🥫 as a "winning / losing" distinction is bad. There should be a challenge, but it should be relative, not absolute. Things can get better or things can get worse, there is no point beyond which you should feel hopeless and give up. There is a point where maybe you should take a break. Some thoughts for things that you might want to keep a running tally of how close you are to beating:

    1. your score from yesterday?
    2. your average score for the (week / month / year / all time) so far?
    3. your best score for the (week / month / year / all time)?
    4. the best leaderboard score from your friends for today? (when leaderboards get added)

    It might be better to model these as achievements, and you get a new one every time you beat one of these, rather than a single status for the day.

  4. there should be a concept of something like WoW's "rested XP" which gives you a bonus for starting that gets slightly larger the longer you've been between intentional periods. Sort of like Rested XP,  it shouldn't be as many points as you would have gotten for crushing it, but it should be increasingly motivating to get started knowing you're going to get a big bonus to your number. (*(Unlike rested XP, this number should consolidate down every day, so that you get a bigger bonus for actually getting your daily bonus for doing at least one focused period every day)

  5. There should be a "streak" counter where you start with a 10 minute interval and at the end of it you have the option to double, in an exponential progression; my first guess would be powers-of-2: 10 minutes, 20 minutes, 40 minutes, 80 minutes (with increasing breaks as well). There should be some encouragement to take breaks, so after hitting the max (perhaps after 2 80 minute periods back to back?) you get a big bonus for stopping. There should be a progressively higher points-per-second value for longer streaks, but of course the points disappear if you don't stay focused.

  6. Sometimes you finish a task early and want to set a new intention. You should be able to declare victory early and continue on to a longer streak, although with a focus-bonus pro-ration for how long you were focused. So for example if you declare victory at 5 minutes out of a 10 minute streak, perhaps the next one is 15 minutes instead of 20.

  7. There should be some calendar integration or some way to say "I could not continue that streak" to provide a small bonus for stopping on purpose, to relieve the pressure to continue working and miss meetings or some other perverse incentive.

  8. Intention-setting should have a more generous timeout, 4 minutes is not enough. I'd say the grace period at the end of the streak should be 15 minutes.

  9. Planning is good, but rigid estimation is bad. To replace the setting-intentions-in-the-list-view workflow where precise goals are assigned to precise time periods, there should be an advance-planning queue, where you plug in a bunch of potential things to focus on (this might be a good place to plug in integration with task trackers, like for example pulling in those options from a particular view in OmniFocus). At the start of each pom you can select an intention from your preregistered list.

  10. You can't always break down tasks into such small granularity that you can actually complete them. Task estimation should be gamified as follows: there are 2 questions about intentionality. "What do you want to focus on" (free text) and "do you think you'll finish it" (checkbox). If you don't check the checkbox, your success multiplier is 1.0. If you do check it, then if you successfully call your shot and finish it, you get a 1.12 multiplier and if you don't finish you get 0.9. So if you get better at estimating and finishing your intentions on time, that's a bonus, and the bonus for estimating correctly is bigger than the penalty for not doing so, but the main goal is to get focused not to get great at estimating.

  11. Evaluation needs to be much more lenient and editable. I'm constantly making mistakes with evaluations just by hitting the wrong key in the NSAlert. My thought here is that there's a bonus bump for evaluating within a certain time window past the end of a pom (and then not changing it) but you can go back and edit your evaluations freely within that period, and then you can edit them again at the end of the day with the only penalty being losing that small bonus for each thing that you had previously evaluted. Relative scale here being something like: 5 points for evaluating each pom within the day, 1 bonus point for evaluating each pom within an hour of completing it, bonus lost if you edit after that hour.

All the "points" above are just ideas about estimates of relative proportions within the individual feature, and scalarizing them all against each other is an exercise for the future.

Also cc @rockstar, thank you for the feedback.

@glyph glyph mentioned this issue Dec 4, 2022
3 tasks
@moshez
Copy link
Contributor

moshez commented Dec 26, 2022

Is this planned to be a series of diffs, a new project, or something else? I'm happy to try helping out, want to make sure I'm not piling more code on top of a pile that needs to be cleaned up...

Specifically: If the application was working (more or less) as sketched in this, it would be helpful for me. In that case, I would try to see how to add a plug-in mechanism or something so that I can add Toggl integration.

@glyph
Copy link
Owner Author

glyph commented Jan 20, 2023

@moshez a start on the new model code that implements this (not hooked up to any UI) is in #33

@glyph
Copy link
Owner Author

glyph commented Jan 20, 2023

OK. I think the design is done here. I will make a new issue for actually running the implementation.

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

No branches or pull requests

2 participants