Paul Makepeace ;-)

Ecademy Network Map

Executive Summary

This page is about mapping social networks, with the Ecademy as a case-study. It explores using a static image & dynamic applet with spring-and-balls model to render a graphical representation of people's contacts. At present it uses a flat linear space.

So, rather than read a bunch of dry graph theoretic nonsense you can immediately skip to see:

(On with the show...)

The full story

The Ecademy is a London-based networking organization that has recently partnered with Ryze and is in the process of implementing some features specifically to aid the networking process. One recently released addition is the ability to list other ecademy members in your Contacts list. Any members can examine another's Contacts list, and by listing someone in your Contacts you become automatically listed in their Contacts.

Curious about visualizing these relationships, and their evolution, I set about attempting to map them somehow. There are a few stages in this: collecting the data, visualizing it, and navigating through it. The collection (for a programmer) is straightforward since it's out in the open: everyone can look at everyone else's network. Visualizing quickly threw up some problems, but more on that later.

Categorizing maps

Directed and undirected

Graph theory talks of directed and undirected graphs. Directed simply means the connections ("edges") between things ("nodes") have a direction, either to or from. Two nodes can be connected in both directions, having an edge in both directions. Undirected of course has no direction, it's just a connection.

directed undirected
directed graph example - edges pointing undirected graph example - edges just connecting

Ecademy undirected, Ryze directed

Of course, in the graph theory sense :-)

It's interesting to note that the automatic addition of a reciprocal connection in Ecademy's Contact model effectively makes it an undirected graph. It's possible to delete contacts, effectively reversing the "add", removing the other side of the link as well. Ryze has a similar outwardly visible mechanism but calls it "friends". Ryze however doesn't automatically make a connection back, so is a directed graph.

Gathering Data

Data was acquired with a custom program that logged in as me and then seeded its contact list from the Top Networkers page (ecademy login needed). It then, like a tireless sales rep, slowly wandered around following each lead on each of its contact's network pages, making a note in its little sales rep book not to knock on the same door twice. The HTML data was converted into an abstract graph-like representation serialized on disk.

Tech note: The code was written in Perl and made use of LWP, HTTP::*, MLDBM, DB_File, Storable, and Memoize. Source on request!

Visualizing the Map

My initial stab at drawing maps was using Graphviz an Open Source graph drawing software suite from AT&T Labs. Graphviz figures out placement of nodes by assigning a preferred length to edges, like springs between a bunch of balls, and treating it like a physical system. The system is two dimensional: imagine the balls jammed between two sheets of glass, and some weird Harry Potter magic to stop the springs tangling. Eventually the balls come to rest, or close to it and you have a graph. It's not always perfect but is generally surprisingly good; they've put a lot of work into the heuristics and layout - more in the Graphviz overview.

Conveniently there is an adept Perl interface to GraphViz by Léon Brocard.

Contacts of contacts

Here's a graph of one person Kenneth, and contacts of his contacts (old image, kept because it's readable!). See how Glenn is in Kenneth's contact list and you see all Glenn's contacts. Can you spot the other person with someone besides Kenneth in their address book?

This graph is depth two, walking two levels down the contact list. You can see who all these people are, albeit as a flat list, in action by using the ecademy friends of friends page (requires being logged in).

Too Much Information!

Even the most cursory jaunt through the networking pages at ecademy will reveal a very richly connected graph. There are a core of people that are very heavily connected. Of the set of people who have contacts listed, this hyperconnected group has connections to almost all of them. Try to make a mental map of this, a bunch of people with connections to almost everyone else: a complete rat's nest of edges.

Two hyperconnected people

Let's take a look at this. Two such folk are at time of writing Thomas and Julian, with about 350 and 100 connections respectively. The following graph shows Thomas & Julian and everyone they're connected to. Warning: this is a big 8000x6000 image and may take a while to load (600KB) & render. Unless your machine is up to it you may have a hard time. Try clicking your mouse wheel once and scrolling around with the mouse. The coloring indicates the number of people in each person's address book, more saturated is a larger number of people.

Wow. Imagine adding everyone else's connections!

Live physical systems

Graphviz as mentioned uses a virtual physical model to lay out the graph. It randomizes the initial positions and lets the springs sort themselves out. What does this actually look like? Not satisfied with mere static images I went out and found a Java version of such a physical system: Petridish by Gerald de Jong (whom I met while helping setting up the N0Time exhibit in San Francisco). Petridish starts all the points in a random position and you can watch the springs find their stable positions. It starts out quite frenetically, as you might imagine!

Kenneth, depth one. And Thomas and Julian, depth one -- this is very CPU-intensive and will probably look a mess.

Try pressing F to halt the movement, then dragging the hubs apart and look at the number of mutual connections. Press F to restart the system. C centers it and PgUp/PgDown zooms. Enjoy!

Java note: It's entirely possible the applet won't run on your browser, especially if you have a Mac. Good luck anyway, and please let me know if you have success! Currently known working on Galeon/Linux using the Blackdown J2RE1.3, and an iBook running OS9.

Please by all means leave feedback, thoughts, interest at ecademy.com -- thanks!

Navigating

Control + Left mouse button will navigate to a new person on the Java version. The static graphviz versions are hyperlinked. I find this quite a pleasant navigation tool. Try the 2D contacts navigator.

Where next?

Clearly the 2D linear graphs are not satisfactory for visualizing these relationships. I have been looking into hyperbolic browsers which effectively distort the view as though pulling the centre of the screen towards you. This provides a much larger effective area. This idea is really designed for tree-like structures and it'll be interesting to see whether it helps with these rat's nests.

Other techniques I'd like to try are clustering locally densely connected sections. For example, say five people all know each other we can create a star-shaped hub and then any others connecting to any of these five can connect to their central hub.

Some phenomena perhaps worth investigating are the representations of implied connections through continued conversations. This is possibly where the "real" connections between people exist, with a dimension of time one can get a sense of the strength, longevity and depth of a bond. I can see in my mind's eye different thickness of edges, animations along the edges to describe activity, color changes as long term movement of relationships happen...

I'd love to chat more - if you have any links, knowledge on dense graph theory, etc, let's talk.

Further reading & experimenting

A few links that may be of interest. Thanks to Darren Priest, Julian Bond, Jonathan Greensted and Mike Butcher for suggestions!

Hyperbolic Browsers

General

Online examples