A Tinderbox solution to organising a Zettelkasten?

Taking my opinions out of the wiki note so they do not get edited away.

The reason I suggest enumerating the issues is to be more precise about suggestions – “this” is being suggested as the answer to “that”.

I also observe, that the existence of problems #2 and #3 are apparently limiting the answers to problem #1. Luhmann did not have the latter two problems – I believe he was more concerned with discovering relations than creating a fixed structure. But, what he wanted to do is irrelevant, really. The best approach is Tinderbox’s strength – links. So if we do not have the latter two problems, then the first problem becomes irrelevant because we have links. Is it more important to know that Note 2 comes after Note 1, or to know that Note 2 relates to Note 1?

1 Like

Sorry: it’s my imprecise language, built atop my imperfect mastery of TBX action terminology, causing the confusion. Let me clarify:

@brookter had kindly shown me how to use Luhmann’s alphanumeric system in a way that would sort correctly in TBX and upon exporting. In so doing, he was clarifying something @eastgate had suggested but I’d misunderstood.

@mwra then pointed out that a purely numerical version of a Luhmann ‘address’ could be automated in TBX (instead of my entering it manually). The action code he posted achieved this, providing a Luhmann-esque number to a note depending on where it stood in the document’s overall OutlineOrder.

In my dummy test file, this gave me the following:

My final query (which contained the offending ‘this’), was whether the action code could be modified in order to start, say, with ‘container 001’ (in my image above) having a MyStringA value of 001. In other words, for the counter to ignore anything outside of the container ‘zettels’ and only start counting children note below it.

Edit: To clarify what I’m trying to achieve using MarkA’s code:

zettels container (no number here; zettels is the root)
    001
        001.001
            001.001.001
            001.001.002
        001.002

So, yes, @mwra was helping me with 1. and 2. in your list of issues. (I think 3. is just a matter of exporting, which isn’t a problem.)

As to your opinions (which are helpful when thinking about implementing a zettelkasten in TBX):

  • You are right, one needn’t follow Luhmann’s exact numbering regime when creating a zettelkasten in TBX. In fact, if one was never going to export at all, none of this is probably necessary: just file the notes wherever you want, because the Tinderbox-issued ‘ID’ attribute will ensure links never break.
  • My initial question (which got this whole ball rolling) was how one could implement the Luhmann numbering, for purposes of exporting notes in a way that would respect the order of notes and preferably reflect the existence of note-sequences. Again, even this is not strictly necessary, so long as some numeral-based system of exporting maintains the basic order.
  • Everything else that followed was helpful suggestions for using TBX’s action for automating the process (in light of pros and cons of the manual vs automated approaches).

Apologies if I overcomplicated things! But I must admit, I found all the advice not only useful, but also instructive in tailoring TBX for my purposes.

That seems to be a live issue within the Zettelkastenwelt as far as I can tell. Some think links are enough, others that the placing of notes (behind this note rather than that) adds something.

To me it seems that a clustering of notes around a number sequence is an indicator of where your interests are evolving: if you’ve reached note 3/1b7j8n10p1a, then that is an indicator that this topic stream is occupying more of your thoughts than a sequence which finishes at 4/1a. As one of the benefits of the system is supposed to be that it does allow you to build up a map of interests from the ground up ‘in conversation with you’, that may be of value in itself, and it’s supplementary information to that you get from links or tags alone.

But I’m not an expert at all, and only the ZKn3 program seems to implement it, so I’m probably missing something.

Edit: the Dance feature in TBX does offer an interesting way of viewing such clusters though.

2 Likes

You’ve summarised it well, David. My own experience and usage puts me in the camp that values the note-sequences. Beyond the reasoning you gave (which is the main cognitive benefit), the existence of note-sequences

  • saves me from having to create a link from every note to merely ‘follow-up’ notes on the same topic (think, the view of another author on the same subject, or a note that deals with a particular point of the previous note)
  • preserves the creation of links for connecting different concepts and ideas to one another.

Why this distinction in Tinderbox particularly?

  • It means I can utilise the Outline View to provide me a quick visual overview of which note-sequences are maturing, without needing to fiddle with links for every note and without having to scroll all over my tinderbox file just to see handful of related notes.
  • It means I can utilise the Hyperbolic View to see what trails of connected but distinct concepts are developing across the whole note collection.

It goes without saying this isn’t the only way to structure or use a zettelkasten, in or out of Tinderbox. But, to my eye and in my experience, it provides a great way to actually learn from one’s note collection as a whole.

1 Like

Interesting points, thanks, Talal. At the moment I’m using Scrivener for the ‘live’ slip box, so haven’t really tried implementing it in Tinderbox in anger, rather than just testing it, but there is real food for thought there when I do.

A numbering scheme is not needed to do that.

Or, as Manfred Kuehn pithily noted

“this is an ordinary Zettelkasten:”

IMG0000004D

1 Like

@talazem - no censure intended. The confusion here is that this is like a game of whack-a-mole. There’s always one more thing, that it would have been more useful to to know about before starting. :slight_smile:

