I use a method called bubble sorting, and text files.
I bubble sort the most important items to the top. Occasionaly changing the order of things, and adding new ones.
Text files are good because they are quick to edit. They are compatible between OS's, you can use version control, grep, text searches. You can email them to yourself. You can read them on your phone, or even on some cameras. Computers have been able to edit text files since as long as they have existed.
Each client I have a separate text file for. With todo, and a log of time and various notes. I also have a general log file (886KB) that I use for every thing.
You need a journal to keep notes. Notes like how to do some obscure undocumented thing. Or to give yourself a reminder. Also as a todo list.
For todo items the wording is especially important. If it is vague, it's not a good todo note. They should be specific things that you can just do. If it requires thinking then you change the todo note so it is something specific. If you need to do research, write something specific too. 'search cheeseshop, and python.org for good Widget.'
eg. BAD - Program admin section of website A. GOOD - Copy in admin section from website C into website A.
Here is an example of a log I use. I just paste the date in from a date command. (which in vi I can run from an xterm, or from inside vi).
Note how I also say what I am going to do directly next. Also I keep a running total of the time spent. Also as I go, I bubble sort and change my todo list.
I think it is an elegant and light weight method.