User:Youjung/SI28: On Writing Machines

From XPUB & Lens-Based wiki

This is an archival page for the Special Issue #28. Writing Machines–Protocols–Feedback.

Ideas and drafts on Writing Machines

First Broadcast: Radio Ghost

Radio Ghost is the third radio show of 2025 for Special Issue #28. It was held on 6th of October 2025 at Radio WORM. Each of the hosts brought their own writing machine and presented it during the 1 hour radio show.

Moderator: Youjung | Producer: Ema | Secretary: Bart

Spam e-mail recipes

For the first radio show, I made a spam e-mail recipe using Nick Montfort's Python code for The House of Dust and Through the Park. I have been developing poem generators since the workshop in Brussels. With the draft that I had, I borrowed ideas from Nick Montfort and Lillian-yvonne Bertram. Their work uses randomness but also has context and meaning in the output. I read Output and Travesty Generator to get some ideas for the Python code.

The input text is as important as the code itself. I thought using spam e-mails would be fun. Spam e-mails are usually not interesting; they are filled with flashy words to seduce readers to open the mail. But ironically, these phrases echo meaninglessly in our inboxes. The majority of them are directly moved to the trash. It would be fun to break these e-mails down into phrases and words and cook them like fried rice.

I enjoyed working with the text "Tips from ABN AMRO". They really did a great job on the opening statement, trying to lure expats/students into insurance, talking about the Dutch customs. Reordering them made it nonsensical, but at the same time, it made sense. I found myself trying to add humor to it. I hope it was humorous for the audience...

[Original Text]
Are you getting used to the Dutch and their ways?
Like cycling against the traffic, celebrating St Nicholas,
and eating a buttered slice of bread with chocolate sprinkles?
Still, some Dutch customs can be very useful,
and one of these is being insured against all manner of risks.
[Cooked Text]
Dear Client,
Are you getting used to cross the road without looking?
Still, Dutch customs can be useful, faced by a hefty bill.
It's normal to eating a buttered slice of bread with chocolate sprinkles for your home.
You can insure yourself for causing a cyclist to have a nasty fall under one roof Get properly damage something
Kind regards,
Tanja Bom Head of Customer Communications ABN AMRO

Message from the Radio Ghost

For the final writing machine, we wanted the inputs from our audiences. We aimed to actively engage with them. In order to lower the barrier of participation we asked questions that are simple to answer. These inputs were then put into our final writing machine. For this machine, I brought elements and keywords from each other's machines. Name that starts with an "A", spam e-mail titles, lyrics from a happy song etc. Then put them into a loose structure, then we read the result of the writing machine. Each person will read one word and phrase.

from random import choice, sample 
title = [
"I’d like to inspire potential entrepreneurs",
"who lack the funds but are willing to put in the time, effort and creativity",
"to build a successful business.",
"The same internet for less money",
]
name = [
"April",
"Arend",
"Anna",
"Amanda",
]
place = [
"in my room, in bed",
"in the train",
"in my room on the couch",
]
sadSong = [
"A handshake of carbon monoxide ",
"It's just another day, and it's not over till it's over. ",
"I fall into a black hole in my head ",
"Reach into the darkness for what's left ",
"I'm fighting the gravity ",
]
happySong = [
"Nal Miwo hajima ",
"In der niederlande sagt man: 'Ik maak korte metten'",
"Sai la scritta che hai scritto, sai, mi piace assai",
"Sai, quel tuo corpicino che guardava me"
]
name1, name2, name3, name4, name5 = sample(name, 5)
place1, place2, place3, place4, place5 = sample(place, 5)
title1, title2, title3 = sample(title, 3)
happySong1, happySong2, happySong3 = sample(happySong, 3)
sadSong1, sadSong2, sadSong3 = sample(sadSong, 3)

title1_words = title1.split()
title1_short = " ".join(title1_words[:5])

title2_words = title2.split()
title2_short = " ".join(title2_words[-5:])

message = f"""
{name1} ★ {place1} ★
Happily sings ★ ♫ {sadSong1} ♫

Sobbing ★ {name2} ★ {place2} ★
cries ★ ♫ {happySong1}♫ 

{name3} ★ writes ★ "{title1_short}" 
{name1} ★ replies ★ "{title2_short}" 

{name4} ★ and ★ {name5} ★ {place4} ★
♫ {happySong3} ♫ ★
♫ {sadSong3} ♫ ★

See you ★ {place5} ★
yours sincerely...
"""

