john on August 6th, 2007 at 2:02 pm
Using an unholy combination of Applescript, DEVONThink Pro, and Nodebox, I generated a graph of the “connectedness” of the various texts in the AAAARG library. It’s still in its infancy but I thought it was interesting and thought-provoking enough to share at this point.
PDF (44kb): http://ulfmagnet.com/images/aaaarg/connections-v1.pdf
GIF (1.2MB): http://ulfmagnet.com/images/aaaarg/connections-v1.gif
It’s damn big. Sorry. It’s a challenge trying to fit all that information onto one page. To minimize clutter. I only graphed the top 2 connections for each node, as determined by DEVONThink’s “compare” algorithm.
The “rank” of each node determines its size and its distance from the center. Rank is a simple average of the scores of all the connections leaving a node, weighted by the number of connections. I eventually would like to use a more accurate algorithm here - probably somthing similar to Google’s original PageRank algorithm, which also takes into account the scores of the nodes that connect to a particular node.
Here is the full list of ranks. Benjamin is in the lead!
text ‘The Work of Art in the Age of Mechanical Reproduction’ has 124 connections, rank= 1.0
text ‘Prophecy: The art of the future’ has 125 connections, rank= 0.98406621638
text ‘From Relational Aesthetics’ has 124 connections, rank= 0.951309128714
text ‘Of Other Spaces Heterotopias’ has 124 connections, rank= 0.93578512792
text ‘The Future of Responsive Systems in Art’ has 122 connections, rank= 0.918364127932
text ‘The Aesthetics of Intelligent Systems’ has 119 connections, rank= 0.908591691934
text ‘Networks Netwar, and Narratives’ has 120 connections, rank= 0.90343240755
text ‘The Medium is the Message’ has 123 connections, rank= 0.890157790581
text ‘Keenan - Introduction to Zizek Lecture’ has 117 connections, rank= 0.875317709578
text ‘Recycling Recycling’ has 117 connections, rank= 0.864328951926
text ‘The Sphere and the Labyrinth’ has 117 connections, rank= 0.85948411134
text ‘Lost in Space’ has 117 connections, rank= 0.856795276834
text ‘French Feminist Thought’ has 121 connections, rank= 0.853373108233
text ‘N for Negri’ has 116 connections, rank= 0.847709392588
text ‘Antinomies in Art History’ has 114 connections, rank= 0.832778901139
text ‘The Ongoing “Soft Revolution”‘ has 113 connections, rank= 0.831637378042
text ‘Possible Urban Worlds’ has 114 connections, rank= 0.824260411562
text ‘Art as a Form of Reality’ has 118 connections, rank= 0.806756995299
text ‘Will the Real Body Please Stand Up?’ has 112 connections, rank= 0.801206736617
text ‘Nostalgia - A Polemic’ has 114 connections, rank= 0.788905107335
text ‘The Artistic Device’ has 110 connections, rank= 0.781517680466
text ‘Systems Esthetics’ has 112 connections, rank= 0.780518942351
text ‘Explanation and Exoneration’ has 116 connections, rank= 0.777999367896
text ‘Video Games and Computer Holding Power’ has 108 connections, rank= 0.777726462435
text ‘Modernity and the Problem of the Observer’ has 105 connections, rank= 0.777617786941
text ‘Policing the Spectrum’ has 106 connections, rank= 0.772847004213
text ‘Why Has Critique Run Out of Steam?’ has 112 connections, rank= 0.770241547672
text ‘Painter of Modern Life’ has 113 connections, rank= 0.764080085058
text ‘Heightened Perception’ has 108 connections, rank= 0.76090500211
text ‘Behind the Scene’ has 115 connections, rank= 0.752626779629
text ‘New Revolts Against the System’ has 113 connections, rank= 0.749326543328
text ‘Spectacle Attention, Counter-Memory’ has 108 connections, rank= 0.746779232751
text ‘Culture as Screenplay’ has 105 connections, rank= 0.739201229328
text ‘Deschooling Society’ has 106 connections, rank= 0.736600082085
text ‘Response to Antagonism and Relational Aesthetics’ has 108 connections, rank= 0.736240386167
text ‘Art and Telematics’ has 108 connections, rank= 0.73505680181
text ‘Antagonism and Relational Aesthetics’ has 103 connections, rank= 0.72384402301
text ‘Models and Mirrors’ has 103 connections, rank= 0.712767853689
text ‘Framing the Digital-Image’ has 97 connections, rank= 0.702406468184
text ‘Games: The Extensions of Man’ has 108 connections, rank= 0.693430377227
text ‘The Engineering of Consent’ has 107 connections, rank= 0.686838753205
text ‘What is Design?’ has 107 connections, rank= 0.683493424104
text ‘Against the world against life’ has 100 connections, rank= 0.680484009483
text ‘Simulacra and Simulation’ has 97 connections, rank= 0.672775143596
text ‘Necropolitics’ has 94 connections, rank= 0.668633435406
text ‘A Thousand Plateaus’ has 100 connections, rank= 0.664350935638
text ‘Protected Mode’ has 103 connections, rank= 0.660341717141
text ‘One Place After Another: Notes on Site Specificity’ has 94 connections, rank= 0.656998067946
text ‘Marching Plague’ has 95 connections, rank= 0.65622993634
text ‘Posthuman Bodies’ has 99 connections, rank= 0.655663211064
text ‘Little History of Photography’ has 99 connections, rank= 0.644821369742
text ‘Techniques of the Observer’ has 93 connections, rank= 0.632496808934
text ‘Theory of the Quasi-Object’ has 101 connections, rank= 0.632178915385
text ‘Who is the Subject of the Rights of Man?’ has 97 connections, rank= 0.628734821275
text ‘New Socialist #61′ has 91 connections, rank= 0.625717079715
text ‘Design and Crime’ has 97 connections, rank= 0.613638148854
text ‘Four Theses on the Powers of Life and Death’ has 92 connections, rank= 0.606137688372
text ‘Crowds and Transformation in Delirium Tremens’ has 98 connections, rank= 0.603836948875
text ‘What is Design?’ has 94 connections, rank= 0.603495386954
text ‘The Transparent Society’ has 95 connections, rank= 0.603091308743
text ‘Cyberwar is Coming!’ has 88 connections, rank= 0.599843720647
text ‘Situationists and Architecture’ has 94 connections, rank= 0.593660132091
text ‘Artificial Life’ has 86 connections, rank= 0.588153895309
text ‘Network Fever’ has 87 connections, rank= 0.58678970848
text ‘Redundancy’ has 92 connections, rank= 0.576874353879
text ‘Heterotopias’ has 89 connections, rank= 0.574803449355
text ‘The Death of the Author’ has 92 connections, rank= 0.571622534594
text ‘Toward Site’ has 87 connections, rank= 0.569988597187
text ‘Dependent Participation: Bruce Nauman’s Environments’ has 86 connections, rank= 0.567220749903
text ‘This Sex Which is not one’ has 90 connections, rank= 0.564215704966
text ‘On the Museum’s Ruins’ has 88 connections, rank= 0.556865715922
text ‘Automating Gender’ has 84 connections, rank= 0.554393464721
text ‘Whatever Happened to Total Design?’ has 87 connections, rank= 0.55077474578
text ‘What’s Intangible Transitory, Mediating…’ has 86 connections, rank= 0.546661532401
text ‘Language Wants to be Overlooked’ has 82 connections, rank= 0.543033637253
text ‘The autonomous artist still rules the world of culture’ has 86 connections, rank= 0.526843679783
text ‘Ernst Bloch Utopia, and Ideology Critique’ has 82 connections, rank= 0.524548227976
text ‘Histories of the Immediate Present’ has 76 connections, rank= 0.507513180554
text ‘History against Historicism’ has 79 connections, rank= 0.501067330013
text ‘E Unibus Pluram and U.S. Fiction’ has 78 connections, rank= 0.499896863701
text ‘Aitken-Huyghe’ has 79 connections, rank= 0.482227605017
text ‘On Not Being Governed’ has 79 connections, rank= 0.472609802642
text ‘Expanded Cinema’ has 76 connections, rank= 0.464114990431
text ‘Foucault the Iranian Revolution, and Resistance to Empire’ has 71 connections, rank= 0.46402121953
text ‘Architecture’s Image Problem’ has 73 connections, rank= 0.461361159927
text ‘Practice vs. Project’ has 74 connections, rank= 0.46036955772
text ‘Your Art World’ has 73 connections, rank= 0.457481808799
text ‘On Software’ has 71 connections, rank= 0.456975319893
text ‘Politics and Passions’ has 71 connections, rank= 0.442897065868
text ‘Latency and the Quest for Interactivity’ has 69 connections, rank= 0.437111906798
text ‘Theories and History of Architecture’ has 69 connections, rank= 0.436308404649
text ‘The Latency of the Moving Image in New Media’ has 70 connections, rank= 0.436191828134
text ‘This Will Kill That’ has 69 connections, rank= 0.417333595258
text ‘The Art of Making Panoptical Fictions’ has 63 connections, rank= 0.394366595777
text ‘The “Empire” Strikes Back’ has 63 connections, rank= 0.393869583727
text ‘Eclipse of the Spectacle’ has 64 connections, rank= 0.393003923755
text ‘The Value of Conspiracy Theory’ has 62 connections, rank= 0.390635811336
text ‘Dialectics and Class in Marxian Economics’ has 62 connections, rank= 0.381228044807
text ‘Futurism and the Crowd’ has 51 connections, rank= 0.313791681319
text ‘Molding Public Opinion’ has 52 connections, rank= 0.310552715672
text ‘Will Self Scale’ has 51 connections, rank= 0.299061001735
text ‘Sound is Material’ has 49 connections, rank= 0.290665291157
text ‘Railroad Space and Railroad Time’ has 49 connections, rank= 0.289609441362
text ‘Grant Kester’ has 47 connections, rank= 0.284852050988
text ‘Writing Architectural Heterotopia’ has 44 connections, rank= 0.271099460482
text ‘The Performativity of Code’ has 43 connections, rank= 0.266945590797
text ‘On the Discourse of Abstraction’ has 43 connections, rank= 0.260038811184
text ‘Design Intelligence and the New Economy’ has 39 connections, rank= 0.240694466057
text ‘Cyborg Manifesto’ has 39 connections, rank= 0.234549449824
text ‘Rebuilding America’s Defenses’ has 33 connections, rank= 0.210728071118
text ‘The Work of Architecture in the Age of Commodification’ has 34 connections, rank= 0.199610839487
text ‘House of Tomorrow’ has 27 connections, rank= 0.157265387317
text ‘Collective Locomotion as Collective Behavior’ has 26 connections, rank= 0.152422024921
text ‘Exodus’ has 20 connections, rank= 0.126029367901
text ‘Continental Drift’ has 17 connections, rank= 0.101223799777
text ‘Sequences’ has 17 connections, rank= 0.0969270802259
text ‘Curiously Familiar’ has 15 connections, rank= 0.0865447925732
text ‘Recipe for the Nation’ has 13 connections, rank= 0.0772114699904
text ‘Welcome to the Experience Economy’ has 9 connections, rank= 0.0524708843736
text ‘The ABC of Tactical Media’ has 9 connections, rank= 0.0499702308691
text ‘Physics of the Rhythmic Applause’ has 9 connections, rank= 0.0466307033877
text ‘The Art of Noise’ has 9 connections, rank= 0.0448436246805
text ‘Disagreement about Inflation Expectations’ has 9 connections, rank= 0.0416130209846
text ‘The MFA is the new MBA’ has 9 connections, rank= 0.037564201022
text ‘The Anti-Gravity Men’ has 9 connections, rank= 0.0374874248
text ‘Intellectual Property Protection Act of 2007′ has 9 connections, rank= 0.0361393101469
text ‘The History of Communication Media’ has 9 connections, rank= 0.0232843932342
text ‘The Mistiming of Applause in Political Speeches’ has 9 connections, rank= 0.018963987966
text ‘We Mortals’ has 9 connections, rank= 0.0180636740604
(See: data visualization)

August 6th, 2007 at 6:33 pm
wow! this is neat. it’s so predictably fascinating that “the work of art in the age of…” is ranked #1, whatever that means in terms of devonthink’s algorithm.
what does it mean when circles overlap? are they extremely linked or is it just a coincidence?
August 6th, 2007 at 7:39 pm
The overlapping is total coincidence, for now. The placement of the nodes is way too crude - I just split up the 360 degrees of the circle and traveled around it placing nodes at the appropriate distance from center. Next phase kind of stuff would be employing some kind of physics model to allow these guys to settle in place naturally based on their affinity to one another. But you know, publish early, publish often and all that.
When I saw Benjamin’s essay at the top I had a sense that something was working right at least! If it had been, say, “The Physics of Rhythmic Applause,” I might have been more skeptical. But I’m curious to see how the rankings change as I refine the algorithm.
(edit: removed one of three “kind ofs” in a single sentence!)
August 7th, 2007 at 7:08 pm
wow, cool. i would also be interested in user connections, but i bet we don’t have the data for that. just saying because my girlfriend’s coworker was telling me about this cool website with lots of good reading and it turns out he was talking about this one…i wonder how he found it [given absence from google, etc]
oh wait google does have it. is this intentional?
[ps, hi john!]
August 7th, 2007 at 7:41 pm
google doesn’t index the texts that have been uploaded (those texts require registration/ login)
john if you feel like publishing the data then we could set up a processing project and share that code
for a dynamic map, if the static one becomes too confusing
August 8th, 2007 at 3:19 am
I will absolutely publish the data as soon as I can get back into my Mac (filesystem issues argh) It’s in the form of two CSV files right now, one for details on the texts and one for connections between them. A processing project would be the ideal - dynamic map is the way to go definitely. I’ve got a subversion server over at ulfmagnet.com we could use.
More tomorrow when my Mac is hopefully fixed again?!
[hi aaron!!!]
August 8th, 2007 at 11:42 am
OK here’s the data:
http://ulfmagnet.com/aaaarg/texts.txt
http://ulfmagnet.com/aaaarg/connections.txt
The top-ranked connection for each text is a link back to itself with a score of 1.0. Strange quirk of DEVONThink’s comparison algorithm - I just filtered it out when graphing the nodes.
August 9th, 2007 at 1:50 pm
i made a quick processing project that just displays lists:
http://e-rat.org/etc/aaaarg/applet/
i meant to make it clean and easy to extend, but it bloated pretty quickly.
basically the AAAARGLibrary class knows everything. you ask it to draw and then it decides how to draw. it has a focus (the text that is the center of attention) and it loops through all the connections and draws them. to
change the display, hopefully you’d just be able to change the draw method. this would probably mean adding an x,y pair to the AAAARGText class, as well as a boolean “visibility” to decide whether or not to draw. and then you’d calculate everyone’s positions from an update method (not written yet) and draw just renders everything at it’s current position and visibility. update would calculate all positions and visibilities based on whatever you want (gravity, elasticity, your mood, etc)
August 9th, 2007 at 8:29 pm
So awesome, Sean. I can’t wait to play around with this!
I created a Subversion repository for this stuff… right now it only contains the pde you created, obviously, but it can grow and change and mutate over time. You can check it out with
svn checkout http://ulfmagnet.com/svn/aaaarg
Post here or email me and I’ll create an account for you so’s you can publish code too.
August 12th, 2007 at 11:18 pm
The end product will look exactly the same, but I did some refactoring:
————————————————————————
r3 | john | 2007-08-12 22:14:55 -0700 (Sun, 12 Aug 2007) | 5 lines
Refactored a bit to abstract rendering away from the main library class.
Moved code into some separate tabs for readability’s sake.
Added the required font face to the repository.
————————————————————————
There’s a new abstract AAAARGRenderer class that handles all the rendering functions. I subclassed it with AAAARGTextRenderer (Sean’s original code) and AAAARGBallAndStickRenderer (where I will add the ported code from Nodebox that generated the graphs above.)
This seemed like a good way to enable different types of visualizations — you just cook up a new subclass of AAAARGRenderer and pass it into the AAAARGLibrary when you’re getting everything initialized.
More soon!
August 13th, 2007 at 1:26 am
i just thought about it more and i think the AAAARGConnection class should look like this:
class AAAARGConnection { AAAARGText txt1; AAAARGText txt2; float strength; AAAARGConnection(AAAARGText _txt1, AAAARGText _txt2, float _strength) { txt1 = _txt1; txt2 = _txt2; strength = _strength; txt1.addConnection(this); txt2.addConnection(this); } // one text may ask this connection for the other text that it is paired with // and this is a convenience function for returning that info AAAARGText getOtherText(AAAARGText t) { return (t.id==txt1.id) ? txt2 : txt1; } } // end class AAAARGConnectionand the AAAARGText’s addConnection method should look like this:
void addConnection(AAAARGConnection conn) { AAAARGText otherText = conn.getOtherText(this); // determine the other text in this connection // this stuff before actually adding the connection is a weak attempt at // sorting in advance, so that the strongest connections are earliest in the array int insertIndex = 0; for (int i=0; i<connections.size(); i++) { AAAARGConnection c = (AAAARGConnection)connections.get(i); AAAARGText t = c.getOtherText(this); if (t.id==otherText.id) return; // don't add a redundant text if (conn.strength<=c.strength) insertIndex=i+1; else break; } connections.add( insertIndex, conn ); }i would have uploaded the file but i made a bunch of other ill-advised changes that butchered the heck out of the rest of the code. anyway, this might make it a little easier to draw the “stick” i think.
let me know if that is a delusional change or not… i’m realizing that in the original code i only added the connection to one text and not to the other, but every connection probably should be 2 directional, right?
August 13th, 2007 at 5:11 pm
modern approaches to data visualization
August 13th, 2007 at 10:33 pm
No, those changes make sense. Bi-directionality will probably be helpful when rendering, and in any case it should be captured in the system in some way I think. I integrated that code and committed it - thanks!
Also your link was busted: http://www.smashingmagazine.com/2007/08/02/data-visualization-modern-approaches/
August 13th, 2007 at 10:51 pm
Some fascinating stuff re: visualizing similarities among texts over here (via the smashingmagazine link you posted):
http://www.munterbund.de/visualisierung_textaehnlichkeiten/essay.html
They’ve got three levels, each locating the text in a different way among the others. Background shows relative word counts, next level shows “pie slices” whose width basically represents how similar they are to a given text, and in the foreground they place “word circles” that show the most frequently used words in the essay. They also go totally bananas and represent the structure of the essay with a home-brewed barcode format… craziness.
I’m into the idea of using the “pie slice” approach to represent similarity among texts. It makes more immediate sense than something like circle size in a network of nodes. And when you take the approach of focusing on a single text as your center, you may not care as much about the interconnections among the other texts — you just want to place them in relation to the selected text.
August 14th, 2007 at 12:10 am
it seems as if devon says that all texts are related, but its a question of degree (so many texts are implicitly related with strength zero). if that’s the case then node-edge diagrams make no sense because they flatten all relationships to generic “connections” and then almost everything is connected to almost everything else.
the pie chart idea makes a lot of sense in this context. every text is a pie and its relations can be given relative quality by making bigger or smaller slices, which represent other slices. this would work well i think. the only problem would be that 50% of the pie for one text means something radically different than 50% of the pie in another text (different “strengths of relation” can have the same “pie slice”) i dont know if this is actually bad, but it’s worth pointing out. maybe in that case, the pie actually increases in diameter (a measure of “importance”, eg. walter benjamin has a big pie)
August 14th, 2007 at 9:52 pm
I was thinking the network / node-edge diagrams would only make sense when trying to represent an overall picture, a gestalt of all the interrelations between the library, with no particular text as the focus. You’re totally right that there a large number of weak connections between texts that need to be filtered out before the graph is even slightly meaningful. I tried a cheapo way of doing that in my Nodebox visualization, but I’m not sure how interesting or accurate the results are.
I think I’ll focus on trying to get this munterbund.de pie slice kinda thing going instead. I like the idea of scaling the diameter of the overall pie in some way to represent the relative importance of the text. Walter Benjamin has a big pie, indeed!
It occurred to me that DEVONThink will also provide the “concordance” for a text, i.e. its most frequently used words. If we captured that information as well, it would open the door to focusing on a particular word rather than a particular text. I’ll try to add that data to the export from DEVONThink… more weird Applescript!