spring 2019 · Software experiments
In spring of 2019, I took an NYU ITP class called "Electronic Rituals, Oracles, and Fortune Telling", taught by Allison Parrish. We looked at the history and structural properties of various forms of rituals and divination, and in our assignments explored computational expressions of these practices. Here is a selection of my projects in that class:
Invent an “-omancy,” or a form of divination/prophecy based on observing and interpreting natural events. Your reading of “natural” should make some reference to digital/electronic/computational media.
I created a command-line Python program that can deliver a reading based off of one's favorite websites growing up. Inspired by how our browser search history might be framed as a "natural event" in a digital context, I began thinking about internet history on a longer time scale.
Like our birth place and time, the first websites we visited are embedded into our personal histories. What sites did we frequent when we were much younger, which ones remain in our memories, and which ones were possibly formative to our growth?
I decided to make a Python program that asks a querent for personal details and then generates a reading based off of keywords scraped from archives of their favorite early-internet website.
The old websites in question are scraped from the Wayback Machine, which over the years saves snapshots of websites over their histories, and provides an API to link to a site's view at any given time (or at the next closest time possible).
Hey there! This is a program that peers into your formative internet days and from that, tells you a bit about yourself.
To start, what’s your name?
Hello Jackie! It’s nice to meet you. To give us a bit more information to work with, what year were you born? Please format it with four digits, i.e.: ‘2019’, '1991’.
Now, dig deep into your memories and think of a website you loved to go on in the past. Type it here. Some tips: don’t include www. or https://. If your favorite site was google, type it like 'google.com’
Now, final question. What age were you when you used that site? Type in a single number, i.e. '9’ or '16’.
* Formulating your reading… Please be patient :) * *
**~*~Your Reading *\*~*~
Growing up, you’ve been somewhat lively at your core.
You’ve learned some sullen tendencies in more recent times, Jackie.
Try playing around with a deep point of view.
Here are the general steps my program takes to make sense of a site's raw HTML and create a psychic reading. If you're interested, check out the source code!
Prompt: Make a prototype of an electronic spirit board or other method for facilitating automatic writing (communication from unconscious/subconscious/collective gesture.)
I created a spirit board (e.g. an Ouija board) that could spell out messages using pictorial systems, rather than letters.
I discovered an existing project called Emouija Board, but it looks like it never got beyond the paper prototype/kickstarter stage. Also says nothing about what mechanism or process they used to generated messages.
I also found an early-internet version of a web-based Ouija board, where you type in questions and get somewhat sensical, written responses that seem to be linked to key words or phrases.
I created a web-based emoji ouija board that begins by prompting the querent (the person who is receiving a reading) to ask a question, and then delivers a reading comprised of 3 readings.
Before asking the question, however you have to calibrate webcam's gaze tracker. As the planchette moves to deliver a reading, the UI tells you to "focus carefully" on the planchette. Here, I was inspired by the early-internet version of Ouija above, where you had to hover over the planchette in order to get it to move.
One of the key decisions I had to make was how to generate an emoji message. While I set up the experience so it seems like the gaze tracking is affecting the motion of the planchette while you focus, I actually use the querent's gaze before the planchette even begins moving to generate the emoji message.
The gaze of the viewer is tracked with the help of Webgazer.js. My system notes the top few emojis that the user looks at (i.e. where their gaze hits) when the board is first presented. Then, when the planchette begins to move, its path is already predetermined - the encouragement to "focus carefully" is a bit of a trick.
I was interested in emulating the ideomotor effect - the phenomenon that makes Ouija boards "work" - in a digital form. In our class readings on Ouija boards, we learned that the way the planchette moves is due to the fact that participants are subconsciously moving it in the direction of where they want it to go. This process is also inherently very visual - during studies of Ouija in a dark room, the resulting messages were nonsensical.
In this project, I’m trying to play around with one example of how our subconscious could manifest in a digital interface. On the screen, what draws our attention? Where do our eyes linger?
There’s also an element of how to make this a hidden process: if we request the user’s webcam and give them a board, of course they’re going to think that they’re eye movement is going to control the board.
In my prototype, I tried to intentionally divert expectations for control from one part of the narrative to another, by tracking gaze at a point in the narrative where users don’t expect that their behavior will have any output.
Although it says you can run it with a few lines of code, I had trouble setting up a local server that supported HTTPS when I tried to start from scratch. So I built my “prototype” off of some example code from Webgazer’s that provided a simple way to train the model by clicking on dots while gazing at them. I recognize that this is definitely not a good experience to package this if I wanted others to use the app.
While I try to fool people into thinking that their gaze while focusing on the planchette is doing the work, I think I'd need to do some work that makes that more convincing. I had hoped to stop and start the motion of the planchette in its patch based on if the querent was actively looking at it, but left that as a next-step.
Designing a spirit board constrains you to a certain number of symbols, so it wouldn’t be feasible to put every emoji ever on a single page. One of the open questions I have is: does it even make sense to use emoji as a substrate for messages, the way letters in the English language are in traditional Ouija boards? If so, which emojis provide the best bases to span all meaning? In a way, it’s sort of similar to the design of oracle decks. Currently, I address this by randomly generating a handful each time the experience loads. This introduces an element of randomness that constrains behavior, which does not seem to be a formal characteristic of traditional spirit boards.
I currently don’t process the question at all, but I wonder if that could result in more tailored responses. For example, if you ask a yes/no question, how might we specifically track if the gaze falls more towards the “Yes” emoji or the “No” emoji?
Automatic writing (and drawing) is a type of divination that involves writing down messages from the subconscious or spirits. Crowdsourced Automatic Drawing is a project I created with a collaborator, Aileen Stanziola, to explore themes of the subconscious and subjective in a digital system.
We created a method for a group of people to create a collective drawing. One person draws according to a series of vibrations on wearable electronic glove, and the others controlling the intensities of the vibrations remotely via a web client.
I focused on the physical glove that the drawer wears, featuring four vibration motors that correspond to the directions of top, left, bottom, and right. My partner focused on the web client that participants could individually visit, allowing them to hit arrow key that affect the overall vibrations of the glove.
We used a song from Plantasia as our meditative, other-worldly background noise.
My first steps were to test the concept by creating some electronic prototypes of the vibration behavior.
My first test consisted of connecting TIP120 transistors to PWM (Pulse Width Modulation) output pins on an Arduino, and connected two vibration motors those transistors. In this part, I wanted to get some basic code running so that the Arduino could take in data through serial communication (that would later correspond to directional commands), and translate those to vibration itensities.
On the code side, I refined a way to take in a stream of serial information corresponding to the four directions that participants would choose, and calculate a weighted average for each of the four directions we recently received. This average is then used to tell the corresponding vibration motor how hard to vibrate. For example, if half of the direction messages we get are "left", then the left motor vibrates half of the maximum possible vibration strength.
Next, I created a basic prototype of a glove out of some muslin material, with a Circuit Playground connected to vibration motors and transistors using conductive thread. This “oven mitt” prototype, which was way too loose against my skin to feel anything, gave me a key insight that the motors would need to be pressing against to the skin if the drawer is to feel any vibration.
So I opted to try a version where three tight rings would hold the left, top, and right vibration motors, and the bottom vibration motor would sit around the wrist.
We set up an overhead camera to livestream the drawing process to the class, and told classmates to go to http://eroft-final.glitch.me/ on their own devices to make their votes.
The image below is a screenshot of the site that my collaborator built, for allowing our classmates to choose directions to send to the glove. On the side of that window is the code used to control the glove via serial on the drawer's side.