I have been managing my to-do lists for the last few years in OS X using the program Things (Cultured Code, link). Initially I was quite happy with it ... but then they broke it.
To: email@example.com Date: Tue, Jun 5, 2018 Subject: Things for Mac Version 3.6 Dear Cultured Code, Please restore the sort-by-deadline feature. The best way to triage when I get behind, like after extended travel or at the end of a semester, is to sort by due/overdue date. It is this missing feature that has me continually looking to replace Things. You folks really broke my workflow by taking away this sorting ability in Things 3. If you have a work-around I would like to hear it. At any given time, I am managing ~35 open projects, with 10 to 40 items to work on "Today". Sincerely Yours, John A. Marohn
Cultured Code's support team wrote back on June 13, 2018, saying
Sorry for breaking your workflow. I can’t promise at this time that we’ll bring back that feature, but we’ll be mindful of your feedback when we have our next discussion. Things is a work in progress, and we’re always looking for ways to improve how it works.
Things 3.8 was released on December 20, 2018, and the sort-by-deadline feature has not been restored.
After researching alternatives, I've decided to try Emacs and Org Mode.
- "OrgMode tutorial", Rainer König [youtube]. A set of 36 tutorials, each 5 to 20 minutes in duration. Browsing these tutorials gives you a pretty comprehensive view of what Emacs OrgMode can do for you. To see OrgMode in action, start here!
- "Pragmatic Emacs: Practical tips for everyday emacs", Ben Maughan [html]. The README for this website says "The tips are aimed at people who have learned the basics of emacs (i.e. moving around, opening, editing, saving files) and are starting to explore how to do more than basic editing".
- "Emacs Org Mode: A System for Note-taking and Project Planning", Carsten Dominik; Google Talk; July 15, 2008 (47 min) [youtube]. Carsten Dominik is the author of OrgMode for Emacs.
- "Emacs + Org Mode + Python in Reproducible Research. A SciPy 2013 Presentation", John Kitchin (21 min) [youtube]. A theoretical chemist at Carnegie Mellon University explains how/why he uses Emacs Org Mode in his research.
- "CEO's Guide to Emacs", Josh Stella; November 10, 2015 [html]. Explains how/why Emacs helps you get things done.
- "Two Years With Emacs as a CEO (and now CTO)", Josh Stella; August 8, 2018 [html]. Great quote: "It was also a reminder that liberal arts focused people are every bit as smart and capable with technology as programmers, and perhaps less prone to technology religions and tribalism."
My emacs configuration files are stored at /Users/jam99/.emacs and /Users/jam99/.emacs.d/init.el.
I am storing my org mode files in ~/Dropbox/emacs/org/.
- Add a file to the list of agenda files: C-c [
- Word wrap: M-q
After a week of use, I have settled into filing tasks into one of the following files
admin.org personal.org service.org research.org
inbox.org literature.org someday.org
In OS X, you have to make the Emacs Meta key the [command] key, the key one to the left of the space bar at the bottom of the keyboard.
To grab links from open Mac applications  use
M-x org-mac-grab-link RET
which I can also achieve using the shortcut
To install the logbook option 
Options > Customize Emacs > Specific Option > org-log-into-drawer [Value Menu] > LOGBOOK [Apply and Save]
To take notes, add a :LOGBOOK: and :END: section below the item, put the cursor on :LOGBOOK: and type
To enable archiving, add a line near the top of the file
C-c C-x C-a <== an item C-c C-x C-s <== a subtree
To reopen with the buffers intact from the last run, add the following line to the ~/.emacs initialization files
I am going to be using Emacs .org documents as an electronic notebook. I want to track changes to these documents using the version-control program git. I will do this by making making my ~/Dropbox/emacs directory a git repository. Working out of a directory ~/Dropbox/emacs gives me one level of backup through automatic Dropbox file synchronization. I want to establish a second backup by connecting the local git repository to a remove private repository that I am going to set up on GitHub.
Put my Emacs-directory files under git version control. Go to the upper ~/Dropbox/emacs/ directory and run
$ git init
Remove temporary files in ~/Dropbox/emacs/org with names like #research.org_archive# and .#research.org_archive# and make a first commit to the local repository at ~/Dropbox/emacs/.
Log in to my GitHub account and create a private repository called emacs.
Connect the local repository with the private GitHub repository. Making this connection is a little tricky. In the directory ~/Dropbox/emacs/ run
$ git remote add origin https://github.com/JohnMarohn/emacs.git $ git pull origin master --allow-unrelated-histories $ git commit -m "Merge upstream git repository with the local one." $ git push origin master
This procedure seems to work:
$ git tree * 6ddbaf6 (HEAD -> master, origin/master) Merge upstream git repository with the local one. |\ | * b379b17 Initial commit * aae066a First local commit.
To make things faster for next time
$ git push --set-upstream origin master
To update the remote repository, I can now just run git push at the command line from the ~/Dropbox/emacs directory to push local changes upstream to my private GitHub repository.
Emacs does have a learning curve, but Org Mode is indeed awesome. It has much better functionality than Things.