>>8
I wrote a program in C that sounds similar. Mine is probably less useful than yours, however.
Basically, it's just a todo list implemented as a stack. The idea is that you'll never get anything done if you spend too much trying to decide what to do first. With a stack, I can just push everything that I need to do onto it and store it in a text file.
If you want to know what to do next, a function reads the task on the top of the stack. Once you've completed the task, you can pop the value, removing it from the todo list and pushing it onto a "database" (just a text file of tasks with dates) of completed tasks. I also added a randomize function to the todo list, since otherwise you could intentionally order things, defeating the whole purpose of the program.
So yeah, it's pretty ugly and very simplistic, but it gets the job done in a pinch. Anything more would be a bit unwieldy for a command line program. One of these days, I'll get around to making a more complex GUI-based todo "list" (I guess "web" or "net" would be a better descriptor) that would incorporate useful things like:
dependency trees ("I can't write this program until I learn the specifics of sql queries," for example)
time-specific importance ranking ("buying food before I starve" would be more important than "fixing my headphones")
lists within lists, allowing me to break any project down into a series of smaller and smaller parts
various other database-related functions to help me decide what I should do
It's going to revolutionize the way I work, just you wait!