User:Ohjian

From XPUB & Lens-Based wiki
Revision as of 00:19, 6 February 2022 by Ohjian (talk | contribs) (→‎Readings)

o h j i a n

Intro

       _      _ _                _                                      _      _ _                                           _   
  ___ | |__  (_|_) __ _ _ __    | |__   __ _ _ __  _ __  _   _     ___ | |__  (_|_) __ _ _ __     ___  ___ __ _ _ __ ___  __| |
 / _ \| '_ \ | | |/ _` | '_ \   | '_ \ / _` | '_ \| '_ \| | | |   / _ \| '_ \ | | |/ _` | '_ \   / __|/ __/ _` | '__/ _ \/ _` |
| (_) | | | || | | (_| | | | |  | | | | (_| | |_) | |_) | |_| |  | (_) | | | || | | (_| | | | |  \__ \ (_| (_| | | |  __/ (_| |
 \___/|_| |_|/ |_|\__,_|_| |_|  |_| |_|\__,_| .__/| .__/ \__, |   \___/|_| |_|/ |_|\__,_|_| |_|  |___/\___\__,_|_|  \___|\__,_|
           |__/                            |_|   |_|    |___/               |__/ 

! echo ohjian  happy ohjian  scared | figlet

Special Issue #16

Getting Started

Moving to Rotterdam
Intro Week

Readings

  • "Situated Knowledges. The Science Question in Feminism and the Privilege of Partial Perspective", Donna Haraway
  • "Orientation in a big world", Patricia Reed
  • "Vernacular Order, Official Order / Vernacular and Official Ways of 'Knowing'", James C. Scott
  • "Queer Phenomenology. Orientations, Objects, Others", Sara Ahmed
  • "Vernacular Values", Ivan Illich
  • "This Is Not an Atlas - A Global Collection of Counter-Cartographies", Kollektiv Orangotango+
  • "Control and Freedom. Power and Paranoia in the Age of Fiber Optics", Wendy Hui Kyong Chun
  • "Post-Digital Print. The Mutation of Publishing since 1894", Alessandro Ludovico
  • "Sprache und sein", Kübra Gümüşay

References

  • "A Rose is a Rose is a rose", Gertrude Stein
  • Oulipu
  • George perec
  • "Dictionary of Winds", Ivetta Gerasimchuk
  • "This Variation", Tino Sehgal
  • Clusterduck
  • "Anekdoten zu einer Topographie des Zufalls", Daniel Spoerri
  • "Queering the Map", Lucas laRochelle
  • Palestine Open Maps, Majd Al-shihabi
  • Learning Machines, George Maciunas
  • Marcel Duchamp
  • Lucy Lippard - C. 7,500
  • Anni Albers weavings
  • Marcel Broodthaers – musée d'art moderne département des aigles 1968–72
  • Aby Warburg
  • Snail Mail
  • Harals Szeeman – Documenta 5
  • Telemagic
  • OMSK Social Club
  • Chimeric Worlding
  • Hackers & Designers


Pad collection

Words of interest

  • Archive
  • Artifact
  • Atlas
  • Book
  • Collective
  • Context
  • Darkness
  • Destination
  • Dimension
  • Direction
  • Echoe
  • Encyclopedia
  • Ephemer
  • Gesture
  • Ghost
  • Index
  • Interrelations
  • Language
  • Lexikon
  • Local
  • Lacolization
  • Map
  • Memory
  • Miscelenious
  • Mobility
  • Movement
  • Multiverse
  • Multilayers
  • Navigation
  • Navigator
  • Orientation
  • Question Mark
  • Record
  • Rejection
  • Relation
  • Relic
  • Selection
  • Space
  • Territory
  • Time
  • Toolkit
  • Topography
  • Trace
  • Unknown
  • Weaving
  • Vernacular

Notes

Readings for Prototyping class

Wiki Page Prototyping Class SI 16

Exploratory Programming for the Arts and Humanities by Nick Montfort

[ 4 ] Calculating and Using Jupiter Notebook

calculator (to calculate) / computer (to compute) / ordinateur (French, to order, to organize)

Python is a programming language

Jupiter Notebook is an interpreter of Python

Syntax vs. Semantics in programming languages like Python or Processing:

  • If the Syntax is correct, the code is formally correct, it is valid.
  • If the code does what it is supposed to do, it is intentional.
  • Intentional programs are always valid.
  • Valid programs are not always intentional.

Syntax and Semantics in HTML (Hypertext Markup Language):

  • HTML is not a programming language
  • JavaScript is a program
  • HMTL does not encode instructions
  • Web Browser are forgiving and will also render invalid pages whenever possible. Just because a page is looks intentional in a web browser it doesn't mean it's valid code. So maybe other or future web browsers will struggle to show the intended page. Use Validators like validator.w3c.org to make sure your code is valid.

! Dont ever replace the content of a a cell in Python once it has successfully run, even if the outcome is not intentional. Instead copy to a new cell to change the content !


[ 5 ] Double, Double

Indentation is important! Use 4 spaces instead of a tab!

  • Function: a bundle of computation 7 it must be provided exactly one argument / a function accepts arguments as well as returns values
  • Interface: Schnittstelle / the specific way in which a function accepts an argument and returns values defines the interface to a function
  • Argument: Ausgangswert? / Information that is passed into a function / The arguments to the function hold the values that the function needs to do its work. It sends back the answer aas return value
  • Value: Ergebnis / Result that is returned by the function
  • Sequence: data that is given as an argument
  • Element: a sequence can have several elements, a list [element, element, element]


[ 6 ] Programming Fundamentals

Types of Abstraction:

  • iteration = generalize a computation over a sequence / looping / allows repeated computation
  • polymorphism = a code that applies to data of different types

there are different types of data, for example:

  • integral numbers = int
  • strings of characters = str
  • lists of integers = int
  • Boolean value = True/False

some functions or operator only work with certain types of data, other are polymorph and work with different types of data

types of data can be converted = casting

inner and outer universe / scope: variable have a certain value in a function, but outside of the function the same variable can have a different value


Reflection moment

I was re-reading what we have to prepare for Christinas class and realized I misunderstood it the first time. I guess we are not supposed to bring even more new texts/material to elaborate, but rather bring examples of processing methods. So as far as I understand we should focus on different ways to approach a text or material, how to process/play/manipulate/work with it …

I think I will try to come up with maybe 3 different processing methods and use any text or material (old or new) to exemplify these methods. A method could be a complex annotation system but also a super simple and playful manipulation (i.e. get rid of all the punctuation in a text and see what happens).

What do you think? Should we just play around with this and then present our favorites in class?


Template for group meetings

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//// XPUB 1 –– SPECIAL ISSUE 16 //// XPUB 1 –– SPECIAL ISSUE 16 ////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Date: DD/MM/YYYY
Time: 00:00 – 00:00
Participants:

Guardian of the Clock:
Guardian of the Pad:


Schedule for today´s meeting:
00:00-00:00 Opening
00:00-00:00 Part 1
00:00-00:00 Check-in round
00:00-00:00 Break
00:00-00:00 Part 2
00:00-00:00 Check-in round
00:00-00:00 Closing

Link to pad from previous group meeting:

Possible topics for today (paste from previous pad):


Topics for today´s meeting:
1. Topic A
2. Topic B
3.

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//// XPUB 1 –– SPECIAL ISSUE 16 //// XPUB 1 –– SPECIAL ISSUE 16 ////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

OPENING

References / Examples:


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

PART 1

1. Topic A


2. Topic B


3. Topic C


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

CHECK-IN ROUND

One by one:
Do you want to ask / say / add / comment on something?
Try to limit your speaking time and try to be precise!
No interruptions please!

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

BREAK

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

PART 2

4. Topic D


5. Topic E


6. Topic F


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

CHECK-IN ROUND

One by one:
Do you want to ask / say / add / comment on something?
Try to limit your speaking time and try to be precise!
No interruptions please!

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

CLOSING

––> Summary of the meeting by the Guardian of the Pad

List of topics to discuss in the next meeting:


Homework / to do:


Schedule next meeting:
Date:
Time:

Guardian of the Pad next time:

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//// XPUB 1 –– SPECIAL ISSUE 16 //// XPUB 1 –– SPECIAL ISSUE 16 ////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


How to use the Terminal

pwd = shows where you are
ls = lists all files in the folder
cd Name = takes you to the named folder
cd .. = takes you one step back / up in the hierarchy of folders
cd = takes you to home folder
python Name = runs the named py-file
ls -hl = lists the files + information (permission r stands for read, rw stands for read + write)
clear = clear all previous commands
man + command = explains how the command works

sudo shutdown now


Electric Zine Maker

Workshop at the Zine Camp Festival
https://alienmelon.itch.io/electric-zine-maker

Links to funny tools:


Confused Notes

As a creative tool / process / rejection toolkit ~ Rejection = Ablehnung, Zurückweisung, Abstoßung, Abweisung, Abwehr, Aussortierung, aber auch Verwerfen ~ ignorieren, vergessen, verwerfen ~ generieren (produzieren), verwerfen (entscheiden) / entwerfen/verwerfen ~ Summerschool! also: Rejection as a collektive process? ~ Chronisten vs. Anemophile: Entwürfe aufbewahren oder verwerfen? ~ Talmud: keine Umschreibung, Überschreibung, Neuschreibung ~ Deutungen/ Ideen / Entwürfe bleiben parallel bestehen: multiperspektivisch (situated knowledge?) ~ to define the book limits the book ~ collect or select ~ curation: change context by selecting (and rejecting) certain things ~ responsibility ~ unpublished! ~ rejection as choice ~ definition generator just as book? ~ or: (because its easier I think): definition of curating, including rejection ~ rejection process changes vernacular language into formal language? ~ bleed ~ annotations / references / pagina ~ artifacts ~ stream of consciousness (in words or images) ~ our conscience can only focus on one thing and rejects the others? ~ selection by choice, by data, by association ~ Found items ~ Rejected items ~ Leaving a trace ~ Rejection toolkit ~ Topographie des Zufalls ~ Kill your darlings ~ Souvenirs of thinking processes ~ Remnants of the process ~ Embracing the unpublished / rejected ~ Extract ~ mapping / delineate ~ lost traces / ephemere ~ relic ~ ghost ~ echoes, memories ~ record, permanent form ~ vernacular memories ~ collective memories ~ Delinetae the unknown ~ Delineate the ephemeral ~ Delineate situated knowledges / language / action / memories ~ Delineating the situated ~ Delineate the vernacular ~ miscelenious ~ Connotation / context / curating ~ Rejection as categorization (libraries, archives) ~ … in Rejection ~ Topography of the Book ~ Delineating the Book ~ Rejection as Delineation ~ Rejection as tool, responsibility, curating ~ Experiment: have one collection of items and let at least two individuals select, organize, contextualize, curate them (also by adding new things?)


Queering the Map / Lucas laRochelle

Lecture at H&D Fall Talks

  • Express subjectivity
  • Incommensurability
  • Being together while aknowledging differences
  • Fluidity
  • Multiplicity
  • Situated
  • Embodied
  • Opacity
  • Transparency
  • Anecdotal
  • Glimmer, shimmers, traces
  • Singularities flow into the common
  • embrace multiple ways of knowing and feeling of the world
  • Anonymus participative, but no troll
  • Catching the ephemeral
  • Validates experience
  • Fills blanks of what isn’t officially documented


Mapping (dis)orientation / Majd al-shihabi

Lecture at H&D Fall Talks on Palestine open maps

  • Erasures when it comes to mapping
  • Catalogue of traces, archival work
  • Archives and erasure
  • Mappathon
  • Collaborators of new dataset that becomes ours
  • Since it’s not mine but ours I have to give it out
  • What permission to outsiders to use the data?


Setting up my brand new Raspberry Pi / Christmas 2021

Setup Notes for Beginners (yes, that´s me!)
* put Sd card in your computer
* download Raspberry Pi Imager (software that helps with an easy setup on the sd card )
* Video turotial
* open Raspberry Pi imager software
* choose operating system (in this case Raspberry Pi OS 32-BIT)
* select the sd card
* configurate username, password and wifi: ctrl + shift + x
* (default) settings:
* Hostname = raspberrypi.local
* activate ssh
* password for „pi“: raspberry
* = pi@raspberrypi.local
* setup wifi
* write to sd card (the sd card is now named „boot“)
* eject sd card and put it in the Raspberry Pi
* connect the pi to power (wait until the light stops blinking)
* to test ssh connection: connect Raspberry Pi and computer via ethernet cable
* open terminal and write: ssh pi@raspberry.local
* password: raspberry
* if it give "WARNING: POSSIBLE DNS SPOOFING DETECTED!" go to finder
* "command + shift + ." to show hidden files
* go to folder jianhaake and delete the ".ssh" folder
* go back to terminal and try again: ssh pi@raspberrypi.local
* confirm with yes and give password
Setup Notes Advanced (maybe later … )

The complete setup is done manually using the terminal.

Helpful links:
The_Ultimate_RPi_Installation_Guide#Setting_up_SD_Card
https://www.raspberrypi.com/software/operating-systems/
https://pihw.wordpress.com/guides/direct-network-connection/

Experiments

Ghost Glyphs

 for character in text:
    if character.isalpha() or character.isalnum():
        print((len(character) * ' '), end='')
    else:
        print(character, end='')
                        -                .                             ,                                .                                                           ,                                           .                                                          .                               ?             ,                    .                                         .                        ,              ,                      ,     ,          .                ’                                  ,                     ,                        ’                           .         ,                                         ,                                                                         .                           .                       .                   ,         ,           .                                      ;                                       ,                                    .                                                                          ,                                       .                                                                    .          ,                 ,                                                ,                       ;                         ,                                                       .                                               :                                                                         ,   ,                ,                            .         ,                            ,                          .                                     ,                              .                     -          ’                                                                    ,        ,                                                          .                                                   ,                                           ,                       ,                                           ;                                                ,                                              ,                                                                       ,                                                                                                             .                                          ?                  ,                                                ,                                  ,                                              '                    '                         .     ,             ,                                           :                 .                                                                          .                                    .                 ,                       ,                                                                                    .                                    ,                          ;                                                  .                                   ,                                                                              ,                                                                     ,                                                              .                                                          .                                  ;                      (               )                                          ,             ,                      ,    .-                                              ?                                                         .                    ,                                                                                  ,                                      .                             ,                                                     . . . (                                                     ,                                         ?                                                          ?)                            .                                   .                                        .


Text Patterns

[ Supi, Jian ]

 output = []
 
for word in text1:
    for character in word:
        output = output + [character.upper()]
    output = output + [len(word) * ' ']    
pattern = "".join(output)        
print(pattern)
THE   TWO   OF  US  WROTE     ANTI-OEDIPUS            TOGETHER.         SINCE     EACH    OF  US  WAS   SEVERAL,        THERE     WAS   ALREADY       QUITE     A CROWD.      HERE    WE  HAVE    MADE    USE   OF  EVERYTHING          THAT    CAME    WITHIN      RANGE,      WHAT    WAS   CLOSEST       AS  WELL    AS  FARTHEST        AWAY.     WE  HAVE    ASSIGNED        CLEVER      PSEUDONYMS          TO  PREVENT       RECOGNITION.            WHY   HAVE    WE  KEPT    OUR   OWN   NAMES?      OUT   OF  HABIT,      PURELY      OUT   OF  HABIT.      TO  MAKE    OURSELVES         UNRECOGNIZABLE              IN  TURN.     TO  RENDER      IMPERCEPTIBLE,              NOT   OURSELVES,          BUT   WHAT    MAKES     US  ACT,    FEEL,     AND   THINK.      ALSO    BECAUSE       IT’S    NICE    TO  TALK    LIKE    EVERYBODY         ELSE,     TO  SAY   THE   SUN   RISES,      WHEN    EVERYBODY         KNOWS     IT’S    ONLY    A MANNER      OF  SPEAKING.         TO  REACH,      NOT   THE   POINT     WHERE     ONE   NO  LONGER      SAYS    I,  BUT   THE   POINT     WHERE     IT  IS  NO  LONGER      OF  ANY   IMPORTANCE          WHETHER       ONE   SAYS    I.  WE  ARE   NO  LONGER      OURSELVES.          EACH    WILL    KNOW    HIS   OWN.    WE  HAVE    BEEN    AIDED,      INSPIRED,         MULTIPLIED.           A BOOK    HAS   NEITHER       OBJECT      NOR   SUBJECT;        IT  IS  MADE    OF  VARIOUSLY         FORMED      MATTERS,        AND   VERY    DIFFERENT         DATES     AND   SPEEDS.       TO  ATTRIBUTE         THE   BOOK    TO  A SUBJECT       IS  TO  OVERLOOK        THIS    WORKING       OF  MATTERS,        AND   THE   EXTERIORITY           OF  THEIR     RELATIONS.          IT  IS  TO  FABRICATE         A BENEFICENT          GOD   TO  EXPLAIN       GEOLOGICAL          MOVEMENTS.          IN  A BOOK,     AS  IN  ALL   THINGS,       THERE     ARE   LINES     OF  ARTICULATION            OR  SEGMENTARITY,             STRATA      AND   TERRITORIES;            BUT   ALSO    LINES     OF  FLIGHT,       MOVEMENTS         OF  DETERRITORIALIZATION                    AND   DESTRATIFICATION.                 COMPARATIVE           RATES     OF  FLOW    ON  3 4 INTRODUCTION:             RHIZOME       THESE     LINES     PRODUCE       PHENOMENA         OF  RELATIVE        SLOWNESS        AND   VISCOSITY,          OR,   ON  THE   CONTRARY,         OF  ACCELERATION            AND   RUPTURE.        ALL   THIS,     LINES     AND   MEASURABLE          SPEEDS,       CONSTITUTES           AN  ASSEMBLAGE.           A BOOK    IS  AN  ASSEMBLAGE          OF  THIS    KIND,     AND   AS  SUCH    IS  UNATTRIBUTABLE.               IT  IS  A MULTIPLICITY-BUT                WE  DON’T     KNOW    YET   WHAT    THE   MULTIPLE        ENTAILS       WHEN    IT  IS  NO  LONGER      ATTRIBUTED,           THAT    IS,   AFTER     IT  HAS   BEEN    ELEVATED        TO  THE   STATUS      OF  A SUBSTANTIVE.            ONE   SIDE    OF  A MACHINIC        ASSEMBLAGE          FACES     THE   STRATA,       WHICH     DOUBTLESS         MAKE    IT  A KIND    OF  ORGANISM,         OR  SIGNIFYING          TOTALITY,         OR  DETERMINATION             ATTRIBUTABLE            TO  A SUBJECT;        IT  ALSO    HAS   A SIDE    FACING      A BODY    WITHOUT       ORGANS,       WHICH     IS  CONTINUALLY           DISMANTLING           THE   ORGANISM,         CAUSING       ASIGNIFYING           PARTICLES         OR  PURE    INTENSITIES           TO  PASS    OR  CIRCULATE,          AND   ATTRIBUTING           TO  ITSELF      SUBJECTS        THAT    IT  LEAVES      WITH    NOTHING       MORE    THAN    A NAME    AS  THE   TRACE     OF  AN  INTENSITY.          WHAT    IS  THE   BODY    WITHOUT       ORGANS      OF  A BOOK?     THERE     ARE   SEVERAL,        DEPENDING         ON  THE   NATURE      OF  THE   LINES     CONSIDERED,           THEIR     PARTICULAR          GRADE     OR  DENSITY,        AND   THE   POSSIBILITY           OF  THEIR     CONVERGING          ON  A 'PLANE      OF  CONSISTENCY'            ASSURING        THEIR     SELECTION.          HERE,     AS  ELSEWHERE,          THE   UNITS     OF  MEASURE       ARE   WHAT    IS  ESSENTIAL:          QUANTIFY        WRITING.        THERE     IS  NO  DIFFERENCE          BETWEEN       WHAT    A BOOK    TALKS     ABOUT     AND   HOW   IT  IS  MADE.     THEREFORE         A BOOK    ALSO    HAS   NO  OBJECT.       AS  AN  ASSEMBLAGE,           A BOOK    HAS   ONLY    ITSELF,       IN  CONNECTION          WITH    OTHER     ASSEMBLAGES           AND   IN  RELATION        TO  OTHER     BODIES      WITHOUT       ORGANS.       WE  WILL    NEVER     ASK   WHAT    A BOOK    MEANS,      AS  SIGNIFIED         OR  SIGNIFIER;          WE  WILL    NOT   LOOK    FOR   ANYTHING        TO  UNDERSTAND          IN  IT.   WE  WILL    ASK   WHAT    IT  FUNCTIONS         WITH,     IN  CONNECTION          WITH    WHAT    OTHER     THINGS      IT  DOES    OR  DOES    NOT   TRANSMIT        INTENSITIES,            IN  WHICH     OTHER     MULTIPLICITIES              ITS   OWN   ARE   INSERTED        AND   METAMORPHOSED,              AND   WITH    WHAT    BODIES      WITHOUT       ORGANS      IT  MAKES     ITS   OWN   CONVERGE.         A BOOK    EXISTS      ONLY    THROUGH       THE   OUTSIDE       AND   ON  THE   OUTSIDE.        A BOOK    ITSELF      IS  A LITTLE      MACHINE;        WHAT    IS  THE   RELATION        (ALSO     MEASURABLE)           OF  THIS    LITERARY        MACHINE       TO  A WAR   MACHINE,        LOVE    MACHINE,        REVOLUTIONARY             MACHINE,        ETC.-AND        AN  ABSTRACT        MACHINE       THAT    SWEEPS      THEM    ALONG?      WE  HAVE    BEEN    CRITICIZED          FOR   OVERQUOTING           LITERARY        AUTHORS.        BUT   WHEN    ONE   WRITES,       THE   ONLY    QUESTION        IS  WHICH     OTHER     MACHINE       THE   LITERARY        MACHINE       CAN   BE  PLUGGED       INTO,     MUST    BE  PLUGGED       INTO    IN  ORDER     TO  WORK.     KLEIST      AND   A MAD   WAR   MACHINE,        KAFKA     AND   A MOST    EXTRAORDINARY             BUREAUCRATIC            MACHINE       . . . (WHAT     IF  ONE   BECAME      ANIMAL      OR  PLANT     THROUGH       LITERATURE,           WHICH     CERTAINLY         DOES    NOT   MEAN    LITERARILY?           IS  IT  NOT   FIRST     THROUGH       THE   VOICE     THAT    ONE   BECOMES       ANIMAL?)        LITERATURE          IS  AN  ASSEMBLAGE.           IT  HAS   NOTHING       TO  DO  WITH    IDEOLOGY.         THERE     IS  NO  IDEOLOGY        AND   NEVER     HAS   BEEN.


 output1 = []
 
for word in text1:
    for character in word:
        output1 = output1 + [character.upper()]
    output1 = output1 + [len(word) * ' ']               
print(output1)
['T', 'H', 'E', '   ', 'T', 'W', 'O', '   ', 'O', 'F', '  ', 'U', 'S', '  ', 'W', 'R', 'O', 'T', 'E', '     ', 'A', 'N', 'T', 'I', '-', 'O', 'E', 'D', 'I', 'P', 'U', 'S', '            ', 'T', 'O', 'G', 'E', 'T', 'H', 'E', 'R', '.', '         ', 'S', 'I', 'N', 'C', 'E', '     ', 'E', 'A', 'C', 'H', '    ', 'O', 'F', '  ', 'U', 'S', '  ', 'W', 'A', 'S', '   ', 'S', 'E', 'V', 'E', 'R', 'A', 'L', ',', '        ', 'T', 'H', 'E', 'R', 'E', '     ', 'W', 'A', 'S', '   ', 'A', 'L', 'R', 'E', 'A', 'D', 'Y', '       ', 'Q', 'U', 'I', 'T', 'E', '     ', 'A', ' ', 'C', 'R', 'O', 'W', 'D', '.', '      ', 'H', 'E', 'R', 'E', '    ', 'W', 'E', '  ', 'H', 'A', 'V', 'E', '    ', 'M', 'A', 'D', 'E', '    ', 'U', 'S', 'E', '   ', 'O', 'F', '  ', 'E', 'V', 'E', 'R', 'Y', 'T', 'H', 'I', 'N', 'G', '          ', 'T', 'H', 'A', 'T', '    ', 'C', 'A', 'M', 'E', '    ', 'W', 'I', 'T', 'H', 'I', 'N', '      ', 'R', 'A', 'N', 'G', 'E', ',', '      ', 'W', 'H', 'A', 'T', '    ', 'W', 'A', 'S', '   ', 'C', 'L', 'O', 'S', 'E', 'S', 'T', '       ', 'A', 'S', '  ', 'W', 'E', 'L', 'L', '    ', 'A', 'S', '  ', 'F', 'A', 'R', 'T', 'H', 'E', 'S', 'T', '        ', 'A', 'W', 'A', 'Y', '.', '     ', 'W', 'E', '  ', 'H', 'A', 'V', 'E', '    ', 'A', 'S', 'S', 'I', 'G', 'N', 'E', 'D', '        ', 'C', 'L', 'E', 'V', 'E', 'R', '      ', 'P', 'S', 'E', 'U', 'D', 'O', 'N', 'Y', 'M', 'S', '          ', 'T', 'O', '  ', 'P', 'R', 'E', 'V', 'E', 'N', 'T', '       ', 'R', 'E', 'C', 'O', 'G', 'N', 'I', 'T', 'I', 'O', 'N', '.', '            ', 'W', 'H', 'Y', '   ', 'H', 'A', 'V', 'E', '    ', 'W', 'E', '  ', 'K', 'E', 'P', 'T', '    ', 'O', 'U', 'R', '   ', 'O', 'W', 'N', '   ', 'N', 'A', 'M', 'E', 'S', '?', '      ', 'O', 'U', 'T', '   ', 'O', 'F', '  ', 'H', 'A', 'B', 'I', 'T', ',', '      ', 'P', 'U', 'R', 'E', 'L', 'Y', '      ', 'O', 'U', 'T', '   ', 'O', 'F', '  ', 'H', 'A', 'B', 'I', 'T', '.', '      ', 'T', 'O', '  ', 'M', 'A', 'K', 'E', '    ', 'O', 'U', 'R', 'S', 'E', 'L', 'V', 'E', 'S', '         ', 'U', 'N', 'R', 'E', 'C', 'O', 'G', 'N', 'I', 'Z', 'A', 'B', 'L', 'E', '              ', 'I', 'N', '  ', 'T', 'U', 'R', 'N', '.', '     ', 'T', 'O', '  ', 'R', 'E', 'N', 'D', 'E', 'R', '      ', 'I', 'M', 'P', 'E', 'R', 'C', 'E', 'P', 'T', 'I', 'B', 'L', 'E', ',', '              ', 'N', 'O', 'T', '   ', 'O', 'U', 'R', 'S', 'E', 'L', 'V', 'E', 'S', ',', '          ', 'B', 'U', 'T', '   ', 'W', 'H', 'A', 'T', '    ', 'M', 'A', 'K', 'E', 'S', '     ', 'U', 'S', '  ', 'A', 'C', 'T', ',', '    ', 'F', 'E', 'E', 'L', ',', '     ', 'A', 'N', 'D', '   ', 'T', 'H', 'I', 'N', 'K', '.', '      ', 'A', 'L', 'S', 'O', '    ', 'B', 'E', 'C', 'A', 'U', 'S', 'E', '       ', 'I', 'T', '’', 'S', '    ', 'N', 'I', 'C', 'E', '    ', 'T', 'O', '  ', 'T', 'A', 'L', 'K', '    ', 'L', 'I', 'K', 'E', '    ', 'E', 'V', 'E', 'R', 'Y', 'B', 'O', 'D', 'Y', '         ', 'E', 'L', 'S', 'E', ',', '     ', 'T', 'O', '  ', 'S', 'A', 'Y', '   ', 'T', 'H', 'E', '   ', 'S', 'U', 'N', '   ', 'R', 'I', 'S', 'E', 'S', ',', '      ', 'W', 'H', 'E', 'N', '    ', 'E', 'V', 'E', 'R', 'Y', 'B', 'O', 'D', 'Y', '         ', 'K', 'N', 'O', 'W', 'S', '     ', 'I', 'T', '’', 'S', '    ', 'O', 'N', 'L', 'Y', '    ', 'A', ' ', 'M', 'A', 'N', 'N', 'E', 'R', '      ', 'O', 'F', '  ', 'S', 'P', 'E', 'A', 'K', 'I', 'N', 'G', '.', '         ', 'T', 'O', '  ', 'R', 'E', 'A', 'C', 'H', ',', '      ', 'N', 'O', 'T', '   ', 'T', 'H', 'E', '   ', 'P', 'O', 'I', 'N', 'T', '     ', 'W', 'H', 'E', 'R', 'E', '     ', 'O', 'N', 'E', '   ', 'N', 'O', '  ', 'L', 'O', 'N', 'G', 'E', 'R', '      ', 'S', 'A', 'Y', 'S', '    ', 'I', ',', '  ', 'B', 'U', 'T', '   ', 'T', 'H', 'E', '   ', 'P', 'O', 'I', 'N', 'T', '     ', 'W', 'H', 'E', 'R', 'E', '     ', 'I', 'T', '  ', 'I', 'S', '  ', 'N', 'O', '  ', 'L', 'O', 'N', 'G', 'E', 'R', '      ', 'O', 'F', '  ', 'A', 'N', 'Y', '   ', 'I', 'M', 'P', 'O', 'R', 'T', 'A', 'N', 'C', 'E', '          ', 'W', 'H', 'E', 'T', 'H', 'E', 'R', '       ', 'O', 'N', 'E', '   ', 'S', 'A', 'Y', 'S', '    ', 'I', '.', '  ', 'W', 'E', '  ', 'A', 'R', 'E', '   ', 'N', 'O', '  ', 'L', 'O', 'N', 'G', 'E', 'R', '      ', 'O', 'U', 'R', 'S', 'E', 'L', 'V', 'E', 'S', '.', '          ', 'E', 'A', 'C', 'H', '    ', 'W', 'I', 'L', 'L', '    ', 'K', 'N', 'O', 'W', '    ', 'H', 'I', 'S', '   ', 'O', 'W', 'N', '.', '    ', 'W', 'E', '  ', 'H', 'A', 'V', 'E', '    ', 'B', 'E', 'E', 'N', '    ', 'A', 'I', 'D', 'E', 'D', ',', '      ', 'I', 'N', 'S', 'P', 'I', 'R', 'E', 'D', ',', '         ', 'M', 'U', 'L', 'T', 'I', 'P', 'L', 'I', 'E', 'D', '.', '           ', 'A', ' ', 'B', 'O', 'O', 'K', '    ', 'H', 'A', 'S', '   ', 'N', 'E', 'I', 'T', 'H', 'E', 'R', '       ', 'O', 'B', 'J', 'E', 'C', 'T', '      ', 'N', 'O', 'R', '   ', 'S', 'U', 'B', 'J', 'E', 'C', 'T', ';', '        ', 'I', 'T', '  ', 'I', 'S', '  ', 'M', 'A', 'D', 'E', '    ', 'O', 'F', '  ', 'V', 'A', 'R', 'I', 'O', 'U', 'S', 'L', 'Y', '         ', 'F', 'O', 'R', 'M', 'E', 'D', '      ', 'M', 'A', 'T', 'T', 'E', 'R', 'S', ',', '        ', 'A', 'N', 'D', '   ', 'V', 'E', 'R', 'Y', '    ', 'D', 'I', 'F', 'F', 'E', 'R', 'E', 'N', 'T', '         ', 'D', 'A', 'T', 'E', 'S', '     ', 'A', 'N', 'D', '   ', 'S', 'P', 'E', 'E', 'D', 'S', '.']


A Small Lexikon on Terms of Interest Whip

Whip of a small lexikon after reading:

  • "Situated Knowledges", Donna Haraway
  • "Orientation in a big world", Patricia Reed
  • "Vernacular Order, Official Order / Vernacular and Official Ways of 'Knowing'", James C. Scott


Terms to add:

  • destination
  • dimension
  • direction
  • interrelations
  • localization
  • map
  • mobility
  • movement
  • territory
  • time

… more Words of Interest


BOOK

A book has neither object nor subject; it is made of variously formed matters, and very different dates and speeds. To attribute the book to a subject is to overlook this working of matters, and the exteriority of their relations. It is to fabricate a beneficent God to explain geological movements. In a book, as in all things, there are lines of articulation or segmentarity, strata and territories; but also lines of flight, movements of deterritorialization and destratification.


A BOOK
IS THE PHYSICAL SUPPORT OF TEXT
USING A RECOMBINANT STRUCTURE
TO PROVIDE SEQUENTIAL
NAVIGATION

A BOOK
IS AN ARCHIVE
USING WORDS
TO PROVIDE ISOLATED
KNOWLEDGE

A BOOK
IS A PORTABLE DATA STORAGE
USING NODES AND LINKS
TO PROVIDE PERFORMATIVE
TRUTH

A BOOK
IS A SEQUENCE OF MOMENTS
USING NODES AND LINKS
TO PROVIDE PERFORMATIVE
MEANING

A BOOK
IS A SEQUENCE OF MOMENTS
USING LAYERS
TO PROVIDE CERTAIN
NAVIGATION

A BOOK
IS AN INTIMATE SPACE
USING JUXTAPOSITIONS
TO PROVIDE RANDOM
INFORMATION

A BOOK
IS AN ARTIFACT
USING A SYSTEM OF KNOTTED STRINGS
TO PROVIDE NAVIGATIONAL
NEGOTIATION

A BOOK
IS AN INTIMATE SPACE
USING A RECOMBINANT STRUCTURE
TO PROVIDE PRECISE
THOUGHTS 


A BOOK
IS AN EVENT
USING NODES AND LINKS
TO PROVIDE SEQUENTIAL
ACCESS 


A BOOK
IS AN INTERFACE
USING ANY NUMBERS OF PHYSICAL FORMS
TO PROVIDE ISOLATED
KNOWLEDGE 


A BOOK
IS A SEQUENCE OF ROOMS
USING INTERCONNECTIONS
TO PROVIDE CERTAIN
NEGOTIATION

A BOOK
IS AN OBJECT
USING LAYERS
TO PROVIDE SPECIFIC
KNOWLEDGE

A BOOK
IS A SEQUENCE OF MOMENTS
USING A SYSTEM OF KNOTTED STRINGS
TO PROVIDE SPECIFIC
MEANING


DARKNESS

04_Tino-Sehgal.jpg

Tino Sehgal – This Variation
First performed in 2012 at Documenta 13 in Kassel


How do you navigate in a dark space? Listen. Smell. Touch.


NAVIGATION

is not destination, but it is not entirely divorced from destination either. It’s a movement of inclination requiring markers of orientation. If navigation requires inclination to lend a functional or affective valence of direction to mobility, the politics of navigation are bound to claims on constructing these points of referential orientation, as well as making them sensible, intelligible, and shareable. Second, navigation is reliant on extra-local, mental diagrams of space and time that are continually cross-referenced with situated localization. In this way navigation embodies the continuum between the conceptual and the material; and it is due to this weaving that navigators can continually revise and adapt their choreography and markers of orientation over time. As the saying goes, the map is not the territory. However, arresting this thought in its purely oppositional state undermines the crucial, synthetic dynamic wherein the map (understood as a conceptual artifact) partially shapes:

  1. the perception and perceptibility of the territory or system,
  2. how that territory or system is thought to exist beyond immediate sensory feedback (if it is sensible at all),
  3. the possibility space of its imagined tractability, and
  4. the understanding of causal interrelations, which contribute to pictures of agency.


ORIENTATION

We can only find our way in a dark room if we know the difference of the sides of the body. Space then becomes a question of „turning“, of directions taken which allow us to find our way through the world by situating ourselves in relation to such things.


SPACE

is the boundless three-dimensional extent in which objects and events have relative position and direction. In classical physics, physical space is often conceived in three linear dimensions, although modern physicists usually consider it, with time, to be part of a boundless four-dimensional continuum known as spacetime.


WEAVING

Weaving is a method of textile production in which two distinct sets of yarns or threads are interlaced at right angles to form a fabric or cloth. Other methods are knitting, crocheting, felting, and braiding or plaiting.

Warp_and_weft_2.jpg

On_Weaving_07.jpg


The term can also be used to describe the structure of a text:
"The book weaves together four stories."



Text Weaving

[ Emma, Kamo and Jian ]
How to weave two texts to create new meaning following a pattern?

Text Weaving

Text A:
AA AA AA AA
Text B:
BB BB BB BB
Patterns:
AB AB AB AB AB AB AB AB
AA BB AA BB AA BB AA BB
AB BA BA AB AB BA BA AB
AB AB AB AB AB AB AB AB
AA BB AA BB AA BB AA BB
AB BA BA AB AB BA BA AB


Inspiration:
Anni Albers Weaving Patterns

Ideas, thoughts, process:
https://pad.xpub.nl/p/replacing_cats


Ceramics



Transcription Exercise

[ Miriam, Jian ]

Juno – tells her parents


Juno: I´m pregnant.
Juno: I'm pregnant.
Mum: Oh Good *quiet*
Mum: Oh god.
Juno: But uh i aaah ieh - I´m gonna give it up for adoption! – Aaan I already found the perfect couple! They pay for the medical expenses an everything, – an an an in whu what 40 odd weeks we can just pretend that this never happened! *nervous, fast* Silence
Juno: But uh ah I'm gonna give it up for adoption and I already found the perfect couple; they're gonna pay for the medical expenses and everything and and wh- wh- what - 30 odd weeks we can just pretend that this never happened [fast and nervous breathing]
Dad: Your pregnant?
Dad: You're pregnant?
Juno: I´m sorryy. I´m sorry! And if it is any concellation I have heartburn that is radiating my kneecaps – an i haven´t taken a dump since Wednesday – Morning … I
Juno: I'm sorry. I'm sorry and if it is any consolation: I have heart burn that is radiating in my knee caps and I haven't taken a dump since - uh - Wednesday... morning ah!
Mum: I ddn´t even know you were sexually active!?
Mum: I didn't even know you were sexually active!
Juno: I...
Dad: Who is the kid?
Dad: Who is the kid?
Juno: The baby? I don´t really know much about it other than – it has fingernails alledgedly
Juno: T-the baby? I don't really know much about it other than, I mean, it has finger nails, l-l-logically -
Mum: Nails, really?
Mum: Finger nails, really?
Juno: Yeah!
Juno: Yeah!
Dad: no I no I mean – who is the father, Juno?
Dad: No, I don -, I mean, who's the father, Juno?
Juno: Uhm … It´s – it´s Pauli Bleaker. *quiet*
Juno: Uhm... it's Paulie Bleeker?
Dad: Pauli Bleaker? *surprised*
Juno: What? *offended*
Juno: What?
Dad: I ddn´t think he had it in him! *smurking*
Dad: I didn't think he had it in him
Friend: [laughs quietly]
Sister. huhuhu no –right? hehehe *laughing*
Friend: [giggles] I know, right? Hehehe
Dad: Right it´s not a laughing matter.
Dad: Right, this is no laughing matter
Juno: No it´s not! *offended* – You know and Pauli is actually great – in uh –
Juno: No, it's not. And you know, Paulie is actually great in a, in -
Dad: Okay!
Dad: - Okay -
Juno: in share
Juno: In share
Dad: You thinking baout adoption?
Dad: You thinking about adoption?
Juno: Yeah! yeah … an uh … there is this couple … they haven´t had – you know – they´ve been trying to have a kid for five years
Juno: Yeah, yeah. And - uh - there's this couple and they haven't had, you know, they - they've been trying to have a kid for like five years.
Sister: You find them in the pennysaver next to the exotic birds? *saracastic*
Friend: We found them in the penny saver next to the exotic birds.
Juno: And they have – a legitimate lawyer – an i was gonna go meet with them next weekend
Juno: And they have a legitimate lawyer and I was gonna go meet with him next weekend.
Mum: Juno that is a tough tough thing to do it´s probably tougher than n you can understand right now.
Mum: Jun-Bug, that is a tough, tough thing to do. It's probably tougher than you can understand right now.
Juno. I know. pause – An uh it´s just that I´m not ready to be a mum.
Juno: No, I - I know, and I - it's just that I'm not ready to be a mum.
Dad: *outraged sound* Damns good that you be not! You dont even remember Liberty Bella her breathing meds! *outraged*
Dad: [hawks] Damn, skippy, you're not. You don't even remember to give Liberty Beller breathing meds!
Juno: That was ONCE and she did not die if you recall?!
Juno: Uh, that was once and she did not die if you recall.
Mum: Honey … have you considered – you know – the alternative?
Mum: Honey, have you considered, you know, the alternative?
Juno: No
Juno: No.
Mum: Well … You´re a little VIKING!
Mum: Wow. You're a little viking!
Juno: *sighs*
Juno: Ahhh [sighs]
Mum: First things first. Alright, we have to get you healthy. You need prenatal vitamins – incidently they do incredible things for your nails – so, that´s a plus! Oh en we need to schedule a doctor´s appointment figure out where you gonna deliver
Mum: First things first: Alright, we have to get you healthy! You need pre-natal vitamins and [incomprehensible], they do incredible things for your nails, so that's a plus. Oh, and we need to schedule a doctor's appointment [breathes out] to figure out where you're gonna deliver
Dad: D you know I´m coming with you to meet this … adoption … couple … Your just a kid I dont want you ripped of by
Dad: You know, I'm coming with you to meet this - adoption couple. You're just a kid, I don't want you to get ripped off by a couple of baby-starved wing-nuts.
Juno: Thanks, dad.
Dad: But I thought you were the kind of girl who knew when to say when [uncomfortable silence for a few seconds]
Juno: I don't really know what kinda girl I am.


Pimp my Soupboat

After HTML and CSS Workshop with Erica & Kamo

WHIP for my Soupboat page
Reload the page for random outcome!

My first use of javascript:

 const container = document.getElementById("container");
 // console.log(container.children);
 
 let contents = Array.from(container.children);
 // console.log(images);
 
 contents.forEach((item) => {
     console.log(item);
     left = Math.random() * 100;
     top = Math.random() * 100;
     zIndex = Math.round(Math.random() * 1000);
 
     item.style.left = left + "%";
     item.style.top = top + "%";
     item.style.zIndex = zIndex;
     });

Selection Process / Annotation Compass

[ Kamo, Supi, Kim, Emma, Alex, Jian ]

Ideas, thoughts, process

Link to our pad:
https://pad.xpub.nl/p/sunday

Experiment 1

For this experiment, four of us were gathered in a living-room.

  • Number of participants: 4
  • Location: Supi's living room
  • Aim: Map out each participant's impressions of the living room.
  • Material: The living room's floor plan, computers, InDesign
  • Time-frame: 5 minutes
  • Instructions: individually annotate the floor plan with impressions of the living room


After removing the floor plan and looking at the subjective annotations of this experiment, we observed that each outcome forms another 'space'. Each person's set of annotations brings a unique perspective of the living room , an 'individual map'. We then layered the individual maps and the compilation resulted in a vernacular picture of the space. This alternative understanding of the space can only be given to a reader through those descriptions.


Experiment 2

For this experiment, four of us were gathered in a room.

  • Number of participants: 4
  • Location: Supi's living room
  • Aim: Map out each participant's impressions of a photograph of an unknown room
  • Material: photograph of an unknown room (shown on a display), sticky notes in 4 colours, pens
  • Time-frame: 5 minutes
  • Instructions: individually annotate the photograph with impressions of the unknown room



Each of us used a different set of coloured sticky notes and took 5 minutes to physically annotate the picture on the same surface. The picture was then removed from the background, resulting in a similar outcome as the experiment described above.
From these observations, our interest on subjective annotations that could flow in a common understanding of an image grew. As a tool to collect situated impressions, we elaborated the idea of the Annotation Compass.
On a given surface, such as an image, the tool facilitates the collection of annotations and their coordinates from various users simultaneously. These annotations represent individual knowledges and perspectives in regards to the given surface.

Visual Experiments




Outcome

In the end we came up with a tool, the "Annotation Compass":

Annotation Compass

The Annotation Compass as part of Special Issue #16

Rejection Map

Rejection Glossary

Rough Notes
  • Being together and share space while acknowledging differences
  • Share experiences while acknowledging different backgrounds
  • embrace multiple ways of knowing and feeling of the world
  • Rejection map of Rotterdam
  • Ask you to share moments of rejection and
  • Second of acceptance
  • Where you experienced or witnessed
  • Since a lot is happening online you can still locate it
  • Try to really situate it (is it a specific house or a whole neighborhood)
  • Not only you but witness
  • It can be related to housing, relationship, school or job, to you being new in the city, new in traffic, community, language
  • It can be only one word describing the situation or your feelings, or a little anecdote
  • Use you very own words, nothing is expected from you
  • It can be cryptic (eg using slang, your mother tongue, only glyphs not words) if you dont want it to be a secret
  • Reflection or memories, but you can also overwrite it with something new, hopes
  • Where you rejected a thought
  • Create non existing landscapes


Functions

All of the following functions were built for a project where individuals are invited to add their annotations on a map using the Annotation Compass. Each annotation-label is stored in a json-file and includes the annotation-text itself, but also the name of the image-file as well as the position, size, index, timestamp and userID of the annotation.

Example for a label:

{'image': 'map.jpg',
'position': {'x': 12, 'y': 97},
'size': {'width': 43, 'height': 18},
'text': 'This is a text! Is this a text?',
'timestamp': 'Wed, 01 Dec 2021 14:04:00 GMT',
'userID': 5766039063}


individual_maps()
https://hub.xpub.nl/soupboat/si16/functions/html_tag/

If interested in all annotations of one or more specific users, individual_map() can help. The function needs a string with the name of the of the image-file that was annotated with the annotation compass tool as well as one or more specific userIDs to target. The output is a list of all labels from the users of interest.

 def individual_map(image: str, users: list ) -> list:
     
    """give a string with the name of the image-file that was annotated with the Annotation Compass; Select one or more specific users and return a list of all labels from these users."""    
 
    from urllib.request import urlopen
    import json
     
    url = f"https://hub.xpub.nl/soupboat/si16/annotation-compass/get-labels/{image}/"
    response = urlopen(url)
    data_json = json.loads(response.read()) 
    
    filtered_map = []
    for label in data_json['labels']:
        for user in users:
            if label['userID'] == user:
                filtered_map.append(label)
    return filtered_map


vernacular_map()
https://hub.xpub.nl/soupboat/si16/functions/vernacular_map/

If interested in all annotations vernacular_map() can help. The function needs a string with the name of the of the image-file that was annotated with the annotation compass tool. The output is a string that includes all annotation-texts plus html-tags that place them back into their original position.

 def vernacular_map(image: str) -> str:
    
    """Give a string with the name of the image-file that was annotated with the Annotation Compass; Return a string that includes all annotation-texts plus html-tags that place them back into their original position."""    
 
    from urllib.request import urlopen
    import json
    
    url = f"https://hub.xpub.nl/soupboat/si16/annotation-compass/get-labels/{image}/"
    response = urlopen(url)
    data_json = json.loads(response.read())
 
    filtered_map = '<link rel="stylesheet" href="/soupboat/si16/static/css/jian.css">'
    for label in data_json['labels']:
        html_tag = f'<p style="left: {label["position"]["x"]}%; top: {label["position"]["y"]}%; position: absolute;">{ label["text"] }</p>'
        filtered_map = filtered_map + html_tag
        
    return filtered_map


area_map()
https://hub.xpub.nl/soupboat/si16/functions/area_map/

If interested in the annotations in a specific area of the map, area_map() can help. The function needs a string with the name of the of the image-file that was annotated with the annotation compass tool as well as four specific values to define the left, right, top and bottom outlines of the selected area. The output is a list of all labels in the defined area of interest.

 def area_map(image: str, left: int, right: int, top: int, bottom: int ) -> list:
    
    """Give a string with the name of the image-file that was annotated with the Annotation Compass; Select a specific area of the image, return a list of all labels in that specific area."""    
 
    from urllib.request import urlopen
    import json
    
    
    url = f"https://hub.xpub.nl/soupboat/si16/annotation-compass/get-labels/{image}/"
    response = urlopen(url)
    data_json = json.loads(response.read())    
     
    filtered_map = []
    for label in data_json['labels']:
        if left <= (label['position']['x']) <= right and top <= (label['position']['y']) <= bottom:
            filtered_map.append(label)
        
    return filtered_map


target_map()
https://hub.xpub.nl/soupboat/si16/functions/target_map/

If interested in all annotations that include one or more specific targets, target_map() can help. The function needs a string with the name of the of the image-file that was annotated with the annotation compass tool as well as one or more specific targets. The output is a list of all labels that include these targets.

 def target_map(image: str, targets: list ) -> list:
    
    """Give a string with the name of the image-file that was annotated with the Annotation Compass; Select one or more specific targets and return a list of all labels that include these targets."""    
 
    from urllib.request import urlopen
    import json
    
    url = f"https://hub.xpub.nl/soupboat/si16/annotation-compass/get-labels/{image}/"
    response = urlopen(url)
    data_json = json.loads(response.read())     
    
    filter_map = []
    for label in data_json['labels']:
        for target in targets:
            if target in label['text']:
                filter_map.append(label)
    return filter_map


highlight_map()
https://hub.xpub.nl/soupboat/si16/functions/highlight_map/

If interested in all annotations that include a specific target, highlight_map() can help. The function needs a string with the name of the of the image-file that was annotated with the annotation compass tool and a target-word. The output is a string that includes all annotation-texts plus html-tags that place them back into their original position while highlighting the annotation-texts that include the target.

 def highlight_map(image: str, target: str ) -> str:
    
    """Give a string with the name of the image-file that was annotated with the Annotation Compass; Give a target-word; Return a string that includes all annotation-texts plus html-tags that place them back into their original position while highlighting the annotation-texts that include the target."""    
 
    from urllib.request import urlopen
    import json
    
    url = f"https://hub.xpub.nl/soupboat/si16/annotation-compass/get-labels/{image}/"
    response = urlopen(url)
    data_json = json.loads(response.read())     
    
    filtered_map = '<link rel="stylesheet" href="/soupboat/si16-app/static/css/jian.css">'
    for label in data_json['labels']:
        if target in label['text']:
            highlight_tag = f'<p class="highlight" style="left: {label["position"]["x"]}%; top: {label["position"]["y"]}%; position: absolute;">{ label["text"] }</p>'
            filtered_map = filtered_map + highlight_tag
        else:
            html_tag = f'<p class="lowlight" style="left: {label["position"]["x"]}%; top: {label["position"]["y"]}%; position: absolute;">{ label["text"] }</p>'
            filtered_map = filtered_map + html_tag
        
    return filtered_map


ghost_map()
https://hub.xpub.nl/soupboat/si16/functions/ghost_map/

If interested in the traces the annotations leave, ghost_map() can help. The function needs a string with the name of the of the image-file that was annotated with the annotation compass tool as well as a ghost-glyph that will replace all characters of the annotation-texts. The output is a string that includes all replaced annotation-texts plus html-tags that place them back into their original position.

 def ghost_map(image: str, ghost_glyph: str ) -> str:
    
    """give a string with the name of the image-file that was annotated with the Annotation Compass; Replace all characters of all annotation-texts with a ghost-glyph and return a string that includes all replaced annotation-texts plus html-tags that place them back into their original position."""    
    
    from urllib.request import urlopen
    import json
    
    url = f"https://hub.xpub.nl/soupboat/si16/annotation-compass/get-labels/{image}/"
    response = urlopen(url)
    data_json = json.loads(response.read())
    
    filtered_map = '<link rel="stylesheet" href="/soupboat/si16/static/css/jian.css">'
    for label in data_json['labels']:
        replaced_text = ''
        for char in label['text']:
            replaced_char = char
            if not char.isspace():
                replaced_char = ghost_glyph
            replaced_text = replaced_text + replaced_char
        html_tag = f'<p class="lowlight" style="left: {label["position"]["x"]}%; top: {label["position"]["y"]}%; position: absolute;">{ replaced_text }</p>'
        filtered_map = filtered_map + html_tag
    return filtered_map


html_tag()
https://hub.xpub.nl/soupboat/si16/functions/html_tag/

The following functions need to be combined with the HTML-tag-function to generate visual outcome:

  • individual_map()
  • area_map()
  • target_map()

If interested in the position, text, timestamp and/or userID of all annotations, html_tag() can help. The function needs a string with the name of the of the image-file that was annotated with the annotation compass tool as well as four Boolean Values that define which information is of interest. The output is a string that can include the position, text, timestamp and/or userID of all labels plus html-tags that place them back into their original position.


 def html_tag(image: str, position: bool, text: bool, timestamp: bool, userID: bool ) -> str:
    
    """Give a string with the name of the image-file that was annotated with the Annotation Compass; Return a string that can include the position, text, timestamp and/or userID of all labels plus html-tags that place them back into their original position."""    
    
    from urllib.request import urlopen
    import json
    
    url = f"https://hub.xpub.nl/soupboat/si16/annotation-compass/get-labels/{image}/"
    response = urlopen(url)
    data_json = json.loads(response.read())     
    
    html_tags = '<link rel="stylesheet" href="/soupboat/si16/static/css/jian.css">'
    for label in data_json['labels']:
        html_tags = html_tags + f'<p style="left: {label["position"]["x"]}%; top: {label["position"]["y"]}%; position: absolute;">'
        if position == True:
            html_position = f'{ label["position"] } '
            html_tags = html_tags + html_position
        if text == True:
            html_text = f'{ label["text"] } '
            html_tags = html_tags + html_text
        if timestamp == True:
            html_timestamp = f'{ label["timestamp"] } '
            html_tags = html_tags + html_timestamp
        if userID == True:
            html_userID = f'{ label["userID"] } '
            html_tags = html_tags + html_userID
        html_tags = html_tags + '</p>'
    return html_tags


How the functions are used for the Rejection Map:
https://hub.xpub.nl/soupboat/si16/projects/annotation-compass/rejection_map/

Visual Experiments



Outcome

Rejection Map of Rotterdam as part of the Special Issue 16

What the book is

Investigate the holonym-meronym relations for the book

NLTK wordnet: There are three kinds of holonym-meronym relations:

  • member_meronyms()
  • part_meronyms()
  • substance_meronyms()
  • member_holonyms()
  • part_holonyms()
  • and substance_holonyms()
 from nltk.corpus import wordnet as wn
 wn.synsets('book')
 [Synset('book.n.01'),
 Synset('book.n.02'),
 Synset('record.n.05'),
 Synset('script.n.01'),
 Synset('ledger.n.01'),
 Synset('book.n.06'),
 Synset('book.n.07'),
 Synset('koran.n.01'),
 Synset('bible.n.01'),
 Synset('book.n.10'),
 Synset('book.n.11'),
 Synset('book.v.01'),
 Synset('reserve.v.04'),
 Synset('book.v.03'),
 Synset('book.v.04')]
 wn.synset('book.n.02').lemma_names()
 ['book', 'volume']
 wn.synset('book.n.02').definition()
 'physical objects consisting of a number of pages bound together'
 sorted(lemma.name() for synset in types_of_book for lemma in synset.lemmas())
 ['album',
 'coffee-table_book',
 'folio',
 'hardback',
 'hardcover',
 'journal',
 'notebook',
 'novel',
 'order_book',
 'paper-back_book',
 'paperback',
 'paperback_book',
 'picture_book',
 'sketch_block',
 'sketch_pad',
 'sketchbook',
 'soft-cover',
 'soft-cover_book',
 'softback',
 'softback_book']
 [synset.name() for synset in paths[0]]
 ['entity.n.01',
 'physical_entity.n.01',
 'object.n.01',
 'whole.n.02',
 'artifact.n.01',
 'creation.n.02',
 'product.n.02',
 'book.n.02']
 wn.synset('book.n.02').part_meronyms()
 [Synset('binding.n.05'), Synset('fore_edge.n.01'), Synset('spine.n.04')]
 for synset in wn.synsets('book', wn.NOUN):<br>
    print(synset.name() + ':', synset.definition())
 book.n.01: a written work or composition that has been published (printed on pages bound together)
 book.n.02: physical objects consisting of a number of pages bound together
 record.n.05: a compilation of the known facts regarding something or someone
 script.n.01: a written version of a play or other dramatic composition; used in preparing for a performance
 ledger.n.01: a record in which commercial accounts are recorded
 book.n.06: a collection of playing cards satisfying the rules of a card game
 book.n.07: a collection of rules or prescribed standards on the basis of which decisions are made
 koran.n.01: the sacred writings of Islam revealed by God to the prophet Muhammad during his life at Mecca and Medina
 bible.n.01: the sacred writings of the Christian religions
 book.n.10: a major division of a long written composition
 book.n.11: a number of sheets (ticket or stamps etc.) bound together on one edge


Coding the book generator
 with open('/dev/usb/lp0', 'w') as lp:



    import datetime
    now = datetime.datetime.now()
    #print ("Current date and time : ")
    print('////////////////////////////////', file = lp)
    print('////////////////////////////////', file = lp)
    print('////////////////////////////////', file = lp)
    print('', file = lp)
    print (now.strftime("%Y-%m-%d %H:%M:%S"), file = lp)
    print('', file = lp)
    print('////////////////////////////////', file = lp)    
    
    
    from random import choice

    thing = ["A BOOK"]

    item = ["AN OBJECT", "AN ARTIFACT", "A KNOT", "A COLLECTION", "AN ARCHIVE", "A PORTABLE DATA STORAGE", 
            "THE PHYSICAL SUPPORT OF TEXT", "AN INTIMATE SPACE", "AN IDEA", "A PERFROMANCE", "AN EVENT", "A PHENOMENON OF SPACE AND TIME", 
            "A SEQUENCE OF ROOMS", "A SEQUENCE OF MOMENTS", "AN INTERFACE", "A DEVICE", "AN ITEM", "AN EXHIBITION", "A STAGE", "A FRAMEWORK", "AN ENTITY"]

    structure = ["A SYSTEM OF KNOTTED STRINGS", "LAYERS", "NODES AND LINKS", "INTERCONNECTIONS","A VARIETY OF MATERIALS", 
                "JUXTAPOSITIONS", "A RECOMBINANT STRUCTURE", "THE POWER OF PUBLICATION", "ANY NUMBERS OF PHYSICAL FORMS", "WORDS",
                "WHITE SPACE AND BLACK SPACE"]

    action = ["TO PROVIDE", "TO SHOW", "TO PUBLISH", "TO CONSERVE", "TO PRESENT", "TO EXCHANGE", "TO FIND", "TO CREATE", "TO PRODUCE", "TO EXPERIENCE", "TO OFFER", 
                "TO TRANSFER", "TO DELINEATE", "TO PROCESS"]

    attribute = ["RANDOM", "SEQUENTIAL", "ISOLATED", "CERTAIN", "PRECISE", "NAVIGATIONAL", "CONTEXTUAL", "SPECIFIC", "PERFORMATIVE", "SITUATED", "SUBJECTIVE", 
                "OBJECTIVE", "USEFUL", "UNIVERSAL", "DIVERSE", "EXCITING", "COMPLEX", "ABSTRACT", "DISTINCT", "NEW"]
    
    purpose = ["ACCESS", "KNOWLEDGE", "EXPERIENCE", "EXPECTATION", "ORIENTATION", "THOUGHTS", "NAVIGATION", "DISCURSE", "INFORMATION", "MEANING", "PURPOSE", "COMMUNICATION", "INTERACTION", "NEGOTIATION", "INCARNATIONS", "TRUTH"]


    print('', file = lp)
    print('', file = lp)
    print('A BOOK', file = lp)
    print('', file = lp)
    print('IS          ' + choice(item), file = lp)
    print('', file = lp)    
    print('                  USING ' + choice(structure), file = lp)
    print('', file = lp)    
    print('    ' + choice(action), file = lp)
    print('', file = lp)    
    print('      ' + choice(attribute), file = lp)
    print('', file = lp)
    print('' + choice(purpose), file = lp)
    print('', file = lp) 
    print('', file = lp)     
    print('', file = lp)
2022-02-05 16:26:08
<br>
<br>
<br>
A BOOK

IS          A PORTABLE DATA STORAGE

                  USING WORDS

   TO PROVIDE

      COMPLEX

EXPECTATION


2022-02-05 16:26:56


A BOOK

IS          AN ARCHIVE

                  USING THE POWER OF PUBLICATION

    TO PROCESS

      SEQUENTIAL

DISCURSE


2022-02-05 16:27:05


A BOOK

IS          A DEVICE

                  USING LAYERS

    TO FIND

      COMPLEX

ACCESS


2022-02-05 16:27:14


A BOOK

IS          AN OBJECT

                  USING WHITE SPACE AND BLACK SPACE

    TO PRODUCE

      COMPLEX

KNOWLEDGE


2022-02-05 16:27:22


A BOOK

IS          A PORTABLE DATA STORAGE

                  USING JUXTAPOSITIONS

    TO FIND

      OBJECTIVE

TRUTH



Visual Experiments


Cocktail Generator

Coding the Cocktail Generator

Randomly chooses ingredients from a menu for a nice cocktail recipe:

 def cocktail_generator(alcohol: list, decor: list) -> str:
    """randomly chooses ingredients from a menu for a nice cocktail recipe"""

    import datetime
    from datetime import timedelta
    now = datetime.datetime.now() + timedelta(hours=1)        
    from random import choice

    base = ["ORANGE JUICE", "PINEAPPLE JUICE", "APPLE JUICE", "MANGO JUICE", "FRIZZY WATER", "GRAPEFRUIT JUICE", "TONIC WATER"]

    sour = ["LEMON JUICE", "LIME JUICE", "PASSION FRUIT"]

    sweet = ["AGAVE SIRUP", "SUGAR SIRUP", "MAPLE SIRUP"]

    omph = ["1 SLICE       GINGER", "2 LEAVES      MINT", "1 SLICE       CUCUMBER", "1 STICK       CINNAMON", "              SALT RIM"]        


    snack = ["CHIPS", "SALTED CORN", "PRETZELS", "SALTED NUTS"]


    XPUB1 = [" (*(*(*(*(*.(*.*).*)*)*)*)*)*)", " (^(^(^(^(^.(^.^).^)^)^)^)^)^)"]


    drink = ["""
           ___, 
          '._.'\ 
       _____/'-.\ 
      |    / | 
      |~-~/-~| 
      \ ()   / 
       '.__.' 
         || 
        _||_ 
       `----` """, """
              .
          .  . 
       |^ .
      \O___.____ /
        \   .  /
          \ ,/
           []
           []
           []
        --------            
           """, """
        \ 
       .-\""""""""-.
        \ \__ o . /
         \/  \  o/
          \__/. /
           \_ _/
             Y
             |
         _.-' '-._
        `---------` """]

    


    recipe = f"""
<pre>
    
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
*                             *
*   CATWALKING WITH ALCOHOL   *
*                             *
*    {now.strftime("%Y-%m-%d   %H:%M:%S")}    *
*                             *
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*



2 oz          {choice(alcohol)}

150 ml        {choice(base)}

1 oz          {choice(sour)}

0.5 oz        {choice(sweet)}

{choice(omph)}

1             {choice(decor)}


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

EXTRA: {choice(snack)}

*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*


           ___, 
          '._.'\ 
       _____/'-.\ 
      |    / | 
      |~-~/-~| 
      \ ()   / 
       '.__.' 
         || 
        _||_ 
       `----` 


THANKS FOR COMING TO OUR LAUNCH!

{choice(XPUB1)}


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

</pre>
    """
    


    return recipe


This function generates amazing cocktail recipes for you to try! The cocktail menu includes the categories alcohol, base, sour, sweet and omph. There is also a category for a decorative gadget and one for an extra snack. Each category has a default list of ingredients and the function randomly chooses one ingredient per category. You prefer Rum and Tequila over Vodka? Or maybe you want a non-alcoholic cocktail? Don´t worry! For the categories alcohol and decor you can insert your own ingredients to pick from. Enjoy!

   Menu:

   default ingredients:
   base = ORANGE JUICE, PINEAPPLE JUICE, APPLE JUICE, MANGO JUICE, FRIZZY WATER, GRAPEFRUIT JUICE, TONIC WATER
   sour = LEMON JUICE, LIME JUICE, PASSION FRUIT
   sweet = AGAVE SIRUP, SUGAR SIRUP, MAPLE SIRUP
   omph = 1 SLICE GINGER, 2 LEAVES MINT, 1 SLICE CUCUMBER, 1 STICK CINNAMON, SALT RIM    
   snack = CHIPS, SALTED CORN, PRETZELS, SALTED NUTS

   users ingredients:
   alcohol =
   decor =


In this exmaple the function chooses between three alcoholic ingredients and two decoratin gadgets


 print(cocktail_generator(['VODKA', 'TEQUILA', 'RUM'], ['UMBRELLA', 'PALMTREE', 'FLAMINGO']))
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
*                             *
*   CATWALKING WITH ALCOHOL   *
*                             *
*    2021-12-14   14:08:04    *
*                             *
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*



2 oz          VODKA

150 ml        GRAPEFRUIT JUICE

1 oz          LEMON JUICE

0.5 oz        SUGAR SIRUP

1 SLICE       CUCUMBER

1             UMBRELLA
   
 
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

EXTRA: SALTED CORN

*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*  

 
           ___, 
          '._.'\ 
       _____/'-.\ 
      |    / | 
      |~-~/-~| 
      \ ()   / 
       '.__.' 
         || 
        _||_ 
       `----` 


THANKS FOR COMING TO OUR LAUNCH!

 (^(^(^(^(^.(^.^).^)^)^)^)^)^)


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
How to change file on Raspberry Pi

To communicate and change .py-file on raspberry pi:

1. Connect both the raspberry pi and the computer to internet via ethernet
2. Open terminal, type: ssh pi@raspberrypi.local
3. Give default password: raspberry
4. List files: ls (Should list only one python file: final.py)
5. To access the file via GNU nano: sudo nano final.py
Change code directly on the Pi (small changes)
* change code
* confirm with: control + O "Write out"
* enter to confirm and control X to go back to terminal
Or change code in python file on your computer (bigger changes) delete the content of the final.py file on the Pi and then copy paste the whole code from the file on your computer:
* Removes content of the file: sudo rm final.py
* List files: ls (Should list only one python file: final.py)
* To access the empty file via GNU nano: sudo nano final.py
* paste the new code
* confirm with: control + O "Write out"
* enter to confirm and control X to go back to terminal

After the changes of the file, reboot raspberry pi: sudo reboot

Trying to setup a new Button

Message to Chae:
Lets try a very simple and easy setup that uses the new button, only without its LED light (the LED needs 12V and extra power source, so its too complicated)

1. Take photo of current setup (so that you can always go back to it!)
2. Look at the switch that comes with the new button, it should look like this (Fig. 1)
3. Leave the cable on the pins of the raspberry pi!
4. On each pin you have a female cable + a male cable that connect to the breadboard
5. Pull both males out of the breadboard
6. These two are now connected to the switch following this scheme (Fig. 2 + 3)
7. You can connect them with tape for now to test if it works!
8. The switch now has to be put into the button –it should slide in or something like that and sits behind the LED that we do not use (Fig. 4)
9. Test if it works! If yes, HURRRRAAY! If no, forget about our brillant new button, we will make it work in January and use it at the next event!



The Cocktail Generator as part of Special Issue #16

Mix your own Cocktails!

Reflection Diary

1. What did you like about the process of creating the Special issue 16?

  • getting to know all of you
  • the high energy level and dynamic in the group
  • the excitement of diving into something completely new (especially with coding and collective working)
  • coding
  • collective working


2. What would you like to keep in the process for the next special issue?

  • the high energy level and dynamic in the group
  • being curious and adventurous


3. What did you not like about the whole journey?

  • serious moments of frustration – sorry to everyone!
  • that the technical part of the special issue 16 couldnt be equally distributed (because we aimed too high?)
  • that we got carried away in the project-subgroups and lost the view for the whole picture


4. What would you like to do differently for Special Issue 17? Feel free to elaborate in more specifics. when we started to work on the special issue 16 i thought there could be two ways to approach it:

  1. work on ONE in-depth project with the whole group
  2. work on small individual projects or experiments and bring them together in the special issue

i think we ended up doing something inbetween: three projects that are too small on their own and too big and complex to bring them together as the special issue 16. i mean – it works, but its quite messy, not consistent and doesnt carry a clear message. i feel a bit sad about it and would love to try option 1 or 2 next time! it would also mean to take responsibility for the content and the audience!

5. Share a memorable moment during the last 2.5 months :)
there is a whole collection:

  • meeting the class (most of them) at the central station for the firt time <3
  • the day i coded the book generator, it was the first time i realised that coding can be useful and connected to my research
  • the workshop series at Roodkapje – first time being introduced to an Arduino
  • THE LONG DAY WITH CHRISTINA, it was a milestone
  • the day Michael and Manetta introduced the flask application, i was super excited and frustrated at the same time
  • many coding moments with kamo – thanks!!!
  • everyones support when i needed to leave Rotterdam in the last week of the project – it wasnt easy to go and all your messages were amazing and helped me a lot!


6. What was the most challenging thing while working in the big group; and in the sub-groups?

  • to be on the same page (this refers to decision-making but also communication in general)
  • i think that we got carried away in the project-subgroups


7. What did you learn during the Prototyping classes (Michael & Manetta)? What will you keep from them?
EVERYTHING!!!!!

8. What did you learn during the Special issue classes (Cristina & Steve)? What will you keep from them?

  • how to annotate as a group
  • how to have check-in moments
  • methods for collective decision-making


9. How would you describe your overall experience of doing this special issue?
on the surface: AMAZING below that: mixed feelings of "maybe we could or should have done it differently?"

10. How will you use what you have learned this trimester in your personal practice?

  • i will continue my coding journey and try to find more overlaps with my graphic-design and book-design practice
  • i will experiment with my arduino and the raspberry pi i got for christmas!


11. Anything else you would like to share with the group
<3

Special Issue #17

Special Issue #18