Refreshed episodes/hosts/comments/series from hpr.sql, and added official HPR transcripts for the 180 episodes aired since the last sync (hpr4516-hpr4695).
170 lines
14 KiB
Plaintext
170 lines
14 KiB
Plaintext
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.
|