For some time now I’ve been thinking of and how to organize
information of all kinds. Many people like to use wikis for that, and
so would I (I’d probably prefer a standalone wiki, for example
emacs-wiki
), but they lack one important thing: Getting an overview.
A wiki is essentially a set of nodes, each having links to other nodes—a.k.a. a graph. Graphs can be drawn in lots of different ways, but it’s hard to make that visually appealing, and lot’s of algorithms related to graphs have large complexity, both in space and time.
Recently, I learned about ZigZag, a tool to organize data in n-dimensional hyperspace. This may sound complicated, but once you get into it, it’s really easy. Basically, you have a spreadsheet where each field can have neighbors in every dimension. In usual implementations, only two dimensions are visible at once, being mapped to the x- and the y-axis. You now can move between these fields and change the dimensions shown.
One example of the original ZigZag disk shows how to build a family tree. First you see a list of first names of the people, ordered alphabetically. On the right-hand side, they’re linked to their surnames. If you now go over to these, they’ll be ordered too, and the first names will be shown on the left, unordered this time.
By rotating the dimensions, one can now see how these people are
linked. There are two additional dimensions, marriage
and
children
. If one enables both, he’ll see a family diagram with the
parents on top and the children going downward. If you put marriage
on the x-axis and 1
on the y-axis, you’ll get a list of all people
with their spouses.
As you can see—or at least guess—, this is a very powerful way of structurizing data. However, you can’t simply do “cross-links”, since your number of links per dimension is limited to two (one at each side).
Therefore I’ve decided to build something that will unite the both approaches: The wiki and ZigZag.
I’ll simply build a ZigZag where each cell contains the name of a Wiki-page. I’ve already taken a shot at implementing ZigZag in Ruby (therefore the name, RigRag), and a wiki will be easy to hook up.
I already can view and browse simple graphs, but editing and persistance is still missing. More soon. ;-)
NP: Josh Ritter—Lawrence, KS