Just the result of some time spent lost in thought on
a quiet Sunday afternoon.
I want to know the boundaries of my nodespace. I want
to see pictures of how my nodes connect to other nodes.
I want a graph of how connected I am to other noders. Bonus
points if it can show me my connectedness at an arbitrary
depth.
The first hard problem to deal with in trying to produce
these bits of metadata is how to define the boundaries of
someone's nodespace. I'm thinking that a simple technique could
suffice to measure connectedness at all scales. Define the
borders of your nodespace to be the softlinks between nodes
you own and other nodes.
A hypothetical example:
Fred is a newbie everythingian. He has 10 nodes
with 10 softlinks per node. Of those 100 softlinks, 50 point
into his own nodespace and 50 point out to other people's nodespace.
Say the breakdown looks like this
Softlinks Dest Owner Bordershare
-----------------------------------------
50 Fred 50%
36 George 36%
12 Agnes 12%
2 Eddie 2%
-----------------------------------------
100 100%
Once we know this, we
can start to
draw pictures
showing what Fred's nodespace looks like.
A A A AA
GGGGGGGG A GGGGGGGG A GGGGGGGG A GGGGGGGG AA
GGGGGGGG g GGGGGGGG g GGGGGGGG g GGGGGGGG gA
GGGGGGGG n GGGGGGGG n GGGGGGGG n GGGGGGGG nA
George G e George G e George G e George G eA
--------- s --------- s --------- s --------- sA
|||Eddie-- | \_/ \_/ \_/ \_
|||||||--- | Fred |
--------------------- -------------------------
XXXXXX Nothing |_| Nothing XXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Essentially, for each softlink you create a
point on a polygon
and label it with the name of the destination owner. Points that
map to the user for whom the graph is being is drawn are on an
external border that is connected to
nothing. Other
points should be mapped in
symmetrical groups wherever possible.
(There are several
algorithms to help with this. I don't
recall
what they are right now, but
with a couple of hours, a web browser, and
google.com I am invincible.)
Undoubtedly, a prettier picture could be drawn using
opengl or
somesuch, but
everything is presently
limited to
ASCII art.
The use of user for the sides is arbitrary. The sides of the
produced polygon could just as easily have been labeled by target
node title, and the resulting graph would be more interesting view of everything
as it would have been a node level mapping. But it would have been
harder to draw.
The same technique is used to construct a three dimensional
image of second order connectivity, but I am not skilled enough
in the ways of ASCII art to provide a visual aid. A description
will have to suffice, although I fear it will not.
To get a second order image you must create first order images for
each of the existing surfaces. Given the above example, this means
calculating the borders of the nodespace defined by the 36 links to
George, then the nodespace of the 12 links to Alice, and finally that
of the two links to Eddie. We ignore Fred's internal nodespace because
we'd just throw it away anyway when we drew the cross-sectional image.
Each of these nodespaces will be comprised of anywhere between 1 and
N different nodes, where N is the number of links (there can be multiple
links to the same node from within Fred's nodespace). Different visual effects
(brightening, texturing) could be applied to the produced image to indicate the
ratio of links to nodes found.
The generation of the nodespace borders for the second order mapping
is slightly complicated by the constraint on having one side already set.
Disclaimer: I have not coded this. I have
no idea if it would actually work. I know that it would be a pain in the ass without help from the everything coders.
Doing it without access to the database would require spidering all of everything.
Not just once, either, but over and over again trying to keep up with
all of the softlinks. Nope, you'd definitely have to do it on the
backend.1
Damn, I guess it's time to get back to playing with my Everything tarball. You
may return to your regularly scheduled noding.
1-Hmmmmmm..... maybe not.... but that's a node for later.