Zettelkasten Forum


If you asked me last week, I'd have told you I had a dozen or so orphaned zettel.

Well, I'm embarrassed. I ran a little script to see, revealing I was confused. Classic Blind Spot Bias. I hope to help. I don't worry if things aren't perfect. I aim to share my path as I discover little things that help. Some of you don't have any orphans; even if you did, this wouldn't be interesting. I consider myself a journeyman knowledge worker and can continually improve.

egrep -L -e ' \[\[|^\[\[|\.\[\[' *.md | wc -l

It showed 620 zettel with no outgoing links. Many of these have inbound links. It would be interesting to write a script that shows which zettel had no inbound links. Writing such a script is above my skill level. 620 is 20.5% of my ZK. It spotlights my laziness. Most of the zettel were older zettel, created when I didn't know better, and coding notes, but there are plenty of exceptions. I noticed a mass of class notes having no links. Maybe because they proliferated at hurricane force, and I didn't take the time to integrate them into my ZK fully.

I'm turning over a new leaf and starting a new practice. I've created a script that lists all the zettel without atleast one outgoing link. When I morning journal, the template populates with three random zettel from that list. I then spend a few minutes refactoring and adding outgoing links, integrating them into my ZK. If I do the higher math, I see that at a rate of three a day, getting the 620 orphan zettel integrated into the herd will take me 200.66666667 days or until May 16, 2023.
Zero orphans by mid-May. That is my publicly stated goal. Hold me to it.

Here is the script in one go. I've split it into two, one part creates the list once a week, and the second finds the three random zettel wanting attention.

#!/bin/zsh

cd /Users/will/Dropbox/zettelkasten/

# Reset the orphan's zettel list.

rm '/Users/will/Dropbox/zettelkasten/Orphan-Naked Ideas 202208222105.md'

for filename in *.md; do

# For each note, various positions of a link (not the UUID "›[["),  piping the output to orphan zettel list reformating filename into The Archive link. 

    egrep -L -e ' \[\[|^\[\[|\.\[\[' $filename | while read i; do echo $i | sed -E 's/(.*) ([[:digit:]]{12})(\.md)/[[\1 \2]]/' >> "Orphan-Naked Ideas 202208222105.md" ; done
    done

# "shuf" is a UNIX random tool '3' is the number of lines returned.

#while reading random (shuf) file names, reformat for Bear.

cat "Orphan-Naked Ideas 202208222105.md" | shuf -n 3 | while read i; do echo $i | sed -E 's/\[\[(.*) ([[:digit:]]{12})\]\]/- [\1](thearchive:\/\/match\/\1 \2)/' ; done

Will Simpson
“Read Poetry, Listen to Good Music, and Get Exercise”
kestrelcreek.com

