Back to the schedule
Previous: Manual Package Management in The Era of Repositories - Why and How
Next: Typesetting Gregorian Chant with Emacs

Introducing N-Angulator

Kevin Haddock

Duration: 9:58

If you have questions and the speaker has not indicated public contact information on this page, please feel free to e-mail us at and we'll forward your question to the speaker.




The Unix file system is essentially an N-dimentional sparse array that currently lacks a decent editor and browser which can effectively leverage the logical tri-angulation (or, more properly "n-angulation") of atoms/blobs within it.

N-Angulator is the genesis, to wit, the "Model-T," of such a program.


IRC nick: N-Angulator

  • Q1: Can this be considered as a UI to manage hardlinks with additional functionality such as listing the hardlinks of a single file?
    • A: that is part of what it could be considered.   I see it more as re-imagining the Unix/Linux file system as a data cloud
  • Q2: Remark: I did a PhD on that very same topic: - Your approach does seeom to have similarities to the Semantic File System (Gifford et al) or SemFS (Mohan at al) or TagFS (Bloehdorn et al).
    • A: yes, I just started checking it out.   I was not aware of any of those when I wrote it.   I just had a need for a much more comprehensive filing/retrieval system to support my various activities (law, programming, time management, etc...).   It worked amazingly well at the time but "life happened" and I was never really able to keep it up with the times like porting it from the orphaned XEmacs into FSF and promote it at all.

  • N-Angulator: I wrote it 10 years ago and am no porting it to GNU emacs

  • is this a graph-as-filesystem
  • I'd much rather work with keybindings rather than clicking things. Is there support for that?
    • N-Angulator: I think the menu system does automatically assign some unique keys but it's been a long time since I looked at it
  • I love these kind of advanced file systems
  • This is weirdware in the best sort of way.
  • Are you familiar with tagstore/TagTrees (by me) or Semantic File System (Gifford et al) or SemFS (Mohan at al) or TagFS (Blöhdorn et al)? my work: -> preferably the PhD document that summarizes everything

  • From YouTube: Any chance you can explain what this package can actually do? I don't want to be critical. It looks interesting but I just don't know what to do with this.


Hello. This is Kevin Haddock to announce the introduction of N-Angulator, hereafter called NA. NA allows you, the user, to supply the meaning to your data in a concise, efficient way. How does it work? Your files are stored on your hard disk in what technically is called a hierarchical file system. What this means is that the root of the directory tree can be not only files, or what we call leaves, but also other folders/branches that themselves contain other files, leaves, and/or branches. This structure is supposed to make it easy to locate your data, but as anyone knows who has worked with this single-dimensional file system for any length of time, it can get quite frustrating when your file would fit equally well on more than one branch of the tree. What are you to do? Create multiple copies everywhere it might appropriately fit. What if the file was something people would occasionally modify, like a spreadsheet or a computer source file? You would have to hunt it down in every place and apply those changes everywhere by hand. Also, let's say not only did you want to put the file in multiple places, but it was also more appropriate to give it different names? Plus, let's say in different areas of the tree, there were files with the same name that had totally different content? Then updating all the different instances of the file you need would become more and more of a nightmare. In addition, wouldn't it be great if we could all speed up the actual searching for a particular file by selecting multiple branches in the tree and simply asking the computer to tell us which branches under those contain the same file and which do not? This would be especially great if it were instantaneous. Well, believe it or not, this is what NA brings to the table. In fact, this is how NA got its name. Your data is located by a process very similar to the triangulation used to locate radio signals, only we are not limited to just two or three angles, but instead, many dozens can be used, this makes NA appear to be what is known in computer lingo as an n-dimensional sparse array. If that sounds complex, don't worry. It will become clear when you see it in operation in a couple of minutes. To start out, here we see the NA main screen. There are two vital aspects of mastering NA. First is the actual mechanics of using the program, which should be second nature for most anyone familiar with either a Windows or Unix/apple file system. We have the same operations as one might do with Windows Explorer or any number of other file tools, but what we also do that generally they do not is place a leaf on a branch, then cruise around adding links to that leaf on a multitude of other branches, which could include creating, renaming, or restructuring more branches on the fly as needed. Plus, when we find ourselves hunting for that file, we can incrementally select a stack of branches while seeking what the latter branches have in common with the earlier ones, to make putting one's finger on exactly the item they're looking for a snap. Secondly, you have the actual art of organizing your data, and NA doesn't really put any limitations on this, other than the underlying limitations of the file system. Let's get started, shall we? Right-clicking the mouse button here will bring up what we call a branch navigation menu, because it allows you to move around the tree or commence a new angle. We have chosen to organize our data with a hopper to put new items in, and the initial branches representing who, what, where, why, and how. We right-click on the root and select 0hopper, and that branch is added to the display. If we middle-click on the branch, we get what is called the branch command menu, which gives us many options, not the least of which is to create a leaf here. Remember this item as we progress, because it will become important. Next we pick what we know is a leaf item, due to the fact that it does not have a trailing slash. Now, when we right-click on it, notice the navigation menu is limited to the two items: New Angle and the leaf name itself. If we want to view or edit that leaf item, we can select that item. Now that we have selected a leaf, let's middle-click on it to bring up what we call the leaf command menu. This shows us a bunch of standard options one might do in a typical file tool like Microsoft Explorer. Since we want to do what they cannot do, let's right-click the leaf and select New Angle. Notice that another slash has appeared below the displayed path of the leaf. Right-click on it, and you will see the root branch navigation menu appears again, but now 0hopper entry has a line both above and below it. Items in between these two lines are called members, and items below them are called others. What this is saying is that the previously selected angle, which can be a single leaf as in this instance, or can be all of the leaves under a particular branch chosen to navigate new angle from, shares content with the items under the member area of the menu, but items in the others area do not. Since the first angle is 0hopper, of course it shares content with itself, and so it appears in members. Now let's click the middle button on the root branch, and see what the branch command menu has to say. Notice that the entry that used to say Create a New Leaf now says Add a Link. This is because we have already selected a leaf, and now we want to add links to it rather than create a new one. If you go back to the root and reselect 0hopper, that option will revert back again. So let's add a link under person. We right-click the root, select person, and let's add a link. Notice the bottom area (called the minibuffer) gives us the proposed name of the link, and we choose to accept it by hitting enter, or edit it to taste first. Now let's go back up to the end of the prior angle, select New Angle again, and then click the resultant /, and see what are members and what are others. Notice that the 0hopper and person are members. NA knows you added content to the person, so it moves to members. Now let's add some more links and perhaps a few subdirectories for this item. Notice how we can even eliminate the file name extension. It will still know how to display the item as it actually analyzes the file to determine its type. This greatly cleans up your metadata and makes it more human. Now let's pick a branch from one of the menus. For instance, let's look and see where any events broadcast were done from. We select event, broadcast, then New Angle, and we can see California is in members. Now we can also do New Angle and select person, and we can see who did them. Another thing we can do is pick a leaf and quickly display all angles or links for it, or if we are willing to wait a little longer, have NA construct all the display items with Edit All Angles, so we can manipulate them just as if we had entered or selected them by hand. There are many more tools in NA to handle sets of leaves such as scanned pages of a book, promoting /, demoting nodes, and so forth. Thanks for watching. captions by sachac

Back to the schedule
Previous: Manual Package Management in The Era of Repositories - Why and How
Next: Typesetting Gregorian Chant with Emacs