Firstly, I strongly advise use prototypes for this sort of thing, and disable the code in the prototype(s) being used to set the code. There is no gain running the code in notes that don’t need or use it. For instance, you ‘Prototypes’ container shouldn’t be using the code.

As the the precise question, I’ll table two inferred assumptions from the screen grab, though not described in text:

  • All zettel notes are descended from one container.
  • That container is at root level.
  • That container is not a zettel note.

Then try this:

$MyString=;
$MyList=collect(ancestors,$Path).sort($OutlineOrder);
$MyList.each(X){
   if($OutlineDepth(X)>1){
      if($MyString){
         $MyString=$MyString+"."+$SiblingOrder(X).format(0,3,"0");
      }else{
         $MyString=$SiblingOrder(X).format(0,3,"0");
      };
   };
};
if($MyString){
   $MyString=$MyString+"."+$SiblingOrder.format(0,3,"0");
}else{
   $MyString=$SiblingOrder.format(0,3,"0");
};
$MyStringA=$MyString;
1 Like

A numbering scheme is not needed to do that.

It’s the Little Enders v the Big Enders argument of the Zettelkastenwelt as far as I can see. Obviously some extra information is imparted: whether that additional information is worth the additional effort in a digital system is another matter.

I miss Manfred’s Taking Note blog. I had it on an RSS feed in Devonthink and then one day it stopped without explanation.

5 Likes

Further fixes to my Zettelkasten-like numbering code, including a user-configurable number of segment padding numbers. Assumptions as before:

  • All zettel notes are descended from one container per document. If you need two discrete sets either use two TBXs. This method can only support a single note hierarchy per document.
  • That container is at root level, though I’ve added a feature to let the root $OutlineDepth be below root.
  • That container is not a zettel note.

Plus:

  • Root zettelkasten note container is called Zettels, case-sensitive
  • Add a String-type user attribute, MyStringA
  • Add a List-type user attribute, MyListA
  • Add a String-type user attribute, ZettelCode
  • Add a Number-type user attribute, ZettelPadNumber, default value: 3
  • Add a Number-type user attribute,ZettelRootNumber, default value: 1
  • Set $ZettelPadNumber and $ZettelRootNumber as Key Attributes for container ‘Zettels’

The ‘My-’ prefixed attributes are used in the code and named so as to not accidentally affect Sandbox group attributes with the same name stem.

In the previous example padding was hard coded to 3 giving codes like 001.004.002. Now setting a value of 2 gives codes like 01.04.02 . The variable padding number is now set in $ZettelPadNumber in the ‘Zettels’ container. Note: the sensible range for $ZettelPadNumber is minimum 2 and up to c.4: a value of 4 allows up to 999 sibling zettel notes per containers but obviously makes for longer codes. The Value can be changed and will be applied the next time the code is run.

N.B. If you set, for example, a pad value of 2 and some containers actually have >99 notes the code still works but different segments have different numbers of digits. This will effect correct sorting using lexical sort, so set the pad value according to the maximum number of siblings-per-container you have (or foresee using soon). My hunch is most people will start on 2 and move to 3. If a need to set 4 approaches, you might want just break a current set of siblings into 2 containers (Tinderbox doesn’t really care).

The code assumes the container holding the steels is at the document root level, but pre-empting a another change, I’ve parameterised this. So, if your main container holding zettel notes is at $OutlineDepth of 2 set $ZettelRootNumber to 2. Simple!

Set this code as the rule in the prototype(s) used for zettel notes (or add to existing rule code):

$MyStringA=;
var vPad($ZettelPadNumber(/Zettels));
var vRoot($ZettelRootNumber(/Zettels));
$MyListA=collect(ancestors,$Path).sort($OutlineOrder);
$MyListA.each(X){
   if($OutlineDepth(X)>vRoot){
      if($MyStringA){
         $MyStringA=$MyStringA+"."+$SiblingOrder(X).format(0,vPad,"0");
      }else{
         $MyStringA=$SiblingOrder(X).format(0,vPad,"0");
      };
   };
};
if($OutlineDepth>vRoot){
   if($MyStringA){
      $MyStringA=$MyStringA+"."+$SiblingOrder.format(0,vPad,"0");
   }else{
      $MyStringA=$SiblingOrder.format(0,vPad,"0");
   };
};
$ZettelCode=$MyStringA;

Sorry, this took much longer than I’d imagined (checking edge cases, parameterisation of options, etc.), but here is a simple demo/test file: zettelcode-demo.tbx (115.7 KB)

I would be very interested to know if the logic of the ‘zettelcode’ mechanism is essentially feature complete. IOW, before building anything deeper off this I want to make sure we’ve not missed any obvious error or needed additional option.

I’m not wildly keen to do this as a rule, but for now it’s the best option. Discussion (elsewhere) is considering ‘featurising’ this as a an action or calculated attribute, thus the necessity to ‘freeze’ the design logic - or we’ll be at this forever. :slight_smile: So, input on this is requested!

If you want to ask about action code logic in the code above, I suggest you start a new thread and link to this one so we don’t get thread drift.

1 Like

I’m a middle-endian when it comes to breaking my morning eggs.

