All posts by Robert YE

Final project

The name of my final project is the Space Well. I collaborate with Cass Yao from the other class.  We tried to create an experience of floating in space.

Process

The code was definitely the most difficult of this project. We spent a lot of time figuring the Simple NI library since it doesn’t have good documentation. We spent hours to create the visual effects and testing it in the water pool. The also spent hours to debug. Luckily, it worked in the show. Many people love our work.

Inspiration

When we walked in Washington square park, it was rainy. We saw a small water pool on the road. We wondered how it would look like if the stars and ourselves are reflecting in it.

1
1
1
1

videos

this is the live stream by denial Shiffman. My project is at 1:32:04.

 

Code

We used processing to make this project because we think java is faster than JS.

Because the code is too long, I will just post the controller of our code.

import SimpleOpenNI.*;
import processing.serial.*;
import codeanticode.syphon.*;

PGraphics canvas;
SyphonServer server;
SimpleOpenNI context;

int backgroundColor=0;

//rotate
float rotX = radians(180);
float rotY = radians(0);
boolean Armup = false;
boolean noArmup = false;

//thresh
float minThresh=0;
float maxThresh=2413;
float leftThresh=-750;
float rightThresh=750;

float bomb;
float bright;

PVector [] prepos;
int [] predepthMap;

boolean reduce = false;
boolean invert=false;
int waitForInvert=0;
boolean preInvert;
boolean shake = false;
boolean beginSpin = false;
boolean beginUpdatee = false;

float count = 40;

void setup() {
size(1080, 1080, P3D);

canvas = createGraphics(1080, 1080, P3D);
server = new SyphonServer(this, “Processing Syphon”);

context = new SimpleOpenNI(this);

if (context.isInit() == false)
{
println(“Can’t init SimpleOpenNI, maybe the camera is not connected!”);
exit();
return;
}
context.setMirror(false);
context.enableDepth();
context.enableUser();
context.alternativeViewPointDepthToImage();
context.setDepthColorSyncEnabled(true);

smooth();
stroke(255);
strokeWeight(5);

// Init all stars
for (int i = 0; i < starsD.length; i++) {
starsD[i] = new StarD();
}
}

void draw() {
if(countPointCount==200){
restart();
}

//println(waitForInvert);

// canvas.beginDraw();
canvas.beginDraw();
canvas.clear();
canvas.background(backgroundColor);

// explosion();

context.update();

//meteor();
userList = context.getUsers();

//maxThresh=map(mouseX, 0, 1080, 0, 3000);

//println(maxThresh);
//minThresh=map(mouseY, 0, 1080, 0, 2000);

if (userList.length > 0) {
userId = userList[0];
if ( context.isTrackingSkeleton(userId)) {
ArmsAngle(userId);
// MassUser(userId);
}
}

//star——————————————–
canvas.pushMatrix();
canvas.translate(width/2, height/2);
for (int i = 0; i < starsD.length; i++) {
starsD[i].update();
starsD[i].show();
}
canvas.popMatrix();
// speed+=0.001;

pointcloud(canvas);

//lastPosition();

//prepos = context.depthMapRealWorld();
//predepthMap = context.depthMap();

//rotY+=0.01;

if (beginSpin){
count –;
canvas.fill(255);
canvas.ellipse(width/2,height/2,1080- count*20, 1080- count*20);
if (count == 0){
beginSpin = false;
count = 40;
}
}

if (shake){

}

if (beginUpdatee){
updatee();
}

canvas.endDraw();
image(canvas, 0, 0);
server.sendImage(canvas);
}

Emotion categoriser

I followed a tutorial and made this emotion categorizer.

I used Atom to run this. It was very weird that it can’t run in chrome.

code sketch.js

let lastEmotion;

function setup() {
loadCamera();
loadTracker();
loadCanvas(400,300);
}

function draw() {

getPositions();
getEmotions();

clear();

noStroke();
fill(0,150);
rect(0,0,width,height);

drawPoints();

if (emotions) {
// andry=0, sad=1, surprised=2, happy=3
for (var i = 0;i < predictedEmotions.length;i++) {
rect(i * 110+20, height-80, 30, -predictedEmotions[i].value * 30);
//console.log(“-predictedEmotions[i].value * 30”);
print(“lalalla”);
}

}

text(“ANGRY”, 20, height-40);
text(“SAD”, 130, height-40);
text(“SURPRISED”, 220, height-40);
text(“HAPPY”, 340, height-40);

}

function drawPoints() {
fill(255);
for (var i=0; i<positions.length -3; i++) {
ellipse(positions[i][0], positions[i][1], 2, 2);
}
}

 

prototype

 

I am able to connect Kinect to the mac with processing and I am able to determine what the center of user’s hand. I think this is a serious progress. To demonstrate that I drew an ellipse in the center of my hand. I followed Dan’s tutorial.

