Todo.txt

Rationale

Apparently like many people, for many years and through many different types of jobs, I have struggled to find a good system for organizing tasks/to-dos, events, projects, etc. I have tried everything from expensive, complicated enterprise systems to open-source things and the iCalendar standard. Being unhappy with everything I have tried for various reasons, and because I have some knowledge of computer programming and databases, I have created my own format, which is described here.

I chose text files as the way of storing this information, for the following reasons:

  • text editors are ubiquitously available on most every device and operating system,
  • textual character encodings exist for every major language on Earth, and many have been internationally standardized in Unicode,
  • text compresses well and is easily encrypted,
  • text is easy to modify and search,
  • text is highly portable,
  • text does not require the involvement of third parties (e.g., Web hosting or software companies), and
  • structured text formats can be programmatically parsed or generated (e.g., multiple people’s files could be easily combined).

Files and their structure

The system contains the following files:

  1. todo.txt – where the event/task (hereafter just “task”) information is stored
  2. A notes/ folder, containing serially numbered text files, zero-padded if desired (e.g., 00000, 00001, 00002, etc.). As shown below, notes files are associated with one or more tasks, and have a certain structure.
  3. A projects/ folder, containing text files named after projects (e.g., SELF_2017taxes). Project text files have the same structure as notes files, but regard the project overall instead of specific tasks.
    1. The projects folder contains an ARCHIVE folder, with sub-folders for each year. When a project is finished, its text file is moved to the appropriate year in the ARCHIVE folder.

Todo.txt

The todo.txt file is the core/heart of the system and is the most complex.

Overall, it is organized as a timeline, from the distant future at the top to the distant past at the bottom, with the present somewhere in the middle. This layout was chosen, because humans experience time in a linear way, and it allows for many different calendar types (e.g., Buddhist, Chinese, Christian/Gregorian, Hindu, Jewish, Julian, Mayan, etc.) and timezones to be combined in a single file. To go to the present, simply search for (or scroll down to), the “# present” section.

Each line represents a task, with a few lines for defining calendar types, timezones, and sections. Section titles, like comments in a Unix bash/shell script, always begin with “#”. Here is an example of the definitions sections at the top of the file:

timezones: E=US.easternTime, S=SriLanka.standardTime, L=localTime
defaultTimezone: UTC
calendars: CE=ChristianEra, HE=HinduEra
defaultCalendar: SinhalaBuddhist
## definitions ##

In my todo.txt file, there are the following sections, from top-to-bottom (i.e., future-to-past): definitions, date unknown, date known, soon, frequent routines, present (which is always an empty section), frequent routines, date known, and date unknown.

Note that, because this is a timeline, like the dates of tasks, the section titles radiate out from the present moment, which is in approximately the middle of the file. Hence, for things in the future, which are read from bottom-to-top, the section titles come below the things they describe.

Also note that the fields of this file are space-delimited (i.e., there is one space between the status, date, time, etc.). For this reason, camelCase is used throughout, as putting spaces between words would break the file’s structure. A different delimiter and writing style could be used, but might make the file less compact and easy to read.

Format of task lines

The task lines follow a common structure, of this form:

status(ACTION ITEMS) YYYY-MM-DDdow{repetitionPattern} time task(requirements)[location]{aboutWhy} associatedNoteFile [associatedProjectFile]

For example:

i(CALL HER) 2018CE-03-11su{1982CE(++1)-03-11} 1800 me.pers.fam.pamela.party(cake)[herHouse]{birthday} 00032 [birthdays]

That example would be read in this way:

  • in progress,
  • with the action item that someone needs to call her,
  • on 2018 (in the Common Era / Gregorian calendar) March 11, which was a Sunday,
  • repeating annually since 1982 (her birth year) on March 11,
  • at 1800 (6 p.m.) in the default timezone,
  • within my personal to-do list, for a family member named Pamela, a party, requiring a cake, at her house, on the occasion of her birthday,
  • with notes kept in notes file 00032,
  • associated with a project called “birthdays”.

Status codes and action items

Status codes can be whatever you wish. I recommend the following codes:

‘-‘ for not yet started and needs action,
‘~’ for a tentative task that is not yet started and might need action,
‘i’ for in-progress/process,
‘x’ for finished,
‘c’ for canceled, and
‘ ‘ (an empty space) for tasks that require no action from you.

Action items (i.e., actions that need to be taken related to this task) are written in ALL CAPS, so that they stand out to the eye. I separate action items with periods / full stops, and list them in the order in which they need to be done. If there are many action items, the (parens) can be broken onto multiple lines. Resist the temptation to write notes in/after the action items, because this file will become cluttered and hard to read. Put notes in the notes files.

Dates and times

