The Index - Tools and Best Practices

Hi, since the index is so central to the whole idea of Johnny.Decimal, I am kind of wondering why there is not more discussion about or resources targeting this problem. (I have searched the forum but maybe I missed something.)

Since Johnny has abandoned his work on a dedicated app (understandably :slight_smile: ), I was wondering, can we start sharing best practices and tools for keeping the index?

My ideal Index would be something like this:

  • Lightweight and super fast (with a good quick search and navigation through the hierarchy)
  • stored locally, so no internet connection needed (synced via iCloud, I guess)
  • unobtrusive to access (I don’t have to enter a bloated tool that takes long to load or enter login details to access)
  • possibly free or at least not tied to a pricy subscription

What do you guys use? What works for you and what doesn’t?


My background: I am a freelance designer and I have started implementing a PRO.AC.ID-style JD System a couple of months ago. On one hand I feel a lot of calm from the fact that I have a reliable filing system for everything, on the other hand I haven’t managed to keep a reliable index. I’ve started with a google sheet but that soon became unwieldy and not fun to use (no foldable headers, takes quite long to load, requires internet connection).

1 Like

I think @johnnydecimal prefers AirTable (see Tracking your numbers | Johnny•Decimal). But I guess it depends on your needs and preferences.

I’ve experimented with Numbers at first (see My derivate of J.D (and P.A.R.A.) - #3 by bogenschlag) but that’s a bit fiddly on an iPhone. Then I moved to MindNote (in outliner mode, see Using an outliner for the index) and from there to OmniOuliner (for its column support). (I already had/used/owned all these.)

If you don’t need columns to track location etc. a simple(r) outliner is not a bad choice IMHO. https://zavala.vincode.io for example is looking to shape up quite nicely, available both on macOS and i(Pad)OS and free.

1 Like

Yeah I currently use Airtable – which has a healthy free plan, you never need to pay for it if you don’t want to. That’s mostly because I use Airtable for a whole bunch of other stuff in my life/work and really like it as a product. JD needs ‘a database’ and that’s exactly what Airtable is.

In the past I’ve used text files with great success. Just create a note for every new item, whether it needs a note or not. You need the sort of editor that lets you quickly filter on your notes, so you can type 32., scan the list of numbers, locate the next available, create a note, off you go. (I did this in an old job with Resophnotes for Windows, an unmaintained app which is janky but fast.)

Or any other database or an outliner or anything else, yes.

If I was to start again on some sort of solution of my own I’d pare it right back to a command-line thing that had a text file as its data store. The problem I had with the version I started was that it was going to be an online thing with user accounts and the possibility of sharing projects and so on and so forth which – turns out! – is a butt-load of work. Especially when you’re not already a full-stack web developer and you’re trying to do it in your spare time. I don’t know what I was thinking. :man_facepalming:

1 Like

Thanks @johnnydecimal and @bogenschlag for your thoughts. Your remarks on using an outliner gave me the idea to try and use taskpaper, which I bought a long time ago but never really used for tasks. It fulfills a lot of the requirements I am looking for: It’s lightweight, has good navigation and filtering, the data is stored in plain text and synced via iCloud. Not sure what app I can use on iOS but I’m pretty sure there is one.

I’ll try it for now and report how it goes.

One thing that interests me though: Why do you need columns to track locations? In my case, for a google drive folder or file I would now try to just add a link in taskpaper like so:

Yeah that’ll work for location.

When I had ideas on using a plain-text file for this, and defining a standard format, I was leaning towards enabling arbitrary metadata by:

10-19 My great area
   11 A category
   11.11 Some brilliant ID
         - Note: this is an arbitrary note.
         - Location: https://my.special.place/secret

I just posted a link to the article Johnny mentioned on Twitter. It’s from September, but I found an interesting link there. It is for an Obsidian plugin that seems to auto-index all folders and sub-folders. I haven’t tested it yet, but even though I do not use Obsidian, couldn’t I, theoretically, install Obsidian, point it at my root JD folder, run this plugin and have it auto-index everything?

Theoretically…?

1 Like

follow-up - I installed and ran the plugin. Here’s the screenshot. I think it pretty much did what I had hoped. I need to tinker with the settings, but if you need an index, well, there it is!

Bottom left, you can see the index file. I opened it, then moused over some folders, following down to a file. I may change the index file prefix so that this view doesn’t show the index files first in each subfolder, but that may be what someone wants, so …

2 Likes

Thanks for sharing the link. I’m going to see if I can replicate it in Obsidian. I like Obsidian, but always end up using Craft. I LOVE Craft.

I use Mindnode as my main index, and at least once a week try to go in to review based on my use and see if I need to make changes. I started using the system a couple of months ago. I was able to move around almost all of my important files into the system, although I would love to number all files. I haven’t had time for that. I would love to move my files in Craft and Obsidian to the system. I’ve done some work on it, but still have quite a bit to go. I also would like to relabel/number my databases in DEVONThink, but that’s another project I haven’t had time to start.

I’m curious about what data you entered to run the plugin. Did you enter say, 10-19, 20-29, 30-39 and so on i the “folders included” section? What else did you enter across the sections?

I’m terrified about entering something wrong and fully messing up my files. :slight_smile:

You can do it a couple different ways, the plugin can only create index files of your content and won’t ever modify/delete any of your content (unless I guess you had some existing files with the same names as the auto-generated index files?)

If you have some higher level folder that contained all your 10-19, 20-29, etc. folders, you only need to enter the higher level folder name in the ‘Folders included’ section.

Alternatively, if you leave the ‘Folders included’ section blank, it will generate index files for every folder in your vault, including the base vault folder.

Another way is have the plugin generally index everything in your Obsidian vault, except for the folders you specify in the ‘Folders excluded’ setting.

FYI- If you are on Mac and just want to quickly pull lists of folders and files, you can select everything in a folder with cmd-A and paste into a plain text editor such as TextEdit (plain text format, not rich text), all the file and folder names selected will be pasted as a list.

2 Likes

Hi all! Jumping straight into this discussion, after having binge-read the knowledge base (thanks John!) and explored a bit the forum.

I’m still in the initial phase of finding out areas/categories, but I thought a lot about the index. I’m leaning towards a plain-text format (for the moment). And I thought that the YAML file format suits almost perfectly my needs, at least in this preparation phase.

Something like:

00-09 Meta:
  00 Johnny Decimal system:
    00.00 Setup:
      - Note: this ID must contain the index file, at least
10-19 My great area:
  11 A category:
    11.11 Some brilliant ID:
      - Note: |
          This is an arbitrary note
          which can span multiple lines!
    11.19 Archive:
      - Note: This is an archive Johnny.Decimal ID
  12 Personal finance:
    12.11 Bills:
      - Note: Billings of all kinds
    12.12 Contracts:
      - Note: Contracts (mobile, banking, etc...)
    12.13 Investments:
20-29 Projects:
  21 Personal projects:
    21.01 Website for my sister:
    21.02 Podcast project
  22 Work projects:

On a desktop/laptop, searching is a breeze with any editor (I’m using Vim). On mobile, it should be pretty easy as well. Adding new IDs might not be as fast as Airtable and definitely it’s not as polished. Bonus point: since it’s a well-established format, it’s fairly easy to write a script in any language (Python, Go, JavaScript, you name it) if one wants to parse the index and manipulate it in a semi-automatic fashion.

Any thoughts to share?

1 Like

I started formally defining this when I had ideas about writing an app. (I thought I’d written more than that tbh :face_with_raised_eyebrow:)

And I’m thinking about it myself again now as I start a new job next week, which will require a new index.

I’ve been using Airtable to track numbers for a home project and while I do like it, it’s undeniably ‘heavy’. I’m almost certainly going to go the plain-text route for the new job.

As you note, searching is easy. It’s the ultimate cross-platform format. It’s free. You can build your own tools to query it. I’m saying all the things you said. :upside_down_face:

I am still interested in the idea of an agreed standard. Here’s what else I had in my mind that I was sure I’d put in that GitHub repo.

  • Whitespace shouldn’t matter from a parser’s perspective, but nice indentation obviously makes your file more readable.
    • i.e. you should be able to choose your own indentation.
  • I had exactly your syntax for recording notes, or any other metadata.
    • That is, on any line after an A, C, or ID, enter:
    • dash space [word] colon space [free text],
    • e.g. - Location: File system
    • You can define as many of these as you like.
    • I hadn’t thought of the YAML multi-line thing, that’s nice.
  • I allowed JS-like comments with // at the end of a line or /* … */ for multi-line.
  • Probably something else I forgot.

I had intended to spend some of October on the site but other stuff had to take priority. Aah, time.

1 Like