Ok after having some more time with it I changed my mind, I don’t dislike it, I absolutely hate the entire thing.
Don’t get me wrong, I love what you do, and I love Observable, so I really don’t want to hate on this. But this feature is a solution in search of a problem. Worse it doesn’t solve any and only generates new ones, and it makes my notebook take longer to load and more distracting which just isn’t cool if you want to share them with customers.
rant>
Let’s be real, the sublime mini code view this apparently was inspired by is chart junk,
yes it looks pretty, and it feels very csi-miami-hackerish and cool, but it doesn’t work.
Are you really gonna get a better overview of your code by looking at a visualisation of how long each line in your file is? Shouldn’t you split that file up if it’s too big to scroll through? And aren’t you navigating by searching for keywords, or by jumping to definitions anyways?
Every sublime user I know has that features disabled because it adds no value and it costs screen estate.
The mini-map feature has the same problem. What’s the use-case?
Debugging? Once you’re at the point where you need to debug your dependency graph, you want to have a proper visualisation of your dependency graph, because you’re suddenly in “debug mode” with special debugging needs. In that scenario having the tiny mini map just feels cramped, like somebody is suddenly asking you to type with one hand only, and when frustration is at its peak you really don’t want that.
Also during debugging you want to be able to isolate and trace individual effects as they propagate. With the mini-map you either:
A. execute something and watch the little dots blip, but then everything else keeps running at the same time, so there is so much noise that it’s like looking at an ethernet switch in full load, trying to figure out which port has a particular traffic
B. “explore” the tree by repeatedly clicking on nodes, but then you still have to remember all the connections and build the dependency graph your head, so what’s the win here?
So if it’s not as useful for debugging as a plain old dependency graph, maybe there’s a different use case?
Maybe it’s navigation? So that you understand how your program is interconnected?
The cool thing about the literate programming style of observable is that it allows you to write a narrative. Humans are insanely capable of remembering stuff with the help of narratives, all the memoization tricksters use narratives and spatial narratives to remember thousands of objects. So if you’re not capable of keeping the notebook structure in your head via that narrative you’re sure as hell not gonna remember all the “meaningless” connections of the dots to form a cohesive picture of what’s going on.
It’s like trying to figure out what’s going on through a keyhole, not only horizontally but also vertically because of scrolling. Like all good chart junk this looks amazing when you only have 10 cells, but once you actually start to need it, it just breaks down. Not sure about you, but my poor brain won’t make a connection between the dots once I have to scroll a few pagefuls to get to the next node.
So it doesn’t really add anything for navigation, and isn’t as useful as a plain old graph would be for debugging, so what does it cost?
Notebook load times have gone up by 10 seconds for large notebooks (https://observablehq.com/@bultmann/triplemq), for super active notebooks it’s like having a network switch just outside your field of view, which is f*ing ace when you try to concentrate, and once you use it it’s frustrating as hell.
It’s not even THAT aesthetically pleasing. Even Sublime had the wisdom to replace their scrollbars with their code viewer, because these things just don’t mix well. How many UX elements do you know that are positioned just around or below the scroll bars? Even this discussion page with its questionable date/post/navigation slider figured out that it should be as far away from the scrollbars as possible.
Looks like my regular Observable workflow will now incorporate opening the inspector and killing the entire thing outright, but hey I needed that one open anyways for debugging.
<rant