I think a user must be able to postpone a task without assigning a due date to it. I'm working on a todo app that will implement separate hide-until and due dates.
779 karma · joined July 16, 2009
I think a user must be able to postpone a task without assigning a due date to it. I'm working on a todo app that will implement separate hide-until and due dates.
Thanks :) This is basically Material Design / Flat design, and I consider it to be perfectly good-enough for an MVP, so yep, I'm keeping it :)
> To open or not to open is certainly not a decision that can be made lightly
Absolutely. Thank you for your write-up on open source models - you just saved me a lot of work. I'm bookmarking your comment for reference.
A concern I have about the entire open-source thing is that it will put a lot of maintenance burden on us, while not providing enough benefits in the 'breakthroughs departnemt'. For example, I'm sure the contributors can optimize performance or implement relatively minor inprovements, but I doubt that the community will be able to implement big systems (for example visual support for higher-kinded types). Is this generally the case, or I'm being too skeptical due to my lack of experience with open source?
> On top of that, visual languages are a very special case scenario. Considering there's so little out there in terms of visual languages, in a field where academics and tinkerers are constantly trying every possible combination, it's clear that for systems like this to make it, they must provide just the right amount of flexibility/functionality: too little and they'll be frustrating too use, too much and they'll lose design coherence. I suspect the sweet-spot for this level is less generalized than that of common programming languages.
These days, there are two kinds of visual functional languages in use by general (non-programmer) public:
1. Node-based image / video processing systems. Examples: material / shader editors in any modern 3D modeling app (3DS Max, Modo, Maya, Houdini etc.) and compositing apps (Shake, Nuke etc). Node-based (i.e. functional) workflow is nowadays a standard in these apps. Language-wise, these are simple funcional languages without higher-order functions, recursion and flexible type systems (they do offer strict typing, but you cannot construct custom types).
2. Excel. Yes, Excel. Basically, it's a tree of formulas, which are mostly pure (except for certain functions that access time, random numbers etc.). The evaluation order depends on the functional dependency, not row/column order, just like in a pure lazy functional language. No recursion, no reusable functions (though Simon Peyton-Jones proposed adding spreadsheet-defined reusable functions to Excel). Weak typing, no custom types, no recursion, no turing-completeness.
What I'm aiming for with my language is not full generality. It will be somewhere in between Haskell and Excel. It will be fully turing-complete like Haskell, but in terms of 'side-effectness' it will be more similar to Excel and Filter Forge: the program is entirely pure, and the only elements that access or produce side effects are the inputs and outputs of the program. The program is executed momentarily, just like in Excel and Filter Forge, and there's no notion of time or waiting.
The feature was not accidental. I always wanted to expand the possibilities of Filter Forge's nodal language, but until I met Haskell I didn't know how to do that. And now, after trying Haskell, it's simply impossible for me to think in terms of non-general, domain specific visual languages. The Haskell paradigm lends itself very well to a visual syntax, but there's a lot of problems to be solved, and that will be an excellent challenge for me in the coming years.
Despite looking complete, it's really, really far from that. There are serious conceptual problems that remain unresolved yet. We do have a visual tool for constructing and typechecking programs, but it’s not yet ready for any release, even an as-is alpha. Actually, the screenshots I posted are my Excel mockups: http://i.imgur.com/WYeLJJr.png
As for the open-source / closed source, I spent some time thinking about that, and discussed the idea with the team, but we’re not ready to make the decision yet.
On one hand, I'd be immensely pleased if our research on visual syntax for functional languages could be useful to the wide world. Functional programming really deserves wider adoption, and if our research can help that, I’d be very proud. Also, open-sourcing this may bring a lot of benefits to our commercial product, because it will allow us to access the global talent pool of functional programmers, who, collectively, have vastly more expertise than all our developers combined. I also think that many of these programmers are in academia, and would welcome a visual tool that could help them teach functional programming to their students.
On the other hand, we, as a company, have absolutely no experience in starting and maintaining open-source projects, and we have no idea how to do that properly, and what resources will it require from us. I’ll have to read up on that.
What we have now as actual working code is a visual editor that allows to connect nodes together, a typechecker that prevent connections between different types (and invalidates / blackens existing connections if they somehow go wrong), and multi-input / variadic nodes such as lists and tuples.
It's not yet executable - you can't run the program in our visual environment yet, you can only construct / typecheck them. Also, we have a metric ton of unsolved problems: function definition and signatures, deconstruction of ADT values, definition of ADTs, preview of intermediate values for each node etc.)
Based on what I see right now, it will take at least a year before we have anything resembling a proper language. Also, I predict that the runtime performance will be awful.
A simple program (with equivalent Haskell and Racket code): http://i.imgur.com/dsNJYyx.png
List of strings, with element insertion GUI: http://i.imgur.com/Re64IJE.png
A more complex program, a function definition, and some sugar for infix math: http://i.imgur.com/KoxjoOM.png
Fold using a lambda, with equivalent Haskell code: http://i.imgur.com/avQNHXS.png
Complex signatures, polymorphism and typeclasses: http://i.imgur.com/cZ4KMzt.png
There are three main requirements which have to be kept in balance. These are urgency, importance and psychological readiness. Traditional time management systems have tended to concentrate on the first two of these. The neglect of psychological readiness is probably the reason that most people don’t find time management systems particularly effective or congenial. The most distinctive feature of FVP is the way that its algorithm is primarily based on psychological readiness - this then opens the way to keeping urgency and importance in the best achievable balance.
In GTD, at least how I understand it, prioritization is rational and conscious. In Autofocus / FVP, prioritization is based on your 'gut feeling' towards the task at the moment when you look at it. This was a crucial difference in my case.
(As for due dates, the author explicitly states that his systems are incapable of handling dateful tasks).
Also, I think that a proper todo app, in addition to geofencing, should include timefencing, people-proximity-fencing, external-condition-fencing and maybe even mood-fencing / energy-fencing. Though I guess some of these can be implemented via contexts.
Ideally, I'd like to have the ability to do 'makeshift reviews' per-task, and on different timescales. For example, if I don't feel like doing Task X today, I'd defer it for 5 days, so its next review will happen in 5 days. But if there's another task I'll probably want to do tomorrow, I'd defer it to tomorrow, so I'll review it tomorrow.
On the other hand, I do seem to have a de-facto review stage. In the morning I usually go through my task list in Wunderlist (which I hate but use daily) and mark items I'd like to do today. But this is probably because Wunderlist doesn't offer a proper Defer / Hide Until ability that doesn't screw with tasks' due date.
(And I have a recurring task 'Review all items', a relic from a bygone era when I attempted to do GTD properly.)
What I was looking for, and couldn't find, is a personal productivity tool in the same category as Wunderlist, Todoist, Swipes, Things and countless others, but with much stronger todo de-cluttering abilities.
Have you tried Mark Forster's Autofocus or Final Version Perfected systems? If not, you owe yourself a try. The systems, at their core, are very simple:
1. You have a long list of tasks (the same 'ubiquitous capture' principle as in GTD and other systems) 2. You scan the list for tasks that 'stand out' for you as 'ripe' to be done / worked on. This means that you're mentally ready to do these tasks. 3. Work these tasks for as long as you feel like. It's not necessary to finish these tasks. 4. After you've dont with a task, you either cross it off the list, or re-append it to the end of the list.
I found his systems much more tolerant of creative work, and much less willpower hungry. A downside of these systems is that they're not capable of handling tasks with start / due dates.
Also, regarding de-cluttering todo lists, I firmly believe that:
1. ALL your tasks and actionable thoughts must be captured in your system. 2. Your current todo list must only show items that you are ready to do right now, at the moment. For example, your todo list shouldn't show the task 'Vacuum the floor' if you're not at home. Therefore, there must be ways of de-cluttering your todo list that allow you to defer the tasks until your external (or internal!) conditions are more conducive to working on these tasks.
(I got fed up with the inability of most todo apps to do the above, so I'm working on my own todo app).
(reduce + (map (comp inc inc) (range 10)))
Is the following a correct Haskell equivalent? foldr1 (+) (map (succ.succ) [1..10])(BTW, my own take on renaming a monad into something less scary is daisychain, or, slightly more to-the-point, chainable.)
His book on his research of psychopathy in prisons, "The Psychopath Whisperer", is excellent (despite a terrible name). Easily one of the best books on the topic. I want a sequel.
We even added (limited) loops and recursion in v4.0: http://www.filterforge.com/features/version4/loops-and-recur...
> "Don't mess with me."
I heard this exact phrase, he said it right to my face. I didn't think at that moment that I'm posing any threat. Perhaps the guy overestimated me.
I met at least two. Both were extremely vivid people, and deeper contact with them, when they turn off their cloaking field, was baffling: it was a bit like communicating with an alien.
In any case, these people were really, really far from being dull.
If it's true, that is. Pathological lying is a part of Hare Psychopathy Checklist. The entire article may well be totally made up.
As for the advantage, it seems pretty clear to me: higher chances at being the alpha-male(female?), plus the resource advantage due to not having the ability for reciprocal altruism (and the ability to get away with that).
All few human psychopaths I have personally met were natural-born leaders. One is now occupying a high-level position within a successful company that produces manupulative F2P games. Another was a woman who, despite her being deaf-mute, was able to organize a successful remote web studio (before it fell apart due to her politicking and other members, including me, bailing out).
Also, quoting Wikipedia: "In Mongolia alone as many as 200,000 of the country's 2 million people could be [Genghis] Khan descendants".
Edit: if I remember correctly, Richard Dawkins' The Selfish Gene discussed cheaters (that is, individuals who didn't reciprocate) as being a viable evolutionary strategy, as long as they are in a minority.