The date is in ISO format, followed by an optional abbreviation for the day of the week, with a repetition pattern inside {curly braces}. The calendar can be of any type, with the type indicated by an abbreviation after the year, which you may define however you wish at the top of the file (described in detail below). If there is no abbreviation after the year, the default calendar type, which is defined at the top of the file, is used.

Here are some example/suggested repetition patterns:

1982CE(++3)-**-** means every three years beginning from 1982 in the Common Era, on every month and every day that year.

****-**-2ndMonday means every year, every month, on the second Monday.

****-(03,06)-** means every year, the third and sixth months, on every day of those months.

2562BE-11-?? means in 2562 in the Buddhist Era, November, on an as-yet-unknown day.

Throughout this file, (parens) are used for groups/sets or numerical patterns. In addition to the above examples, fam.(joan,chris,mary).visit[theirHouse] means family members — Joan, Chris, and Mary — visit them at their house.

The time can be written in any format, though I recommend being consistent for ease of reading. As with dates, if no timezone is specified by an abbreviation after the time, the default timezone is used.

Within the “date unknown” and “soon” sections, task lines lack a date or time, but are otherwise the same as described above.

Task names

The task name format is similar to the dot notation of object-oriented programming languages, or the reverse of a Web URL. From left-to-right, it is a general-to-specific hierarchical classification of someone or something, with the last element of the classification being the action taken by, to, for, etc. that someone or something. The meanings of (parens), [square brackets], and {curly braces} are also similar to Java’s using them for function/method requirements, data locations, and blocks of multiple commands, respectively. For example:

me.pers.gov.us.mo.dmv.answer{canDriversLicensesBeRenewedOnlineYet?} could mean this: within my personal calendar, a government, of the US, of Missouri, the Department of Motor Vehicles, then seek an answer for/about the question “can driver’s licenses be renewed online yet?”

pd.biz.vend.allstate.deadline{renew(policy)} could mean this: within Pam Dawson’s business calendar, a vendor, the AllState insurance company, a deadline about renewing an insurance policy she has with them.

When only one or two people use this system, how they choose to categorize the aspects of their life is up to them and can be very fluid/loose. Of course, if this system were generalized to a larger group of people, it would be good to standardize the elements of task names. For example, there could be databases/spreadsheets of which initials represent which person, and into which categories to divide people’s business or personal lives. For example, I sort my personal life into these categories: acad.admin (academic administration), acad.research (academic research), acad.teaching (academic teaching), acad.service (academic service), fam (family), frnd (friends), corp.cust (corporate customers), corp.vend (corporate vendors), gov (governmental), nfp.cust (not-for-profit customers), nfp.vend (not-for-profit vendors), and self (myself). For holidays and natural events, I also have categories related to the holiday’s origin, for example: ancientRome, Hindus, nature, and westernChristians. My business’s categories are acct (accounting), cust (customers), exec (executive), it (IT), lgl (legal), mktg (marketing), rnd (R&D), and vend (vendors).

Task groups and conditions

For grouping tasks, this system uses project names. For example, all tasks having to do with doing this year’s taxes could have a [SELF_2017taxes] project label. If you find that a task should have sub-tasks, I recommend making that task a project. If a project has multiple levels of sub-tasks, I recommend keeping track of that hierarchical structure in the project’s notes file, and using only one serial-numbered notes file per task.

Sometimes you want to say, “if a certain thing happens, do these tasks.” I recommend the following syntax:

}
  …
  – task2
  – task1
