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

Fuzzy time support #1

Open
rien opened this issue Aug 21, 2017 · 8 comments
Open

Fuzzy time support #1

rien opened this issue Aug 21, 2017 · 8 comments

Comments

@rien
Copy link

rien commented Aug 21, 2017

At the moment, a precise time has to be given. But I seldom know the precise time a task will require or what the precise deadline is. So maybe it would be a good idea to think about if and how to support fuzzy times? For example when a deadline is soon it could be + 2 days. Or when a task is short it could require around 10 minutes.

I eva could even ask you some questions, like Is this task earlier due than task X?. And with a clever logarithmic search she could make a guess about when she should schedule that particular task. This could of course also be used for the task length and priority.

To be able to schedule tasks, we only need an ordering between the tasks, not real values. Right?

@Procrat
Copy link
Owner

Procrat commented Aug 22, 2017

This is an interesting idea you are raising. The current requirement of having to specify a date and time according to some strict format is obviously something that needs to change. Only having to specify a time or date (and not the year, wtf) would be a good start. Then later, we can also add support for things like "tomorrow" or "in 2 hours" like @silox implemented for eva-deprecated. "soon" could be an interesting alias to have as well, although that might mean different things for different people?

The implementation decision of not making deadlines optional was a conscious one and for those same reasons, I don't think they should be relative to other tasks or be flexible.

  • Why every task should have a deadline. We can certainly have a discussion about all of these opinionated implementation decisions --- I would love to actually --- but I believe that adding a task is a commitment to actually doing it at some point and I think that even tasks that don't have an inherent deadline, do have some known expiry date, so if you're committed to doing it, the deadline should be before that expiry date.
  • Why the deadline of tasks shouldn't be relative to other tasks. I think how tasks relate to each other is fully captured in the importance of them. I think deadlines (or the expiry date in case of the lack thereof) are inherent to the task itself.
  • Why they shouldn't be flexible. That's actually by terminology. A deadline is an ultimate time limit. It's not the answer to the question "when would I like to have this finished?" (of which the answer should clearly be "now" for any given task), but rather "what is the latest time at which it is still okay to finish this?".

I would love to hear your thoughts on this.

@iasoon
Copy link

iasoon commented Aug 23, 2017

I agree deadlines should not be relative, I think all cases where something like this would make sense are handled by task dependencies.

Personally speaking, I have a lot of projects / tasks that are due 'sometime', which would probably translate to 'within two-three years' or something like that. I do, however, have a 'goal time' for these projects, which is often much faster, like a month from now. These 'goal times' are not meant to be realistic, however. If I understand correctly, you would use a 'priority' to denote this 'goal' and have Eva calculate this 'time' for you?

About the how-soon-is-soon: as @R13N suggests, real deadline values should probably not be necessary in order to schedule tasks. It might be interesting (albeit perhaps a bit complex) to apply fuzzy logic in order to handle 'soon', 'later', 'next year or so' and statements like that. I think this could be interesting because it would allow Eva to choose a deadline for you, which works out with the rest of your schedule.
Of course, having a 'fuzzy deadline' still implies a hard deadline (the last time belonging to the fuzzy value), and the fuzziness might be handled better by a priority value. I'm not sure what a priority means exactly in Eva right now, though.

Now that I think more about it, you mention that a task should have a deadline, and you denote this as the ultimate time limit. So, suppose I would like to do some herculean work, but I'm not really pressed on actually finishing it some day. What do I put as a deadline here? A year? Two years? I can't put my death time, since I'm not (yet) sure about that one. What do I do when life happens and I don't meet the deadline? Do I reschedule? Did I fail and is my life a joke now? So many questions!

@Procrat
Copy link
Owner

Procrat commented Aug 26, 2017

@iasoon:
All right, there's a lot to cover here.

The main idea behind Eva is that it should be able to decide when the right time is to work on something. So the answer is yes to your first question. Just a quick note on further use of terminology: I feel like people generally use the word "priority" to mean a combination of (or either of) importance and urgency. So a priority is something Eva decides, whereas as a user, you supply the two inputs of the two orthogonal dimensions: an importance number and a deadline.

Fuzzy deadlines described as a fixed distance into the future, but specific to the user sound interesting. It feels like Eva hasn't reached the stage yet where this should be something to implement soon. Perhaps user-configured aliases.

As for your last questions, you may have noticed that there is an item on the roadmap called "Life organising scheme (values → life goals → projects → tasks)". It isn't well thought out yet, but the idea is that to be happy and motivated, what you do in your life should be in line with what you want to achieve in life and with what values you hold dear. Eva can then also have the right information to motivate you if you need it by reminding you why you're doing something. With a life goal I mean something that doesn't have a deadline and you'll probably continue working towards your whole life (unless your values change). With a project I mean something that should have a deadline. Even if you don't care whether that's in 3 years or in 4 years, I believe you should put a realistic deadline on it so you completely commit to it. I think this is key. And a nice UI of Eva could help one in nudging you towards that. I'm not really sure which of the two you're thinking of with a herculean work.

When Eva has reached a more mature scheduling strategy, I would hope that Eva would make sure you're constantly working on your herculean work and with enough margin taken into account, so that, if life happens, you can remain on track. But of course, you can always reset deadlines and reschedule everything in dire situations. That should be the exception rather than the rule though.

@iasoon
Copy link

iasoon commented Aug 26, 2017

