LO 09: Focus on Women and Non-binary Practitioners

Allison Parish is a programmer, poet, and an Assistant Arts Professor at NYU. She creates projects that combine language with software and machine learning. She has written multiple books and articles, created a card game called Rewordable, and presented at Eyeo 2015. Her body of work spans writing multiple pieces of custom software that generate poetry or manipulate language. For example, she has written a Nonsense Laboratory tool which allows users to manipulate words in both how they are spelled and how they sound. The goal is to allow users to play with spelling the same way people play musical instruments or play with modeling clay. The project evokes linguistic creativity and explores machine learning.

To create her projects, Parish accesses large language datasets found in the open source Gutenberg Project and in online movie databases. The project I enjoyed most was her Semantic Similarity Chatbot. This chatbot accesses several movie dialog datasets available through Google. The project is written in Python and uses the spaCy add-on library. It builds word vectors to generate a list of possible responses to a chat. The delivered response then is randomly chosen from the possible vectors. All of the code is available on github and there is a google colab page setup to download and run the chatbot. I had several conversations with the chatbot. The responses are somewhat random and don’t seem very relevant; however, the project remains very interesting and is important as a foundation for machine learning and future chatbots. One of my chats is included below. My entries are shown next to the happy face emoji. The chatbot responses are next to the robot emoji.

Chatbot Output.

Looking Outwards 09

For this week’s looking outwards, I would like to focus on Korean female artist Mimi Son. She is a creator of interactive artworks and displays. Together with Elliot Woods, they created a Seoul-based art collective called kimchi and chips. Their thoughtful works are mostly a combination of arts, sciences, and philosophy. Son has an obsession with geometry and Buddhist philosophy and that inspires her to document time and space in her own unique ways. She experiments frequently with her installations with the theme of art and technology, material and immaterial, real and virtual, presence and absence.  The specific artwork I want to focus on is her 2018 project Halo. This project consists of 99 robotic mirrors that continuously move throughout the day to follow the sun like sunflowers. These mirrors reflect a beam of sunlight into a cloud of water mist and they are computationally aligned so that together they draw a bright circle in the air. I admire this project because she was able to capture something so intangible by combining technology with nature.

Her Halo Project at Edmond J. Safra Fountain Court Somerset House. June. 2018

Link to Project: https://kimchiandchips.com/works/halo/

Link to Kimchi and chips: https://kimchiandchips.com/works/

Project 9

This project is fun to create. I decided to use little hearts to paint a portrait. To paint: press the mouse and drag. You can change to a smaller brush size by holding any key.

sketch
it will take you a few minutes to paint. This is a combination of smaller hearts and bigger hearts.
//Jenny Wang
//Section B
//jiayiw3@andrew.cmu.edu
//Project 09

var img;

function preload(){
    img = loadImage("https://i.imgur.com/MBJZ7t1.jpg");
}

function setup() {
    createCanvas(480, 480);
    imageMode(CENTER);
    noStroke();
    background("orange");
    frameRate(50);
}

function heart(x, y, size) {
  beginShape();
  vertex(x, y);
  bezierVertex(x - size / 2, y - size / 2, x - size, y + size / 3, x, y + size);
  bezierVertex(x + size, y + size / 3, x + size / 2, y - size / 2, x, y);
  endShape(CLOSE);
}

function draw() {
    
    //area radius for random pixels
    var xPosition = random(-5,5);
    var yPosition = random(-5,5);

    //set area for mouse
    var x = map(mouseX,0,width,0,1200); 
    var y = map(mouseY,0,height,0,1500); 

    //get the size of the pixel
    var pixelSize;

    //get the color of the pixel
    var pixC = img.get(x,y);
    

    //set to paint with mouse
    if(mouseIsPressed){
        push();
        translate(mouseX,mouseY);
        fill(pixC);

        //set heart shaped brush with different sizes
        if(keyIsPressed){
            pixelSize = random(4,8);
        }
        else{
            pixelSize = random(10,22);
        }
        heart(xPosition,yPosition,pixelSize);
        pop();
    }
}
    