Prior Art and My progress

Several artworks inspire me to do this project.

The first one is the augmented reality sandbox created by UCLA. This work is really impressive. People play with the sand to build mountains, use their hands to mimic rain. When someone changes the sand, the contour line of displayed on the sand will change as well. The displayed water follows physic principles. It is really fun to play with a real physical object and see the effects. It is very related to my project, because I may use the same kind of sensor that they used in the sandbox.

 

1
1
2
2

The second one is an installation by Urbane Screen called “320 Light”. This is a part of this installation which shows a sense of flow by small lines. It inspires me to show the magnetic field with magnetic induction lines. I hope I can achieve a cool effect.

3
3

The third one is a photography work of the magnetic field on the internet. It looks great. It elevates the physical experiment to art.

 

Progress:

I begin to study the nature of code. It is quite hard.

I find the sensor that I am going to use.

https://www.adafruit.com/product/3317

 

 

 

 

Automatic If Statement

The Ted talk and reading talks about something that I have never thought about. However, I believe this topic is very important. Just like Joy said in the speech that machine learning is becoming more and more relevant in people’s lives. If we have a biased system, someone will receive unequal treatment without anyone noticing, since it is the machine that makes the decision.

It seems that coders did this unintentionally; however, this unintentional ignorance of the black people is worth considering. In the old times, when a group of people was treated unequally, we can always find a paper that can be used as a proof of mistreatment. We can find the author of the paper to blame. Technology changes the game; coders are too far away and hard to trace. Usually, it is a group of people that make this kind of machine learning code, which makes it harder to find an individual to blame.

Coders are making the decisions. One way to solve this is to advocate for more inclusive codes. The other way is to study hard and become a coder yourself.

Many faces

Using Array, mouse interaction, sound, and object-oriented programming

youtube

1
1

 fullscreen

edit

The version with sound is in my Bracket. This is the version withought sound, becasue I don’t know how to use import sound into the web editor.

//visual
let frame;
let _a=0;
let faces=[];
//sound
let song;

function preload(){
song=loadSound(“My Song.mp3”);
}

function setup() {
createCanvas(windowWidth, windowHeight);
for(let j=0;j<height/89;j++){
faces[j]=[];
for(let i=0;i<width/55;i++){
faces[j][i]=new Face(i*55,j*89,sin(j)*i*2,cos(i));
}
}
song.play();
}

function draw() {
background(100);

for(let j=0;j<faces.length;j++){
for(let i=0;i<faces[j].length;i++){
faces[j][i].show();
faces[j][i].change();
faces[j][i].hover();
}
}
}

class Face{

constructor(x,y,a,b){
this.x=x;
this.y=y;
this.a=a;
this.b=b;
}

show(){
fill(255);
rect(this.x,this.y,55,89);
}

change(){
if(this.a<55){
fill(0);
noStroke();
rect(this.x,this.y,this.a, 89);
this.a=this.a+0.3;
this.b=55;
}
else{
fill(0);
noStroke();
rect(this.x,this.y,this.b, 89);
this.b=this.b-0.3;
if(this.b<0){
this.a=0;
}
}
}

hover(){
let d=dist(mouseX,mouseY,this.x+22.5, this.y+44.5);
if(d<52){
this.a=mouseX-this.x+30;
this.b=mouseY-this.y+30;
}}
}

Globalization: A double edged sword

I think it is not the technology that causes globalization; however, technology boosts globalization. Globalization has started when the human being starts to exist. People travel on land to meet people from other parts of the land. They begin to trade and exchange information. Later, when people are curious about what is beyond the sea, they start to make boats. When boats are made, people can travel to other continents. That is when the real globalization happens. The globalization that we are talking about nowadays is about the digitalization of everything. This great advance makes international collaborations and discussions happen.

 

I think globalization is good and bad at the same time. On one hand, globalization helps us to make a more connected world in both physical and digital form. These connections make inventions happen: people can easily build on other people’s progress. On the other hand, globalization is the practice of imperialism because the more powerful cultures will always annex the cultures of small countries to expand globally. The annexation is inevitable because the more powerful culture will always earn more chances to show their culture. In the end, people will forget the small cultures.

Hyper

I believe part of our thoughts is linear, while the other part is non-linear. According to their definition, linear thoughts means that the thoughts that are constant. This kind of thoughts are usually required in solving math questions: starting the thought from the condition, proceeding the thought with knowledge, and finally reaching the result. However, this linear way of thinking doesn’t work in a lot of areas; in fact, most of the time we need non-linear thoughts. For example, when you are generating ideas for an essay, you are actually creating links between everything that you have read, feel, and experienced. These kind of tasks, writing an essay or creating an artwork, can’t be done in a linear way, because our brain is jumping around in our memory. This kind of non-linear way of thinking happens in computers as well. RAM(random access memory) is the most important way of storing data in computers.

 