@Procrat you raise some very good points and interesting ideas. Before I think about all of this, I have a quick remark: with larger undertakings and goals, I really don't care when I achieve them. What is important to me, is that I actively work towards them. For example, I'd like to be able to climb the most difficult route in my climbing gym one day. I don't care when this is, or if I even achieve that, but what is important to me is that I pursue it by practising on a regular basis. The same goes for my guitar playing, or even that keyboard optimizer I was working on. I think I feel this way about most of my personal goals, because they are not goals per se, but rather the things I would like to be occupied with. They are 'how I wish to fill my life', if you will. I guess this is more about building habits, shaping my life, rather than actual tasks I have to do with a set deadline.

I think @silox' issue about piecewise tasks is totally about this as well. A good indication of this is that when your 'task' is 'ride bike for 5h this week', it does not fail when you only rode 4h. It rather means that you did the task (ride your bike), but not as good as you would like (only 4h instead of 5h).
(Of course, you could be a hardliner about this, but I think that's a terrible way of practicing self-improvement).
Actual piecewise tasks should probably be entirely covered by task dependencies (e.g. multiple steps).

Perhaps these 'habits' are more like non-materialized tasks, as in "I want to play the guitar today, but I didn't decide yet what I will play, and it's not really important either, I just have to play". The same works for reading a book, writing, working out, or practicing a skill. For all these things, you can quantify progress as pages read/written, exercises completed, or at the very least as time spent. It think the correct way to go about this is setting a target progress per time unit. Eva can then derive priorities based on this goal and your current progress, and prod you to do what you have to do.
What's especially nice about this is that Eva can plan these habits around the tasks with actual deadlines, and, for example when you're having a busy week, assure you that you can afford to take a relaxing night off for that nice bike ride you wanted to do.

@TomNaessens
Copy link

@iasoon Yes, completely!

@Procrat
Copy link
Owner

Procrat commented Aug 31, 2017

@iasoon: Glad you agree on the habits thing. I suggest we take that discussion to #3 or #4.

@R13N: I'd love to hear your thoughts before we decide what direction to take with this.

@rien
Copy link
Author

rien commented Aug 31, 2017

Sorry for the radio silence. I really need a scheduler to plan what I have to do.

Ok, now I have been thinking and the problem I had in my mind when creating this issue was more about the importance factor than about deadlines. I tried to generalize it a bit too much I think.

The main problem I had in mind was that importance is a somewhat weird concept, and it's difficult to slap a number on it. I should have used the relative ordening for the importance factor. That way, Eva could ask whether 'answer a mail from Jeff' is more important than 'shop for new Clothes', or if they have the same importance.

Putting numbers into Eva is difficult, maybe that is something she could help us the most with? Let's take a look at al the numerical data that has to be entered:

  • Importance. As mentioned previously, this could be a relative order instead of a fixed number between 0 and 10. (I even think this relative order could change from day to day, because in the weekends I like to do more family stuff, while school things are mostly done during the week. But that's a whole other enigma.)
  • Deadline. You are correct about deadlines being a fixed moment by definition. Therefore the option to alias periods (and adjust them at will) would be ideal. Also the idea of recurring tasks and goals are interesting, so I leave those discussions in their respective issues.
  • Duration. How much time something consumes sometimes isn't fixed. For the same email, I could write a quick response in 2 minutes, or write it with lots of care for detail and nuance in half an hour. Should Eva decide how much time I should spend writing this email? Should Eva remember how much time I spent writing my previous email and let her guess how much time I will spend now? There are a lot of different cases to which I don't know an immediate answer to. But I guess the solution is a combination of everything. With the user having the last word and Eva learning from each time a user spends more or less time doing a task than predicted.

Maybe I could summarize this with the following question: how do we make Eva as human as possible? She has to be a secretary managing your tasks at micro (splitting large tasks into many little ones) and macro level (managing different life goals), while being friendly and lowering your mental burden. I think avoiding to put numbers in Eva will be a big step towards lowering that burden.

@Procrat
Copy link
Owner

Procrat commented Sep 12, 2017

My apologies for the radio silence on my part as well! We need Eva!

  • Importance. I agree that there should be an easier way to determine the importance of task rather than having to think of a number. Having an order of all tasks according to importance sounds like an interesting idea, although when I picture myself interacting with it, I would think that I would find it perhaps more mentally burdensome to do 2log(n) comparisons between possibly unrelated tasks than to give a random number. What do you think?
    Another way that I was thinking of for reducing the need to put a number on it, is by working out the following scheme (you may have noticed it on the roadmap): values → life goals → projects → tasks. The idea is more related to motivation, in that by linking these together you can be more confident that you're doing with you're life what you want to be doing. I had the idea that perhaps each of those links could be weighted: e.g. "how important is for " and "how important is for ". If you do this, you know how important a certain project is in the grand scheme of things and perhaps we could derive an estimate for how important a certain task in that project is as well?
  • Deadline. In a graphical interface, your idea might take the form of some buttons with common deadlines, relative to the present (e.g. "+1 week").
  • Duration. That is a good point. I think you may be referring to Parkinson's Law here? In that regard, it makes sense to me to, like with deadlines, to decide up front and commit to it. Perhaps Eva could take into account that people are terrible at estimating and apply a margin to all user-supplied durations. But then again, maybe that fuels Parkinson's Law again. For the case of not having to input numbers: I saw that some todo app allowed you to select a number of boxes, where each box stood for 25 minutes (although I could imagine you'd want to be more fine-grained than that).

If the goal is specifically to get rid of numbers in the user interface (which wasn't particularly my intention), we could have sliders to indicate the importance level. Maybe there exist other kinds of UI elements to help eleviate this burden?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants