Imagine a long thin drawer full of index cards, such as one finds in an old library card catalog:

"New York Public Library" by jimculp@live.com is licensed under CC BY-NC-ND 2.0

The simplest way to organize this series of notecards is to number them from one to infinity, starting with the nearest card and working towards the back. Let's assume our drawer has 10 cards in it. They're now numbered 0 to 9.

Brainsai needs to represent hierarchy, though. Nix-like operating systems do this with file paths, in which directories are separated by forward slashes. Web URLs work the same way. Brainsai follows this convention.

Let's add a card as a child of card zero. The new card's path is 0/5. Pick the middle digit between 0 and 9, because we don't know whether future sibling cards will precede or follow it.

Add a child to card one. The card's path is 1/5. Add a second child to card 0, after the first child. The new card's path is 0/7. Etc.

It's easy to sort these cards. Their sequence is

0  0/5  0/7  1  1/5

Now what if we need to add a new sibling card between 0 and 1? We might call it "1.5". However, this is awkward. A decimal point is easy to miss, which can result in a misfiled card. And we already have forward slashes. Mixing periods in there will be confusing: "2.5/3.1/7.45".

A better way is to use alphanumeric rather than just numbers. This adds 26 characters to paths, improving conciseness. The midpoint of the alphabet is the 13th letter "m" for middle. Thus a sibling between 0 and 1 is "0m". Unlike a decimal point, the "m" is impossible to miss.

The full series:

0  0/5  0/7  0m  1  1/5

At every outline level, start with digits. If that fills up, switch to letters. It's easier to work with digits than letters, but letters are more concise, which is useful when the namespace is crowded.

To place a sibling card between 0 and 0m, use the 6th letter of the alphabet, f:

0  0/1  0/2  0f  0m

To place a card between 1f and 1g, switch to digits:

0f  0f5  0g

We use lowercase letters to avoid numbers that look like letters and vice versa, but this isn't a perfect solution. Lowercase "l" looks like 1, and "o" looks like 0. Write in cursive and slash zeroes.

Next let's move card 0 to its new home as card 5. We must also update the paths of all the card's children:

0  0/1  0/2

becomes

5  5/1  5/2

If it's a big family, updating them is onerous. Here are some ways to mitigate that.

A card's front should have the title at the bottom and the path across the top. Center-justify the path so that there's room to make corrections on the same line. When the line is full, cross it out and start a new one.

Any other content, such as the card's summary, unique ID, and links to other cards or longer documents, goes on the back of the card.

If you want to live dangerously, you can also use relative paths. There is redundant info in this series:

5  5/1  5/2

As long as the cards aren't knocked out of order, this means the same thing:

5  ?/1  ?/2

So you can just scratch out the zeros on the child cards, and carefully move them together with their parent.