The digitalize of everything allows the huge data to happen. The passage talked about how huge pools of digital content increases understanding. It gives the example of google translation and Siri. The huge data is really a big deal right now for the creating Artificial Intelligence. Someone tried to mimic the evolution of human brains on computers but failed. The huge database is like a shortcut to artificial intelligence who has the access to every dialogue recorded. All the AI needs to do is to choose the best answer.

Calling the future

editor 

full screen

calling the future
calling the future

 

try type in other words

try hold your mouse

 

code:

//wall variable
var f=0;
var c=[0,10,20,30,40,50,60,70];
var frame=0;
var a=0;
var i=0;
var bright=100;

//text&ripple
let info;
let button;
let displayText;
var textbright=40;

function setup() {
createCanvas(940, 875);
background(0);
colorMode(HSB,100);
strokeWeight(3);
info=createInput(“NIKE”);
button=createButton(“ENTER”);
button.mousePressed(updateText);

}

function updateText(){
displayText=info.value();
}

function draw() {

leftWall();
rightWall();
timer();
display();

function leftWall(){
for(var i=0; i<940/50;i++){
stroke(c[i-13+a],100,bright);
line(i*20,0,i*20,-(875/940)*i*20+875);
}
}

function rightWall(){
for(var i=940/33; i<940/20;i++){
stroke(c[i-940/33-a],100,bright);
line(i*20,0,i*20,(875/940)*i*20);
}
}

function timer(){
if(frameCount-frame==5) {
a++;

frame=frameCount;
}
if(mouseIsPressed){
a=0;
bright=100;
}
else{
bright–;
textbright–;
}
}

function display(){
if(mouseIsPressed){
textbright+=6;
}
textSize(60);
fill(50,50,textbright);
text(displayText,940/2-70,875/2);
}

}

The jump

  • I believe there is a pattern in the evolution of different communication system: the jump to universality is always built on several steps of evolution and is usually a by-product of the last evolution.

 

  • There are two parts of the pattern. First, no one can invent the universal machine from nothing. People build on predecessor’s work, making a communication across time. Take the invention of Arabic numerals as an example, the first leap happens when people begin to count, instead of tallying. Then people tried to find the best way to represent numbers: along the way, we discarded the Roman symbols and adopted the symbols of Indian. At last, people removed limits in the Greek system and get the universal language of numbers. This great invention in human history is like a collaboration between people from different countries and a different time.

 

  • Secondly, the universality is seldom the object of the last evolution. Take the example of numerals again, Archimedes imposed a rule that no numbers can exceed the powers of a myriad myriad. Although the number is already very large and the larger numbers are hardly ever used, it still prevents his invention from being a universal machine. He could easily get a universal language by removing the rule; however, he maybe believes that by “avoid aspiring to infinite reach in order to make a convincing case”(Jumper).

     

  • The jump to universality in communication is very hard to achieve. I imagine that in the future there may be a greater universal machine that combines the existing universal machines: Alphabets, Arabic numerals, computers, and etc. When that universal machine is achieved, communication can have a greater leap.

 

 

Robert digital self-portriat

 

without mouse
without mouse

 

https://editor.p5js.org/zy1133/sketches/rkBWSbSqQ

function setup() {
createCanvas(400, 400);
}

function draw() {
background(255);
//out
line(90,180,110,300);
line(110,300,150,370);
line(150,370,185,380);
line(185,380,215,380);
line(215,380,250,370);
line(250,370,290,300);
line(290,300,320,120);
fill(51);
bezier(100,100,125,20,200,20,320,120);
bezier(100,100,80,100,80,100,90,180);

//eye
noFill();
bezier(130,190,150,186,150,186,165,190);
noFill();
bezier(235,190,250,186,250,186,270,190);
arc(147.5,195,35,35,3.4,6,open);
arc(252.5,195,35,35,3.4,6,open);
fill(20);
ellipse(mouseX-160.5,182,10,10);
ellipse(mouseX-55.5,182,10,10);
noFill();
bezier(140,160,145,158,145,158,165,160);
noFill();
bezier(260,160,255,158,255,158,235,160);

//nose
noFill();
bezier(200,225,225,270,200,262,185,260);

//mouth
noFill();
bezier(160,300,200,320,200,320,240,300);

//mouse
fill(255,125,0);
rect(295, 350, 27, 10);
}

Robert’s response to embodiment

