epidpedia

main
Michael Murtaugh 2 months ago
parent dbcf04fd5b
commit d481ff2272

@ -0,0 +1,331 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>2024-10-21-SI25-NOTES</title>
<style>
html {
line-height: 1.5;
font-family: Georgia, serif;
font-size: 20px;
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 1em;
}
h1 {
font-size: 1.8em;
}
}
@media print {
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace;
font-size: 85%;
margin: 0;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<p><a
href="https://pzwiki.wdka.nl/mediadesign/Radio_WORM:_Protocols_for_Collective_Performance#Monday_21_October"
class="uri">https://pzwiki.wdka.nl/mediadesign/Radio_WORM:_Protocols_for_Collective_Performance#Monday_21_October</a></p>
<h2 id="plan">Plan</h2>
<ul>
<li>Review the reading (<a
href="https://hub.xpub.nl/bootleglibrary/book/789">Bellos in Mainframe
Experimentalism</a>)</li>
<li>Some Examples</li>
<li>An (off-screen) Exercise</li>
</ul>
<h2 id="oulipo">Oulipo</h2>
<p>In revisiting the history of Oulipo, its useful to consider this
article by Sarah Coolidge that explores the question: <a
href="https://www.catranslation.org/feature/who-are-the-women-of-oulipo/">Who
Are the Women of Oulipo?</a></p>
<p>BUT the broken links are quite tragic… leading instead to online
gaming + tourism. :0 Some alternative links:</p>
<ul>
<li><a
href="https://www.poetryinternational.com/en/poets-poems/poets/poet/102-2044_Metail"
class="uri">https://www.poetryinternational.com/en/poets-poems/poets/poet/102-2044_Metail</a></li>
</ul>
<p>And this page (URL corrected from the article from .com to .fr):</p>
<ul>
<li><p><a
href="http://www.cipmarseille.fr/pop_documents_liens.php?id=985&amp;type_proprio=1&amp;gestion=E"
class="uri">http://www.cipmarseille.fr/pop_documents_liens.php?id=985&amp;type_proprio=1&amp;gestion=E</a></p></li>
<li><p>https://archive.cipmarseille.fr/pop_audio.php?id=890</p></li>
</ul>
<p>some repaired direct links:</p>
<ul>
<li><a
href="https://archive.cipmarseille.fr/documents/448_20090613131151.mp3"
class="uri">https://archive.cipmarseille.fr/documents/448_20090613131151.mp3</a></li>
<li><a
href="https://archive.cipmarseille.fr/documents/17_20061020144007.mp3"
class="uri">https://archive.cipmarseille.fr/documents/17_20061020144007.mp3</a></li>
<li><a
href="https://archive.cipmarseille.fr/documents/890_20121005183822.mp3"
class="uri">https://archive.cipmarseille.fr/documents/890_20121005183822.mp3</a></li>
</ul>
<p>which currently takes to to information about hotels :0…..</p>
<p>Luckily the <a href="https://web.archive.org/">wayback machine from
archive.org</a> has been put temporarily back online in a consultation
only form.</p>
<h2 id="algorithm">Algorithm</h2>
<p>N+7 is useful as an example of an <em>algorithm</em>.</p>
<p><img src="A_Computer_Glossary-Algorithm.png" /></p>
<h2 id="n7">N+7</h2>
<p><a href="http://www.spoonbill.org/n+7/"
class="uri">http://www.spoonbill.org/n+7/</a></p>
<p>Lets feed the first paragraph of <a
href="https://www.catranslation.org/feature/who-are-the-women-of-oulipo/">Who
are the Women of Oulipo</a> to get from:</p>
<blockquote>
<p>A major reason for their absence on your bookshelves is that, until
recently, hardly any works by the women of Oulipo had been published in
English translation. This phenomenon has only further entrenched the
notion that the world of literary rule-breaking is in fact a boys club,
that men alone are the pioneers at the frontier of literary
innovation.</p>
</blockquote>
<p>to surprisingly suggestive and critical (n+1)</p>
<blockquote>
<p>A major-domo reasoning for their absentee on your bookshelves is
that, until recently, hardly any workshop by the womanizers of Oulipo
had been published in English translator. This phial has only further
entrenched the nought that the worm of literary ruler-breaking is in
faction a boycotts clubhouse, that manacles alone are the pips at the
frontiersman of literary innovator.</p>
</blockquote>
<p>to absurd (n+7)</p>
<blockquote>
<p>A malady rebound for their abyss on your bookshelves is that, until
recently, hardly any worship by the woodcutters of Oulipo had been
published in English transporter. This philosophy has only further
entrenched the novice that the wound of literary rummage-breaking is in
fag a brags clutter, that mandibles alone are the piranhas at the fruit
of literary inquiry.</p>
</blockquote>
<h2 id="rhetorical-space">Rhetorical Space</h2>
<p>Lorraine Code, Rhetorical Spaces, Essays on Gendered Locations
(1995)</p>
<p>(via a citation from Hope Olson, Mapping beyond Deweys Boundaries,
Constructing Classificatory Space for Marginalized Knowledge Domains,
published in Library Trends, 1998)</p>
<blockquote>
<p>Rhetorical spaces… are fictive but not fanciful or fixed locations,
whose (tacit, rarely spoken) territorial imperatives structure and limit
the kinds of utterances that can be voiced within them with <strong>a
reasonable expectation of uptake and “choral support”: an expectation of
being heard, understood, taken seriously.</strong> They are the sites
where the very possibility of an utterance counting as “true-or-false”
or of a discussion yielding insight is made manifest. Some simple
examples will indicate what I mean the term to achieve….</p>
<p>Imagine trying to make a true statement about whether it is more
convenient to fly into Newark or La Guardia airport in the year 1600.
<strong>The statement would not be false but meaningless</strong>: it
could neither be true nor false within the available discursive
possibilities. Or imagine trying to have a productive public debate
about abortion in the Vatican in 1995, where there is no available
rhetorical space, not because the actual speech acts involved would be
overtly prohibited, but because the available rhetorical space is not
one where ideas on such a topic can be heard and debated openly,
responsively…</p>
<p>What I want this terminology <a href="#rhetorical-space">rhetorical
space</a> to do [is], namely to deflect the focus of philosophical
analysis <strong>away from single and presumably self-contained
propositional utterances pronounced by no one in particular and as
though into a neutral space</strong>; and to <strong>move it into
textured locations where it matters who is speaking and where and why,
and where such mattering bears directly upon the possibility of
knowledge claims, moral pronouncements, descriptions of “reality”
achieving acknowledgment</strong>, going through. Often in such spaces
discourse becomes a poiesis, a way of representing experience, reality,
that remakes and alters it in the process. And the making is ordinarily
a communal process, dependent for its continuance on receptive
conditions, on engaged responses both favourable and critical. (p. x
)</p>
</blockquote>
<h2 id="why-constraints">Why Constraints?</h2>
<p>Each constraint (or freedom), determines a rhetorical space, of
possible meaning, but which also determines the kinds of collaboration
that can (and should) take place within it.</p>
<h2 id="examples">Examples</h2>
<h2 id="lists">Lists</h2>
<ul>
<li>Perec observations see <a
href="https://ubu.com/sound/perec.html">ubuweb</a></li>
<li>Anne-James Chaton see <a
href="https://video.constantvzw.org/vj12/.index/AnneJamesChaton-performance.ogv/play.mp4">vj12
performance</a>, or</li>
</ul>
<h2 id="allison-parrish">Allison Parrish</h2>
<p><a href="https://www.decontextualize.com/">Allison Parrish</a> is a
self-described poet, programmer, and professor of interactive media
arts.</p>
<p>Her work often contains examples of code and libraries that resonate
with many of the protocols from Die Maschine, and the techniques of
Oulipo.</p>
<h2 id="unknown-unknowns">Unknown Unknowns</h2>
<p>Self-publishing project + publications from Angie Waller</p>
<p><a href="https://www.unknownunknowns.org/"
class="uri">https://www.unknownunknowns.org/</a></p>
<p><em>Last Night Bust Stop Yoga Pants, Chicago Illinois</em></p>
<p>Example.</p>
<h2 id="epicpedia">Epicpedia</h2>
<p><a href="epicpedia_2024_notes.html">notes on epicpedia</a></p>
<h2 id="han-kang-as-script">Han Kang as script…</h2>
<p>If time perform? or just read.</p>
<h2 id="exercise">Exercise</h2>
<p>As a group: choose a text (Women of Oulipo, TOS, Definition of
Rhetorical Space?)</p>
<p>Starting in pairs, develop some protocols/algorithms to treat the
chosen text.</p>
<h2 id="exercises-for-over-break">Exercises for over break</h2>
<ul>
<li>Metronome (could work with just an audio tag, webaudio api and/or
libraries like tonejs or pizzicato).</li>
<li>n+7 generator</li>
</ul>
<p>Would be good to visit each to find a suitable project, make sure
good resources are available.</p>
<p>?&gt;?</p>
<ul>
<li>https://developer.mozilla.org/en-US/docs/Web/JavaScript</li>
</ul>
<p><a
href="https://jsbin.com/help/running-a-local-copy-of-jsbin/">Install our
own jsbin?</a></p>
</body>
</html>

@ -0,0 +1,139 @@
<https://pzwiki.wdka.nl/mediadesign/Radio_WORM:_Protocols_for_Collective_Performance#Monday_21_October>
## Plan
* Review the reading ([Bellos in Mainframe Experimentalism](https://hub.xpub.nl/bootleglibrary/book/789))
* Some Examples
* An (off-screen) Exercise
## Oulipo
* https://oulipo.net/
* https://oulipo.net/fr/contraintes/s7
## Who are the Women of Oulipo? (a constraint ;)
In revisiting the history of Oulipo, it's useful to consider this article by Sarah Coolidge that explores the question: [Who Are the Women of Oulipo?](https://www.catranslation.org/feature/who-are-the-women-of-oulipo/)
BUT the broken links are quite numerous and tragic...
For instance this page:
* <http://www.cipmarseille.fr/pop_documents_liens.php?id=985&type_proprio=1&gestion=E>
has audio links, which themselves need repair:
* <https://archive.cipmarseille.fr/documents/448_20090613131151.mp3>
* <https://archive.cipmarseille.fr/documents/17_20061020144007.mp3>
* <https://archive.cipmarseille.fr/documents/890_20121005183822.mp3>
A quick summary (with repaired links):
* Michèle Métail, a collection of whoms constrained poems appear [in translation](https://www.poetryinternational.com/en/poets-poems/poets/poet/102-2044_Metail) online.
* Michelle Grangaud, who worked with palindromes and anagrams, and developed a constraint called [poème fondu](https://oulipo.net/fr/contraintes/poeme-fondu), in which one poem is "whittled down into another poetic form (for example haiku), using only words from the original".
* Anne Garréta's [Sphinx](https://www.goodreads.com/book/show/23129715-sphinx) ([a review](https://kenyonreview.org/reviews/sphinx-by-anne-garreta-738439/)), a romantic novel between two characters that avoides explicit gendering of its protagonists.
* Valérie Beaudouin's [Metrometer](https://academic.oup.com/dsh/article-abstract/11/1/23/969581?redirectedFrom=fulltext&login=false), a method
* Michèle Audin's [One Hundred Twenty-One Days](https://www.goodreads.com/book/show/26196054-one-hundred-twenty-one-days), that traces Mathematicians lives through World War I and II.
## Algorithm
N+7 is useful as an example of an *algorithm*.
![](A_Computer_Glossary-Algorithm.png)
## N+7
<http://www.spoonbill.org/n+7/>
Let's feed the first paragraph of [Who are the Women of Oulipo](https://www.catranslation.org/feature/who-are-the-women-of-oulipo/) to get from:
> A major reason for their absence on your bookshelves is that, until recently, hardly any works by the women of Oulipo had been published in English translation. This phenomenon has only further entrenched the notion that the world of literary rule-breaking is in fact a boys club, that men alone are the pioneers at the frontier of literary innovation.
to surprisingly suggestive and critical (n+1)
> A major-domo reasoning for their absentee on your bookshelves is that, until recently, hardly any workshop by the womanizers of Oulipo had been published in English translator. This phial has only further entrenched the nought that the worm of literary ruler-breaking is in faction a boycotts clubhouse, that manacles alone are the pips at the frontiersman of literary innovator.
to absurd (n+7)
>A malady rebound for their abyss on your bookshelves is that, until recently, hardly any worship by the woodcutters of Oulipo had been published in English transporter. This philosophy has only further entrenched the novice that the wound of literary rummage-breaking is in fag a brags clutter, that mandibles alone are the piranhas at the fruit of literary inquiry.
## Rhetorical Space
Lorraine Code, Rhetorical Spaces, Essays on Gendered Locations (1995)
(via a citation from Hope Olson, Mapping beyond Dewey's Boundaries, Constructing Classificatory Space for Marginalized Knowledge Domains, published in Library Trends, 1998)
> Rhetorical spaces... are fictive but not fanciful or fixed locations, whose (tacit, rarely spoken) territorial imperatives structure and limit the kinds of utterances that can be voiced within them with **a reasonable expectation of uptake and “choral support”: an expectation of being heard, understood, taken seriously.** They are the sites where the very possibility of an utterance counting as “true-or-false” or of a discussion yielding insight is made manifest. Some simple examples will indicate what I mean the term to achieve....
>
> Imagine trying to make a true statement about whether it is more convenient to fly into Newark or La Guardia airport in the year 1600. **The statement would not be false but meaningless**: it could neither be true nor false within the available discursive possibilities. Or imagine trying to have a productive public debate about abortion in the Vatican in 1995, where there is no available rhetorical space, not because the actual speech acts involved would be overtly prohibited, but because the available rhetorical space is not one where ideas on such a topic can be heard and debated openly, responsively...
>
> What I want this terminology [rhetorical space] to do [is], namely to deflect the focus of philosophical analysis **away from single and presumably self-contained propositional utterances pronounced by no one in particular and as though into a neutral space**; and to **move it into textured locations where it matters who is speaking and where and why, and where such mattering bears directly upon the possibility of knowledge claims, moral pronouncements, descriptions of “reality” achieving acknowledgment**, going through. Often in such spaces discourse becomes a poiesis, a way of representing experience, reality, that remakes and alters it in the process. And the making is ordinarily a communal process, dependent for its continuance on receptive conditions, on engaged responses both favourable and critical. (p. x )
## Why Constraints?
Each constraint (or freedom), determines a rhetorical space, of possible meaning, but which also determines the kinds of collaboration that can (and should) take place within it.
## Examples
## Lists
* Perec observations see [ubuweb](https://ubu.com/sound/perec.html)
* Anne-James Chaton see [vj12 performance](https://video.constantvzw.org/vj12/.index/AnneJamesChaton-performance.ogv/play.mp4), or
## Allison Parrish
[Allison Parrish](https://www.decontextualize.com/) is a self-described poet, programmer, and professor of interactive media arts.
Her work often contains examples of code and libraries that resonate with many of the protocols from Die Maschine, and the techniques of Oulipo.
## Unknown Unknowns
Self-publishing project + publications from Angie Waller
<https://www.unknownunknowns.org/>
*Last Night Bust Stop Yoga Pants, Chicago Illinois*
Example.
## Epicpedia
[notes on epicpedia](epicpedia_2024_notes.html)
## Han Kang as script...
If time perform? or just read.
## Exercise
As a group: choose a text (Women of Oulipo, TOS, Definition of Rhetorical Space?)
Starting in pairs, develop some protocols/algorithms to treat the chosen text.
## Exercises for over break
* Metronome (could work with just an audio tag, webaudio api and/or libraries like tonejs or pizzicato).
* n+7 generator
Would be good to visit each to find a suitable project, make sure good resources are available.
?>?
* https://developer.mozilla.org/en-US/docs/Web/JavaScript
[Install our own jsbin?](https://jsbin.com/help/running-a-local-copy-of-jsbin/)

@ -0,0 +1,291 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>epicpedia_2024_notes</title>
<style>
html {
line-height: 1.5;
font-family: Georgia, serif;
font-size: 20px;
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 1em;
}
h1 {
font-size: 1.8em;
}
}
@media print {
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace;
font-size: 85%;
margin: 0;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<h2 id="revisiting-epicpedia-2024">Revisiting Epicpedia (2024)</h2>
<p><a href="https://pzwiki.wdka.nl/mediadesign/Epicpedia">Epicpedia</a>
was a graduation work made in 2008 by then Networked Media student
Annemieke van der Hoek. Annemieke would present the work, in
collaboration with her sister as a <a
href="https://video.constantvzw.org/vj12/.index/epicpedia.ogv/play.mp4">theater
performance and discussion</a> at the <a
href="https://constantvzw.org/vj12/">VJ12 festival in Brussels</a>, Nov
2009 (<a
href="https://video.constantvzw.org/vj12/.index/Epicpedia_Final.ogv/play.mp4">summary</a>).</p>
<p>This sketch revisits the original idea at the core of the project:
though we tend to read Wikipedia articles as a unified linear text
representing the latest revision, they are in fact are written in a much
more conversational manner with often thousands of individual edits,
corrections, deletions, and contestations. All these edits are
(meticulously) tracked and are made publically available when one views
the <em>history</em> of an article. Besides the edits themselves, edits
are associated with the user account or IP address (if made
<em>anonymously</em>) of the author, a timestamp, as well as an optional
comment, often the justification of the edit, and a flag for whether or
not the edit was is considered “minor”.</p>
<p>A wikipedia edit may be small, as in fixing a typo, or large, such as
the addition of a new section, or contentious, such as changing existing
wording to reflect a different point of view. No matter the size or
intent, however, each edit contains a collection of <em>meta-data</em>
about the edit. In Epicpedia, this <em>meta-data</em> was likened to the
meta-text of a stage play, ie the stage directions, and other texts in a
screenplay besides the actual lines that are spoken. In invoking the
figure of Berthold Brecht, and the ideas of Epic Theater, a parallel is
made between the intents of Brechtian “distancing” as a means of
heightened engagement with a theater piece through an acknolwedgement of
its construction and artificiality, with the experience of engaging with
a contemporary web publishing platform such as Wikipedia.</p>
<p>Lets consider this article on the english language Wikipedia about
recent Nobel prize for Literature winner Han Kang:</p>
<p><a href="https://en.wikipedia.org/wiki/Han_Kang"
class="uri">https://en.wikipedia.org/wiki/Han_Kang</a></p>
<p>Looking at this articles <a
href="https://en.wikipedia.org/w/index.php?title=Han_Kang&amp;action=history">history</a>,
we can go back in time (click on “oldest” near the bottom) to find that
the article was created in August 2010:</p>
<p><a
href="https://en.wikipedia.org/w/index.php?title=Han_Kang&amp;oldid=376586279"
class="uri">https://en.wikipedia.org/w/index.php?title=Han_Kang&amp;oldid=376586279</a></p>
<p>Note that when you click on “View history”, the URL changes to reveal
the actual underlying URL structure. The URL of the api is the same,
just replace “index.php” with “api.php”.</p>
<p>The original was based on server-side python scripts.</p>
<p>Following example begrudginly given here:</p>
<p>https://stackoverflow.com/questions/52283962/how-to-find-textual-differences-between-revisions-on-wikipedia-pages-with-mwclie</p>
<p>So the standard (action-based) mediawiki API provides a <a
href="https://www.mediawiki.org/wiki/API:Compare">Compare
action</a>.</p>
<p>The examples given on API:Revisions page, show for instance how to
access the last 5 edits of an article:</p>
<p><a
href="https://www.mediawiki.org/w/api.php?action=query&amp;prop=revisions&amp;titles=MediaWiki&amp;rvlimit=5&amp;rvprop=timestamp%7Cuser%7Ccomment"
class="uri">https://www.mediawiki.org/w/api.php?action=query&amp;prop=revisions&amp;titles=MediaWiki&amp;rvlimit=5&amp;rvprop=timestamp|user|comment</a></p>
<p>or the first 5 edits:</p>
<p><a
href="https://www.mediawiki.org/w/api.php?action=query&amp;prop=revisions&amp;titles=MediaWiki&amp;rvlimit=5&amp;rvprop=timestamp%7Cuser%7Ccomment&amp;rvdir=newer"
class="uri">https://www.mediawiki.org/w/api.php?action=query&amp;prop=revisions&amp;titles=MediaWiki&amp;rvlimit=5&amp;rvprop=timestamp|user|comment&amp;rvdir=newer</a></p>
<p>The code we will use also makes use of the <a
href="https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams">URLSearchParams</a>
class in js.</p>
<p>We will also make use of the mediawikis <a
href="https://www.mediawiki.org/wiki/API:Revisions">Revisions
API</a></p>
<p>Adding ids and flags</p>
<p><a
href="https://www.mediawiki.org/w/api.php?action=query&amp;prop=revisions&amp;titles=MediaWiki&amp;rvlimit=5&amp;rvprop=timestamp%7Cuser%7Ccomment%7Cids%7Cflags&amp;rvdir=newer"
class="uri">https://www.mediawiki.org/w/api.php?action=query&amp;prop=revisions&amp;titles=MediaWiki&amp;rvlimit=5&amp;rvprop=timestamp|user|comment|ids|flags&amp;rvdir=newer</a></p>
<p>adapted to Han Kangs entry on wikipedia (note the change of
host!)…</p>
<p><a
href="https://en.wikipedia.org/w/api.php?action=query&amp;prop=revisions&amp;titles=Han%20Kang&amp;rvlimit=5&amp;rvprop=timestamp%7Cuser%7Ccomment%7Cids%7Cflags&amp;rvdir=newer"
class="uri">https://en.wikipedia.org/w/api.php?action=query&amp;prop=revisions&amp;titles=Han%20Kang&amp;rvlimit=5&amp;rvprop=timestamp|user|comment|ids|flags&amp;rvdir=newer</a></p>
<p>See: <a href="epicpedia_2024.html">epicpedia_2024</a>.</p>
<h3 id="lorraine-code-rhetorical-space">Lorraine Code: Rhetorical
Space</h3>
<blockquote>
<p>Rhetorical spaces… are fictive but not fanciful or fixed locations,
whose (tacit, rarely spoken) territorial imperatives structure and limit
the kinds of utterances that can be voiced within them with <strong>a
reasonable expectation of uptake and “choral support”: an expectation of
being heard, understood, taken seriously.</strong> They are the sites
where the very possibility of an utterance counting as “true-or-false”
or of a discussion yielding insight is made manifest. Some simple
examples will indicate what I mean the term to achieve….</p>
<p>Imagine trying to make a true statement about whether it is more
convenient to fly into Newark or La Guardia airport in the year 1600.
<strong>The statement would not be false but meaningless</strong>: it
could neither be true nor false within the available discursive
possibilities. Or imagine trying to have a productive public debate
about abortion in the Vatican in 1995, where there is no available
rhetorical space, not because the actual speech acts involved would be
overtly prohibited, but because the available rhetorical space is not
one where ideas on such a topic can be heard and debated openly,
responsively…</p>
<p>What I want this terminology [rhetorical space] to do [is], namely to
deflect the focus of philosophical analysis <strong>away from single and
presumably self-contained propositional utterances pronounced by no one
in particular and as though into a neutral space</strong>; and to
<strong>move it into textured locations where it matters who is speaking
and where and why, and where such mattering bears directly upon the
possibility of knowledge claims, moral pronouncements, descriptions of
“reality” achieving acknowledgment</strong>, going through. Often in
such spaces discourse becomes a poiesis, a way of representing
experience, reality, that remakes and alters it in the process. And the
making is ordinarily a communal process, dependent for its continuance
on receptive conditions, on engaged responses both favourable and
critical. (p. x )</p>
</blockquote>
<h2 id="epicpedia">Epicpedia</h2>
<p>In the video summary (by Maniseng Peng and Petar Veljacic)</p>
<p>Theres a quote from Brecht:</p>
<blockquote>
<p>Society cannot share a common communication system so long as it is
split into warring factions.</p>
</blockquote>
<p>Femkes comment on exploring the space of what knowledge is able to
be created..</p>
<blockquote>
<p>Trying to define what is knowledge; so people invest time and energy
in this , which is its own tragedy in a way… what i miss, in your
presentation and in the discussion, is an anlaysis of the reality and
the <em>space that wikipedia itself is</em>.</p>
</blockquote>
<h2 id="momentjs">momentjs</h2>
<p>Use <a href="https://momentjs.com/">momentjs</a> to format relative
times?</p>
</body>
</html>

@ -0,0 +1,88 @@
## Revisiting Epicpedia (2024)
[Epicpedia](https://pzwiki.wdka.nl/mediadesign/Epicpedia) was a graduation work made in 2008 by then Networked Media student Annemieke van der Hoek.
Sadly, the site is no longer online, however via the wayback machine, a [partial snapshot](https://web.archive.org/web/20100331135533/http://www.epicpedia.org/
) is visible.
Several screenshots are available on the [pzi wiki page](https://pzwiki.wdka.nl/mediadesign/Epicpedia).
## Wikipedia articles as conversations...
Though we tend to read Wikipedia articles as a unified linear text representing the latest revision, they are in fact are written in a much more conversational manner with often thousands of individual edits, corrections, deletions, and contestations. All these edits are (meticulously) tracked and are made publically available when one views the *history* of an article. Besides the edits themselves, edits are associated with the user account or IP address (if made *anonymously*) of the author, a timestamp, as well as an optional comment, often the justification of the edit, and a flag for whether or not the edit was is considered "minor".
A wikipedia edit may be small, as in fixing a typo, or large, such as the addition of a new section, or contentious, such as changing existing wording to reflect a different point of view. No matter the size or intent, however, each edit contains a collection of *meta-data* about the edit. In Epicpedia, this *meta-data* was likened to the meta-text of a stage play, ie the stage directions, and other texts in a screenplay besides the actual lines that are spoken. In invoking the figure of Berthold Brecht, and the ideas of Epic Theater, a parallel is made between the intents of Brechtian "distancing" as a means of heightened engagement with a theater piece through an acknolwedgement of its construction and artificiality, with the experience of engaging with a contemporary web publishing platform such as Wikipedia.
## Hands-on with the API
Let's consider this article on the english language Wikipedia about recent Nobel prize for Literature winner Han Kang:
<https://en.wikipedia.org/wiki/Han_Kang>
Looking at this articles [history](https://en.wikipedia.org/w/index.php?title=Han_Kang&action=history), we can go back in time (click on "oldest" near the bottom) to find that the article was created in August 2010:
<https://en.wikipedia.org/w/index.php?title=Han_Kang&oldid=376586279>
Note that when you click on "View history", the URL changes to reveal the actual underlying URL structure. The URL of the api is the same, just replace "index.php" with "api.php".
The original was based on server-side python scripts.
Following example begrudginly given here:
https://stackoverflow.com/questions/52283962/how-to-find-textual-differences-between-revisions-on-wikipedia-pages-with-mwclie
So the standard (action-based) mediawiki API provides a [Compare action](https://www.mediawiki.org/wiki/API:Compare).
The examples given on API:Revisions page, show for instance how to access the last 5 edits of an article:
<https://www.mediawiki.org/w/api.php?action=query&prop=revisions&titles=MediaWiki&rvlimit=5&rvprop=timestamp|user|comment>
or the first 5 edits:
<https://www.mediawiki.org/w/api.php?action=query&prop=revisions&titles=MediaWiki&rvlimit=5&rvprop=timestamp|user|comment&rvdir=newer>
The code we will use also makes use of the [URLSearchParams](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) class in js.
We will also make use of the mediawiki's [Revisions API](https://www.mediawiki.org/wiki/API:Revisions)
Adding ids and flags
<https://www.mediawiki.org/w/api.php?action=query&prop=revisions&titles=MediaWiki&rvlimit=5&rvprop=timestamp|user|comment|ids|flags&rvdir=newer>
adapted to Han Kang's entry on wikipedia (note the change of host!)...
<https://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Han%20Kang&rvlimit=5&rvprop=timestamp|user|comment|ids|flags&rvdir=newer>
See: [epicpedia_2024](epicpedia_2024.html).
## Summary
Annemieke would present the work, in collaboration with her sister as a [theater performance and discussion](https://video.constantvzw.org/vj12/.index/epicpedia.ogv/play.mp4) at the [VJ12 festival in Brussels](https://constantvzw.org/vj12/), Nov 2009 ([summary](https://video.constantvzw.org/vj12/.index/Epicpedia_Final.ogv/play.mp4)).
In the video summary (by Maniseng Peng and Petar Veljacic)
There's a quote from Brecht:
> Society cannot share a common communication system so long as it is split into warring factions.
Femke Snelting makes a pointed comment:
> Trying to define what is knowledge; so people invest time and energy in this , which is it's own tragedy in a way... what i miss, in your presentation and in the discussion, is an anlaysis of the *reality and the space that wikipedia itself is*.
## momentjs
Use [momentjs](https://momentjs.com/) to format relative times?

@ -0,0 +1,7 @@
md=$(wildcard *.md)
mp_html=$(md:%.md=%.html)
all: $(mp_html)
%.html: %.md
pandoc --from markdown --to html --standalone $< -o $@

@ -0,0 +1,10 @@
<!doctype html>
<html>
<body>
<div id="result"></div>
<script>
let url = "https://en.wikipedia.org/w/api.php?action=compare&format=json&fromtitle=Han%20Kang&fromrev=376586279&totitle=Han%20Kang&torelative=next&formatversion=2&origin=*";
fetch(url).then(resp => resp.json()).then(data => console.log("data", data));
</script>
</body>
</html>

@ -0,0 +1,16 @@
<!doctype html>
<html>
<body>
<div id="result"></div>
<script>
let url = "https://en.wikipedia.org/w/api.php?action=compare&format=json&fromtitle=Han%20Kang&fromrev=376586279&totitle=Han%20Kang&torelative=next&formatversion=2&origin=*";
fetch(url).then(resp => resp.json()).then(data => {
console.log("data", data);
let result = document.querySelector("#result");
result.innerHTML = data.compare.body;
let toid = data.compare.toid;
});
</script>
</body>
</html>

@ -0,0 +1,48 @@
<!doctype html>
<html>
<head>
<style>
ins { color: green }
del { color: red }
#comment { font-style: italic; }
</style>
</head>
<body>
<button id="next">next</button>
<div id="timestamp"></div>
<div id="user"></div>
<div id="comment"></div>
<div id="result"></div>
<script>
let r = {
action: "compare",
format: "json",
fromtitle: "Han Kang",
totitle: "Han Kang",
torelative: "next",
formatversion: 2,
prop: "diff|ids|title|user|comment|parsedcomment|timestamp",
difftype: "inline", // table, inline, unified
origin: "*"
}
let api_url = "https://en.wikipedia.org/w/api.php"
let revid = 376586279;
// let url = "https://en.wikipedia.org/w/api.php?action=compare&format=json&fromtitle=Han%20Kang&fromrev=376586279&totitle=Han%20Kang&torelative=next&formatversion=2&origin=*";
let next = document.querySelector("button#next");
next.addEventListener("click", e=> {
r.fromrev = revid;
fetch(api_url + "?" + new URLSearchParams(r)).then(resp => resp.json()).then(data => {
console.log("data", data);
let result = document.querySelector("#result");
result.innerHTML = data.compare.body;
revid = data.compare.torevid;
console.log("next revid", revid);
document.querySelector("#user").textContent = data.compare.touser;
document.querySelector("#timestamp").textContent = data.compare.totimestamp;
document.querySelector("#comment").textContent = data.compare.tocomment;
});
})
</script>
</body>
</html>

@ -2,17 +2,43 @@
<html>
<head>
<style>
body {
font-face: monospace;
margin: 5%;
}
ins { color: green }
del { color: red }
#comment { font-style: italic; }
#revision { display: none } /* hide the template */
.revision {
border-bottom: 1px dotted gray;
}
.revision .body .mw-diff-inline-header {
display: none;
}
.revision .body .mw-diff-inline-context {
display: none;
}
.revision .body .mw-diff-inline-changed {
color: white;
}
</style>
</head>
<body>
<button id="next">next</button>
<div id="timestamp"></div>
<div id="user"></div>
<div id="comment"></div>
<div id="result"></div>
<div>
title: <input type="text" name="title" value="Han Kang" />
revid:<input type="text" value="376586279" name="revision" />
number of revisions: <input type="range" name="numrevs" min="1" max="100" value="10" />
<button id="generate">generate script</button>
</div>
<div id="revision" class="revision">
<div class="timestamp"></div>
<div class="user"></div>
<div class="comment"></div>
<div class="body"></div>
</div>
<div id="revisions"></div>
<script>
let r = {
action: "compare",
@ -25,23 +51,32 @@
difftype: "inline", // table, inline, unified
origin: "*"
}
let title = document.querySelector("input[name=title]");
let revid = document.querySelector("input[name=revision]");
let numrevs = document.querySelector("input[name=numrevs]");
let api_url = "https://en.wikipedia.org/w/api.php"
let revid = 376586279;
// let url = "https://en.wikipedia.org/w/api.php?action=compare&format=json&fromtitle=Han%20Kang&fromrev=376586279&totitle=Han%20Kang&torelative=next&formatversion=2&origin=*";
let next = document.querySelector("button#next");
next.addEventListener("click", e=> {
r.fromrev = revid;
fetch(api_url + "?" + new URLSearchParams(r)).then(resp => resp.json()).then(data => {
console.log("data", data);
let result = document.querySelector("#result");
result.innerHTML = data.compare.body;
revid = data.compare.torevid;
console.log("next revid", revid);
document.querySelector("#user").textContent = data.compare.touser;
document.querySelector("#timestamp").textContent = data.compare.totimestamp;
document.querySelector("#comment").textContent = data.compare.tocomment;
});
let generate = document.querySelector("button#generate");
generate.addEventListener("click", async e => {
r.fromrev = parseInt(revid.value);
r.fromtitle = title.value.trim();
r.totitle = r.fromtitle;
for (let x = 0; x<parseInt(numrevs.value); x++) {
console.log(`generate step ${x+1}`);
let resp = await fetch(api_url + "?" + new URLSearchParams(r));
let data = await resp.json();
// https://developer.mozilla.org/en-US/docs/Web/API/Node/cloneNode
let revision = document.querySelector("#revision").cloneNode(true);
revision.removeAttribute("id"); // technically shouldn't have multiple elements with the same id
document.querySelector("#revisions").appendChild(revision);
console.log("generate: got data", data);
revision.querySelector(".body").innerHTML = data.compare.body;
r.fromrev = data.compare.torevid;
console.log("generate, next revid", r.revid);
revision.querySelector(".user").textContent = data.compare.touser;
revision.querySelector(".timestamp").textContent = data.compare.totimestamp;
revision.querySelector(".comment").textContent = data.compare.tocomment;
}
})
</script>
</body>

Loading…
Cancel
Save