Looking Outwards 09: Amanda Ghassei

Amanda Ghassei https://amandaghassaei.com/ 

This week, I looked at the work of Amanda Ghassei, an engineer and computational artist. Initially, I was drawn to her work due to the way she took real, tangible, and usually historical art forms and found ways to work with those concepts computationally. Her work includes algorithms about folding origami, explorations of the historical process of locked letters, and creating a simulation based off of the process of water-marbling. The project that I chose to examine more closely was her water-marbling work, mostly because of my aesthetic attraction to the vibrant palette she uses. This work connects to other work of hers which simulates fluids, which is impressive, but I find the conceptual act of digitally recreating a historical process to be more interesting. The past is so intangible and hard to access, so the act of computationally recreating the past, in a sense, is pretty intriguing.

Water Marbling Simulation, 2022

Lvanveen Project 9: Portrait

My project 9! I decided to reuse and modify some code from our wallpaper project to make the design more fun, and overall, I’m pretty pleased!

sketch
var img; //the code takes a sec to load, but it does load don't worry!

function preload(){
	img = loadImage("https://i.imgur.com/UerFer7.jpg");
}

function setup() {
    createCanvas(480, 400);
    background(200);
    strokeWeight(0)
}

function draw() {
	fill(255);
	background(200)
	image(img, 0, 0, width, height);
	fill(255, 35, 10); //red
	rect(0, 0, width, height);

	for(var y = 0; y < 500; y += 100){ //initally the background was just bright red, but I wanted more of a pattern...
		for(var x = 0; x < 600; x += 200){ //... so I decided to reuse some code that made flowers that I used in week 5 w/ a change in color etc
            
			drawFlower(x, y);
		}
	}

	for(var y = -50; y < 500; y += 100){
		for(var x = 100; x < 600; x += 200){
			drawFlower(x, y);
		}
	}

    for(var col = 500; col < 600; col += 40){
        strokeWeight(2)
        stroke(110, 94, 66);
        fill(186, 156, 95);
        rect(col, 350, 40, 50);
    }
	for(var i = 0; i <= width/5; i++){ //use of 5 basically made the scale of the pixels 5x bigger
		for(var j = 0; j <= height/5; j++){
			c = img.get(i*5, j*5);
			if(c[0] > 110 & c[1] > 110 && c[2] > 110){
				strokeWeight(0);
				fill(140, 255, 251); //cyan blue of face
				rect(i*5, j*5, 5, 5);
			}
		}
	}
}

function drawFlower(x, y) { //code to make flowers
	push();
	translate(x, y); 
	strokeWeight(8);
	stroke(184, 176, 79); //green stem color
	line(-25, 35, -40, 50);
	line(-40, 50, -45, 60);
	line(-45, 60, -55, 20);
	line(-55, 20, -55, 0);
	line(-45, 60, -55, 90);

	strokeWeight(0);
	fill(184, 176, 79); //same green
	ellipse(-55, 0, 20, 30);

	push();
	rotate(radians(30));
	fill(209, 187, 96); //underside of stem color
    rect(-10, 0, 15, 45);
    pop();

    fill(255, 209, 25); //main flower yellow color
    rect(-15, -35, 30, 50); //base of the flowers
    rect(-35, -5, 40, 20);
    rect(5, -5, 30, 30); 
    rect(-15, 15, 20, 20);

    push();
    rotate(radians(45));
    rect(-14, 6, 15, 30);
    rect(-32, -4, 30, 15);
    rect(-5, -35, 15, 30);
    pop();

    strokeWeight(1);
    stroke(245, 183, 15); //darker yellow thin line flower color
    line(0, 0, -3, -25);
    line(0, 0, 7, -25);
    line(0, 0, -8, -25);
    line(0, 0, 12, -25);
    line(0, 0, -30, 1);
    line(0, 0, -30, -2);
    line(0, 0, -25, 15);
    line(0, 0, -20, 20);
    line(0, 0, 27, 15);
    line(0, 0, 25, 20);
    line(0, 0, 30, 5);
    line(0, 0, 30, 0);

    stroke(250, 231, 180); //flower light cream color
    strokeWeight(2);
    line(0, 0, 3, -25);
    line(0, 0, -30, 5);
    line(0, 0, 30, 10);

    strokeWeight(1);
    stroke(242, 223, 145); //lines connecting seeds color
    line(0, 0, 10, -10);
    line(0, 0, 9, -5);
    line(0, 0, 13, -13);
    line(0, 0, 15, -18);
    line(0, 0, 10, -15);

    strokeWeight(0);
    fill(69, 43, 31); //seed color
    ellipse(10, -10, 3, 3);
    ellipse(9, -5, 3, 3);
    ellipse(13, -13, 3, 3);
    ellipse(15, -18, 3, 3);
    ellipse(10, -15, 3, 3);
    pop();
}

