Improving GATES Project: We are all Horrible People

Description:

This desktop philosophical experience is intended to be placed discretely somewhere in CMU with high foot traffic.

After sitting down, you answer each question as it appears on the screen. The ‘y’ key means yes and the ‘n key means no. All of the questions are modeled after decisions that a CMU student might make on a normal day, some a bit more dramatic than others. After you answer all of the questions, you will get a receipt printed with some of the positive and negative consequences of the choices you made.

Process:

It was really useful to be able to go back and improve on my earlier project and get it to a place that I was happy with it. My main improvements were with the receipt printer and questions. I changed out the 3rd 4th and 5th questions to better align with the message that I was trying to portray in my project. I felt these original three questions didn’t have as much of a moral questioning as the three I replaced them with. The questions were:

3. You have a midterm in an hour do you study?

4. You haven’t talked to your mom in over a week. Do you call her?

5. You decide on Thai for dinner. Do you order delivery?

And I replaced them with:

3. Your bank account is empty, but you need to eat lunch. Do you steal a sandwich?

4. You got into a fight with your mom yesterday and feel guilty. Do you call and apologize?

5. One of your coworkers asks you on a date. Do you go?

 

I also took some time to make the receipt printer seem more purposeful by installing it into one of the drawers of my desk. Originally it just sat on the table, but putting it into the drawer made it seem less like an afterthought. The only issue with putting it in the drawer is that some people missed the receipt and moved away from the piece before it finished printing. I tried to solve this my including an arrow on top of the desk pointing to the printer which seemed to help. The good part is that people noticed the printer from the user before them and it was only missed at the beginning of the show. People were also a bit impatient with the printer because it took a minute to print.

It was interesting to see the difference in how people interacted based on if I was standing next to the exhibit or not. I overheard a discussion among some friends and they were talking about Nihilism so I was happy to hear that some people picked up on the message. Someone else after I was talking to them about the piece told me that they were going to put the receipt into their wallet which was oddly touching.

//AMOR FATI
//by Cassie Rausch
//this code is designed to recieve input from a user as a key press of either 'y' or 'n'
//in response to a displayed question and then compile correlating responses 
//to this input and print a receipt with the responses generated


int qcounter = 0; //counter that tracks the question you are on

String []  receipt = {" ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; //string that holds all of the responses to be printed

char results[] = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}; //string that holds all of the users input

String [] question = {
  "Your alarm goes off, but you're so tired. Do you snooze? Y/N", 
  "You're still so groggy. Do you get coffee? Y/N", 
  "Your bank account is empty, but you need to eat lunch. Do you steal a sandwich? Y/N", 
  "You got into a fight with your mom yesterday and feel guilty. Do you call and apologize? Y/N", 
  "One of your coworkers asks you on a date. Do you go? Y/N", 
  "As you walk home you pass someone homeless, begging for money. Do you help them? Y/N", 
  "A startup has reached out to you with a dream job offer, but they insist that you drop out of CMU first. Do you do it? Y/N", 
  "You are up late working on a project for a class, but all you want to do is sleep. Do you stay awake to finish it? Y/N", 
  "You catch your partner cheating, but they swear they'll change. Do you give them a second chance? Y/N", 
  "Would you make the same decisions again? Y/N", 
};

String [] nanswers = {
  "You wake up and make it to class on time,\nbut fall back asleep during lecture.\n\n", 
  "\nYou're so tired you don't take any\nnotes in class and fail the next quiz.\n\n", 
  "\nYou're hangry the rest of the day,\nbut stood by your morals.\n\n", 
  "\nYou hold your ground in the fight,\nbut your mom is secretly hurt.\n\n", 
  "\nYour coworker is hurt,\nbut you avoid an awkward date\n\n", 
  "\nThe homeless person struggles\nto find food and becomes ill. You stay\nsafe and keep your money.\n\n", 
  "\nYou graduate CMU and work at Meta.\nIt's fine.\n\n", 
  "\nYou get a lovely night of sleep, but\ncome to class with an unfinished project.\n\n", 
  "\nYou watch the person you were in love with\nleave you for someone else.\nYou are alone, but happy.\n\n\n\n\n\n", 
  "\n\nAMOR FATI  \n\n\n\n\n\n\n\n"
};

String [] yanswers = {
  "You wake up late feeling less tired,\nbut you slept through your class.\r\n", 
  "\n\nYou contribute to the mass\ndeforestation for coffee farming.\r\n", 
  "\n\nYou enjoy your sandwich\nbut have a lingering guilt.\r\n", 
  "\n\nYou feel better after apologizing,\nbut part of you is still mad\r\n", 
  "\n\nYour coworker is happy,\nbut the date is awkward.\r\n", 
  "\n\nYou give the homeless person money,\nbut they quickly spend it.\r\n", 
  "\n\nYou love working your dream job\nuntil the startup fails.\r\n", 
  "\n\nYou stay up all night,\nbut feel awful all day\r\n", 
  "\n\nYour partner continues to cheat,\nbut for a bit you're happy again.\r\n\n\n", 
  "\n\nAMOR FATI   \n\n\n\n\n\n\n\n"
};

import processing.serial.*;

Serial myPort;  // Create object from Serial class
int val;        // Data received from the serial port


void setup() {

  size(1300, 1000);
  println(Serial.list());
  String portName = Serial.list()[1];
  myPort = new Serial(this, portName, 9600);
}

void draw() { // drawing background and text
  background (150, 50, 300);
  textSize(25);
  rectMode (CENTER);
  textAlign(CENTER, CENTER);
  String printresults = new String(results);
  if (qcounter == 10) {
    delay (1000);
    receiptbuilder ();
    delay (5000);
    qcounter = 0;
  }
  // text(printresults, 10, 10);
  // text(qcounter, 10, 20);
  if (qcounter < 10) text(question[qcounter], width/2, height/2, 500, 300);
}

void keyPressed () { 
  if (qcounter < 10) {
    if (key == 'y') {
      results[qcounter] = 'y';
      qcounter++;
    }
    if (key == 'n') {
      results[qcounter] = 'n';
      qcounter++;
    }
  }
}

void  receiptbuilder () {  // function to build all of the responses to be printed based on user input
  for (int counter = 0; counter < 10; counter++) {
    if (results[counter] == 'y') {
      receipt[counter] = yanswers[counter];
    } else if (results[counter] == 'n') {
      receipt[counter] = nanswers[counter];
    }
  } 
  myPort.write(receipt[0]);
  delay (2000);
  myPort.write(receipt[1]);
  delay (2000);
  myPort.write(receipt[2]);
  delay (2000);
  myPort.write(receipt[3]);
  delay (2000);
  myPort.write(receipt[4]);
  delay (2000);
  myPort.write(receipt[5]);
  delay (2000);
  myPort.write(receipt[6]);
  delay (2000);
  myPort.write(receipt[7]);
  delay (2000);
  myPort.write(receipt[8]);
  delay (2000);
  myPort.write(receipt[9]);
}

void serialEvent (Serial p) {
  String inString = p.readString();
  // println (inString);
}