Questions:
1. What is your workflow?
2. What tools do you use?
3. If you log to a text file, how do you format your entries?
My framework
Daily log vs. daily journal
For me, entries in a daily journal require deeper thought and reflection on what you have done, your goals, etc. Usually, journaling is done 1-2 times/day. Conversely, entries in a daily log concern immediate actions and are done many times a day. However, your daily log could inform entries in your daily journal.
Daily log vs. a to-do list
For me, entries in a to-do list are only the things you need to do. Also, most to-do lists I've seen don't store the timestamp of when a to-do item was created. Conversely, entries in a daily log are more diverse and are all timestamped. They may include to-do items but don't have to. My entries are updates, notes, questions, and to-dos.
My log is a markdown file, which I edit in Sublime Text. I created Espanso [1] shortcuts to add timestamped entries. E.g., "zzq" expands to "[2022-10-26 10:45:24]: Question []:" and "zzn" expands to "[2022-10-26 10:45:56]: Note:". For proper task/to-do management, I use Amazing Marvin [2], which is decent.
[2022-10-23 09:18:44]: Update: prepared slides for meeting with @Laura #1on1 #projectLion
[2022-10-23 10:54:36]: Note: I created a new keystore key using these instructions https://xxx.xxx, stored in keys dir #projectGamma
[2022-10-23 11:16:54]: TODO [x]: deploy a new build, which fixes the bug with incorrectly parsed dates (id:1332); [2022-10-24 10:12:12]: rolled out, v17 (2.0-17) #projectGamma
[2022-10-23 12:27:56]: TODO []: ask about daily log software on HN @me
[2022-10-23 13:38:00]: Note: password for W in stored in LP #projectGamma
[2022-10-23 13:43:25]: Question [x]: should the style guide be in the repo or YouTrack? @Alex #weeklymeet #projectGamma; [2022-10-25 15:17:13]: @alex said in YT because we'll use it in other projects
[2022-10-23 14:11:15]: Question []: should we use Red Frames (https://github.com/maxhumber/redframes) in addition to Pandas? Criteria for decision? @me #projectLion
What do you want to improve and why? - I need an easier way to find, e.g., all questions from this week for @Alex about #projectGamma. I'd like to easily filter entries by date, project (#projectGamma), person (@Alex), and type (Update, Question).
- Nice to have but not required:
- sort entries by status (not done: [], done: [x])
- auto-timestamp when a to-do item was created and completed
- surround selected text with [], {}, "" and auto-close them like a programming text editor, e.g., ST, VSCode
- duplicate & move entries via shortcuts
What have you looked into? - People enjoy Obsidian [3] and Logseq [4]. I find them alluring too, but I don't yet know how to make them support my daily log. I'd need to spend at least a full day to figure out each of them, the time I don't have at the moment. (I use Obsidian for code snippets; it is excellent.)
- Org-mode is very popular, but emacs and vim are way too much of a time investment (I tried many times before). Do share your evil and holy workflows, though. There are org-mode extensions for other text editors and EasyOrg [5]. I still need to try them.
- I like the todo.txt format [6] and I am considering forking pter [7], but making it fit my needs would take quite a bit of work.
Dealbreakers: - No Windows version
- No desktop app
- Subscription-based software, including charging for syncing between computers
- No export option
Links posted in a comment.
I use a little script I wrote that, once per hour, opens a full screen always-on-top window that forces me to write one sentence on what I have been doing this past hour, and saves it in a plain text file. The input field is a combobox, so I can just press arrow up if I'm doing the same thing as the previous hour. This way, by the end of the day, I have a journal for the day that went.
Linux: https://gist.github.com/allanrbo/4f2ae1968afe9cb8b3ce6e9580d...
Windows (includes screenshot to get a visual on this idea): https://allanrbo.blogspot.com/2017/05/utility-to-remind-you-...
I use a single flat text file, and use it for years. I have an editor macro that adds a new, timestamped entry at the end of the file, which looks something like this:
----------------
27-Oct-2022 9:38:48 am
|
The bar is where my cursor lands, all ready to start typing. A simple alias ("note") brings up the file. I can make a note in a second or two, then get back to what I was doing.I dump everything into this file. At my last job, my notes file was maybe 20-30MB and nearly a decade old. I record hard-won knowledge, TODO items, pieces of debug sessions that are interesting, little notes about what's going on, jokes and random thoughts, contact info, whatever. Editors load big files fast, and incremental search works great. The idea is to make this practice fast, nearly frictionless, and not adopt complications that are tough to maintain over time.
I've found that the less formal and structured I make things, the more notes I take; if I had to conform to a schema it would be a burden. No Emacs modes. No email or contact or TODO-system integration. Just notes.
It's saved my butt more times that I can remember. It's great to have at review time, too.
* Write down today what you want to accomplish tomorrow. Each item on a line.
* Check them off the next day.
* You could add meetings, but if your day is full of meetings rely on your calendar for that.
* If you did something meaningful, not on the list, add it. Cross it out.
* There will be enough space on the paper to capture some meeting notes or thoughts.
* At end of day, throw (recycle) or retain that page.
I use the Amazon Basics graph paper notepad and a simple gel pen.
Writing works better than most things if you need a list.
For long projects, I use Apple notes to capture the plan. When ready to be worked on, I switch to paper.
0. Unfortunately, I cannot find the link anymore. I think it was one of those "what I learned during my 50 years as a senior software engineer". The author possibly mentioned using Kate-editor. It was a really good article.
1. Espanso (free): https://espanso.org
2. Amazing Marvin (paid): https://amazingmarvin.com
3. Obsidian (free/subscription for sync): https://obsidian.md
4. Logseq (free): https://logseq.com
5. EasyOrg (paid): https://easyorgmode.com/
6. todo.txt format: https://github.com/todotxt/todo.txt
7. pter: https://github.com/vonshednob/pter
Every so often I empty the discard pile into shoebox for storage. I produce about 3/4 of a shoebox per year so storage isn't really a problem (yet). Since they're all dated and more or less chronological, it's easy to go back and reconstruct what I was doing on a given day, and I can also thumb through them for ammunition come review time.
I currently use 3x5 cards but am thinking about upsizing to 4x6 (postcard size).
Take a look at obsidian-tasks, templater, and the dataview plugins to understand how powerful (yet simple) this is.
Works great, makes sure I don’t forget what I’ve been doing or should be doing and means the entire team can see what I’m working on and what I’m thinking about.
I don’t really get all the obsession with structure, style and having a specific application for notes. For me this is mostly a way to keep organised with a brain that’s prone to lose things without regular reprompting.
What's nice about this workflow is when I create TODO items and don't finish them for a day it transfers over to the next day.
* The review of pull-requests.
* Meetings.
* Some "tickets" I work on.
* etc
So with that in mind I have an emacs org-file, which has a standard set of headers which are inserted in a single file, beneath today's date.
I use the following emacs package to make that easy to manage:
* https://github.com/skx/org-diary
With that in place I get something like this automatically:
* 31/08/2022
** Desktop Setup
Updated my =brew= environment once again, this time it was =git= that required the update.
** Merge Requests Reviewed
None.
** Meetings
- 11:15-11:45 - Example Meeting
- Notes here
** Tickets / Stories / Projects
- JIRA-1 IN-PROGRESSS example-project
- Stuff I did.
- JIRA-2 DONE example-project
- Stuff I did.
** Problems
None.
On export to HTML/PDF any section that is empty, or contains only "None." is removed.
# cat /etc/profile.d/notes.sh
function notes()
{
if [ ! -z "$1" ]; then
mkdir --mode=00750 -p ~/.notes
Now=$(date '+%Y%m%d.%H%M.%S')
echo -en "\n$Now\t$@\n\n" >> ~/.notes/notes.txt
else
echo "${Now}"
cat ~/.notes/notes.txt 2>/dev/null
fi
}
For syncing I suppose this could be pushed to a cifs/nfs/sshfs share, or into a git repo or emailed.Usage: notes some text -or- notes "some text that needs to be quoted in a shell;/;-)" then "notes" by itself to read all the notes. I suppose a function to null out the notes.txt file would be handy and maybe a function to commit the notes to a repo.
Step 1: send yourself a message and mark it as Saved. It will now show up in your Saved items. The message should contain a section for what you did yesterday and what you're going to do today. Other than that it can be any content or formatting you like.
Step 2: set up a channel for posting your daily logs, e.g. #yesterdayandtoday
Step 3: update your daily log (saved message) as you go through your day. Add things you did TODAY in the Yesterday section, add things you know you have to do TOMORROW in the Tomorrow section.
Step 4: At the start of each day, copy-paste your saved message into the daily logs channel. Do this every day, this will form the longevity of your logs.
Finally, to review all your logs, just search for your name in the channel. Or tags, or whatever. I like to divide my log entries between tasks, accomplishments, blockers, and goals.
I used to do this in Sublime, which was fine, but Obsidian let me automate the date and frontmatter stuff, which made my life marginally easier. The point though, is that Obsidian is not something I'm locked into, which is nice.
- https://blog.isquaredsoftware.com/2020/09/coding-career-advi...
Since then, I've switched tools. I now use VS Code to write a Markdown file per-day. I also use the Foam extension, although the only feature I actually use from that is the "Create Daily Note" command, specifically tweaked to auto-create the right folders and filenames like "2022-10-24 (Monday).md" and similar main file header. I keep those in a Git repo.
Tools: I use a single org-mode file and I have a shortcut command in Emacs to launch it (M-x wl). When I run this command, it generates a new entry with the date and time and places my cursor so I can type right away.
(defun wl ()
"Open work log"
(interactive)
(find-file "~/dailylog/wl.org")
(newentry)
)
(defun newentry ()
"New log entry"
(interactive)
(search-forward "#now#")
(beginning-of-line)
(insert "\n\n* ")
(insert (shell-command-to-string "date"))
(dotimes (i 50) (insert "="))
(insert "\n\n\n")
(forward-line -2)
)
;; bonus function
(defun codeblock ()
(interactive)
(insert "#+NAME\n")
(insert "#+BEGIN_SRC javascript\n")
(insert "#+END_SRC\n")
(forward-line -1)
)
Format: No particular format except the auto-generated date above. There needs to be the string '#now#' in ~/dailylog/wl.org, this is where new entries are generated.
https://tibleiz.net/code-browser/download.html
I have kept an older, personally preferred version of that Editor on my GitHub Repo, unfortunately it does not perform stable on Linux and I have not been able to compile it on that system, in order to fix the bugs.
https://github.com/nilslindemann/Code_Browser_49/blob/master...
Here is a video showing how it works (my older version + scripts):
https://www.youtube.com/watch?v=sU4ThIJ6eKc
I also use this editor for code, it gives me the expressiveness I need, but its comments make the code look terrible in other editors.
I wish these features were available in other text editors. For someone used to Code Browsers folding capabilities, other editors are just awkward. But I guess other Coders will think the same when they see that they don't even get completion in Code Browser. Also, it is quite a niche editor.
Go Note Go is a note-taking system for when you're on the go, with a focus on driving and camping. It's just a headless keyboard (Raspberry Pi 400) -- no monitor, no display at all -- that you can type on (or speak to; it has a microphone). Anything you type will get uploaded to your notes, and if you speak it will get transcribed automatically and uploaded to your notes, all as soon as the device gets an internet connection (so you can use it offline, e.g. when camping).
Being single-purpose is really nice -- no time lost switching apps or waiting for something to load before you can type. And being screenless is nice too: it feels really freeing to not think about typos or wording etc, and to just keep moving forward.
For me, the notes are uploaded to Roam Research, but it supports other note-taking systems too (e.g. email, Notion, RemNote, Ideaflow, Mem, ...).
Links: https://davidbieber.com/projects/go-note-go/ https://github.com/dbieber/GoNoteGo
- Ctrl+End (goes to end of file)
- New line
- New line
- Left bracket
- Edit > Insert > Date time (custom)
- Right bracket
- New line
The macro is assigned to my F5 key, everytime I press it, the sequence is triggered.
In my file, it will more or less look like this:
[...previous log entry...]
[2022-10-28 12:48:31]
- wrote comment about my time macro in notepad++ on HN
todos exist in other org-mode docs.
> - Org-mode is very popular, but emacs and vim are way too much of a time investment (I tried many times before). Do share your evil and holy workflows, though. There are org-mode extensions for other text editors and EasyOrg [5]. I still need to try them.
I would argue that vim and emacs being "too much of a time investment" is a common misconception based on the incorrect implication / belief that you need to learn "all the things" or "most of the things". there's far too much. no-one can. Last time i checked there were 2956 8 1/2 x 11 pages worth of help docs for vim. No-one knows it all.
I came from vim, was a huge fan and teacher, and moved to emacs largely because of the lure of org-mode.
In both i have learned that you need to learn essentially nothing to get work done. For example: here's my vim quick start. You can learn it in < 30 seconds. the only other thing you need to know is `vim path/to/file` to open the file.
that's enough to have you productive, because once you enter insert mode it's just a normal text editor. Do it in a GUI version and you've got mouse interaction too.
You don't _need_ to learn anything else. You'll _want_ to learn more, but the thing is that all the "more" you _want_ to learn can be done at whatever relaxed pace you want.
now, there are caveats and asterisks in that emacs and vim are both incredibly bare bones in their default configuration with no plugins or tweaks. Like...reeeeeeealy bare bones. So, there's a good argument to be made to start with a common distribution that bundles plugins. I use Doom emacs which is great if you're a vim geek.
But, even then my point remains. There is very little you actually _need_ to know in emacs or vim in order to get work done, and you can learn the other things you want to learn as you have time and inclination.
This system works really well for me. I've stuck with it for years, longer than any other "daily log" system I've tried.
Why it works for me:
- The separation of notes between days mitigates the visual clutter that comes with a "one giant document" system. Each day I start with a blank slate.
- I can quickly reference notes from any day in the past by scanning the calendar and finding the day I worked on a particular thing.
- Everything is still searchable via Notion's global search.
I originally created this system when I was using vimwiki, but it is compatible with Obsidian's Daily Notes feature too (a big advantage to using A Folder of Markdown Files as a knowledge base). In fact, the two can share a diary without undue effort.
Obsidian does charge for sync, but you don't have to use their sync service. You can sync yourself using syncthing, dropbox, or whatever you like. I use git to sync, with the obsidian-git plugin[1].
But back when I did use it, it had a nifty feature where if you create a new empty text file in notepad and save it as .LOG, then each time you open that file it'll append the timestamp. Something like that (my memory about it is a little hazy).
You can use a specialized tag to separate your log from your finished tasks. I was using "+memo".
So
task +memo +yak "Tuned up my Emacs config a bit now it boots -0.02s faster"
You can use Taskwarrior's other features such as projects, contexts etc. with this. And of course you can use as many tags as you like.Also you can customize report formats for your log, and create shell aliases to make logging and looking up easier.
Edit: typo
That way I can easily find all log files through the back links.
It works really well because it gives me a space where I can add stream of conscious stuff which is incredibly useful for later on writing blog posts or documentation where I still remember the various pain points.
But it also separates these logs from the actual project note so I can keep that space tidier.
I’m FTE now, but I’ve actually billed hours by totaling these logs in the past and it worked well.
It's basically a toy website that I used to try out web frameworks. In my case I tried out Python's Django and Flask. Other people have done the same in a variety of languages and frameworks - check out https://todomvc.com/
It has the colors, font, work-flow, features that I want.
My end goal is to not even need these. But I haven't met anyone that at that level and I don't see a way to get there.
One key insight - its not about writing things. Its about reading them and re-reading them.
So its the Date and Bulletpoints for each New Activity with Timestamp. Often I jump from task to task and have to add what I have done later. Sometimes it does not work at all (if I am away from my PC). Guess I am at a 80% rate and its fine.
It gives a hierarchy, so todos, meeting notes, etc., can be organized. Search is reasonable.
Not perfect, but better than one large word doc, which I had been Using before.
It's more of a command-line note-organizer tool that makes it slightly easier to index and manage bunch of markdown files.
At least for me anything more complex than that turns into a quagmire of optimising the process at the expense of not actually using it.
It's also perfectly portable with pretty much any text editor, vimwiki just makes indentation and nested checkmark management easy.
Better than notepad in terms of formatting etc and very reliably available across devices.
Personally I use my own CRUD app be it cross-platform desktop apps or Chrome extension since I spend most of my time in Chrome. Both write to the same DB.
First are notes I take before the standup, then general notes of what I did that day.
# date
---
## End of day
- (what to look at tomorrow)
---
time
- note
time
- note
- note