Less Wrong is a community blog devoted to refining the art of human rationality. Please visit our About page for more information.

Plan-Bot: A Simple Planning Tool

3 Post author: lifelonglearner 31 March 2017 09:45PM

[I recently made a post in the OT about this, but I figured it might be good as a top-level post for add'l attention.]

After writing Planning 101, I realized that there was no automated tool online for Murphyjitsu, the CFAR technique of problem-proofing plans. (I explain Murphyjitsu in more detail about halfway down the Planning 101 post.)

I was also trying to learn some web-dev at the same time, so I decided to code up this little tool, Plan-Bot, that walks you through a series of planning prompts and displays your answers to the questions. 

In short, you type in what you want to do, it asks you what the steps are, and when you're done, it asks you to evaluate potential ways things can go wrong.

I set it as my homepage, and I've been getting some use out of it. Hopefully it ends up being helpful for other people as well.

You can try it out here.

And here is it on GitHub.

I'm still trying to learn web-dev, so feel free to give suggestions for improvements, and I'll try to incorporate them. 

Comments (14)

Comment author: eternal_neophyte 31 March 2017 10:19:39PM 2 points [-]

Pretty cool. I can imagine something like this being quite useful if you were able to save plans, edit your progress later on, make notes about what did in fact go wrong, how effective your attempted solutions have been, etc.

Comment author: lifelonglearner 17 April 2017 02:54:50PM 1 point [-]

Next goal is to figure out how the heck cookies work so you can at least get some local saving of your plans / schedules! :)

Comment author: eternal_neophyte 17 April 2017 05:47:36PM 0 points [-]

It probably wouldn't be very hard to do something like that with python+flask. Also depends on whether you're willing to give away gratis hard-drive space on your server - you could save your plans server-side and just retrieve them with cookies ( not that this would be secure but hey ).

You don't even need to resort to cookies if you have a "save plan" button which serializes your schedule datastructure to Json or XML and provides a temporary download link for it...

Comment author: lifelonglearner 17 April 2017 08:05:25PM *  0 points [-]

Good to know! I don't know python / flask or how servers work yet, but those sound useful to learn. Any recommendations that might be tailored to this mini-project in particular?

Comment author: eternal_neophyte 17 April 2017 08:28:57PM *  0 points [-]

If you have a decent grasp of python then https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world is a very good resource.

This is the book that got me started with python: http://www.diveintopython3.net/

If you end up going down the Python road and your project grows to the point where you feel you would like help, I'd be very interested in contributing to projects of this kind.

tailored to this mini-project

Possibly this: http://exploreflask.com/en/latest/static.html

Though I've done a bit of googling and it's apparent that you can serve dynamically generated data directly through javascript without resorting to any back-end stuff: http://stackoverflow.com/questions/3665115/create-a-file-in-memory-for-user-to-download-not-through-server

Comment author: lifelonglearner 17 April 2017 10:13:09PM 0 points [-]

Thanks for the links!

I checked out the SO link and a few of the things it linked to (like FileSaverJS) because that seemed most applicable / implementable. It looks like the benefit here is allowing users to immediately save data onto their own devices [is that correct?]

From there, I'm guessing there would be ways to dynamically change what the user sees depending on what's been downloaded (so we could revisit the schedule even if the tab closes)?

Comment author: eternal_neophyte 17 April 2017 10:26:06PM 0 points [-]

No problem, good luck with all you do.

allowing users to immediately save data onto their own devices

Aye. Not that I'd recommend doing it that way but I was basically just curious to see if JS could manage it.

dynamically change what the user sees

If you store information about the schedule they've set up in a cookie then yes - but I imagine it would be a lot of info for a cookie. If you intend to let users create or edit a schedule, close the tab and then come back to it later, you'll probably want to implement that using backend server stuff ( sessions, server-side files, etc. ).

If you already know JavaScript then you may want to check out NodeJS for that rather than python+flask, since you'll have less to pick up.

I'll stop here because I'm afraid my thinking out loud about how I might do this could send you chasing wild geese.

Comment author: lifelonglearner 17 April 2017 11:15:02PM *  0 points [-]

Great, thank you for all the help!

Comment author: lifelonglearner 17 April 2017 02:54:00PM 1 point [-]


The website now has a new bot that asks you for times and your predictions for them, and then it spits out a schedule, with built-in breaks and additional buffer to account for overconfidence!

Comment author: ProofOfLogic 12 April 2017 07:56:09PM *  0 points [-]

Very cool! I wonder if something like this could be added to a standard productivity/todo tool (thinking of Complice here).

I think the step "how can you prevent this from happening" should perhaps add something like "or how can you work around this" instead -- perhaps you cannot prevent the problem directly, but can come up with alternate routes to success.

I found it surprising that the script ended after a "yes" to "Are you surprised?". Mere surprise seems like too low a bar. I expected the next question to be "Are you so surprised that it doesn't seem worth planning for this eventuality?".

Also, I accidentally typed "done." rather than "done", and it was entered as a step in the plan. I think it would be good if variations like that were treated as the same. And, it would be nice to be able to go back one step rather than resetting entirely.

Comment author: lifelonglearner 13 April 2017 01:46:01PM 1 point [-]

Hello, thanks for the feedback! I'll likely go and change parts of the script this weekend, as well as adding an undo button and something of the sort. I agree that the ending prompt of mere surprise isn't good enough or well-defined to let people understand that it's the end of the process. Also, fixing the "done" thing would be good (so it's also an acceptable answer).

Comment author: Screwtape 03 April 2017 08:12:43PM 0 points [-]

As far as web-dev comments go, the first one is that it doesn't react well to the browser window being shorter than expected. Once the input field goes below the view, you have to scroll to get to it. The robot is cute, but I'd make it as small as you need to to make sure the input is onscreen, possibly as small as you need to get the steps onscreen.

As far as the process goes, what does it mean if it keeps bottoming out with 'Q. What went wrong? A. Skyrim'? =P

Comment author: lifelonglearner 03 April 2017 09:16:32PM 0 points [-]

Thanks for the comments. I'm unsure about the whole browser-responsiveness-thing, as of now. I'll likely go and revisit later in time once I learn more.

Comment author: lifelonglearner 02 April 2017 04:17:08PM 0 points [-]

Slight bug fix: The input bar now disappears after you're done planning. :)