Luhmann did not rely on his numbering alone – the keywords and bibliography at the head of his slip box were described in Communicating with Slip Boxes:

The alternation of numbers and alphabetic characters in numbering the slips helps memory and is an optical aid when we search for them, but it is insufficient. Therefore we need a register of keywords that we constantly update. The [fixed] numbers of the particular slips is also indispensable for the register. Another complementary aid can be the bibliographical apparatus. Bibliographical notes which we extract from the literature, should be captured inside the card index. Books, articles, etc., which we have actually read, should be put on a separate slip with bibliographical information in a separate box. You will then not only be able to determine after some time what you actually read and what you only noted to prepare reading, but you can also add numbered links to the notes, which are based on this work or were suggested by it. This proves to be helpful because our own memory—others will have similar experiences to mine—works in part with key words and in part with author’s names.

and

Every note is only an element which receives its quality only from the network of links and back-links within the system. A note that is not connected to this network will get lost in the card file and ill be forgotten by it. Its rediscovery depends on accidents and on the vagary that this rediscovery means something at the time it is found.

Obviously, the “links” here are not digital, but are the mechanical thread established with the note-number-key word-bibliography components.

2 Likes

No argument from me – of course keywords and indices are important to supplement links. But over-reliance on keywords can also bring problems as everyone with maze of confusing tags can testify.

The Archive people and others think that UUIDs, keywords and links are enough to do everything that Luhmann’s combination of numbers/sequences, links, indices and keywords does. The other side disagrees.

1 Like

I can’t help but note some of the quoted observations relate to the limitations of the (paper) media/tech used, especially with regard to keywords and the lack of a search mechanism.

For those (it’s not for me) going deeper into this I’d suggest taking care not to hold onto legacy constraint based methods/structures, re-implementing limitations when better richer digital alternatives/improvements exist.

4 Likes

Yep.

People would come to view the slip boxes looking for something magical. NL’s observation was

Menschen kommen. Sie bekommen alles zu sehen, und nichts als das—wie beim Pornofilm. Und entsprechend ist die Enttäuschung.

IOW – the magic is in the note taker, not the mechanic. I too miss Manfred’s blog, I think his motivation was finding the magic not the method.

1 Like

That’s part of the difference, I agree – there are a few who seem determined to be as Luhmann-like as possible, without actually assessing how much is no longer necessary in a digital system. In the end, as long as people work out a system which helps them, I don’t see that it matters all that much.

1 Like

Bingo!

2 Likes

Menschen kommen. Sie bekommen alles zu sehen, und nichts als das—wie beim Pornofilm. Und entsprechend ist die Enttäuschung.

Forgive me, my German is a little rusty… I imagine that Pornofilm is the German for KeyAttribute?

AFAICS the whole point of the thing is to get you to think about the notes in context and in your own words to foster creativity, rather than just taking random notes which are then forgotten in the margins of books and the dusty recesses of DT databases… If you do that, then the ‘magic’ is more likely to happen, whether or not you follow the precise path to get there. And other note taking systems will also work for other people.

Yes. Over emphasis on tools/process as a substitute for thought is something to which we are all prone.

2 Likes

Actually, it’s a kind of Composite.

3 Likes

I hope the original intention behind this thread remains clear. One might say that a collection of notes draws upon Luhmann’s insights if:

a. there is no pre-conceived hierarchy of topics
b. notes can be linked together
c. note sequences can emerge*

i.e. that there be no rigid hierarchy, while allowing structure to emerge.

Tinderbox shines when it comes to emergent structure. The ‘magic’ (to borrow the term) is in seeing relationships and meaning emerge out of years of research and reflection.

The original question was about whether Tinderbox’s features could be used for a very specific use case. Namely, how to use Tinderbox to export notes that have been organised according to the three principles mentioned above.

I agree with @PaulWalters that sometimes it is better not to use Tinderbox and just use something else. But I like working in Tinderbox, and only wanted to explore whether a TBX-based note collection could be exported in a way that would numerically maintain the representation of sequences. I am grateful to those who volunteered solutions, be they low-tech or automated.

The question most definitely is not about a particular technique, let alone an arcane numbering scheme. If one is never going to export from TBX, the whole question of ‘addresses’ is redundant. There are other meaningful ways to learn from one’s note collection, whichever side of the egg you prefer. But, if it is acceptable use of the forum to ask questions about exporting notes with an eye to printing on paper or using them in other apps, then some of the ‘old’ techniques might still be informative and helpful to our discussion. :slightly_smiling_face:


(* I know this one is debated, but I for one have experienced practical and cognitive benefit in utilising both note sequences and links, be it on paper or on a computer.)

1 Like

There’s really nothing to “debate” – I like clutter and assign meaning to the texture of the whole – the rooms in my puzzle palace are generally not adjacent; others like structure and sequence. Horses for courses, and Tinderbox can accommodate those poles and many more.

Personally, I think there’s a bit of a prescriptiveness in the blogs and various forums (but not here) that assign a kind of sacredness to Zettelkasten – which (I think I am agreeing with @brookter here) is unfortunate because it misses the value of alternatives. But, fads fade, and the work goes on.

4 Likes