I wrote my own software, mostly scripts. Does that count?
I have a "todo" folder. It contains a subfolder "contexts", with one text file for each context. There are also "icebox", "inbox", and "projects" files.
I use vim to edit, and I've written a little command that lets me mark lines in my todo files with a "target context/file" and use the command to send them there.
I also have a command to let me add items to the inbox from the command line, they just get appended to the "inbox" file.
Say my inbox file looks like this:
buy milk
buy food
clean garage
send email to bob
I will then mark the lines in the file like so:
buy milk @buy
buy food @buy
clean garage :projects
send email to bob @laptop
Now I'll invoke my command, and it'll send all the lines ending in @x to contexts/x, and all the :y ones to y (i.e. icebox, inbox, projects).
I also have a little script that counts how many tasks are in my various contexts, so I can an overview. When invoked, it currently says this:
home:3 room:2 reflect:5 laptop:9 garage:3 (22)
Overall I'm pretty happy with it. I can add any functionality I want, and most of the time it just takes a few lines of shell or Ruby. It's extremely personalized because I'm the only user.
There are a few things that are missing because of the text file structure. For example, I can't easily reference back how many tasks belong to a given project, because I'd have to store references and introduce IDs, which would look terrible in a text file. At that point I should probably just switch to Sqlite. But that tradeoff isn't so bad - and working with text files is so much easier.
A few of the add-ons I've added with a few lines each include:
- Recurring tasks: recurring/wednesday or recurring/01 contains tasks that will be slurped in every Wednesday or every 1st day of the month, respectively. I just loop through all the files in the recurring folder and try to match them to weekdays or #s.
- integration with "calendar" file. I also wrote a clone of the UNIX calendar that takes my calendar file as an optional argument, highlighting days on which I have things scheduled and shows the appointments for today.
Calendar file has the following format:
Sunday, July 15th:
Do thing
Do other thing
3pm: Meet Bob
Monday, July 16th:
Call Alice
The whole system has evolved over ~5 years or so, starting with a single flat text file I edited in vim. There are various pieces I added over time that I ended up never using, for example I have a stateful command to "choose" a context and then pop the list one at a time, that also lets me complete them. But I find I rarely feel like actually finishing random tasks off a context, I like to scan and refactor/reorganize the context before choosing what to do.
It's interesting how similar refactoring my todo list is to refactoring code. Refactoring gives me a lot of clarity on my tasks, and I typically refactor almost every task, some multiple times.
After reading GTD, I came up with the way-oversimplified system I've been using the last decade:
One text file, 'CurrentTasks', where I keep my To Do list, writing down notes on everything that I need to do or remember, sorted by urgency/priority. The top of the file has stuff that needs to happen in the very near term, scrolling down brings in to view longer term things. As I finish something, the task and any associated notes gets copied into the Logbook file, see next.
I keep a second file, Logbook<YYYY>, e.g. 'Logbook2018', where I keep notes, by day, on everything I did.
I keep the files in a Dropbox folder. The system has worked reasonably well across a PhD dissertation, two jobs, three continents, four internships, a number of hard drive failures, and half a dozen moves.
4 comments
[ 0.31 ms ] story [ 17.2 ms ] threadI have a "todo" folder. It contains a subfolder "contexts", with one text file for each context. There are also "icebox", "inbox", and "projects" files.
I use vim to edit, and I've written a little command that lets me mark lines in my todo files with a "target context/file" and use the command to send them there.
I also have a command to let me add items to the inbox from the command line, they just get appended to the "inbox" file.
Say my inbox file looks like this: buy milk buy food clean garage send email to bob
I will then mark the lines in the file like so: buy milk @buy buy food @buy clean garage :projects send email to bob @laptop
Now I'll invoke my command, and it'll send all the lines ending in @x to contexts/x, and all the :y ones to y (i.e. icebox, inbox, projects).
I also have a little script that counts how many tasks are in my various contexts, so I can an overview. When invoked, it currently says this:
home:3 room:2 reflect:5 laptop:9 garage:3 (22)
Overall I'm pretty happy with it. I can add any functionality I want, and most of the time it just takes a few lines of shell or Ruby. It's extremely personalized because I'm the only user.
There are a few things that are missing because of the text file structure. For example, I can't easily reference back how many tasks belong to a given project, because I'd have to store references and introduce IDs, which would look terrible in a text file. At that point I should probably just switch to Sqlite. But that tradeoff isn't so bad - and working with text files is so much easier.
A few of the add-ons I've added with a few lines each include: - Recurring tasks: recurring/wednesday or recurring/01 contains tasks that will be slurped in every Wednesday or every 1st day of the month, respectively. I just loop through all the files in the recurring folder and try to match them to weekdays or #s. - integration with "calendar" file. I also wrote a clone of the UNIX calendar that takes my calendar file as an optional argument, highlighting days on which I have things scheduled and shows the appointments for today.
Calendar file has the following format:
Sunday, July 15th: Do thing Do other thing 3pm: Meet Bob
Monday, July 16th: Call Alice
The whole system has evolved over ~5 years or so, starting with a single flat text file I edited in vim. There are various pieces I added over time that I ended up never using, for example I have a stateful command to "choose" a context and then pop the list one at a time, that also lets me complete them. But I find I rarely feel like actually finishing random tasks off a context, I like to scan and refactor/reorganize the context before choosing what to do.
It's interesting how similar refactoring my todo list is to refactoring code. Refactoring gives me a lot of clarity on my tasks, and I typically refactor almost every task, some multiple times.
Technically it's just using your editor on plain text files, with a little help to enforce some notation.
Even if you dislike Emacs, you can probably draw some inspiration from it.
One text file, 'CurrentTasks', where I keep my To Do list, writing down notes on everything that I need to do or remember, sorted by urgency/priority. The top of the file has stuff that needs to happen in the very near term, scrolling down brings in to view longer term things. As I finish something, the task and any associated notes gets copied into the Logbook file, see next.
I keep a second file, Logbook<YYYY>, e.g. 'Logbook2018', where I keep notes, by day, on everything I did.
I keep the files in a Dropbox folder. The system has worked reasonably well across a PhD dissertation, two jobs, three continents, four internships, a number of hard drive failures, and half a dozen moves.