if fam.mom.visits {

That means: if family member Mom visits, do these tasks. The tasks go upwards, because they go into the future.

Note and project files

Both note and project files have the same structure, but note files contain notes about individual tasks, and project files contain notes about projects overall. Each file has this structure:

  • On the first line, if it is a note file, there is the name of the task with which it is associated; if it is a project file, there is the name of the project or a list of all of the tasks with which it is associated (though such a list would be redundant with the project labels in the todo.txt file). This is done so that there is no confusion about with which task(s) this file is associated.
  • The top half of the file is for a blog-like history of notes, with a date and author name at the beginning of each line, with the newest note at the top and the oldest at the bottom. This section is where to put dated things related to this task, for example notes from phone calls or meetings. If a project has multiple sub-tasks, I recommend making sections for each sub-task within section, such as by indenting lines to indicate sub-tasks.
  • The bottom half of the file is for research and free-form notes, such as brainstorming outlines, summaries of Web research, etc.

I recommend separating the two notes sections with a 10-dashes horizontal line (“———-“), and, if you wish to create sub-sections of these sections, use a horizontal line with fewer dashes.

A typical workflow

  1. When a new task comes in, create a line for it wherever is most appropriate in the todo.txt file.
  2. If the task is completed or canceled, change its status to ‘x’ or ‘c’, and move the task line to the top of the “date known” section in the past (because the date of completion or cancelation are known or can be guessed), so that there is a record of past tasks. If its outcome was complicated, write a note about it in the notes file, creating a new notes file if necessary and appending its number to the task line per the above syntax.
  3. If the task had a repetition pattern, calculate one or more future occurrences and create new tasks up in the future section of the calendar.
————————-
– Example todo.txt file –
————————-

timezones: E=US.EasternTime, L=localTime
defaultTimezone: UTC
calendars: CE=ChristianCommonEra, HE=HinduEra
defaultCalendar: SinhalaBuddhist

## definitions ##

i self.house.make(goBag) [SURVIVAL_KIT]
– [INVESTING_coins]

## date unknown ##

  5120HE-11-07we{lookup} * hindus.holiday.diwali
– 2562-09-18tu{****-09-18} * self.body.get(fluVaccine) 00038 [VACCINATIONS]
  2018CE-07-02mo…16mo{1877CE(++1)-oneWeekAfterTheLastMonInJune-twoWeeks} * world.sport.tennis.wimbledon
– 2562-05-06su{****-05-06} * corp.vend.verizon.expires(voicePlan) 00055
i(CALL DENTIST. FILL OUT INTAKE DOCUMENTS.) 2561-04-01su{****-04-01} * self.body.schedule(dentalCleaning) 00042
  2018CE-03-31sa{****-03-lastSunday} * gov.uk.begins{BritishSummerTime}
  2561-03-20tu{lookup} * nature.equinox

## date known ##

– self.body.schedule(eyeExam) 00003

## soon ##

****-**-(mo,we,fr) evening self.body.take(medicine){thyroid}

## frequent routines ##

##### present #####

## frequent routines ##

****-**-(tu,th,sa) evening self.body.take(iron)

## date known ##

c(2561-03-06tu doing as needed) 2561-03-06tu{2561-07-18(++7)} * corp.vend.mobilePhones.(checkBalance,topup) 00039
x 2561-02-09fr…25su * world.sport.olympics.winter[SouthKorea.Pyeongchang]
x 2561-02-20tu 1900E fam.mom.call

———————–
– Examples notes file –
———————–

2560-02-03mo * corp.vend.insuranceCo.get(refund){homeOwnersInsurance} [SELF_*Move]

2560-02-05 she acknowledged receipt
2560-02-03 emailed them to the representative. she’s out of the office.
2560-02-01 scanned home sale settlement docs

———-

rep’s contact info and website: …

directions to the rep’s office: …

————————
– Example project file –
————————

2560_self.travel[Thailand]

(optional notes for the project overall here)

———-

## packing list

clothes:
x shoes
x sleep mask

tech:
i(see 2560-06-28 * corp.vend.amazon.order(plugAdapters) 00084) electricity plug adapters
x(see 2560-07-03 1800 corp.vend.at&t.visit[store] 00085) unlocked cellphone

## emergency contact info
US embassy: …
Local emergency numbers: …

## itinerary
… (flight and train schedules, events, sites, etc.)

## restaurants
… (a list of local restaurants)

Advertisements

Heavy metal Buddhism

There is an interesting overlap in the US between dark countercultures (heavy metal, goth, etc.) and Buddhist ideas of emptiness, suffering, delusion/illusion, no-self or self-conquest, patisotagamin (going against the mainstream), meditating on death, introspection, etc. As when the Buddha replaced meditating on death with anapanasati (meditating on the breath), after a few monks became suicidal after meditating on death, I always hope that people who embrace the dark side of Buddhism don’t get lost by dwelling too much in dark becoming/karma, hellish rebirths, etc. It is important to stay in the middle of the Middle Way — neither pleasure nor pain. The Buddha used negativity only as a temporary technique to counter things like the delusion of self.

For example, I’m not sure if Kirk Hammett, their lead guitarist who I’ve read is a Buddhist, wrote all of these, but here are some very Buddhist-sounding lyrics from Metallica, from newer to older:

“All reflections look the same, in the shine of a midnight revolver” (“Just a Bullet Away”).

“How can I be lost, if I’ve got nowhere to go?
Search for seas of gold, how come it’s got so cold?
How can I be lost, in remembrance I relive?
And how can I blame you, when it’s me I can’t forgive” (“Unforgiven III”)?

“If I could have my wasted days back,
would I use them to get back on track?
Stop to warm at karma’s burning,
or look ahead but keep on turning.
Do I have the strength to know how I’ll go?
Can I find it inside to deal with what I shouldn’t know?
I’ve worn out always being afraid,
an endless stream of fear that I’ve made. …
My lifestyle (birth/death is pain) determines by death style,
a rising tide (life is pain / it’s all the same) that pushes to the other side. …
Keep searchin…” (“Frantic”).

“Then the unnamed feeling, it comes alive … it takes me away” (“Unnamed Feeling”).

“Can’t you help me purify you and I…” (“Purify”).

“Careful what you wish… careful what you say.
Careful what you wish, you may regret it.
Careful what you wish, you just might get it.
Then it all crashes down, you break your crown,
and you point your finger, but there’s no one around.
Just want one thing, just to play the king,
but the castle’s crumbled, and you’re left with just a name.
Where’s your crown, King Nothing” (“King Nothing”)?

What do you want: peace or pleasure?

Numerous times throughout the Suttas, the Buddha says or suggests that peacefulness and renunciation are the most pure, stable forms of happiness and escape from suffering. But most Buddhists I meet seem more interested in less pure, more unstable, more craving-oriented forms of escaping suffering (e.g., pleasure, wealth, etc.). This seems to be the issue that separates serious Buddhists from not-so-serious.

1% Democracy

Democracies are democracies only on voting days. Every other day, they are mostly oligarchies.

I hope that digital voting technologies will increasingly empower the public to represent themselves on a day-to-day basis in politics.

Knowing nationalism, culturism, and racism

You don’t really know nationalism until you’ve lived in a foreign country. People back home often don’t accept/trust things you did in the other country, sometimes even things you did at an embassy, and vice versa. Government officials in the home country ask you questions like, “why would you want to live there?”, and require you to help them spy on you and tax you (e.g., tell them what foreign bank accounts you have). People at foreign company and government offices usually ignore your emails. And locals of the other country often treat you suspiciously. People in other countries are usually nice to paying tourists, but not so nice if you try to live there.

Similarly, you don’t really know culturism and racism until you’ve lived in an area where you are in a cultural or ethnic minority. People constantly stare when you walk down the street, and sometimes comment on how (dis)similar you look to them. Taxis and buses don’t stop maybe half the time, and people are physically pushier with foreigners on buses and in crowds. Customer service people in businesses avoid you unless you confront them, and local customers cut in line ahead of you. It’s harder to get a job and to navigate relationships of all kinds. People often don’t want to hear or see things from your culture. People from both cultures sometimes do mocking/poor impressions of the other culture or ethnicity in front of you, and expect you to find it funny. And people are judgmental and rejecting, if you look or speak in any way that they don’t find beautiful/healthy, humble, thankful, and positive.

In such an interconnected world, it’s amazing to me that many people are still so small-minded.

A paradox between monism and enlightenment

If, as I understand Mahayana-based Buddhisms to teach, we are all really one big monistic/unified Mind/Being, which is supposedly happier as Itself than as a suffering human, why doesn’t one person’s becoming enlightened cause everyone to become enlightened? When the Mind learns of its delusion from one person (e.g., Gautama Buddha), why doesn’t It correct Itself and stop manifesting this world?

Three interpretations of Dhammapada 1

“Mind precedes all mental states. Mind is their chief; they are all mind-wrought” (Dhammapada 1, Acharya Buddharakkhita translation).

“Phenomena are preceded by the heart, ruled by the heart, made of the heart” (Dhammapada 1, Thanissaro Bhikkhu translation).

Here are three different ways of interpreting that famous first line of the Dhammapada:

  1. (A possibly animist or creationist interpretation:) There apparently exists an outside world independent of my mind, and the arrangements or configurations of most/all things in that world apparently result from the activities of human and non-human minds. For example, my house exists because many people in the past have thought that humans should live in houses for various reasons (protection from weather, animals, thieves, etc.); thought of ways to construct and sell a house in the climate, society, etc. where I live; and then constructed it. How far out/back you want to abstract this idea to nature or the universe is up to you. The Buddha didn’t offer a view about the origins of the universe.
  2. (A constructivist/phenomenological interpretation popular among Western Theravadists today:) Though there probably exists an outside world independent of our minds, no one can see it directly; we can each see only our own mind. Everything we see is a mind-state, a construction of our body-mind complex – mental output based on sensory input. When you think you’re seeing yourself or a world out there, all you’re really seeing are poorly measured, heavily subjectively biased mental constructs/fabrications of how the self or world might be. The only way to maybe see absolute reality is to remove one’s subjective biases through meditation and simple/ethical living, going deeper and deeper into the mind, until one can see reality clearly.
  3. (A later-Buddhism, possibly Vedanta-influenced interpretation:) The external world is literally made of/by mind, and has no existence except to the degree that our minds create it. In reality, there is only a single, monistic, cosmic Mind (e.g., Buddha-nature), which manifests itself as this dualistic world because it has somehow forgotten its true nature and/or developed dualistic cravings. When people realize/remember that true nature, they can wake up from this delusional dream we’re all living in.