SimpleLinearLists

Organizing data can be tricky. I think the simplest way of organizing a collection of arbitrary things is to create a flat structure that can just be searched through.

Computers are fast enough to search for your term through lists of thousands, even millions of elements. Hierarchies break down with new information. Many categories are deeply connected. A flat data structure remediates the categorization problem.

One example is WikiBlog (this blog!) that shows a single list of topics on its index page.

Problems with SimpleLinearLists

Of course a SimpleLinearList won't fix everything. The core problem is a lack of nesting or namespacing. As in the C programming language, one would instead create terms with a certain prefix to denote their domain:

wl_display

wl_event_queue

wl_proxy

You get the idea. This is not practical for categorizing a large set of items, however, having the ability to collapse a hierarchical categorization by concatenating the hierarchical terms makes such a hierarchy a lot more searchable.

The Goal: Discoverability

Have you ever visited a website with nested menus and then spent a few dozen seconds clicking through them to find the thing you were looking for? I certainly have.

This way of structuring information is poor for discoverability. My core argument with promoting SimpleLinearLists is to make it at least possible to flatten a hierarchy so that the user can use Ctrl-f or any other search method to quickly identify relevant terms.

Example of Success

Take the fuzzy file finder fzf. This has been a remarkable tool for use in large codebases for quickly finding that which I'm interested in. It has sped up the process of finding the right files immensely. If two files have the same name then one can just use Ctrl-A (in vim) to jump to the front of the search and write a few letters to disambiguate which directory should be searched. Personally, it's a huge improvement of the development process.

Other tools such as gron and xml2 can flatten deeply nested json and xml structures which I've found useful for searching, sorting, and just visualizing the data.

Narrow Waist

A SimpleLinearList is (I think) a form of a NarrowWaist.

Why? Because it is just text (which is a narrow waist), and with text we use all our text-based tools to search and collect items. Tools such as grep, awk, and sed. Or, in the browser we can use the find text function.