Project-09: ASCii Portrait

had a lot of fun w dis one

sketch
// Zoe Lin (ID: youlin)
// Section B

//please give it a couple seconds to load!
//press the mouse to invert the colors!
var density = '@Ñ#W$0985321!?=+-;:,._ ';
var r, g, b;
var img;

function preload() {
  img = loadImage("https://i.imgur.com/GBXXDnf.png"); //load image
}

function setup() {
  createCanvas(350, 450);
  //frameRate(10);
  textAlign(CENTER, CENTER); //ensures ascii text aligns with pixels
  noStroke();
}

function draw() {
  img.loadPixels(); //loads each individual pixel of img
  background(0);

  //var denShuffle = shuffle(density);
  var newWidth = width/img.width;
  var newHeight = height/img.height;
  for (var i = 0; i < img.width; i++) {
    for (var j = 0; j < img.height; j++) {
      var index = (i+j*img.width) * 4; //sets index to match image pixel
      r = img.pixels[index]; g = img.pixels[index+1]; b = img.pixels[index+2];
      var average = (r+g+b) / 3; //finds average rgb index
      textSize(newWidth);
      fill(255);

      //maps index of letter to image pixels
      var letterdex = floor(map(average,0,255,density.length,0));
      //draws ascii letters
      text(density.charAt(letterdex), i*newWidth, j*newHeight);
      
    }
  }  
}

//note: mousePressed also takes a few seconds to load!
function mousePressed() { //inverts colors when mouse is pressed
  density = density.split('').reverse().join(''); //reverses density string
}

Project 09 – srauch – portrait

Here is my “glass door” portrait. You can change the fidelity of it by moving the mouse up and down. By moving your mouse all the way to the bottom of it, the full portrait is revealed.

sketch
//Sam Rauch, section B, srauch@andrew.cmu.edu, project 09 
//this code makes a "glass door" picture of me with colored ellipses, like you're looking
//at me through one of those textured glass doors. It samples the image
//color at each pixel location (though it skips every other y row to help it run a bit faster)
//and draws a circle there. The circle size is tied to mouseY, so when the mouse is higher up, 
//the circles are larger and the image is lower-fidelity, but it gets higher fidelity as the
//user moves the mouse down the image. 

var samImg;
var uploadImg;

var dotArray = [];

var first = 0;

function preload(){
    uploadImage = "https://i.imgur.com/nTNXyHg.jpg";
}

function setup() {
    createCanvas(400, 533);
    background(220);
    samImg = loadImage(uploadImage);
    frameRate(1);
}

function draw() {
    
    background(50);
    image(samImg, 0, 0);
    
    if (first == 0){ // define all the dot objects; run once at start of draw

        for (var y = 0; y < 533; y+=2){ //fill array with dots all over canvas
            for (var x = 0; x < 400; x++){
                var clr = samImg.get(x, y);
                dotArray.push(makeDot(x, y, 20, clr))
            }
        }
        first ++;
    }

    var sizeTicker = map(mouseY, 0, height, 45, 3); //set dot size to move with mouseY

    shuffle(dotArray, true);
    for(var i = 0; i < dotArray.length; i++){ //draw dots in array
        dotArray[i].size = sizeTicker;
        dotArray[i].drawDot();
    }
}