The core of the embodiment idea is that “the mind is not only connected to the body but that the body influences the mind, is one of the more counter-intuitive ideas in cognitive science (Scientific American).” This psychology study shows that we think not only with our brains but also with our bodies. Our body has many valuable sensors to help us understand the world. Moreover, our mind is designed to fit into this body, that the metaphorical ideas of warmth, up, pressure are deeply programmed into our brains. Our brain thinks metaphorically without our notice.

 

We use emotions to think all the time. Our thoughts can vary significantly with different emotional states. We think the other people are nice when we are happy; we think other people are rude when we are down. Crazy people think the world is crazy. Emotion is like a glass with color that we were. When we are happy, we tend to pay more attention to happy things.

 

We typically think our mind control how we behave. However, studies have shown that our body can also control our mind. For example, one group of males is asked to go through a wide well-paved bridge, and the other male of people is asked to go through a bridge which looks dangerous. At the end of the bridge, there is a female experimenter waiting for them who asks them a few questions and give the participants her cellphone number for further questions. The result shows that the group of people who go through the dangerous bridge called the women significantly more than the other group. The explanation is that people who go through the dangerous bridge have a higher blood pressure and heart rate, which is the behavior of nervousness. The same kind of nervousness happens when we meet our love. So the body was telling the mind that all of those signals, and the mind respond to them, thinking that we find our true love.

 

what to change

In programming, variable means a value that can be changed. Variable in this context means a thing that needs to be changed in our lives. For example, we need to change the time we go to bed if we can’t get up in the morning.

 

Normally people believe that moral judgments are made by an individual’s experience, education, cultural backgrounds, etc. However, according to Haidt moral judgments are made from moral sentiments. For example, the feeling of happiness induced by fragrance has been shown to lead to better moral judgments. Thus, we don’t really know where all of those judgments come from. There will never be a clear line between good and evil because, in reality, a large amount of space is occupied by grey.

 

I think that technology has made moral judgments horrible in Here, I want to talk about a case happened in China. Chen Yi Fa was an internet famous. However,because she said something which should not be said about the history of China, she was completely banned from the internet. Her music, videos, photos, blogs, websites, literally everything is erased in 24 hours by the government and those people who hated her. They tried to find other evidence from the internet. That is when technology has made the moral judgments so dangerous: you can find everything about a person from the internet. Once something is on the internet, it can’t be erased, that it can only be hidden. There is no chance for regret.

 

Robert’s Response to Universal Machine

I really like the article and the video by Bret . “A Brief Rant On The Future of Interaction Design”  and Video of Inventing on Principal are very inspiring.

In Bret’s article, I thought he was going to talk about the future illustrated by the Microsoft Office which I think is lack of creativity. Basically, All the things described in the “future vision” are ipads and iphones. Surprisingly,  Bret felt the same way as I did! Then, he emphasizes the importance of hands.  “The sense of touch is essential to everything that humans have called “work” for millions of years”(Bret, A Brief Rant On The Future of Interaction Design). He describes what hands can really do: all the elaborate motions, which is very inspiring. Before reading the article, I knew there must be something else for the future, but I didn’t know what is missing. He pointed out a direction for me:   our hands and our body can physically interacts  with the world in 3D. All the things we are using now interact with us in 2D: we can only swipe on the screen, instead of squeezing it. The article makes me think what kind of machine can interact with us in a more efficient and less delusional way.

In the video, he shows several demos. The one about binary search resonates with me. He says that good programers are just good at playing computers in their heads. I completely agrees with him. In his demo, all the algorithms are put into examples immediately, which can be very helpful in programming, because the computer do all the simulating for you.

Computers & Human

I believe a computer is a machine which can operate certain tasks. In other words, a computer is a tool which extends human ability.

 

We, human beings, input complicated or advanced information to the computer. The computer will translate the language that we use into the language of 1 and 0 and manage the information by 1 and 0. At last, the computer will translate the 1 and 0 back the advanced languages. As a result, computers may consider us as aliens who restrain them in systems, such as windows and Mac. They may also think we are the ones who teach them languages.

 

AI is much more inclusive and powerful. The most important advancement is self-learning. Now, everything that computer is capable to do is programmed by people. If the computer can learn for themselves, they will be able to upgrade themselves and become much more intelligent than human-being. They will be able to interact with people by talking, just like we talk to each other, which is more inclusive.

MINI GOLF(Hands-Free Switch)

I built a mini golf.

If you successfully roll the ball into the hole, the circuit will be closed and the LED will light.

The Inside

Demonstration

Missing the target

 

Here is the process.

I find a ball
cover it with copper tape to make it conductive
copper ball!
Begin to build the core part—the cup I cover the bottom with copper and tape a cord onto the copper bottom
I cover one side(because I intended to tilt the cup) of the cup with copper and taped another code onto the copper.
the cord couldn’t be taped because there was a little surface size. SO I DID THIS
The breadboard and Arduino!
Tape the cup to the box with an angle
The inside