# Files are going away. Here's how to manage invisible documents

> The very notion of a 'file', that you can see in a hierarchical list of folders, is going away. In this post I'll explain what's happening and why, the problems it causes, and give you some simple strategies to deal with those problems.

In this post, we'll investigate how modern apps are moving away from the notion of a 'file', and how this makes our job more difficult.

The solution is simple: use your JDex to tell yourself where things are. This trick works just as well if you want to save links to documents stored on a website, in SharePoint, or anywhere else.

This post has an accompanying video. [Become a Pro member](https://johnnydecimal.com/membership#pro) to view it.

## MindNode modernises

One of my most beloved apps, [MindNode](https://mindnode.com), has rebuilt their app from scratch. What was _MindNode_ is now _MindNode Classic_, and while they say it's still maintained, evidence suggests otherwise.

![Screenshot of a colour picker. Where normally you'd have a colour inside the left half of a rounded pill shape, filling that shape nicely, here we have a hard square of colour that neither fills the pill's corners to its left, nor respects the lower boundary, overflowing there.](https://johnnydecimal.com/blog/0260A-MindNode_colour_overflow-530x354@2x.png)

_Figure 0260A. 😐_

That's fine. Software marches on, so let's download [the new MindNode](https://apps.apple.com/au/app/mindnode-mind-map-outline/id6446116532) and move with the times. Okay, done that. Now let's go to **File > Open…** and open the mindmap I was working on yesterday.

## Sad trombone sound 🪊

[In MindNode, File > Open… opens another copy of MindNode's own document browser. You never get to just choose a file to open.](https://johnnydecimal.com/blog/0260B-MindNode_trying_to_open-1728x1080.mp4)

_Figure 0260B. How Gen Z opens files?_

That is … not what I was expecting. I was expecting this.

![Screenshot of the standard macOS file open dialog. It's expecting me to navigate my folders and choose a file.](https://johnnydecimal.com/blog/0260C-File_open_dialog-1934x1126@2x.png)

_Figure 0260C. How Gen X opens files._

## There is no file

This will be familiar to those of you who use online tools like Google Workspace, Canva, and one of my favourites, [tldraw](https://tldraw.com). There, you have no notion of 'a file' that can be saved. Where would that file even be?

This abstraction is at the root of an issue made famous by the 2021 Verge article '[File not found: A generation that grew up with Google is forcing professors to rethink their lesson plans](https://archive.is/YjpyY)'. How _would_ you know how filesystems worked if you'd never used one?

In this model, your files are managed entirely by the app that owns them. MindNode is using an [Apple CloudKit database](https://developer.apple.com/icloud/cloudkit/) to store my 'files'. I put that in quotes because it really is incorrect to call them 'files' any more. They're now 'documents' in a database.

### To what end?

There is a good reason for this: sharing.

How would Joe Lunchbox go about using this file on his iPad? Or sharing it with a colleague? I don't mean _emailing a copy_, I mean real-time collaboration. Did I mention that his colleague uses MindNode on his Apple Vision Pro?[^vision] That's difficult if you don't know what you're doing. But it's enabled for free by CloudKit.

[^vision]: Of course nobody uses MindNode on their Apple Vision Pro (you can – they built it), but they _do_ use it on their iPad. The principle and technology are identical.

Not only is it free as in money, it's very simple for a developer to set up. They get the storage, security, and sharing provided by Apple as part of the CloudKit service. I know this because I'm using it myself for the app I'm building. It's a really great feature.

## One more place a thing can be

Okay so what? Files don't exist, they're stored in a database. What's my Gen X problem?

**My problem is that this is yet another place that a thing can be**.

When I sit down to work on this mindmap – where I'm trying to clarify the [extend-the-end](https://johnnydecimal.com/documentation/extend-the-end-overview) pattern for [Felicks on Discord](https://discord.com/channels/822215537589354566/1267671496118239313/1564412543294771261), and for myself so I can explain the idea more clearly – I need to reconfigure both my computer and my mind. I need to recall my notes, figure out what I was going to do next, and of course I need to open up the mindmap.

The list of places I need to recall for this trivial task is now:

- My [JDex](https://johnnydecimal.com/documentation/the-jdex) note (Obsidian).
- The Discord thread (a URL).
- The location of this mindmap.

That's not a long list, but it's this silent friction that makes our computers hard to use: _every time_ you context switch to a new task you need to figure out where this stuff is. And of course the list of possible places is different for each thing that you do.

### Undiscoverable

'The location of this mindmap' has now become very un-discoverable. I can't go pecking about my filesystem for it. In writing this post I created a test file with a unique name and used the command-line [mdfind](https://ss64.com/mac/mdfind.html), which hooks into the system Spotlight database, to find it. No results.

I asked Claude – an absurdly efficient finding machine – to tell me where it was. It spun its wheels with [find](https://ss64.com/mac/find.html) commands for 3 full minutes until I interrupted it. That was when we realised that the document is buried in a SQL database, invisible even to the all-knowing LLM.

### Forgettable

Discoverability is one side of the discoverability/rememberability coin. (I probably won't take that analogy much further.)

Let's say I come back to this thing in a month. I can't even assume that I'll remember that I created this mindmap. In a world where all your stuff is in one folder and to 'do work' you open that folder and rummage around, this isn't a problem.

But in a world where my stuff is in databases stored in CloudKit, I need to remind myself that it even _exists_ before I know to go looking for it.

<JDDiagram
  folder="blog"
  src="0260D-Diagram_chaos.svg"
  alt="A diagram showing a person in the middle of a cloud of 'stuff': MindNode, SharePoint, email, Dropbox. The idea is that they don't know where anything is."
  caption="Figure 0260D. Trying to figure out where a thing is."
/>

---

## The solution

The solution of course is your Johnny.Decimal index, or [JDex](https://johnnydecimal.com/documentation/the-jdex). You need a place that you control, and this is it.

As a reminder, the typical structure of a JDex entry is this.

```text
# 11.11 Title of entry

- Locations:
  <list of places where this exists>
- Related to:
  <links to related items>

---

This is where the text of the note goes,
so on and so forth, blah blah.
```

The 'frontmatter' above the `---` line varies depending on the information you need to store. If you use Obsidian you might use [YAML properties](https://obsidian.md/help/properties). I just use a bulleted list.

And so in this list of locations, just tell yourself that there's something in MindNode. I find the gentle pointer to be enough: you don't need to be explicit. Just guide yourself to the place.

```text
- Locations:
  - MindNode
```

<JDDiagram
  folder="blog"
  src="0260E-Diagram_JDex.svg"
  alt="A diagram showing our person with their JDex. The JDex points to MindNode and Discord. It's nice and calm."
  caption="Figure 0260E. Your JDex tells you where everything is."
/>

That's it. Keep it simple and you'll be more likely to do it – because you still need to remember, in the moment, to create this breadcrumb.

### Use the 'deep link' if you have one

A 'deep link' is one that opens a document directly, rather than just the app or site. They're typically very long, with a bunch of random characters at the end. Here's one to a Google Drive document.

[https://docs.google.com/document/d/1N5ZnznL3LkHmt-vm4z7jF1YKGqzbbhmkPs3J0aiiC5k](https://docs.google.com/document/d/1N5ZnznL3LkHmt-vm4z7jF1YKGqzbbhmkPs3J0aiiC5k)

MindNode will generate a deep link at `File > Copy Link to Document`.

So now you can use this link in your JDex entry, and clicking it will open the document directly.

```text
- Locations:
  - [MindNode](https://mindnode.com/document/4CZ02g…)
```

## Formalising 'Locations'

I'm going to make this simpler and more useful by recommending you assign [standard zero](https://johnnydecimal.com/documentation/the-standard-zeros) category `01 Locations` to your system.

You'd then define an ID for each location, and use links. For example if you define `01.11 MindNode` and link to it from any note like this…

```text
# 11.11 Your ID

- Locations:
  - [[01.11 MindNode]]
```

…then you'll get a list of backlinks from the MindNode note that tells you what you've stored there.

Not having given this deep thought yet, I'd probably suggest creating broad IDs for _classes_ of locations, then [extending](https://johnnydecimal.com/documentation/extend-the-end-overview) for specific locations. Because you only get 90 locations.

```text
01 Locations
   01.11 Apps & websites
         + Canva
         + MindNode
```

– then your link would look like

```text
- Locations:
  - [[01.11 Apps & websites+ MindNode]]
```

More on this in a follow-up post soon.