Comments

  • @Will I try to track that as I go along using the tag "#Unlinked". That tag gets applied as part of the zettel creation macro I "borrowed" from you, that is, every new zettel has that tag included. I don't remove it until there are at least two outbound links. And every week or so I do a search on that tag, and process a few zettels so that they have outgoing links. However - I have way fewer zettels than you do - perhaps my method is too clunky when your ZK gets large?

  • edited October 29

    @GeoEng51, thanks for the tip. You've mentioned this before, and it didn't resonate as it does now. I'm implementing a #Unlinked tag alongside my other prompts in my zettel creation template so that when I get my ZK 'cleansed,' I can keep my Zk looking like a home rather than an orphanage.

    I think I'll remove the #Unlinked tag when forming the first outbound link. The first inbound link is the structure note that the zettel gets hung on. I've been thinking about scoring each zettel by watching the ratio of inbound to outbound links. I've been convinced that scoring a zettel on its link ratio is a fool's game. Wasting too many cognitive cycles for a paltry return.

    Checking for orphans is a way of randomizing zettel refactoring. It is probably as good as any queue for refactoring.

    Post edited by Will on

    Will Simpson
    “Read Poetry, Listen to Good Music, and Get Exercise”
    kestrelcreek.com

  • @Will Do you feel that all zettels should be "hung" on a structure note? If so, what are the advantages of doing that?

  • Love the shuffle routine, to me it reads as: yup some items here, but no biggie as far as order is concerned. And this folks, only reinforces my thinking that plain text is the defacto way to handle data - no plugins needed, simply use your existing toolkit & noggin.

    And UUID? Unique User ID? Wish there was a glossary board in the forum to help disambiguate local acronyms, mnemonics and such.

  • @GeoEng51 said:
    @Will Do you feel that all zettels should be "hung" on a structure note? If so, what are the advantages of doing that?

    Off-topic, but yes. See prior discussions.

    Did you run egrep -L -e ' \[\[|^\[\[|\.\[\[' *.md | wc -l in your zettelkasten directory? What were the results?

    Will Simpson
    “Read Poetry, Listen to Good Music, and Get Exercise”
    kestrelcreek.com

  • @Mike_Sanders said:
    Love the shuffle routine, to me it reads as: yup some items here, but no biggie as far as order is concerned. And this folks, only reinforces my thinking that plain text is the defacto way to handle data - no plugins needed, simply use your existing toolkit & noggin.

    And UUID? Unique User ID? Wish there was a glossary board in the forum to help disambiguate local acronyms, mnemonics, and such.

    Sorry for the acronym soup. UUID is a stand-in for Universal User ID. This gets the referred to zettel without its links. I find it indispensable when writing scripts and programming in python, and I'm looking for a specific zettel. Using a UID produces every zettel with a link to the UUID, not just the specific note. This conundrum can probably be solved more elegantly via other formatting protocols, but this seemed most straightforward way back when, and I've just stuck with it.

    Will Simpson
    “Read Poetry, Listen to Good Music, and Get Exercise”
    kestrelcreek.com

  • At least with the Folgezettel technique I don't have more than one or two orphans, since I start by deciding where the next note should be linked. The orphans are either interrupted notes or documents that probably should reside elsewhere.

    Erdős #2. ZK software components. “If you’re thinking without writing, you only think you’re thinking.” -- Leslie Lamport. Replies sometimes delayed since life is short.

  • @Will said:

    @GeoEng51 said:
    @Will Do you feel that all zettels should be "hung" on a structure note? If so, what are the advantages of doing that?

    Off-topic, but yes. See prior discussions.

    Did you run egrep -L -e ' \[\[|^\[\[|\.\[\[' *.md | wc -l in your zettelkasten directory? What were the results?

    I get the result "0".

  • @GeoEng51 said:
    @Will Do you feel that all zettels should be "hung" on a structure note? If so, what are the advantages of doing that?

    Arguments could be made that the connectiveness of the Archive is a lead variable for its ability to function as a thinking aid: If there is always a link present the association never stops.

    I am a Zettler

  • Looks Nice & readable to me Will. Very idiomatic of the timeless "garden hose analogy", where the output of x serves as the input of y.

  • @GeoEng51 said:
    I get the result "0".

    Congratulations. Every one of your zettel are integrated into your ZK.

    Will Simpson
    “Read Poetry, Listen to Good Music, and Get Exercise”
    kestrelcreek.com

  • @ZettelDistraction said:
    At least with the Folgezettel technique I don't have more than one or two orphans, since I start by deciding where the next note should be linked. The orphans are either interrupted notes or documents that probably should reside elsewhere.

    Congratulations on choosing a technique that automatically links a note into an idea stream through an inherent characteristic of the filename.

    Will Simpson
    “Read Poetry, Listen to Good Music, and Get Exercise”
    kestrelcreek.com

  • Maybe this isn't a help to anyone else. Maybe I'm the only one concerned with zettel orphans. I'm admitting my naivety.
    Sorry for the digression. Carry on.

    Will Simpson
    “Read Poetry, Listen to Good Music, and Get Exercise”
    kestrelcreek.com

  • @Will said:
    Maybe this isn't a help to anyone else. Maybe I'm the only one concerned with zettel orphans. I'm admitting my naivety.
    Sorry for the digression. Carry on.

    It think this is indeed a recommended practice: To have 0 orphans. :)

    I am a Zettler

  • edited October 31

    @Will said:

    @GeoEng51 said:
    I get the result "0".

    Congratulations. Every one of your zettel are integrated into your ZK.

    Haha! Well, I only have about 350 zettels and I've spent a lot of time "maintaining" them. So in my case, it makes sense. Others will have different purposes for their ZK and a different pace, and may well have some zettels that are not integrated into the whole.

    I agree with @Sascha , that the ideal would be zero, but that has to be weighed against other priorities in the creation and maintenance of your ZK.

  • I'm just getting started, so almost all my zettels are orphans now. I'm still working out my linking system, but based on what you said, I'll need to find a good way to search for zettels which aren't linked to anything.

    I'm using OneNote, which I generally really like, but it doesn't have a way (that I know of) to search for pages with no links. I'll probably have to write a macro for it.

    Thanks for the idea.

  • edited November 1

    @Will said:
    Congratulations on choosing a technique that automatically links a note into an idea stream through an inherent characteristic of the filename.

    It isn't automatic, it's the habit that comes with deciding what the left-hand, Folgezettel portion of the ID should be. The right-hand timestamp portion is automatic. One exception is when I backdate an ID to make a sibling that should occur earlier in the sequence in Zettlr's linear file pane view. There is also the first H1 header which has the title visible in the file pane, at least in Zettlr as it is configured. Scrivener will display at least this much in the cork board view. And as arduous as that is, I make some effort to read what I am linking to.

    As for idea streams, I'm not sure much of anything in my ZK rises to the level of ideas. Perhaps one thing that I am working on. But it's more of a depleted aquifer than a stream. The rest of the effluent gurgles to the bottom of the sluice, perhaps never to be seen again. But the effluvium hangs in the air.

    @Will said:
    Maybe this isn't a help to anyone else. Maybe I'm the only one concerned with zettel orphans. I'm admitting my naivety.
    Sorry for the digression. Carry on.

    It is useful--please don't say that! I have an entirely parallel situation.

    Because Zettlr won't generate my IDs (only the right-hand portion) I have an analogous trouble for which I wrote a script. The filenames that Zettlr generates are 14-character dotted timestamps in the form YYYY.MMDD.hhmm. I define the ID in the first H1 header, followed by the title. The corrected ID will never match the filename unless I copy the corrected ID from the H1 header, type ctrl-r for rename, and paste the ID into the file renaming dialog with ctrl-v. I wrote a python script to list all the Zettels where the ID in the H1 header doesn't match the filename.

    It helps to deceive myself that this is eufriction, to use Bob Doto's term. I often find myself in a state of inanition after working with the ZK. And to counteract that, I compound the self-deception with a belief in unbounded willpower and energy. This follows the rule of threes (eufriction, willpower, energy) which I continually forget.

    Thanks for your regex also.

    Post edited by ZettelDistraction on

    Erdős #2. ZK software components. “If you’re thinking without writing, you only think you’re thinking.” -- Leslie Lamport. Replies sometimes delayed since life is short.

Sign In or Register to comment.