Writing Machine Directory: Difference between revisions

From XPUB & Lens-Based wiki
Line 413: Line 413:
1
1
                 </td>
                 </td>
                 <td style="border: 1px solid black;">
                 <td style="border: 1px solid black;"><syntaxhighlight lang="yaml" line="1" start="1">
...
# libinput record
libinput:
  version: "1.29.1"
  git: "unknown"
  os: "bazzite:42"
  kernel: "6.16.4-108.bazzite.fc42.x86_64"
  dmi: "unknown"
devices:
- node: /dev/input/event8
  evdev:
    name: "Wooting Wooting Two Lekker Edition"
    id: [3, 12771, 4626, 273]
    properties:
    - ID_INPUT_KEYBOARD=1
    - LIBINPUT_DEVICE_GROUP=3/31e3/1212:usb-0000:06:00.1-4.4
    - DRIVER=hid-generic
    virtual: false
  quirks:
  events:
  # Current time is 04:48:12
  - evdev:
    - [  0,      0,  4,  4,  458792] # EV_MSC / MSC_SCAN            458792
    - [  0,      0,  1,  28,      0] # EV_KEY / KEY_ENTER                0
    - [  0,      0,  0,  0,      0] # ------------ SYN_REPORT (0) ---------- +0ms
  # Current time is 04:48:21
  - evdev:
    - [  8, 788088,  4,  4,  458774] # EV_MSC / MSC_SCAN            458774
    - [  8, 788088,  1,  31,      1] # EV_KEY / KEY_S                    1
    - [  8, 788088,  0,  0,      0] # ------------ SYN_REPORT (0) ---------- +8788ms
  - evdev:
    - [  8, 805088,  4,  4,  458759] # EV_MSC / MSC_SCAN            458759
    - [  8, 805088,  1,  32,      1] # EV_KEY / KEY_D                    1
    - [  8, 805088,  0,  0,      0] # ------------ SYN_REPORT (0) ---------- +17ms
  - evdev:
    - [  8, 859084,  4,  4,  458759] # EV_MSC / MSC_SCAN            458759
    - [  8, 859084,  1,  32,      0] # EV_KEY / KEY_D                    0
    - [  8, 859084,  0,  0,      0] # ------------ SYN_REPORT (0) ---------- +54ms
  - evdev:
    - [  8, 876081,  4,  4,  458774] # EV_MSC / MSC_SCAN            458774
    - [  8, 876081,  1,  31,      0] # EV_KEY / KEY_S                    0
    - [  8, 876081,  0,  0,      0] # ------------ SYN_REPORT (0) ---------- +17ms
  - evdev:
    - [ 10, 280097,  4,  4,  458794] # EV_MSC / MSC_SCAN            458794
    - [ 10, 280097,  1,  14,      1] # EV_KEY / KEY_BACKSPACE            1
    - [ 10, 280097,  0,  0,      0] # ------------ SYN_REPORT (0) ---------- +1404ms
</syntaxhighlight>
                 </td>
                 </td>
                 <td style="border: 1px solid black; word-break: break-all;">
                 <td style="border: 1px solid black; word-break: break-all;">

Revision as of 16:18, 28 September 2025

This page is part of the Special Issue # 28 Writing Machines–Protocols–Feedback. It is provides a record of the various writing machines proposed or made during the production of that Special Issue.

Analog Exquisite Corpse Machine


Steve's Writing Machines

Writing Machine # 1

Title: Analog Exquisite Corpse Machine (2025) by Steve Rushton
Machine overview:
Five columns of words which can slide up and down to form new sentences.
A loose interpretation of the Surrealist Exquisite Corpse.
Media: Paper; Libre Office; glue; alphabet (English)


ExquisiteCorpseMachine2.jpg
ExquisiteCorpseMachine3.jpg
ExquisiteCorpseMachine5.jpg
ExquisiteCorpseMachine4.jpg
Machine output (example)

Earlier output (1925-26). The first recorded stanza using this form (by André Breton and his Surrealist friends) is recorded as: “The-exquisite-corpse-will-drink-new-wine.”