//dot object and draw function
function makeDot(xpos,ypos,siz,clr){
    var dot = {x: xpos, y:ypos, size:siz,
            color:clr,
            drawDot: drawDotFunction}
    return dot;
}

function drawDotFunction(){
    stroke(this.color);
    //print(this.color)
    strokeWeight(this.size);
    point(this.x, this.y);
}

Blog 09 – Women and Non-Binary Practitioners in Computational Art – srauch

For my piece, I picked ENIGMA, a computer-generated film created by Lillian Schwartz in 1972. 

ENIGMA (1972)

Schwartz worked out of Bell Labs’ Acoustical and Behavioral Research Center from 1968 to 2002, and during her time there, she created a series of videos that were visual output of computer algorithms, ENIGMA being one of them.

What I find so remarkable about her videos is that they were algorithmically generated, but because of the technology at the time, they were physically produced. Each frame the computer output had to be burned into 35mm film one at a time, and then the film itself had to be developed before Schwartz could see the image. Schwartz fluently used the kind of creative thinking afforded by computer-generated art decades before such computational art was accessible or even necessarily made sense to make, allowing her to produce art that is completely unlike anything else being made at the time. As she said in an interview, “I’ve always been interested in what different media could provide me in terms of creating something that had never been seen before or provoke me to create in ways I had not created before.” 

Her work prompts me to think about how art can inspire technology. Art is perhaps an excellent place for an algorithm or computer program to begin its life, because there isn’t initially an expectation that it’s perfect or exactly efficient. Freed from the initial constraints of functionality, new creative ideas can flow and grow, and by the time the program is being translated into the practical realm, it’s become something completely new.

Blog 09: Space Video (2012)

By Ilia Urgen
Section B

Kate Armstrong is a Vancouver-based writer, exhibitionist, and artist. She has over 15 years of experience with focusing on the broader intersection of technology and art. Throughout her life, she has produced numerous exhibitions in Canada and internationally, created many works of art, and even wrote a few books on how technology and art intersect.

Today, we’ll take a look at one of Armstrong’s lesser-known works: Space Video.

Released back in 2012, Space Video is a 3-minute generative system that addresses ideas of exploration in relation to inner and outer space. It has a computer-generated algorithm that combines different snapshots of YouTube videos with various electronic sounds and synths. The video is meant to portray non-visual spaces in outer space. It is a mixture of space exploration, hypnosis, guided meditation, and science fiction, which is very trippy to the human eye.

Cover of Space Video

LINK TO VIDEO: https://vimeo.com/136921326

The Game: The Game by Angela Washko

Angela Washko’s The Game: The Game is a feminist computational video game that explores the politics and tactics of the pick-up “artist” through the form of a dating simulator. As the player, you encounter several major “seduction coaches” who attempt to woo you through an array of techniques and practices taken from their instructional material – which range from cheesy and uncomfortable to out-right violent. In creating The Game: The Game, Washko essentially allows the player to understand and, in turn, expose and defuse the manipulative and disturbing practices of these pick-up artists. That’s also what I admire most about it; on the surface, it’s a strange, funny, and disorienting game; dig a little deeper, however, you’ll have a nuanced view of the social implications and power dynamics in the world of contemporary sex.

An associate professor of Art at Carnegie Mellon University, Angela Washko is a politically-active media artist working in a variety of mediums – namely, film, virtual environments, and interactive video games – with the aim of conveying unconventional stories from unusual perspectives in media. I’ve personally attended one of Washko’s lectures and, needless to say, I’m elated to have the opportunity to write about them.

https://angelawashko.com/section/437138-The%20Game%3a%20The%20Game.html

Angela Washko, The Game: The Game, 2016