Hey HN! I've just launched my latest side-project, Intention. Intention's an app to help you achieve your goals. The idea is that you create a graph of goals/tasks (intentions), with your high-level goals at the top and actionable tasks at the bottom. That allows you to create a collection of actionable tasks you can work on, and to visualise how they relate to your high-level goals. Any feedback would be much appreciated!
Congratulations on launch. I was initially interested in idea. I installed the app to try it out, but gave up on registration. I would use it offline and don't like the need for account. You might reconsider it as unnecessary barrier. I also avoid apps with ads.
Also, why call it DAG when it is a tree? It has a root and cannot have more than one path between nodes.
Hey, sorry the sign-up put you off. I am planning to make the app open source at some point, so you'll be able to run it yourself without any user authentication. While the mobile app does have ads, the web app (https://i.ntention.app) is ad-free and has all the same functionality.
Each node can actually have multiple parents, so as I understand it they do form a DAG rather than a tree.
That's a good idea, I'll try to think of a nice example. I went with a tree, rather than a DAG, because I wanted to make the examples as simple as possible so as to not scare people off.
Interesting. Some feedback (i only tried the webapp, from ios):
- i’d find more intuitive to have “the big prize” at the bottom, so i can work my way down by priority. Maybe an option?
- i should be able to delete the root node, which would scrap the entire hierarchy. Give us a big warning but have the feature.
- i should be able to edit nodes from the graph - even just by clicking an icon that sends me to the list-item view
- this approach is good for one-off tasks but doesn’t seem to fit recurring tasks. For example, if i want to lose weight, i have to meal-plan once every week. Either i keep adding the task manually (bleh) or i cannot deal with it here.
- maybe have a bit of song & dance when you tick off the root node.
- Is this in the list view or the graph view? I did originally have the list order reversed (i.e. root node at the bottom), but I found it very confusing. I could potentially add a setting to control the order.
- I've tried to avoid deleting nodes where possible. If you delete a parent node, its children will be automatically re-arranged rather than deleted. Could you re-name the root node instead of deleting it?
- Agreed, the graph view is very basic at the moment. I'm looking to make it much more powerful in future.
- I've intentionally ignored recurring tasks for now, because I want to get them right when I do implement them. I'm aware it'd be a nice feature, so I am looking to add it asap.
It’s always amazes me how few of the task management tools out there have the concept of task dependencies (the core feature of this app). I use OmniFocus but even there I had to setup a custom view.
It is somewhat typical for certain activities to "feed into" multiple high-level goals or needs. Trees can't express that, so you get into activity categorization problem. Trivial example: are you cycling your way to work because it contributes to your health, is fun or because it enables you to do your job duties? Obviously it's all of that. None of that matters until you try to introduce some "time budget" for different spheres of your life, and with the tree concept you realize that the results don't make much sense.
A friend of mine built SMOS, an open-source terminal UI task manager similar to TaskWarrior, fully based on a tree editor (but IIRC not a DAG -- no merging):
Agreed! Even mindmaps fail at this when an idea is dependent upon a thought or observation in another branch. You have to add a bunch of notes, experiment with different less intuitive structuring of the idea, or MAYBE buy the premium version of the software!
I'm not sorry. The Android app is basically just a webview, and Apple's app store policies forbid webview apps unfortunately. I just don't have the expertise or time to write an IOS app, and even if I did it wouldn't be worth it for me financially.
The good news is that the web app, https://i.ntention.app, has all the same features of the Android app. If Apple ever properly support PWAs, it'll behave very similarly to an app.
The main reason is they're easier to market. I've tried to advertise web apps before, and had very little success. People seem to much prefer mobile apps over web apps, even if they have exactly the same functionality. At a guess, I'd say it's because they're more familiar, and there's a sense of security in downloading them from the app store.
I've looked into it, it appears to be because Google is blocking oauth requests from webview apps. Sorry about that, I'd recommend either using the web app (https://i.ntention.app) or using a different provider to sign in.
I'm using auth0 to handle user login, and that's a message generated by their service. I agree it is very confusing, I'll see if there's a way to override it or disable it.
A DAG isn't a tree. It's acyclical wrt the direction of the edges. Since this basically is an outliner, the name (or title of the submission) is misleading.
Which this can also have. One concrete action could contribute to two intermediate goals which in turn could both contribute to one parent high-level goal (giving a diamond).
That's exactly right. Each intention can have multiple parents, which I believe makes the topology a DAG. The only constraints are that you must have exactly 1 root node, each node must have at least 1 parent (apart from the root node), and that you can't have cycles.
Most file systems aren’t trees, most are some more flexible graph. You can get away thinking of them like trees as long as you’re not writing a correct program. (see also: links, bind mounts)
Trees have a formal definition that precludes this, that’s why we call them trees and not graphs.
I'm using Auth0 for the user login, and it relies on 3rd party cookies. Safari and Brave block these by default, if you enable them it should let you log in.
Haha, I did actually - the app just doesn't let you create cycles :). I don't want to be held legally responsible if someone gets stuck in an infinite loop.
Odd prompt when I try to sign up for an account in the web (i.ntention.app): after filling in an email and password, I get a prompt "Intention is requesting access to your dwmartin41 account."
I'm using Auth0 for the user login, and my domain on there is "dwmartin41". That's a very odd message, but it's basically saying you're registering an account on my domain. I'll see if there's a way to override the message with something more sensible.
I understand where the message comes from, but it's an unusual message to get when registering what seems like a "first-party" account. If it's your domain and your app, they're in the same trust domain, so you could reasonably just trust it automatically. (Google doesn't prompt when you log into YouTube using your Google account, for instance.)
Good idea, I'd considered adding costs to the nodes but not to the edges. Do you have a particular use case in mind? I'll have a think about it and maybe add it to the roadmap, thanks!
If the parent node shows the SUM of all its child's cost, you can better visualize the cost.
And for the edge nodes, let's say I use the "cost" field to determine the cognitive cost for any given task, I can more easily see which sub-task (edge) to prioritize if I want to get into "the zone" more quickly in an "intention"/project (parent node).
I love DAGs. I first came into contact with them through Snakemake [0].
Pretty soon after starting to use it (as a Next Generation Sequencing data analysis framework), I noticed that if a task that is not in some way linked to an end goal, that task does not get started/executed. It sort of blew my mind and I felt strongly that my projects, perhaps even my life should be run and build exactly like that.
Sorry about that, I am aware of the issue and I'll try to implement a workaround asap. It's because Safari doesn't allow 3rd party cookies, which Auth0 relies on, by default. You can fix it by allowing 3rd party cookies.
It's not my design, it's Auth0's. I'm the only dev working on Intention, so I have a limited amount of time to spend on things like user authentication, which is why I rely on auth0 to handle it for me.
Love this! Had a similar idea a while ago but never executed on it - DAGs make so much sense for goals/todos, but the existing todo apps make it sorta fiddly to organise things in such a way. Will be sure to check this out
Here is an open-source version I made called TaskGraph [1], a fork from uber/react-digraph[2]. I made it for my startup [3] because I didn't really like Jira in the context of 3 people.
We have been using it for a couple of months and it works really well. Apologies in advance for the lack of documentation. If you have any questions by all means.
TaskGraph has:
- Task status (todo/in-progress/done)
- Task completion estimation (admittedly it assumes you can work perfectly in parallel which is a bit of a stretch.)
Nice! I got TaskGraph running locally, but couldn't figure out how to create a node. Seems like it's built on the same basic idea as Intention though - tasks structured into a graph. I'd be very interested to hear how you get on with TaskGraph.
Shift click and drag to other nodes to create dependencies. The dependencies should auto-snap into place. The algorithm used for this works most of the time. Our current taskgraph at openquery has ~50 nodes and it works quite well.
I don't have cycle-checking so be careful or your browser tab will blow up.
Got it, the app works well. I did consider using `react-digraph` for Intention, but the UX seems very focused on desktop (lots of clicking and dragging) and I wanted something more mobile focused.
The concept of viewing activities as DAG is going to be huge and ubiquitous, I think.
This applies to any activities of humans, organizations and computer systems, and hybrids of those three. One of the most fascinating epiphanies I've had recently is exactly that the purposeful behavior of these three kinds of actors can be decomposed as DAG with a relationship meaning "contributes to fulfillment of a need".
So congrats on the launch to the author, and expect a lot of competition, including me :)
I have actually built my DAG (or, as I like to call it, a semilattice) going all the way up to fundamental categories of needs as described by Maslow.
Sorry that I have no live demo container or juicy screenshots yet, that will be in place in a week or two, please email me at (my HN username) at fastmail.com if you want an update when I publish the containerized demo system.
Haha looking forward to the competition ;). TaskDB sounds good, I'll keep an eye on it. Your approach to keeping the entire history of the graph is a good one, I'm using Datomic in Intention mainly for this reason.
I do hope DAGs become more commonplace, I think a lot of areas (e.g. project management) could benefit from using them.
True, I don't see why Intention and taskdb couldn't grow into enterprise, or groupware project management systems. Sometimes I'm even thinking about peer to peer exchange protocols for this kind of data (e.g. if your spouse or collaborator uses it too).
What extra usefulness you'd get from using cyclic graphs? I don't see the point yet.
> like, if i want to "feel better"
I don't see "feel better" in the example graphs anywhere.
> and "lose weight", then "run a marathon" might contribute to both of those.
This is up to a person setting the goals. And the goals themselves are just the means for satisfaction of fundamental needs (which I found very helpful to outline explicitly in my personal DAG).
For one person, it might be of high importance to lose weight, it will be their long-term concern and they will try different approaches, including running marathons.
For another person, weight might be fine for their life and needs, but running a marathon may be important for them, say, it was their New Year resolution. They may have identified that if they could lose just a few kilograms, their marathon performance and experience would be much better, so they want to do it. In this case weight loss is an activity contributing to the higher level goal.
A third person may indeed be after feeling good about their body, and both weight loss and running marathons would be activities of the same rank, contributing to the satisfaction of their desire to feel good about their body.
A fourth person may absolutely see no point in one, or both of running marathons or losing weight, because they already do tennis or swimming or whatever and/or they are slim enough for their needs.
> The concept of viewing activities as DAG is going to be huge and ubiquitous, I think.
What do you mean "is going to be"? Activities as a DAG is how it's already done. This is how Work Breakdown Structures are generally constructed. Tools like MS Project can display them as Gantt charts or network diagrams or as an outline (where you can set the dependencies used to create the Gantt and network charts).
I guess JIRA supports deps, but I don't think it's the tool which people here would want to use to be able to decompose their big undertakings, especially personal ones.
TaskWarrior supports deps, but it's not a mainstream tool and deps were fairly hard to use in it AFAIR.
It may not be common in the tools people here use, but it's common in the tools used by major engineering organizations.
My point isn't that it's a bad idea, it's that it's not a novel idea. PERT is another way of graphically representing activity. If you aren't concerned with the time, it's your DAG.
Eg, financial independence - it has a couple of sub-topics - like understand current state, identify goals, etc... and then finally an actionable set of tasks.
That's a really good idea, I'll add it to the roadmap. If you have any suggestions for specific templates, please send them over to me (my email's on my profile).
I've never used Todo graphs, but I've spent hours using Yed, a free (but not Free if you're into that kind of thing) point-and-click graph editor with various layout algorithms.
I've found many times that the visual outcome of laying out my concept graphs in say, hierarchical or force-directed layouts. Mainly to show me that I was missing certain links. This is not formal concept analysis (which uses formal lattices), mind you, it's just using the visual realization of graphs as Gestalt.
I actually should be doing that a lot more...
---
That said, we should always be wary of the "A" in "DAG". That's a deep ontological assumption that restricts the universe we are able to think about. Sometimes, like in the Judea Pearl approach, this enables maths to get done. Sometimes we should just cope with cycles or resolve them at the appropriate time when enough information and wisdom is available.
Sorry about that, it should be fixed now. There isn't a paid version at the moment, but there's a web app at https://i.ntention.app . If you're on android, it should ask you if you want to add it to your home screen - if you do, it behaves very like an app.
89 comments
[ 4.1 ms ] story [ 144 ms ] threadAlso, why call it DAG when it is a tree? It has a root and cannot have more than one path between nodes.
Each node can actually have multiple parents, so as I understand it they do form a DAG rather than a tree.
A DAG is a restriction on general graphs.
Also, do a "simple" example, and a "intricate" example, to show the range of possibilities. Let the user put their imagination in the middle.
Also-also, publish on F-Droid!
Directed acyclic graph - https://en.wikipedia.org/wiki/Directed_acyclic_graph
- i’d find more intuitive to have “the big prize” at the bottom, so i can work my way down by priority. Maybe an option?
- i should be able to delete the root node, which would scrap the entire hierarchy. Give us a big warning but have the feature.
- i should be able to edit nodes from the graph - even just by clicking an icon that sends me to the list-item view
- this approach is good for one-off tasks but doesn’t seem to fit recurring tasks. For example, if i want to lose weight, i have to meal-plan once every week. Either i keep adding the task manually (bleh) or i cannot deal with it here.
- maybe have a bit of song & dance when you tick off the root node.
- Is this in the list view or the graph view? I did originally have the list order reversed (i.e. root node at the bottom), but I found it very confusing. I could potentially add a setting to control the order.
- I've tried to avoid deleting nodes where possible. If you delete a parent node, its children will be automatically re-arranged rather than deleted. Could you re-name the root node instead of deleting it?
- Agreed, the graph view is very basic at the moment. I'm looking to make it much more powerful in future.
- I've intentionally ignored recurring tasks for now, because I want to get them right when I do implement them. I'm aware it'd be a nice feature, so I am looking to add it asap.
- Good idea
2 - yeah, I grasped that you can just rename it, but it's a bit annoying because I might also have to manually delete a bunch of nodes below.
Good luck with the app!
It is somewhat typical for certain activities to "feed into" multiple high-level goals or needs. Trees can't express that, so you get into activity categorization problem. Trivial example: are you cycling your way to work because it contributes to your health, is fun or because it enables you to do your job duties? Obviously it's all of that. None of that matters until you try to introduce some "time budget" for different spheres of your life, and with the tree concept you realize that the results don't make much sense.
https://smos.cs-syd.eu/features.html
In general I think that tree/DAG based task managers will become a lot more popular as more people need to organise more tasks.
Also note all my projects are parallel, not sequential.
The good news is that the web app, https://i.ntention.app, has all the same features of the Android app. If Apple ever properly support PWAs, it'll behave very similarly to an app.
403. That’s an error.
Error: disallowed_useragent
Google can’t sign you in safely inside this app. You can use Google sign-in by visiting this app’s website in a browser like Safari or Chrome.
Intention is requesting access to your dwmartin41 account.
Doesn't inspire confidence in the amount of testing done.
Trees have a formal definition that precludes this, that’s why we call them trees and not graphs.
1. can’t get up because haven’t eaten and too hungry
2. can’t cook because can’t get up
3. can’t eat because can’t cook
Didn’t think of that did ya buddy! Day 2 of quarantine is going very well.
And for the edge nodes, let's say I use the "cost" field to determine the cognitive cost for any given task, I can more easily see which sub-task (edge) to prioritize if I want to get into "the zone" more quickly in an "intention"/project (parent node).
Pretty soon after starting to use it (as a Next Generation Sequencing data analysis framework), I noticed that if a task that is not in some way linked to an end goal, that task does not get started/executed. It sort of blew my mind and I felt strongly that my projects, perhaps even my life should be run and build exactly like that.
[0] https://github.com/snakemake/snakemake
Here is an open-source version I made called TaskGraph [1], a fork from uber/react-digraph[2]. I made it for my startup [3] because I didn't really like Jira in the context of 3 people.
We have been using it for a couple of months and it works really well. Apologies in advance for the lack of documentation. If you have any questions by all means.
TaskGraph has:
- Task status (todo/in-progress/done)
- Task completion estimation (admittedly it assumes you can work perfectly in parallel which is a bit of a stretch.)
[1] https://github.com/openquery-io/taskgraph/
[2] https://github.com/uber/react-digraph
[3] https://www.openquery.io/
Then click on the node to modify it's attributes.
Shift click and drag to other nodes to create dependencies. The dependencies should auto-snap into place. The algorithm used for this works most of the time. Our current taskgraph at openquery has ~50 nodes and it works quite well.
I don't have cycle-checking so be careful or your browser tab will blow up.
It's a visual task/planning tool. Does estimates, task grouping, resources, a bunch of different constraints, critical paths, and lots of other stuff.
I'm in the process of adding costing to it, and its a lot of fun to use.
I use it for all my pre-planning of projects, just to get a feel of feasibility
[1] - https://www.gameplan.global/
This applies to any activities of humans, organizations and computer systems, and hybrids of those three. One of the most fascinating epiphanies I've had recently is exactly that the purposeful behavior of these three kinds of actors can be decomposed as DAG with a relationship meaning "contributes to fulfillment of a need".
So congrats on the launch to the author, and expect a lot of competition, including me :)
I am working on a FOSS tool storing TODO actions and activities in an SQL table, and enabling DAG relations between entries. https://github.com/andrey-utkin/taskdb/wiki
I have actually built my DAG (or, as I like to call it, a semilattice) going all the way up to fundamental categories of needs as described by Maslow.
Sorry that I have no live demo container or juicy screenshots yet, that will be in place in a week or two, please email me at (my HN username) at fastmail.com if you want an update when I publish the containerized demo system.
I do hope DAGs become more commonplace, I think a lot of areas (e.g. project management) could benefit from using them.
like, if i want to "feel better" and "lose weight", then "run a marathon" might contribute to both of those.
What extra usefulness you'd get from using cyclic graphs? I don't see the point yet.
> like, if i want to "feel better"
I don't see "feel better" in the example graphs anywhere.
> and "lose weight", then "run a marathon" might contribute to both of those.
This is up to a person setting the goals. And the goals themselves are just the means for satisfaction of fundamental needs (which I found very helpful to outline explicitly in my personal DAG).
For one person, it might be of high importance to lose weight, it will be their long-term concern and they will try different approaches, including running marathons.
For another person, weight might be fine for their life and needs, but running a marathon may be important for them, say, it was their New Year resolution. They may have identified that if they could lose just a few kilograms, their marathon performance and experience would be much better, so they want to do it. In this case weight loss is an activity contributing to the higher level goal.
A third person may indeed be after feeling good about their body, and both weight loss and running marathons would be activities of the same rank, contributing to the satisfaction of their desire to feel good about their body.
What do you mean "is going to be"? Activities as a DAG is how it's already done. This is how Work Breakdown Structures are generally constructed. Tools like MS Project can display them as Gantt charts or network diagrams or as an outline (where you can set the dependencies used to create the Gantt and network charts).
Github Issues doesn't have issue dependencies at all.
Salesforce "Action Plan" view is a plain list, no deps at all, as far as I have seen.
Todoist doesn't do dependencies.
Bugzilla does dependency graph, wow: https://bugs.gentoo.org/showdependencytree.cgi?id=706426&hid...
I guess JIRA supports deps, but I don't think it's the tool which people here would want to use to be able to decompose their big undertakings, especially personal ones.
TaskWarrior supports deps, but it's not a mainstream tool and deps were fairly hard to use in it AFAIR.
My point isn't that it's a bad idea, it's that it's not a novel idea. PERT is another way of graphically representing activity. If you aren't concerned with the time, it's your DAG.
[0] https://en.wikipedia.org/wiki/Program_evaluation_and_review_...
Can a few pre-made templates be shared?
Folks can then then 'fork' it out github-style.
Eg, financial independence - it has a couple of sub-topics - like understand current state, identify goals, etc... and then finally an actionable set of tasks.
meanwhile the screenshot shows an iPhone 6
I've found many times that the visual outcome of laying out my concept graphs in say, hierarchical or force-directed layouts. Mainly to show me that I was missing certain links. This is not formal concept analysis (which uses formal lattices), mind you, it's just using the visual realization of graphs as Gestalt.
I actually should be doing that a lot more...
---
That said, we should always be wary of the "A" in "DAG". That's a deep ontological assumption that restricts the universe we are able to think about. Sometimes, like in the Judea Pearl approach, this enables maths to get done. Sometimes we should just cope with cycles or resolve them at the appropriate time when enough information and wisdom is available.