While navigating in a densely linked cluster of notes almost feels cozy, I bump into two major difficulties when I navigate the landscape:

1. I have very different centers of interests which leads to loosely connected, if at all, clusters of nodes.
2. It is cumbersome to navigate between notes that are not directly linked but treat topics that are conceptually similar. See the Squared exponential kernel and Ornstein-Uhlenbeck kernel: they are both referenced on the gaussian process page but there is no way to know they are related when visiting either of these notes.

I believe these difficulties can be solved elegantly using representations of the notes' graph structure. The way we link notes to one another contains enough information to help us navigate: it can tell us which nodes are important (centrality), which nodes are related (community) and which give context (neighborhood).

## Use the full graph as a map

Wherever we are in the garden we should be able to pull its map, the network of notes, and be able to jump to another location should we want to.

We use the PageRank algorithm to determine the size of the nodes: this measure of centrality will naturally highlight summary notes (such as "Gaussian process" or "Chess") as links to and from these notes accumulate.

Instead of using tags to infer topics we can use a community detection algorithm to infer which nodes are conceptually related. For instance we can color nodes based on the community to which they belong. A decent force-based graph layout should separate the communities spatially on the page.

## Show a map of local neighbours in each note

The backlinks at the end of each note are useful, but we can take one step further and show the local neighborhood of the note instead:

We learn from the context of the current note by displaying the node's parents and the parent's other children. According to this blog post and the org-roam documentation we can display the N-neighborhood of any node as a `svg` figure using Graphviz. For instance for the 2-neighborhood: 7dae4406-eb94-4496-93e1-a989cab14729

```(org-roam-graph 1  (org-roam-node-at-point))
```

See the implementation of org-roam-graph which we may be able to modify to suit our needs.