
Why not generalize calendars/todo lists to Turing-complete self-programming? - amichail
Calendars and todo lists are about telling yourself what to do in the future... similar to the way you would program a computer to do various things.<p>So why not generalize calendars and/or todo lists to a Turing-complete language for self-programming?<p>In particular, what you have scheduled and when can depend in a rather complex way on how events unfold in the future.<p>Imagine for example an exercise routine that is flexible enough to handle omissions, delays, etc.<p>Even better, make it so you can import routines from a library and adapt them to your circumstances so you don't have to program everything yourself from scratch.<p>This concept would get even more interesting with shared calendars.
======
stevecooperorg
As someone who has written a todo-list and calendar compiler for text files, I
know how you feel. But keep away from it. It's a productivity death spiral --
if you have the time to do this, then you don't have enough stuff on your
plate to need it.

Also, the complexity of 'agenda programming' is actually pretty simple. A
follows B follows C. You can only do D in a particular location. You can only
do E when person F is about. Event G repeats monthly. That's basically it. If
there is something more complex, it comes up once in a blue moon and you can
probably fake it with the simpler primitives.

What really matters is the data you feed the system. This splits up two ways;

\- what you intend to do (your agenda). That's the stuff you capture in your
todo list and calendar.

\- your current and predicted future state. Your current state is essential to
a program-driven approach; if your system includes something like

    
    
        (when 
          (low milk) 
          (buy milk))
    

then you need to tell the system how much milk you have before it can pop the
item 'buy milk' onto your todo list. So you end up with a system which, once
you tell it you have no milk, helpfully suggests you buy some milk. Similarly,
it can tell you that if you haven't been to the gym in 4 days, you should go
to the gym.

And lastly, you need to be able to do everything on your phone, because you'll
want to add items and report progress while away from your computer. So you'll
have to learn, say, Android programming.

It's a lot of work. And you're not that busy.

~~~
ganley
Agreed (having also written a text todo-list processor). Furthermore, I found
that it was too hard to encode state, and the various ways for a task to
respond to changes in state, in a reasonable way - far too many exceptions and
corner cases.

~~~
stevecooperorg
Should we form some kind of support group for writers of needless compilers?
Programmers Against Needless Time Sinks...

------
twopoint718
Emacs actually does have a kind of DSL for dates. In diary-mode you can
specify recurring dates like this:

    
    
        %%(diary-anniversary 14 2 1940) Dad turns %d
    

Check out the EmacsWiki for more examples: <http://www.emacswiki.org/cgi-
bin/wiki/DiaryMode#toc11>

------
olefoo
@sometime_soon: a. finish parser for action oriented command interface b.
provide generalized web accessible datastore for said CLI

@(wednesday 5-6pm PDT): this hour for sale to highest bidder

@eventually: a. profit

