Processing, Mediawiki, and force-directed layouts

Happily, the EVE Online official wiki- the Evelopedia– has now gone into public beta. You can imagine, then, that there’s a lot of activity on it. I’m something of a Mediawiki fan; I’m currently using a very hacked-upon version on my laptop for notetaking and information storage, and used to contribute quite a bit to Wikinews/Wikipedia. So when the Evelopedia went live I was at it like a shot.

The recent changes pages of Mediawiki list the most recent changes to the wiki, providing information on the page edited, the edit made, the date of the edit, and the user making the edits. It’s simple enough to read through, but behind the monotonous list there’s a much more interesting picture to be found.

The final(ish) recent changes app, having been running for a night.
The final(ish) recent changes app, having been running for a night.

This is my first real finished product done with Processing. It grabs the RSS feed of changes, imports each change by adding a change node, an author node, and a page node. If the author or page already exists, it links them again via the newly added change and adds weight to the author and page nodes. It then queries the RSS feed every minute to grab fresh data, and imports any new changes.
What was going on last night? This!
The layout of the graphs is performed automatically using a force-directed layout. I used a simple physics library for Processing (traer.physics), and added the physics framework to my existing Node framework originally designed for the EVE Tactical Map. Every particle has repulsion to every other particle, except for particles they are linked to- they have an attraction and a spring whose length is defined by the number of links of the parent particle.

Evelopedia Recent Changes - Early Version
Depending on what the simulation damping setting is, it can take from 10 seconds to 5 minutes for the simulation to become stable and settle down- it’s all done in realtime, with new changes randomly appearing and being pulled towards their appropriate author/page articles.

Evelopedia Recent Change Monitor – Trailer from James Harrison on Vimeo.

Once I get the source in shape (It’s a single 310-line .pde file right now with few comments and no error handling) I’ll probably open this up for all who want to have a play with it. I’d be interested to see what a force-directed layout method would make of the EVE map, so I might end up backporting my code to the Tactical Map to see what happens.

7 thoughts on “Processing, Mediawiki, and force-directed layouts”

  1. I would love to get a higher res IMG… I cant read that one so I dont know to say “AWSOME” or “WTH?”

  2. Well cool!

    that is a nifty way to SHOW what has been changed : )

    I do have one question though: What are the gray circles for?

    I got the others (blue=member who edited, yellow= what they edited, the number of lines linking = amount of times edited) but those gray circles got me stumped…

    -Opi out.

  3. ok i sorta feel like i am spamming— but:

    is there an embeded flash file at the end of the post? (I am at work and flash isnt on this damn computer)
    If so I cant wait to get home and view it, it is the app you are making inst it.

    hell I will find out when I get home and I will stop Spammin’ your blog.

    -Opiboble Inte out.


  4. There is indeed a Vimeo video (best to watch it on their site for the full HD version) in that post.

    Grey circles represent changes made to a page by a user, hence their role in connecting users to pages. I’m working on a way of clicking on the changes to pull up an expanded view of that change.

  5. AAaaa so that is what the gray circles are!

    o a movie… Well darn now I have to wait till I get home, damn PROXY at work blocks streaming Vid. All well.

    I have been reading some of your older posts and I cant wait till the METRICS project is complete : ) sounds really cool!

    Well Keep up the good work!


Comments are closed.