Todo: Go backpacking

I wrote about a todo-list app idea I had in my post “My Idea File.”

DaniS said:

I can think of quite a few todo list websites and apps off the top of my head, and the time-filling aspect looks like it’s heading towards the knapsack problem, so this idea is a bit too big and scary for me right now, I think. Your mention of priory assignment is cool, though, and reminded me of a chapter from Cryptonomicon by Neal Stephenson, which I don’t know whether you’ve read but is great.

I do know of lots of todo apps. I don’t know of any (without having looked) that let other people request additions to your list, or work with prioritization. Anyone can write a todo list app that sits on the phone and everything’s inputted by one person. It’s called a text editor.

I’m thinking of the people whose email inbox looks a lot like a todo list, because that’s how people ask them to do stuff. But that’s a kluge. I know these people exist because they’re usually complaining about it, and email clients are always trying to build in features to accommodate emails that are really todo-list items. What we really need is a new system, preferably one that integrates with the old one–maybe we should come up with a way to parse tasks from emails? That sounds complicated, but maybe it’s not impossible.

I get what you mean about the knapsack thing, but NP-complete problems aren’t generally difficult for small n. I’m talking about filling a few hours with a couple different tasks which might take 15min-1h. It gets way easier if your “specify how long this will take” function works in 15m increments. Then you’re working with, “I have 6 slots before my dentist appointment; find me 6 slots worth of stuff to do.” Also, if you don’t HAVE to fill every bit of time, the problem gets way easier. If the algorithm generally works, people won’t mind if it leaves 15m of free time or whatever–especially since the time estimates are necessarily estimates, and tasks often take longer than people think.

Also, if people have long stretches of time open, you generally want to make sure you get the longer tasks done then. If you have six hours of free time and doing taxes or something takes five hours, you need to prioritize that because big chunks of available time can be hard to come by. If you have a big swath of time and no long tasks, it’s a matter of sorting by priority. You decide which tasks to do to fill the spot, and then you prioritize them.

When it gets tricky is if you offer the user the option to split up big tasks. Say cleaning your kid’s room (which is a disaster) will take three hours. If you have a phone call scheduled early in the day and a hair appointment two hours later and you’re making lunch right after that and then your show is on an hour after that and the kitchen needs to be mopped sometime today… you’re probably not going to clean the room all in one sitting. Plus, you’d be pretty tired if you did it all at once anyway! So if you offer the option to break that up, then you’re approaching knapsack complications.

The solution to that would be to decide the smallest useful chunk of time to work in. 15 minutes is not really enough to pick up all the toys, and people tend to work better in slots of maybe an hour anyway. So if you split it up into 30m or 1h segments, then you’re back to relatively small n and you can work with that.

You also don’t have to use brute force–there are of course better algorithms for this–and you don’t have to get THE optimal solution. You just have to get one that works, and allow the intuitive human brain of the user to make changes to the suggested schedule.

This is a fun problem! Thoughts?

Advertisements

2 thoughts on “Todo: Go backpacking

  1. Right – I misunderstood the idea. I can think of a couple that work with priorities, but getting input from other people and priorities might be harder. And more fun.

    Would it be okay to email? I’m not particularly eloquent in long-form, and also get a bit self-conscious about the reply system here. For what it’s worth, I promise I am not a spambot with a strong interest in Neal Stephenson.

    Like

    • Ahhh–sorry! I never considered that people might feel self-conscious if I picked apart their writing/suggestions/analyses in full post form, but now that I think about it, that was really stupid. *cringe*

      No, I just found your discussion so interesting that I wanted to dignify it with a proper (long) response. Other people have asked questions and I’ve answered in post form, but I can see where this would not be quite so kosher. Sorry!

      I’m not suspicious of everyone as spambots. The other commenter just posted something really vague and short, with kinda questionable grammar/punctuation, and was offering information that could just have easily been posted publicly in the comments (usually links to “cool stuff” aren’t something secret). I was about to chuck it out as spam when I thought, “Maybe not…” and tacked it on to the longer replies I was working on. I wasn’t really expecting an answer.

      I like to chat over email with readers, it was just a well-disguised false positive. Maybe that person has been coding so long that their robot passes the Turing test, but the programmer doesn’t!

      Not that I’m much better, at the moment. I really should be more careful not to front-page post anything about my readers that could be taken as criticism. I’m not criticizing you guys–really! You’re a smart lot, you ask great questions, you know lots of stuff I don’t. If I pick apart your ideas, it means you’ve said something interesting enough to be fun to think about.

      Oh, and yeah, you can expect an email from me soon.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s