Files
hpr-knowledge-base/hpr_transcripts/hpr4554.txt
T

170 lines
14 KiB
Plaintext
Raw Normal View History

Episode: 4554
Title: How I do todo
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4554/hpr4554.mp3
Transcribed: 2026-07-31 16:13:48 (official HPR transcript)
---
This is Hacker Public Radio Episode 4554, for 2026-01-15
Today's show is entitled, "How I do todo"
The host is Jim DeVore and the duration is 00:17:00
The flag is Clean, and the license is CC-BY-SA
The summary is "This is how I manage my personal todo list. "
Hello, hacker public radio friends. I am Jim DeHore, a long time listener, first time show host.
I am an engineer currently working with embedded software and construction equipment. I have been
involved at the intersection of computers, electronics, and controls for about 50 years.
I have a strong tendency to build and repair things myself even when it doesn't make economic
sense. I simply enjoy learning new things and working with my hands.
This is an episode on how I manage my personal to do list using genetroponys to do.txttility,
send file format, and a collection of apps and scripts. The intent here is to not provide step
by step to plant some ideas that you might want to follow up on. Ironically,
creating a show has been on my to do list for at least a year. Checking that off today.
This show is not explicit. Looking back at my history with to do. I believe this show might
be relevant because it combines a need that most of us have for independence from services
in a hackable architecture. I was a daytime or paper-toting person for many years. It worked,
but it took a lot of effort to maintain. In the late 19, I switched to it to do app on my
Palm Pilot. Eventually that became a trio 755 phone slash PDA. The keyboard finally died on that
phone after four and a half years. I went to an Android-based phone about 2008. It replaced all the
PDA functions that I enjoyed on my Palm Pilots. I dimly recall having access to it to do app.
Maybe a commercial service that had shut down my memory as fuzzy.
I found Gina Trapani's file format and bash grip. I don't even know if I'm pronouncing her name correctly.
My pronunciation is from a guide to the city in Italy. I believe she was the founder of lifehacker
and that's how I found it. She created a simple structured text file format.
In the 2D.TXT, it has one line per task with this format. Each field is separated by a space.
First field is optional. It's an X that marks completion of that task. Second field is also optional.
It is a priority in capital and a capital letter in parentheses. Field 3 is optional. It is the
ISO completion date. Field 4 is optional. It's the ISO creation date which must be specified if you
have got a completion date specified. Field 5 is the free form to do.field.field 6 is one or more of the
following. TXT, this is a single word that starts with a plus character. A context is a single word
that starts with an AT character. Field 7 is optional key value tags. For example, a due date
might be represented. This DUE colon ISO formatted date. And there's other files in this system.
AttitudeDue.sh, the command line version of the utility. A configuration file that helps the
to do system find all its files and extensions. Done.TXT that holds the archive to do.
I replicate the to-dos through Dropbox. You can also use Google or the DIY sink or don't sink it all.
At home with my laptop, I don't sink. I read the file from a network share that is synced on my
NASBOX as Dropbox limits the number of devices on their free plan. I don't have anything against
paying, but Dropbox's prices are structured for heavy users. A handful of text files is all that I
think. You can learn more at http colon slash slash to do txt.org. Genus Focus was on the command line at
least initially, but what caught my attention was that it was a structured file format that was
being supported by other developers and was simple to manipulate with scripts. Her bash script
also supported extensions. I love that multiple apps support this format.
Linux desktop Windows Android Phone, and of course she can use a simple editor. I believe that Apple
is also supported. I'm just not in that ecosystem. She has links on her page to folks that have
created them as well as extensions and plugins that folks have written to extend its capabilities.
So what apps am I using? On my Android phone, I'm currently using simple tasks. It's not the
most full featured of them out there, but it has been very solid and bug-free in my use case.
On my Linux desktop, I use q2dxt. The about page as multiple credits based on the original code
base by David Ellen Talk. On my NAS box, I'm running Genus to do dot txt bash scripts with some
custom add-ons. Dropbox hosts that to do dot txt and done dot txt files to keep everything in sync.
This is a very hackable architecture. Harry Larry would love this. It's a text file format.
Here's what I really love. I've got a low-end Synology NAS that lets me run nightly scripts
and the resulting files are synced to my phone, desktop, laptop computers, through Dropbox and the
network shares. It also allows me to grab the to do dot txt and done dot txt for information.
For example, if you've got a new year's resolution exercise three times a week, you can grab
done dot txt to see how many times you check that off in a year. Hopefully this gives some ideas.
I love this because if I'm not happy with how it works, I can change it. I want something new. I add it.
I've got a script that runs on my NAS and does the following every night.
First of all, it checks all the files into get and tags that with the day's date.
This is nice, especially when I develop a script and I can retrieve earlier versions when things go
south. And I have done that. Nothing like waking up to a wiped out to do file.
I secondly, I scrub all high-asky from the files. I'm living in a seven-bit text world. Your localization
may have different requirements. This uses a simple TR command. For me, one of the web-based
interfaces I had previously used with this file had problems with high-asky.
And with apologies to my international audience, I think these tools work with other encoding.
I just don't have any experience there. Thirdly, I insert a daily affirmation into the
to-do file. This simply selects a single random line for a large text file collection using a
quick and dirty Python script. It then is appended as a priority A to-do, allow me to read it
and check it off. Fourthly, I remove blank lines. It's really easy to add blank lines during
copy and paste yet I don't want to waste any time manually deleting them. This is a simple
grab command. 5. I reconcile merge conflicts. Dropbox occasionally can't resolve a conflict where
changes have been made, perhaps by the nightly script and something that I had just done on my
phone. Dropbox names this in a way that I can easily run automated diffs. This is gone by calling
to do underscoremerge3.py. I don't recall where I found this script. I don't believe I wrote it
and it doesn't have any attribution. Differences are added to the working file with a tag and
a priority. It allows me to decide whether I need them or not. 6. I add creation dates on any lines
that don't have them. Some of the apps will include how old a particular task is or allows you to
sort by creation dates. Do this you have to have them and not all the apps I use have the option
to fully add a creation date. This is a simple Python script I wrote. 7. I inject recurring events.
I found a wonderful to do.txt extension called ice underscore rec u r or ice recur.
I was using version 1.6 by Robin Lee Powell. The source is posted on GitHub include a link
in the notes. The basic idea is that you have a configuration file with one line for each to
do line with additional instructions to indicate when to add it. This would not only support
it complicated calendar recurrence constructs but it would also do a laugh time since the date
was last completed. To do.txt is the working file but when you complete a task in it and
it is archived it is moved to done.txt. This script would look at the completion date for that
text and done.txt. It would not add it until it defined time had elapsed. It also would not
all add task if you had not completed it. Solving the problem of not generating duplicates with
and with my former to do configuration I had to do that manually. Not a good use of my time.
This ran well for years on my low powered custom built DIY server. One day I had a hardware
failure and I took the easy route and bought this Synology. It's DES220J NAS as an experiment.
As a side note, it has been a pretty good experience with hardware for a limited
Synology. Since I bought it, Synology has since introduced some shenanigans requiring
Synology-branded drives that run counter to my DRM-free preferences. When it dies, I will likely
go to the container route on another custom server. One of my migration problems is that ice
recurrent needed Ruby. Ruby wasn't available on my budget. Synology box. So I converted it to Python 3.
This was fun. It was a good excuse to learn some Python. I also kept the original structure largely
intact and included a clumsy test environment. It is called PIE underscore recur and I posted
the source on GitHub. I'll include that in the show notes as well.
Eight. I would grapple report of everything I did yesterday for the Nile Report.
This is dead sample. I'm not using the S. at the moment, but I've considered
opinion it to my daily journal, text files. Nine. I removed duplicates from the to do.txt file.
I still managed to get duplicates occasionally. For example, my daily affirmation pulls around
the line from file of affirmations. It doesn't check for duplicates. Genus page had an extension
for this that worked. Well, 10. I bumped down the priority of task based on time. Now this
is an experiment that I've since discontinued. I use priorities A, B, and C. I use C for follow-up
items and none. Based on the creation date, this utility moved a week old A to a B. It would
move a month old B to a C. It would move a six month old C to nothing. This is an attempt
to emulate how the human brain tends to forget. If you have an A priority task that hasn't been
touched in a week, it probably isn't a high priority task. If you keep adding stuff to the list
the next thing you know you have just second nearly six hundred tasks, nobody wants to look at
that glance. So A priority stuff is stuff I checked during the day. Stuff I'm trying to get done
that day. B priority is just stuff that I checked once a day. This is stuff I'm trying to get done
in the next two weeks. C priorities are stuff that I checked once a week. This is stuff I'm trying
to get done in the next three months. C priorities, as I said, are checked once a week. These are
follow-up items largely. Blank priorities rely on having a project or a contacts tag to bring
them up. Might have a list of things that I wanted to serve for more information for example.
This prompted me to create a tag to accept items from this process. If during review of a lower
priority task and I decided it really needs to be higher, I can reassign the priority and add an
at NV tag. I call this utility fergesson.py, where fergesson is German for and to forget.
NV is nished for Gesson which is to not forget. Now I'm not German, but I live there for short time
and I love their culture. Recently I noticed that I had a lot of NV tags that were pluttering my
file. I decided to remove them and comment it out this utility while I rethink the process.
11. I air check for orphans. In this step I check for tasks that have blank priorities and
no projects. This would be lost from review in the unprioritized pile so this utility bumps
them to an A and tags them with at orphan. This allows me to review and tag them correctly.
Other fun stuff I've done with this. I have template files. For example I've got a packing list and
I can manually concatenate this file to my to-do.txt file and now the packing list is on my phone and I
can check things off as I stuff them into my suitcase. Frozen cons. This environment is robust
its flexible. It's not perfect. One of my prior Android apps had three variants. One for Dropbox
Anking, one for Google Drive Sanking and one that did no Sanking. Apparently app rather Google's
App Store declared that they were too similar in my choice. A Dropbox Anking version is no
longer in the Play Store. Yes I can sideload it but where is the motivation for developer continuing
to develop it? My fear is that something would come along and it would be broken without a
correction on the horizon. Google is tightening up their security on each release and it drives changes
in the apps. There's a lot of varieties of apps supporting multiple platforms and I believe
Google's changes are a threat to this ecosystem. I don't use Google to sync my to-do files but that
is likely used by many. I do use an Android app on my phone while I love the command line I
believe a phone for this use case needs a simple touch interface. A lot is easy for me to customize
a nightly processing of the files on my NAS box maintaining an Android app is another level
that I'm not prepared for today. Years ago I decided to minimize the overlap between my personal
and work lives and for a variety of reasons I stopped using this ecosystem at work and started
using Microsoft's to-do and yes it work where you are in a Windows Office 365 environment which
is an all-bad Windows 11 now. It work is much better than the Linux PC system that I last ran
at home. I'm happy with Linux at home and would not use Windows 11 even if it were open source
at home. I spotted a Python IPPI for Microsoft's to-do recently and I planned to start playing with it.
I'm a bit torn. I'm near retirement and unlikely to use this once I leave the corporate work
place. It's recurring capabilities are much weaker than what I have at home. Given my tendencies
toward procrastination it will probably still be on my work to do list when I retire. So,
what are other folks using in this space? I'd love to hear back in the comments if you've got
something that you prefer perhaps that should be a show. I know there's a lot of paid services
in this space that just goes against my nature to pay for something and be at the mercy
of their decision to continue to offer the service or not. Thank you.
You have been listening to Hacker Public Radio at Hacker Public Radio.org.
Today's show was contributed by a HPR listener like yourself.
If you ever thought of recording podcast, click on our upload link
to find out how easy it is.
Hosting for HPR has been kindly provided by an AnHonestHost.com, the Internet Archive,
rsync.net, and our mirror network.
Unless otherwise stated, today's show is released under a Creative Commons
Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.