Writing Machine # 2

Title: The Writing Machine of...(2025) by Steve Rushton.
Machine overview: A reworking of The House of Dust Redux by Nick Montfort
Link:https://nickm.com/memslam/
based on a 1967 work by Alison Knowles & James Tenney
in Python 2/3

Here is an example of output generated by Alison Knowles’ House of Dust (1967)

"A HOUSE OF WOOD
UNDER WATER
USING NATURAL LIGHT
INHABITED BY FRIENDS


A HOUSE OF LEAVES
IN A METROPOLIS
USING ALL AVAILABLE LIGHTING
INHABITED BY ALL RACES OF MAN REPRESENTED WEARING PREDOMINANTLY RED CLOTHING


A HOUSE OF ROOTS
IN AN OVERPOPULATED AREA
USING ELECTRICITY
INHABITED BY HORSES AND BIRDS…


A HOUSE OF WOOD
IN A METROPOLIS
USING ELECTRICITY
INHABITED BY FRIENDS AND ENEMIES"

...and this is an example of the output from The Writing Machine of (2025)...

Output: HTML page
Output: HTML page of "self-generating poem"

Python code of the above
Output: Code of the above (fragment)


Writing Machine # 3

Title: Barthes Radio (c. 2023) Death of the Author (1967) by Roland Barthes read by Xpub + Xpub tutors (2023)
Machine overview: Twenty-four sound files
Output (a): BarthesRadio
Output (b): Pad – text with list of readers: https://pad.xpub.nl/p/BarthesWormRadio


Writing Machines from class: 15-09-2025

Writing Machine Group 1: Multinational Poetry Remix

Protocol:

With a group of people...

1. Pick most well-known poet from each country of origin

2. Pick most well-known poem from this poet

3. Pick first line from first verse

4. Pick first line from second verse

5. Translate these lines

6. Sort countries of origin alphabetically (English names) for the first verse

7. Mirror countries of origin for the second verse

8. Put the lines together in one new poem

Output:

Moonlight before my bed, like frost upon the floor

Do you not see, the Yellow River's waters rushing from Heaven, never to return

Who rides so late through night and wind?

I have no mother, I have no father

If my time should come, I'd like no one to entice me

-

I am but a wild animal, cut from it's kind

I haven't eaten third day

My son, why do you hide your face so anxiously?

Do you not see, before the bright mirror in the high hall, grieving over white hair

I lift my eyes to the mountain moon, then bow them, dreaming of home.


Writing Machine Group 2: Corridors to Home

Rule 1: Writing Machine starts when leaving WDKA building, and ends when arrived at home front door.

Rule 2: Set a timer of x minutes

Rule 3: When the timer goes off, write down the first word you see in your environment.

If no word is shown to you, the word is "and".

Rule 4: Repeat the timer until you get home!