print(message)

Looking back

Preparing for the show, we had 3 meetings, one after class and two online. We thought of doing a collective writing machine, but in the end, we did our own separate machines. Everyone had different interests, and we didn't have enough time to fuse our machines together. But a lot of ideas emerged during the rehearsal, an online meeting the night before the broadcast, like the tone of the show and ghost interrupting us. We measured the time for the introduction to see if we can make it on time. I wrote my script for my session and prepared things to discuss during Bart and Ema's session.

On the day of the show, time passed extremely quickly. When I was talking about my writing machine, my face was burning. And during discussion my brain went blank. Furthermore, I was the moderator who was responsible for tracking time but I miscalculated and cut my session too soon. But maybe thanks to that, everything was on time. I gave signals to others when they had 5, 3, and 1 minutes left. In the end we had some time left, where we had to fill with awkward moments of silence.

When preparing for the show, I felt guilty of presenting something that is not refined to a broad audience. It was my big moment of "making things public". It's a nerve wracking experience but in the end I found myself enjoying being on live and speaking on the microphone.



Mini Website: Cooking Spam E-mails

a small that displays random e-mail every 10 seconds.
Python to Javascript is not easy!

On Monday 13th of October, I worked on putting my python code I've developed on a web page format. Maybe I'm copying Nick Montfort too much, but Steve said it is ok to do so. I struggled to find ways to display python on a chrome browser. I found pyscript, but it didn't work... Later I found out that it wasn't as simple as I thought. Javascript and Python are two very different language. Michael advised that if I wanted to focus on a more visual side, I can focus on Javascript. Spending a while trying to find a solution, I just used Python to Javascript converter. It is not the most elegant way but it works.

I used the recipe for cooking the e-mail from ABN AMRO and made a small website! You can check it here. It was fun to get my hands dirty with coding and visuals after all those readings and discussion.



Working with the Pen plotter & Carrier Bag Text Adventure Machine

Testing with the pen plotter machine
Testing with the pen plotter machine
October week 4

I thought it would be fun if we can interact with the machine with a tangible pen and paper instead of a screen. And a machine holding a pen and writing something literally looks like a writing machine!

I borrowed a pen plotter machine AxiDraw V3/A3 from the interaction studio. It was quite simple to manipulate the machine using python. It is well documented on this page. All I had to do is run python3 on the terminal and the plotter would make cool noises and move the pen around. It became challenging when it came to manipulating the interaction. Like moving the pen up and down making it move to a certain position. It is indeed documented on the website but it took some time for me to actually figure that out. Then I made 3 dummy shapes and tried adding them to if statements. For example, if the user input is 'star' the plotter will print a 'star'. This took me 2 days to figure it out.

Now I have to

  • figure out if I can borrow this machine outside of the academy and
  • think about what writing to make with this machine

November week 1

I can borrow the pen plotter machine!!

November week 2

Figured out everything with the pen plotter machine. It couldn't find the way back to home (0, 0). With the help of Boris at the interaction studio, Now the plotter can find it's way back home.

Now I have to

  • Work on the specific position and units of the pen plotter machine
  • Work and edit the text of the text adventure game
  • Work on the graphics

Preparation Team Work for SI 28

SI28: Design Team

Design team pad

2 rounds of meetings for developing the poster design. I tried using graphviz to create a graphics for the poster.

Draft for poster using graphviz
251020 Draft for poster using graphviz
Draft for poster using graphviz
251023 Draft for poster using graphviz



SI28: Web Development Team

Web dev team pad
October week 4

I worked on the main page for the website. The main challenge was to create graphics on the poster into interactive SVG components instead of images. First, I tried to draw each line and arrow shape finding the X,Y coordinates. It took me 2 hours to draw some lines. There must be a better way! After some frantic googling, I found a Javascript library called LeaderLine which automatically connects html class with customizable leader lines. And it was very intuitive and simple to use. With that, I could easily make the graphics into interactive SVG files.

Now I have to

  • adding interaction/motion to the design (figure out how to make it more intuitive)
  • syncing the final design
  • make the graphic responsive according to the screen size

November week 1

Hectic week.... working in the landing page.

November week 2

Git merge conflict happened. Kind of lost a lot of things that I've been working on last week. Let's read the README file!

Now I have to

  • fix the interaction errors in Javascript
  • work on responsive size for the mobile page > update leader line size and coordinate according to the window size break point