procrat / eva Goto Github PK
View Code? Open in Web Editor NEWLet algorithms decide your life.
License: Apache License 2.0
Let algorithms decide your life.
License: Apache License 2.0
Through the course of a day, I tend to get a lot of stimuli. A friend asks me something, I receive an email, I stumble upon something interesting on the internet, suddenly I get inspired and an idea starts developing in my mind, and so on.
For the wannabe-productive-person that I am, this is very annoying, because it takes my attention away from the thing I should be doing. The solution GTD suggests is throwing all these stimuli in a collection bucket, to which you get back later for processing (how do I help my friend out with this? Should I act on this email? Is this paper I found really relevant to me? Is this idea any good, and should I develop it further?) . I am very fond of this concept, and would very much like to have it in Eva.
However, currently, it does not really fit, since we only have the concept of tasks, and these are not tasks, but things that might become a task. So, what are they?
I say 'documents'.
A document is like a file on your computer. It can be a blog post, a paper, a web page, a note you wrote, an email, a movie, an image, a documentary, ...
You can think of a document as an indivisible unit of information. Here, indivisible means that it cannot be split without taking away information. A book that covers multiple topics could be split in a series of chapters that each cover their own topic, but you take away their context. So, the book is the document, not the chapter. This does, of course, not prevent you from making a part of a a book its own document, provided you are not interested in the other parts.
Some examples:
In the case a document is not actionable, it does not belong in your task list. You could still archive it, though.
When you decide not to action an idea, you can still choose to archive it. In case you have a new idea that relates to an old one you had, you'd still have your old notes. When you want to try something new and remember that paper you once stumbled upon but didn't read properly, you will still have it. Eva can keep everything safe for you. When you add a tagging system to your archive (which can be 100% the same tagging system as you use for your tasks, so no extra complexity there) it gets easy to use as well!
I loved @Procrat's determination in the statement 'if you do not have a deadline, you do not intend on finishing that task, so it is clutter on your task list'. I totally agree, however, there are tasks that I maybe would like to do. I sometimes have ideas that I really like, but I don't feel I have time for it, or there are more pressing issues in my life. I would still like to keep this idea, of course. So, it is a document!
As time goes by, someone who has tons of stupid ideas like I do will drown in a 'maybe' list filled with tons of crap ideas. Or, a more useful person who has many good ideas, but alas not enough time, might not get back to his million dollar idea. The solution to this is incorporating documents in regular reviews, for example using spaced repetition (In that case, you would get reminded of the idea periodically until you decide you are not going to do it, and you archive the idea). To me this sounds like a good solution to the 800-tabs-to-read problem.
If you dutifully let all your stimuli pass through Eva in this way, you are essentially building a hard-copy of the information in your brain, and all information that is connected to it. This means you can't forget anything. It also means that you start building a model of how you, personally, handle information. I believe this opens up great possibilities ;-) .
I might be wrong, but I am starting to believe that documents should be first-class citizens in a personal assistant software. More precisely, they should be the first-class citizen.
Managing time in the information era largely comes down to managing information. Getting a grip on the never-ending information stream that enters our head every day is the first step to making room for productive endeavours.
By capturing all stimuli you experience and produce into documents, and filing those in your personal organization software, you move the part humans are not good at (managing huge amounts of something) to your computer, while you can focus at the things humans are good at (creating, interacting with the real world, enjoying your life).
A task is, essentially, a document. It's a piece of information that can be actioned. In other words, a task is a scheduled document.
So, approach it like documents. Your 'inbox' is a list of documents that you can either schedule or archive. (You could also include a 'snooze' option, which is the 'maybe / some day' list).
For this system to work optimally, you would want it to both collect as much information as possible, and present you with the least work possible.
The first part is achievable by using smart, contextual capture methods (have a browser plugin that sends a link to Eva instead of opening a new tab, have a github integration that captures issues assigned to you, have templates for your notes, have purpose-specific capture devices for specialized cases).
The second part can be achieved by machine learning techniques. Basic text classification is very easy to do, but yields enormous advantages to the user. You could let Eva guess which action will be taken on each item in your 'inbox'. She could then suggest 'maybe archive this bunch?' 'plan this task?' 'put this on your 'maybe' list?
I did not form an opinion about how desirable this is yet, but your flat tire and other mundane tasks can also be fit into this flow. When you notice that your bike has a flat tire, it is just that: an observation. A piece of information. Something you can note.
Hey Eva, my bike tire is flat.
Okay, we will get back to that later. We were designing a poster for lightning talks event.
sorry I did not proofread I have an exam tomorrow the procrastination is real please excuse any brainfarts I would love to hear what you all think love you xoxoxo
I have a personal goal of riding my bike for at least 5 hours every week. This can occur in one go, but I could also go twice for 2 hours and a half or tree times for 1 - 2 -2 hours.
More broadly, this could be expanded for all tasks that occur regularly, e.g.:
It would be nice to plan these kind of tasks in Eva and let Eva divide the time herself. Maybe a "minimum" time spent should be added to (e.g.) avoid going for bike rides of 5 minutes while it takes 10 minutes to prepare.
A useful feature when you want to use Eva both for work and home tasks: adding time-limited cathegories to tasks. E.g:
Note how this is related to not doing any tasks when you're asleep: the default (unlabeled) prefered period could be 8am to 12am.
You might also assign a strictness to these prefered periods. After all, when the deadline is really close I might work in weekends. Or when I don't really have time in the morning, I don't mind running in the afternoon.
At some point far in the future, it would be great to have multiple user interfaces, so everyone has something that fits their needs. However, for bootstrapping, I think it would be a good idea to entirely focus on one user interface for the time being. The current CLI was a quick win and is easy to play around with, but its current intention was not to be a great user-facing tool.
It seems to me that a GUI would be attractive to the largest group of people. A command-line interface seems burdensome to use and even other kinds of terminal interfaces will restrict Eva to only be used by tech savvy people.
Within the domain of possible GUIs, I can think of three kinds, with the following pros and cons. (I'll keep it updated when others are mentioned.)
There is an intention to have a strong separation of the different parts of Eva as to make it easy for other interfaces to be written as well. If anyone strongly objects to using a GUI, it should be made easy to write another kind of interface and I encourage to do so. However, during these early days of Eva, I would really love it if we could agree on one kind for starters and work together on it. ๐
Tagging some people who might have interesting ideas about this: @silox @NoctuaNivalis @iasoon @tivervac @wschella
Some tasks have to happen regularly, for example:
It would be nice to be able to enter these with a repeatable time-interval so one does not have to bother to enter them manually every week/day/...
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?
Some tasks depends on other. You cannot clean the dishes while having eaten first. You cannot vacuum when you haven't dedusted the furniture. If 2 tasks would have the same importance, Eva might schedule them in the wrong order.
Adding a dependency between tasks might solve this possible issue.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.