Ask HN: How do you GTD with text files only (no software)? - verumnoslib
======
nextos
Have you thought about using Org Mode?

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.

------
pjmorris
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.

------
gtdthrow
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.

~~~
gtdthrow
can't seem to format - is the HN edit function just broken completely?

