How I keep notes
Sun 19 May 2019 13:14 BST
A few years back, I decided to try to put a little bit of structure on how I kept records of such things as
- ideas and thoughts I have, related to my work
- procedures I performed in setting up machines and software
- phone calls I’d had for arranging real-life things
- important identifiers and numbers and so on
- meeting notes
- to-do lists
I’ve ended up with a loose collection of journal-like documents, each with a different feel.
-
A master
org-mode
document, which is always open in a buffer in my Emacs session.It contains
- a plain-text time-stamped journal of thoughts, ideas, workings-through of proofs and formalisms, book and paper reviews, talk notes, meeting notes, phone call notes, etc.
- detailed step-by-step records of how I’ve installed and configured various pieces of software for specific tasks; “how-tos”, essentially, for when I have to do the same kind of thing again
- detailed step-by-step records of how I’ve set up various servers
- to-do lists
I use org-mode sections, with one top-level heading called
Journal
containing the bulk of the entries.To-do items each get a top-level heading of their own and an org-mode
TODO
tag. Completed to-do items are demoted to second-level and moved into a “done items” top-level heading.When I’m doing paid work, I use org-mode’s timesheet-management commands
org-clock-in
andorg-clock-out
under aTimesheet
top-level heading; a couple of simple scripts help me prepare summaries for invoicing.Here’s a sample of just a few headings - each entry in the real document also has a bunch of text contained within it.
* Journal :PROPERTIES: :VISIBILITY: children :END: ** (2011-05-08 14:31:13 tonyg) Vertical interpretation vs Horizontal interpretation :STUDY: ** (2011-05-19 00:00:00 tonyg) Inter-network routing: should be *tunnelling* not *chaining* ** (2011-05-19 11:49:40 tonyg) Memory Pool System - API for virtual machine interface? :STUDY: ** (2011-05-19 18:30:50 tonyg) Scripting languages integrate with system languages. :STUDY: ** (2011-05-23 00:00:00 tonyg) Origins of Credit-based Flow Control and Acks, functional this time ** (2011-05-24 10:13:33 tonyg) Message buffer size should be determined by arrival-time jitter :IDEA: ** (2011-05-24 10:14:08 tonyg) Fine-grain scheduling in a distributed system using PLLs :IDEA: * TODO Build an imperative workalike os.rkt that uses real threads :PROJECT: * TODO Upload ~/src/racket-kademlia * TODO racket-rc4: RSA, DSA, DH, ECDH, ECDSA, etc * TODO Thank-you notes for xmas gifts! * Old, done to-do items ** DONE Configure Flashbake and git-syncing for Uni ** DONE Write presentation ** DONE View mini-DVD and write up evaluation
Some of the journal entries have gone on to become blog posts here.
The document lives in a git repository, and a
git commit
is executed bycron
every five minutes. I have checkouts of the repository on the two or three machines I use most frequently. I make extensive use of a variant of Emacs’time-stamp
feature:(defun stamp () (interactive) (insert (time-stamp-string)))
… which inserts text like
2019-05-19 13:15:43 tonyg
when I runM-x stamp
. -
A second such document, very similar, that also includes slightly more in the way of private or personal information, that I don’t have checkouts of on as many machines.
-
A paper journal, which I use when I need the different style of thinking it affords. The freedom to draw sketches and rough lines connecting thoughts is useful from time to time. I use a nice fountain pen that a friend gave me, even though it smudges horribly because I’m left-handed.
-
A Google doc that is a project-specific journal for one of my main projects, Syndicate. It’s a Google doc because I share it with various collaborators, and because I occasionally want to put pictures in the file. Otherwise it’s similar in feel to the main
org-mode
document I use: a record of thoughts, ideas and workings-through.
In every case, the documents function as append-only logs of thoughts and workings-through. I draw on them when digesting and summarising in later write-ups and in writing actual software. They’re mostly useful as an audit log, for finding out what I was thinking or what I did in the past, or for trying to reconstruct an argument.
The electronic documents are searchable, of course. It’s inconvenient that they are in different places, and I sometimes don’t know which of the small number of documents has the item I am looking for, but it’s not too unmanageable.
The paper documents are a different story. I intend eventually to photograph each page of my paper journal as a kind of backup, though I haven’t yet started doing so. Indexing that archive will require a bit of work too.