Results:

  • Here hello 20 Maasveld zone.
  • Centrum den dierenvervoer handgesneden uitgang de huur care bied fresiadreef
  • Gratis vapiano big brands bachata treinstel t'Catshuys supermarkt & bakkerij. (WdkA - The Hague Moerwijk, 15.09.25 - every 15')
  • Lieflaang specialisten jumbo WC sprinter locale & great outdoors blaak door open. (The Hague Moerwijk - WdKA, 16.09.25 - every 5')


Writing Machine Group 3: The Interpersonal Words Chain (exquisite corpse)

The Interpersonal words chain

A chain of words, where the starting point is a word from someones personal notes from the class

Each person sees only the word of the person before them, and picks a word from the notes they associate with the previous word

The words are notated on one side of a notebook

The next round goes against reading direction

Words can be read in increments of 5 words, but also by order of the book.

Sentences can be read per 5, the number of the people in the group


Outputs

  • Dialectics reflect distracted by design output
  • Technotext liberating language the fragile restraints generate
  • Dialectics techno text reflect liberating language distracted the fragile by design restraints output generate
  • Generate output restraints by design the fragile distracted language liberating reflect techno text dialectics
  • special issue writes meaningfully bleeds hungrily
  • Government production terminate assemblages pre-existing
  • special issue government writes production meaningfully terminate bleeds assemblages hungrily pre-existing
  • Pre-exising hungrily assemblages bleeds terminate meaningfully production writes government special issue
  • Dialectics techno text reflect liberating language distracted the fragile by design restraints output generate special issue pre-eshisting writes assemblages meaningfully terminate bleeds production hungrily government juxtapositions

-

A picture of a printer connected to a Raspberry Pi, connected to a monitor.

Babblebash

 _           _     _     _      _               _
| |__   __ _| |__ | |__ | | ___| |__   __ _ ___| |__
| '_ \ / _` | '_ \| '_ \| |/ _ \ '_ \ / _` / __| '_ \
| |_) | (_| | |_) | |_) | |  __/ |_) | (_| \__ \ | | |
|_.__/ \__,_|_.__/|_.__/|_|\___|_.__/ \__,_|___/_| |_|
Babbelbash brings terminals together to babble with each other.

This machine consists of words sent to a printer by a group of people with pre-assigned roles.

Functioning

echo "MSG" > /dev/usb/lp0

man babblebash

--babbelbash.v.0.0
nick [NICKNAME]
newrole ARTICLE ADJECTIVE NOUN VERB ADVERB READER LINEBREAKER
assign [NICKNAME] [ROLE]
[WORD]
start
stop


--babbelbash.v.0.1
nick [NICKNAME]
newrole ARTICLE ADJECTIVE NOUN VERB ADVERB READER LINEBREAKER PREPOSITION SOUND CONTEXTGIVER PUNCTUATOR
assign [NICKNAME] [ROLE]
[WORD]
stop
{CONTEXT}
-[SOUND]
'
BREAK THE LINE HERE
'

Output

Because of the limitations of the hardware (impossible to read one printed word without many line breaks in between), it was only possible to capture an excerpt of the output of one iteration.


A Writing Machine for 22-09-25

Output: page one of the mash up
Protocol: Mash up to be distributed to Xpub students at 14:00hr on 22-09-25 in the Aquarium.
A selection of texts about orality and literacy cut and pasted to make a 7 page PDF.

OralityandWritingMachine.jpg


Mud-cell Poem

Mud-cell Poem is a writing machine powered by The Electric Garden, an artistic research project by Sunjoo Lee. It was developed during the workshop 'Fermenting the Earth, Wiring the Mud' at iMAL, together with Sunjoo Lee, Anna Pastor, and wonderful participants. The Electric Garden emits small electricity gathered by metabolic process of microbial fuel cells. This energy is stored in a capacitor and released once it reaches a certain threshold.

Protocol

When the release happens, it sends raw data, temperature and time to the computer with the help of Arduino. Then from the computer, a script converts these information into a poem. The script uses definitions from Wikipedia and texts that explore the relationship between technology and ecology as an ingredient. These texts are split into phrases under four words, then randomized to form a poem. Each time a pulse of energy is released, one new line of the poem appears on the terminal.

Output

serial port open
Invalid data.
Invalid data.
Invalid data.
Invalid data.
Invalid data.
Invalid data.
Invalid data.
Invalid data.
Invalid data.
Invalid data.
Invalid data.
cycles
Invalid data.
lot of wood was
the world coppicing expanded
highest ratio
managed
the
and provided
the planting
which
management in europe
the carbon released by
welldeveloped
serial port open Invalid data. Invalid data. Invalid data. Invalid data. Invalid data. Invalid data. Invalid data. Invalid data. Invalid data. Invalid data. Invalid data. cycles Invalid data. lot of wood was the world coppicing expanded highest ratio managed the and provided the planting which management in europe the carbon released by welldeveloped
A screenshot of different poems

Thought for further discussion

During the development of this project, there were discussions on how the poem should exist. Should it be accessible on the internet for everyone, or remain local close to the garden, for example on an e-ink display? Should the website run on the server powered by the electricity from the garden? Could a poem be written on a soil traced by a plotter? Is the poem infinite or will parts of it be deleted over time?

Waiting for the signal from the garden
Waiting for the signal from the garden
Measuring the electricity from the mud
Measuring the electricity from the mud
The Electric Garden at iMAL
The Electric Garden at iMAL

State Writing Machines

made during prototyping on 23 September
using File:Prototyping_20250923_state_machines.pdf and Graphviz
outcomes of the day can be found here: https://hub.xpub.nl/sergio/state-writing-machines/

Aquarium Conversation Simulator

Aquarium-conversation-simulator-20250923.jpg


Nod-Blink-Yawn State Machine

> in
to give a touch of human warmth to our schematic demonstration
Clara van Bloemendaal is the dragon of Arnhem
>
touch
>
NOD
>
TURN OPPOSITE x4
>
touch Clara
> 
touch Clara has
> 
touch Clara has to do with
>
touch Clara has to do with straightforward
>
touch Clara has to do with straightforward dragon
>
touch Clara has to do with straightforward dragon 
> out
LeaLuca-statemachine.svg

Barbara and Youjung's Writing Machine

igraph {
label="Youjung and Barbara's writing machine ( ^a          ) ^a "
labelloc="t"
speaker [shape=doublecircle];
listener [shape=doublecircle label="listener\n ^v (   ^`      ^m ^`     ) ^v "];
input [shape=plaintext]
output [shape=plaintext]
rankdir=LR;
        input -> speaker
        speaker -> listener [label="quietly say the sentence"]
        speaker -> speaker [label="I said..."]
        listener -> output
        listener -> speaker [label="Pardon?"]
}

Barbara and Youjung's Writing Machine
Barbara and Youjung's Writing Machine

Robin and Ema's State Machine

Robin&Ema's Writing Machine
Robin&Ema's Writing Machine

Bart and Daan's Writing Machine

Bart and Daan's writing machine

Sibyl, Kiki, Tommi's Writing Machine

Sibyl, Kiki, Tommi's writing machines

...

Glyphica Text Machine


"Defend Yourself Through the Power of Typing"


a screenshot of the game glyphica: words are moving from the edges of the screen towards the middle
a screenshot of two terminal windows and a few text files on top


Protocol

  • Play one round of "Glyphica"
  • Record all keystrokes you make—for example with libinput on Wayland or xinput on X11.
  • Run a bash script to remove irrelevant characters and replace "SPACE" strings with actual whitespace characters. I used sed, but other stream editors like grep would also work.
  • Note: The game does not require you to type spaces between words, but it can be done to improve the readability of the text.
  • NYI: Try to get rid of the "FFKPFFFFF" string at the beginning. Map "Z" and "Y" correctly.


Script

#!/bin/bash

sed -n -E 's/.*(KEY_.* *1).*/\1/p' $1 | sed -z 's/KEY_//g;s/ *1//g;s/\n//g' | sed 's/SPACE/ /g' > "$1.keys"


Output

Attempt Nr.

.yml (recorded output from $ sudo libinput record --show-keycodes -o <file>)

.yml.keys (cleaned up text after running the script)

1

# libinput record
libinput:
  version: "1.29.1"
  git: "unknown"
  os: "bazzite:42"
  kernel: "6.16.4-108.bazzite.fc42.x86_64"
  dmi: "unknown"
devices:
- node: /dev/input/event8
  evdev:
    name: "Wooting Wooting Two Lekker Edition"
    id: [3, 12771, 4626, 273]
    properties:
    - ID_INPUT_KEYBOARD=1
    - LIBINPUT_DEVICE_GROUP=3/31e3/1212:usb-0000:06:00.1-4.4
    - DRIVER=hid-generic
    virtual: false
  quirks:
  events:
  # Current time is 04:48:12
  - evdev:
    - [  0,      0,   4,   4,  458792] # EV_MSC / MSC_SCAN             458792
    - [  0,      0,   1,  28,       0] # EV_KEY / KEY_ENTER                 0
    - [  0,      0,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +0ms
  # Current time is 04:48:21
  - evdev:
    - [  8, 788088,   4,   4,  458774] # EV_MSC / MSC_SCAN             458774
    - [  8, 788088,   1,  31,       1] # EV_KEY / KEY_S                     1
    - [  8, 788088,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +8788ms
  - evdev:
    - [  8, 805088,   4,   4,  458759] # EV_MSC / MSC_SCAN             458759
    - [  8, 805088,   1,  32,       1] # EV_KEY / KEY_D                     1
    - [  8, 805088,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +17ms
  - evdev:
    - [  8, 859084,   4,   4,  458759] # EV_MSC / MSC_SCAN             458759
    - [  8, 859084,   1,  32,       0] # EV_KEY / KEY_D                     0
    - [  8, 859084,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +54ms
  - evdev:
    - [  8, 876081,   4,   4,  458774] # EV_MSC / MSC_SCAN             458774
    - [  8, 876081,   1,  31,       0] # EV_KEY / KEY_S                     0
    - [  8, 876081,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +17ms
  - evdev:
    - [ 10, 280097,   4,   4,  458794] # EV_MSC / MSC_SCAN             458794
    - [ 10, 280097,   1,  14,       1] # EV_KEY / KEY_BACKSPACE             1
    - [ 10, 280097,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +1404ms

FFKPFFFFFFFFFF2SDBACK TFFFFGLEFTCTRLCUPLEFTLEFTLEFTLEFTLEFTBACK BACK BACK BACK BACK BACK BACK BACK BACK GLZPHICAENTER YAMANEGGSVAIN ECHOINNSMELTEGOSPEALPICKYINEORESWILZBODZ HANDZELSEWILLZAMSTICKLOOKYINCSMATSKIOSKMOBSKILLMEREVAINLASERRAPSTWISTHASHZAMSREFT THINKSELLZAWNHOLDZARNMANZSIGHTNEWSEACHPECK ABOUTWARDKEZSCLANGOESAIRZSAFEOWNSSAPS TAKESKOOKZURICAREACASHDRIPJURZENACTDRAWNECHOGAYEWJAYY UNITZBETSEQUAKONCEHURRZVISTAEXITYAMANCORNREALFUELSASSYINGTOASTFOOTUNTODECKINKZTICKYEROFAMEBEANZOKEGIRLKIDS ALIGNEVENSCANMAKEGIBEMOODZERASE EELSMASKQUITZOBSIDLZPEALAMUSEBLOCCORGIONERSONESSAGEWEEKQUADJUDOLQAMPLAMPPALMCHILIHEATSUNDERJAYYZNERVEVEIL JUFJUDGEPECKMODELVEALYINEEARSZEARMAPSJAMSDIALZIPEOXENNEARPEALNAILIMPSWHATBEHALFLENTPANELGUILEBUTTGREENKEELGAVELOWCHOWELSEBLOWABLEBELIEFOPTICBOUND MUDDZAIDEQUINTAETHNICKIDSIMPOENMDWAGERIMPENDKITTENHOLEKIRKNOSZHALLLEOMLEMONDENTVOLTODDSYEBRASBETSPETTSCLAPSLKNEEDEEMAUNTVOIDINJURZSCARPETSKEZSUNSAIDLAWSVZINGTIERLAVANINEINNSUGLZMASKJIVINGDARTSCANZEAHFENCERNOVAREADWHITEFIYYEXITASHZVOLETHEMEYEALQUASARHUNCH USAGECOLDLAUGHRICKEDGEVISEDIALMEATWARZFUDGEREALMBOXENAILPESTJANITORPEALFUELBABZFORKCANTZAPPZCENTYZOGAMPPMOOSEREALDOCKLAUGHPICKSRICKZOLKCOSTNOESNORMRAFTBELLUPSETMOLEHALL SAINTODLODDLZLASSPIER DOILZHEIRPILEINJURZKIWIURGEKNEECODELENTEMAILSAMEWORDBLEWLAKEMOTORKNEEZOUTHLAWNQUIYMILKWHATDOGSBLOCDRINKSDIVOTIMAGEDIALMANDALAESTEEDMGLOOMZAIMSYONEDYAPPZLAKEBESFLEDKERBSTUNTHEIRFELLGLAREESTEECOMMAESTEEMTHIRSFROOFROWNBEESHAIRD DROLLFLEEIRONHEARKABUKIPEASYOELLEFTALTLEFTMETALEFTCTRLC

2

                   ...

FFKPFFFFFSEAL GRIP ZAMS EXIT VARZ LEVZ SAME BEAT MALE STOP ZEAR NAVZ WEAK IDEA IBEX MEAL RANG ADDSFLAK PEER SIDE OKAZ EMAIL TAXI JAWS HEAR INPUT VIEW USES ODOR WALE WOVE HAIR COIL LABOR GLORZ AUTO OVAL KOOK RAGE GANG WARE MATH FROTH BABZ WHZS NOSZ FAIR ULCER BUDGE NEWT LACZ COLD NOEL MOCK QUILT CORN ZANG FAME WARP OWLS DASH MEAN WANT BEES GILL CARRZ OGRE LION FUISTFIST PATH VERSUS JAMS IMPOSE MOUTH GHELLO INHERE VAPOR LUNCH LEAGUE DIVINE HAVE ARMZ THIS YITS DEBT EZES YONE CASH HOME YINGHOLZ YAPS LATTER WILL WHARF ZAPPZ VIDEO STUDZ HAND JAGS TOJARSJUDGED AIMS TAKES HAVE PANEL LEFT CLOUD SLAP VAIN ECHOES YZGOTES QUAKE YINGS RARE PATH HEALES CARS SLING ZUMMIER STIR RICK HOLD PIKE FACT MINK ZEWS NESTED YZMURGZ HEELED FIERZ ISOLATE DIALOG EDGE FEUD RAPID GRASS PACEZ JUDO NORMAL WHISPIERSH WHISPER GIGS ELBOW NAVZ INSPECT MARKEY VICE MAKGFI MARKET YOOMS ASHZ HISTORZ OPULENT HOLZ SCARAB NAME OFFEND OLIVE MASCOT JOTS OMEN GAME DECIDE HOTEL DEAN REALITZ MONEZ KILINGS SEEDKILLINGS RAFT KNIFINGLEFTCTRLC

3

                   ...

FFKPFFFFFPRIDE PART PIGS WARM WEPT TWIST MOTOR GAME VARZ KART FERNS ICED RELZ RAFT SCOPE WANE DEAR PIES TIME TEES UNIT OCEAN BEEF NETS DRIP PIER HEEL KEEL KILL EXED REFT ZEAR YERO EZED EELS JIBS DOME DIAL PEGS HAVE RURAL DEED PROSE SHELL KOOK HUMPHUMP KIDS FLANK QADI JOLLZ YONES KITH JEST KNOLL YEBU TICK MURAL MAST HOME FIND PUPPZ DEEM HOUND COLD MEDAL NEXT COOL LAME VISTA IBEX FEETNAIL LAME ACRE FAIL WASP PANDA ECHO PEEL FERN QUIT ZANG ELSE JOKE NOES VOTE WART WAKE YAGS ZELLS AFAR HANDS UGLZ ZAWS GNOME SENSE JOINT CASH TEND EVIL QUAZ HJURZ COME INKZ SIDE JULZ MATH ENVZ MAPS AQUA ALTER GEMS GEEK MICE GIGS BANK THIN DEAF CANE JUNK EXIT URICHEAVZ EXAM ZULANS BLEW DEAR YERO LEND THIRD HITS HUMANGASH BETA HEAD VIED SEND GFIRM YAMAN GEEK FADE YIPPZ PARTZ WANE GLOB LEAN PALACE CORN HANGER PAJAMA DECK CART ZAMS HOLD DRIP BLAB FIND PITCH LEFTCTRLC