First things first, it's simple: a plaintext file, few syntax rules, public availability, and that's it.
Second, keeping my .plan file up to date helps me staying
    organized.  Did you bump into something you want to fix, but
    don't have the time to do it now?  Add an entry for it.  Did you find an
    interesting article to read...later?  Add it to your
    .plan file.  Did you spend a lot of time debugging a problem?
    Write about it, so that you can come back to it later, should something
    similar happen again.  It's like your digital, personal
    journal.
Lastly, keeping up with your .plan file is going to help
    improving your technical writing skills, and especially if you work in the
    same industry as I do, you know how important that is (e.g. document things,
    file clear and descriptive bug reports, or describe solutions to technical
    challenges).
The format of my .plan files is pretty basic: mostly
    based on John Carmack's early .plan files, with just a bit of
    Markdown flavour in it.
Usually the first few lines of all my .plan files will tell
    you what the file is about, and give a bit of an overview of
    how the file itself is structured.  For example:
This is my .plan file ...
When I accomplish something, I write a * line on that day.  Whenever a bug
/ missing feature / idea is mentioned during the day and I don't fix it, I make
a note of it and mark it with ?.  Some things get noted many times before they
get fixed.  Occasionally I go back through the old notes and mark with a + the
things I have since fixed, and with a ~ the things I have since lost interest
in.
Sometimes I rant about broken things (mostly, computer related), and how I go
about and (try to) fix them.
--- Matteo LandiThe careful reader might notice that this welcome message is very similar
    (90% similar) to what John Carmack had in his .plan file back
    in the 90s; just a few tweaks , to make the file a bit more Markdown
    friendly (~ instead of - for things that I have no
    more interest in, or prefixing my todos with ?).  I don't
    explicitly tell how day entries are implemented but at least the
    reader knows there will be some (and it should be pretty straightforward to
    understand the structure, once they go through the file).
Speaking of day entries, in my .plan those are
    implemented as Markdown's sections headers (with the specific date in
    it), and anything that happened on that day will go right below it:
# 2020-05-12
Did a little bit of debugging as to why **all** my Common Lisp Windows
executables were not printing things out on the stdout as expected, and it seems
to have something to do with redirection...
...
# 2020-05-16
Alright, I think I figured out what I had to do in order to get my CL programs,
on Window, to properly output stuff to stdout.  It turns out you have to
explicitly tell deploy[1], the system I use do deploy standalone CL
applications, that you want your Windows application to be a _console_
application, or otherwise deploy will go with a GUI application (and GUI
applications that don't usually get a standard output to write to).
...And if for a given day entry I end up writing about completely unrelated
    topics, I would simply stick a --- separator in between, and
    create two or more sub-entries:
# 2020-05-16
Alright, I think I figured out what I had to do in order to get my CL programs,
on Window, to properly output stuff to stdout.  It turns out you have to
explicitly tell deploy[1], the system I use do deploy standalone CL
applications, that you want your Windows application to be a _console_
application, or otherwise deploy will go with a GUI application (and GUI
applications that don't usually get a standard output to write to).
[1] https://github.com/Shinmera/deploy
---
Run into another problem with Travis-CI the other day; when deploying artifacts
to GitHub, it would error out with the following message:
    /home/travis/.travis/functions: eval: line 109: unexpected EOF while looking for matching ``'
    /home/travis/.travis/functions: eval: line 110: syntax error: unexpected end of file
...And that's pretty much all you need to know to process my
    .plan file; knowing a little bit of Markdown would not hurt
    (e.g. emphasis, strong, code, links), but Markdown is simple enough that you
    can figure things out as you read it.
I don't have a single .plan file, but multiple of them.  My
    personal one for example (also publicly available here), is where I write about things
    that I have to get done (or have already gotten done), projects I started
    working on, ideas, or computer-related problems I am dealing with (and their
    solutions once I figure them out).  Then I have another .plan
    file that I use at work: very similar to my personal one, but all about
    work-related stuff.  At work, I also keep different .plan files
    one per each person working in my team and reporting to me, and mostly use
    these for 1-1s minutes, or for big achievements / projects that these people
    completed throughout the years.
All my .plan files live in Dropbox, and since I have Dropbox
    installed on all the PCs I care about (even on my mobile phone), I can edit
    all my .plan files from everywhere.  Of course you don't have
    to use Dropbox, but I just find it too convenient for not using it:
    edit your .plan file while on the go, hit save, and when you
    get back to your PC the added content will be there; or the other way
    around, you shut down your PC, hop on a train, you open Dropbox on your
    mobile, and a few seconds later you can continue working from where you left
    off before.  Of course I don't have this urge of editing my
    .plan file every time I am on the go, but if I have to, I can
    do it.
Talking about editing .plan files... I use Vim as text
    editor, and if you do too here are a few tips / hacks to make
    ".plan files editing", even more enjoyable:
~/.vim/syntax/plan.vim)~/.vim/ftplugin/plan/folding.vim)autocmd group to create mappings for creating new day
      entries without specifying the current date, or to automatically populate
      the quickfix with all the todos listed in the
      .plan file being edited:
        augroup ft_plan
    au!
    au FileType plan setlocal wrap textwidth=0
    au FileType plan nnoremap <localleader>n Go<cr># <C-R>=strftime("%Y-%m-%d")<CR><CR><BS><BS>
    au FileType plan nnoremap <localleader>o :silent lgrep '^\?' %<cr>:lopen<cr>:redraw!<cr>
augroup ENDLastly, I have a cron(8) job on my server, that every night
    downloads my .plan and places it into a specific folder so that
    my web server can serve it.  I also wrote a small program, plan-rss, that my server
    automatically runs to create a RSS feed of all the most recent
    day entries of my .plan file (it's not perfect, but if you are
    looking for a way to stay up to date with my .plan file, then
    subscribing to my plan.xml is probably your
    best bet).
That's pretty much all I had to say about .plan files, and
    if anything, I hope I made you at least a little bit curious about the
    idea behind them.
Remember: it does not matter which syntax rules you end up using, which
    editor you will be typing these notes in, or which mark-up language rules
    you will ultimately end up supporting.  What really matters is that you
    start writing, and start taking notes... and more importantly, that you do
    this consistently: the more you do it, the more natural it will
    feel, and the more weird it will feel to get at the end of the day,
    after having spent so many hours in front of your PC, without having
    created an entry in your .plan file.
Happy .plan-ing