I've been working on a side project called mem. It's a task management tool, so it's related to memory and has as its wicked sick logo the ancient phoenecian letter 'mem'.
The purpose of mem was to overcome the limitations of my todo list of choice–Asana. Asana is great for teams because of its collaboration tools, e.g. assigning, following and commenting on tasks. But it is getting bloated, and is not improvable. (I wrote a Chrome extension to collapse sections, but because Asana periodically re-renders the DOM, it's a real pain to maintain the event listeners.)
Two important concepts Asana lacks are task time estimates and task dependencies. The former is easy enough to overcome, by prepending '10m' or '1h' to a task name, but it's ugly. The latter, where one task blocks another such that the two must be completed in order, is not possible.
I began with high aspirations–an ionic-angular hybrid iOS/web app–and immediately got bogged down in UI concerns. After stepping back, I focused in on the MVP: proving that task estimation and dependecies are useful. To prove that doesn't require a fancy UI; even command line would do! So I rewrote mem as with a CLI.
Paring down to MVP by ditching a 'normal' UI dramatically increased my productivity. Almost immediately, I was able to start using mem to guide its own development by creating tasks of what features to build next. Within a few commits I had
tag. A normal workflow looked like this:
$ mem add 'implement requires task dependency'
$ mem add 'eat lunch'
$ mem get 'implement requires task dependency'
$ mem tag meta
$ mem show
> 0 name:'implement requires task dependency' tags:[meta]
> 1 name:'eat lunch'
Along the way by using mem itself I discovered a bunch of important use patterns, and so implemeted command chaining, tag coloring, and search negation, among other minor features:
$ mem add 'get milk' tag chores tag 'in progress'
$ mem get 'get milk' examine tags untag 'in progress' tag done
$ mem show ^done
But today I learned about TaskWarrior. It is everything I've built, everything I had planned to build, and it has a community of at least tens of developers working on it or its ecosystem. So now the question to you, dear reader: do I continue with this project as a purely academic exercise, or switch to TaskWarrior and move on? Either way, I've learned lots from designing and building mem, but it's disappointing to think of my work as mere duplication.