The number of times this has saved me time figuring out "Oh .. i saw that error before .. how did I fix it?" and "who did i talk to about X and what did they say" months to years later has proven to be super helpful and I will be continuing indefinitely.
Open-source. Encrypted if you want. Synchronized using WebDAV (also Dropbox, NextCloud and OneDrive). Uses markdown. Has tags. And apps for everything (Windows/macOS/Linux/Android/iOS/terminal).
I use Zettlr as a markdown editor, with the underlying directory being in git. It's not encrypted, though doing that should be pretty easy with something like EncFS.
I'm curious if there is something you are using on mobile for vimwiki? I've been using termux on Android, which works well enough.
My backup method is pretty simple but it’s been silently chugging along for months now without a single hiccup. It’s just a git commit via cron job: https://thelinell.com/using-vimwiki/
What I eventually ended up doing was moving to vscode. I use it my main IDE for the last couple years. I have a linux vm running for all my development, with vscode remote ssh.
- I keep a folder for each month - I have a file in each month called YYYYMM-dailies.md, level 2 headings for each day - Notes that grow too complex for the "dailies" get their own file in the folder. A number of these might get polished and copied into a document site somewhere. - Sometimes I'll make a subdirectory of "snips" with small scripts or pseudo-scripts (stuff to copy/paste) - The integrated shell lets me paste commands into my dev vm and copy the results back into my notes.
A feature of this is that while it's not really "synchronized", I can vscode-remote-ssh from multiple machines, or just ssh into the vm to get my notes. You can use rclone or keybase+rsync to backup the notes directory (or keybase's git if you want to check notes in).
Another
A HN search illustrates the amount of markdown note apps available: https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...
I studied (a mix of EE/CS) in the EE dept., and we were actually taught to do keep such notebooks/journals, as in electronics labs were assessed on what the contents of your lab book, not on what you'd produced or measured (or at least not 'hey lab assistant look at my 'scope, see, done it' - obviously measurements would be recorded, but then the assessment's more 'why' and 'was that expected' than just a copied value from a neighbour).
I hated it at the time and wasn't particularly good at it ('writing what I'm doing just slows me down and distracts me from doing') but I've worked in software engineering since and wished I'd stuck at it. I've briefly tried in fits and bursts but never maintained it as 'this is how I work', despite having a former colleague who did.
Probably time I tried again, I agree it's worth it.
I've recently started contracting (and billing hourly) so I've switched to using an org-mode file, which contains commands, links to internal stories, and other things.
As I'm contracting I figured I might be asked to justify the hours-billed, etc. So for the first time I'm explicitly writing the daily-log with the expectation that I'll share it, and the employer will see what I write.
That (perceived) level of scrutiny has really improved the detail and coverage of what I document.
But good comment, thank you!
Some days I wonder where the day goes, with interruptions and getting back in the zone, it's a miracle anything gets done.
I run "vim `date -I`", which opens a file for the current day in the form `YYYY-MM-DD`. I keep it in a git repo that I commit and push to every time I add a note.
I separate topics using `===` surrounded by blank lines. When I go back to update a topic I already wrote something about, I separate it with `--` surrounded by blank lines.
The main thing this ends up being useful to me for is that I put off filing my timesheets until the end of the month, and then when our accounting lady gets after me, I can go back and actually write down semi-accurate notes on what I did each day.
vim $(date -I) alias jim=' \
journaldir="/home/myusername/journal/" ; \
jfile="log_`date -I`.txt" ; \
jfilepath="$journaldir$jfile" ; \
echo "Creating log: $jfilepath" ; \
vi $jfilepath ; '
Instructions:(1) Copy to your .bash_aliases file.
(2) Edit the journaldir, and replace myusername with your name.
(3) Create a journal directory somewhere for #2.
(4) Source it. source ~/.bash_aliases
(5) jim will open up today's note in Vi.
Try it out, and let me know.
alias jim=' \
journaldir="$HOME/journal" ; \
year="`date +%Y`" ; \
yearpath="$journaldir/$year" ; \
[[ -d "$yearpath" ]] || mkdir -p $yearpath ; \
jfile="log_`date -I`.md" ; \
jfilepath="$journaldir/$year/$jfile" ; \
header="# log_`date -I`\n\n# Highlights:\n\n" ; \
[[ -f "$jfilepath" ]] && echo "Opening log: $jfilepath" || { echo "Creating new log: $jfilepath" ; echo -e "$header" > $jfilepath ; } ; \
vi $jfilepath ; '
Copy this to your .bash_aliases file. It's fully automatic. It'll create the directories automatically.This will now create a /home/user/journal/YEAR/journalfile.md. It's now separated by year, so that you can run this forever, and have a maximum of 365 files per year directory.
This is a markdown file. And in the header variable, I had it fill in the new file with some basic headers. You can edit this yourself to add more.
Try it out, and let me know.
on macos
Try this instead. It works for me. Let me know.
Copy it to your ~/.bash_aliases. And source it.
alias jim='
function _jim() {
journaldir="$HOME/journal"
year=`date "+%Y"`
today=`date "+%Y-%m-%d"`
yearpath="$journaldir/$year"
[[ -d "$yearpath" ]] || mkdir -p $yearpath
jfile="log_$today.md"
jfilepath="$journaldir/$year/$jfile"
header="# Log: $today\n\n# Highlights:\n\n"
[[ -f "$jfilepath" ]] && echo "Opening log: $jfilepath" || { echo "Creating new log: $jfilepath" ; echo -e "$header" > $jfilepath ; }
vi "$jfilepath"
}; _jim' alias journal="vim ~/workspace/google-drive/journal/$(date "+%Y-%m")"
Then in vim I have this mapping, by pressing F2 it opens a new line at the end of the file so you can just start typing.
I add goals to the beggining of the week with the F3 map. nnoremap <F2> Go<NL><Esc>i<Esc>"=strftime("\%A, \%Y-\%m-\%d \%H:\%M:\%S")<CR>po -
nnoremap <F3> Go<NL><NL><Esc>iWeek <Esc>"=strftime("\%V ")<CR>p<Esc>i goals:<CR> -
Monday -> Press F3 -> like a bujo, review what is still relevant and move to next week or drop it. Week 10 goals:
- [ ] check connectivity with service x, splunk and service Y, from new environment
- [ ] xxxx
Then whenever I will change context in my mind I just go back to the open buffer and press F2.
I normally start my day looking at what happened over the other remote branches, and update my weekly goals task list Thursday, 2020-07-09 08:25:52
- emails / slack
Thursday, 2020-07-09 08:36:13
- support x person
Thursday, 2020-07-09 10:00:00
- dog break
Thursday, 2020-07-09 10:00:00
- HN
Then at then end of the year I create a folder `archive/201X/` and move all the files under it.I had a calendar event reminding me to review what happened over the week on Friday afternoon, but that is just lying to myself. I got to do once or twice over the last couple of years, that is something I need to improve on which is the whole point of article, review it while it is fresh and learn from it.
edit: code format
Check out my other alias, in the sibling comment. I improved on it.
I try not to be strict about the format, and it's certainly evolved over the years.
For instance, we have a weekly department meeting. There's now a section "Dept Meeting" in today's file with a few points I want to bring up. Maybe they'll get resolved by then, or maybe I'll add more points. The simple act of copying that file each day and removing what's no longer relevant means I have refreshed my memory, don't have to worry about stuff that's no longer relevant, and have a track record of what I thought was relevant.
I mean, i currently put everything that needs doing into org-mode, clock in on the task when i'm working on it, and clock out when i'm done. Mark the task completed, and archive done tasks daily to an archive file.
I guess that's the limit of my daily "todo" activities. It's mostly in point form "x needs doing", "request confirmation from x", "send status on project x to y".
If i'd have to do it in a "daily file" i have no idea how to structure it. Todo'ish lists probably wouldn't work. They're either done or they're not. I guess it would have to be more like "short stories".
I think what works best depends upon how you plan to use them and what your workflow looks like. But I have tended to find the "1 giant file" is a better fit for me.
I get caught up trying to design the best system, and end up with something that only half works -- I just post notes to myself in Slack, particularly in the @you channel, the one it sets up for you at your username. Downside: every time I switch jobs, I lose a TON of context. Upside: everything's in Slack and I don't have to worry immediately. :) Plus, it's always possible that I'd lose the computer I was taking notes on, or not allowed to sync notes to my own private repo, or whatnot.
If I need to write longer-form notes than Slack allows, though, I often turn to Notes app or OneNote (if on Windows). But ... it's constrained because I end up not being able to stick with one cross-platform note taking tool -- the tools I use are too different. Still waiting for the perfect tool that has yet to arrive... I suspect the answer lies in the operating system -- to track what I work on in any app and helping me surface and record metadata better. To move from tracking files and folders to helping me track activities and outputs/decisions. Integrating git commit logs with macOS-like app-based revision history with operating system file browsing (for other kinds of cloud storage) seems like the right level of abstraction to work at, but I'm not sure what the right UI would be. :)
There's a todo list at the top of each day's entry. But the rest is mostly free-form. Some days don't contain anything. Others contain meeting notes. Design ideas. Results of experiments. It's all plain text, so it's easily grep-able. Sometimes I look back at them to answer "why did I do that"-type questions. Sometimes $manager wonders what I've been working on or why it's taking so much time. I can just point at the journal and say "I've been doing 3 meetings every day and I've been onboarding people so I haven't had time to work on XYZ".
It's not much effort. And imho it's definitely worth it.