Being the last group to present made me both really excited and really nervous. I had met my group somewhere in the beginning of the year, and we decided to meet up again towards the end of the semester.

Our group was the Water Canary, an ITP alum group about water filtration in available for those in disaster settings. We initially decided we wanted to focus on collaboration and data sharing, but eventually we distilled it down to collaboration. We wanted a clean and simple idea, nothing that would require too much work or technology on hand. We settled on the idea of a giant lego construction.

But BEFORE we had come to this idea we wanted to:
1. Collaborate with the other group
2. Have an elaborate graduation ceremony while one of their group members got a tattoo constructed by the class.
3. Make it really snarky because we were all tired and grouchy with finals and this was our outlet. (This ended up being a quintessential part of our presentation)

After speaking to Todd however, we were convinced that a large group was not necessary for our idea.

We ended up going with our original lego idea (which in hindsight is very similar to the other group’s presentation). We bagged 10 lego pieces on every student’s chair, and sat them with their applications group.

It would proceed as follows.

Step 1:

Paired with the audio of “Things we hold true” from the 1st applications group.

Step 2:

Paired with the audio from the group that talked about skill sharing.

Step 3:

Paired with audio we created about each speaker interspersed with Fred harassing people to get off the stage or telling them they were “unique snowflakes”

The final compilation was beyond my expectations. We expected things to fall and break, so at the last minute, we decided to not give them a specific time limit to build the legos (which was a good call).
But what we did NOT expect was the competition. We had no idea how the legos would be assembled, we had no idea how tall it would get or how they would build on something that would inevitably be structurally unsound, but some how despite each fall, the the legos only came up higher. And I think that was a perfect metaphor for ITP.
We ended up with a circular 6 towered construction with chips of broken bits in the center. It was actually quite astounding.

And for our Final Step:

We brought in a sledge hammer (which we actually all practiced handling first) to smash the legos if they booed loud enough, and cheesy music plus a snarky insult if they chose not to.

In the end, we sledge hammered the lego masterpiece, which was, to us, a great climax to the end of the semester. We plan on leaving the legos on the floor early next semester. For now between the winter show and winter break, I’m holding on to “the master piece” in pieces.

//The rest of the quotes from the 1st apps group

I’m frightened and excited by how much I’m changing.
There is no truth.
I am not afraid that what comes next may be drastically different than what came before.
Our physical realm is a metaphor for what?
I despair for humanity. Most people are out only for themselves.
What is true? What is important– is that which reinvents its inventor.
We will never know truth – there is no truth.
We tell ourselves stories because they are– at the heart– true.
I want to know what it is I want.
People don’t take enough time to wonder. The best feeling is the feeling of inspiration, of finding something to be in awe.
Life is chaos, beautiful chaos. The act of recording the moment removes you from that moment.
That what… “Everything falls apart and come back together with every breath.” Love
I’m a good designer.
Uncertainty.
All art is created to earn a good fuck.
Running is only a matter of perspetive.
Make the best of what ya got. Guilt is for those who want.
I am afraid of disappointing.
Uncertainty is beautiful.
Only you can know for sure.
Ice cream is the truth!
What if…I become nothing? I become great?
Everything I do is a part of you.
Selflessness is a learned quality.
Love each other.
Everyone has an opportunity to be happy.
Whiskey is good.
All is the same.
ITP is the coolest program in the world.
Everyone is scared of something.
I’m uncovered as a rain of light falls on us. But that is okay.
Life is good and I’m a lucky motherfucker.
I’m finally excited about the future.
I am happy.
I’m fine.
Truth: my parents love me.
My identity and future endeavors are painfully intertwined.
I fear I won’t fit in or make any lasting connections here.
I have no idea hat will come next.
Uncertainty.
I believe the best way to go through things is naturally.
Each and every one of us has the capabilities to achieve what we want.
I can’t wait to meet you.
Your inevitable biography found itself here. Love yourself and you will be serving others.
Nature. But you can never trust yourself unless you are _____ . ?
I always feel either tired or manic.
Mondays are manic! Sundays are fun days.
I’m nervous I’ll create something mediocre after all this.
I’m waiting for awesome to happen.
The universe is expanding.
There is no truth — only perception!
I am slowly going crazy.
I believe you have set the bar VERY high my friends.
My mother is a genuine person.
I am not afraid of art.
I’m afraid of not being great.
I think I need to focus less on having solid consistent meaning and more on random experiences.
Everyone has a soulmate — (It’s a question of whether or not we find them.)
I forgot about the shy person inside of me. It’s been a long time.
Humans always follow the bright side and forget behind bad things.
Paris waits.
Everyone is an artist.
Existence of light/love. True.
Colorless green sleeps vigorously.
It’s time to play.
I believe that…I need to step up and take more time.
The only personal limit human has is the imagination.
Most people are decent. Too many people are narcissists.
The only constant is change.
I really enjoy rolled oats.
THE CAKE.
The next two years are, at the end, going to be full of projects which realize our as of now unrealized potential.
You all scare and inspire me.
I believe the true love for everyone.
That was an awesome piece, I hope ours is that good.
^ This is happening.
I can do anything I want…If I knew what I wanted.
When it’s all over and done with, it’s still just a phase.
I am lucky to have this opportunity to further my education and pursue a career I (will) love, rather than being restricted by traditional or economic concerns.
I don’t know anyone. I want to know someone.
I believe in staying positive.
You can’t fuck on flat-pack.
People see what they want to see; believe what they want to believe.
Is it true…Riding, skating, makes you free, if you let go. I have the jaguar spirit helping me. I have to listen to it…somehow.
muuuu.
I know that I know nothing, this makes me special.
Everyone’s truth is their own. Mine is yours.
You get out what you put in.
It’ll be fine.

This was the processing code as I presented in class.

String lines[];
PFont font;
float posX;
float posY;
float r;
float g;
float b;
float a;

ArrayList bubbles;


/////////SETUP

void setup() {
 size(1000,700);
 font = loadFont("EngraversGothicBT-Regular-12.vlw");
 bubbles = new ArrayList();


 lines =loadStrings("http://itp.nyu.edu/~jtl239/icm/php/listyText.txt");
 println("there are " + ((lines.length)-1) + " participants on the list!");
 for (int i=0; i < lines.length; i++) {

   //  println((lines[i]));
   //  println(trim(lines[i]).split("}"));//keeping it here
   float posX = random(0,width);
   float posY = random(0,height);

   String[] name = split(lines[i], "==");
   String[] onlyName = split(name[0], "<");
   println(name);
   //print(", ");
   //println(onlyName[0]);
  r = random(255);
  g = random(255);
  b = random(255);
  a = random(255);

   bubbles.add(new Bubble(onlyName[0], int(name[1]), posX, posY,(i/150.0)));

 }
}

/////////MOUSEPRESSED

void mousePressed() {
 //Loop through the array list, from BACK to FRONT (last drawn to first drawn)
 //and find out if the mouse clicked inside a circle

 Bubble bubble;
 for (int i=0; i < bubbles.size(); i++) {
   bubble = (Bubble)bubbles.get(i);
   bubble.displayName = false;
 }

 for (int i = bubbles.size()-1; i >= 0; i--) {
   bubble = (Bubble)bubbles.get(i);
   if (bubble.testHit(mouseX, mouseY)) {
     //println ("Hit on bubble: " + bubble.name); //if you do "i"
instead of "bubble.name" you will get the # of the bubble...
     bubble.displayName = true;
     i = -1; //Breaks the loop so we don't keep looking for hits, we
already got the top most one.
   }
 }
}

/////////DRAW

void draw() {
 smooth();
 background(200,200,200,100);
 Bubble bubble;
 for (int i=0; i < bubbles.size(); i++) {
   bubble = (Bubble)bubbles.get(i);
   bubble.draw();
   bubble.display();
   bubble.move(); //Making it move
 }

 for (int i=0; i < bubbles.size(); i++) {
   bubble = (Bubble)bubbles.get(i);
   bubble.drawName();
   //bubble.drawNum();
 }
}





/////////CLASS

class Bubble{
 String name;
 int numEmails;
 float posX, posY;
 float xspeed;
// color c;
 boolean displayName = false;
 //boolean displayNum = false;

 Bubble(String theName, int theNumEmails, float thePosX, float
thePosY, float theXSpeed){
   name = theName;
   numEmails = theNumEmails;
   posX = thePosX;
   posY = thePosY;
   xspeed = theXSpeed;
//    c = c_;
 }


/////////MOVE
 void move() {
   posY = posY - xspeed;
   if (posY < -height) {
     posY = height;
   }


   if (mouseX > ((width/3)*2)) {
     posX = posX + (xspeed/4);
   }

   if (mouseX < (width/3)) {
     posX = posX - (xspeed/4);
   }

   else {
    posX = posX;
   }

   if (posX > width) {
     posX = 0;
   }
 }


/////////DISPLAY

 void display() {
    stroke(0,0,0,80);
    fill(255,255,255,150);
    ellipse(posX,posY, numEmails,numEmails);

 }

/////////DRAWNAME

 void drawName(){
  if (displayName){
    fill (4, 92, 113);
    textFont(font);
    text(name, posX, posY);

  }
 }

/////////TESTHIT

 boolean testHit(float mouseX, float mouseY){
  float d = dist(mouseX, mouseY, posX, posY);
  if (d <= (numEmails/2))
    return true;
  else
    return false;
 }

}

I ended up running the the code off a text file rather than the php code because it was just faster.
The link to the text is here: http://itp.nyu.edu/~jtl239/icm/php/listyText.txt
The php url is here: http://itp.nyu.edu/~jtl239/icm/php/listy.php

Alternate to the php link to see the most recent updates.

Here is the PHP code:

<?php
$imap = imap_open("{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX", "itplist.printer", "721broadway");
$message_count = imap_num_msg($imap);
$usercount = array();
for ($i = 1; $i <= $message_count; ++$i) {
  $header = imap_header($imap, $i);  
  if (empty($usercount[$header->fromaddress]))
  {
    $usercount[$header->fromaddress] = 1;
  }
  else
  {
    $usercount[$header->fromaddress]++;
  }
  //echo date("jS F Y", $header->udate) . "|" . $header->fromaddress . "|" . $header->subject . "\n";
}
foreach ($usercount as $key => $value)  
{  
  //print $key . "==" . $value . "\n";
  print $key;
}
imap_close($imap);

Edit: Going through my email for the past few weeks, I realize that I forgot to mention how much help I had gotten through the process.
It started with Shiffman’s code that fetched emailed through processing.
Next I spoke with Meredith, who suggested I speak directly to shiffman.
Shiffman helped orient me in a better direction and pointed me to Gabriela, who had a similar idea in mind.
Gabriela had the php chunk of the code done and fed back into processing.
With some help from Avery, Liesje, and Craig the php was filtered to yield only what was needed.
Zeven gave me a much needed review and beginnings to the processing side of the code.
Che-wei advised with the visualizing, and Craig gave some more last minute technical guidance.
Ginny and Kimi also had sample code that I learned a lot from.

Had anyone been missing in this chain of help, I wouldn’t have completed the code to where it is now. I’m grateful for all the willing help there is at ITP. <3

This week we learned basic html, css, and php. Because I have had experience with some simple web designing I decided to really have fun with this assignment. A few members of my last few groups decided to make a 90s styled webpage dedicated to Alvin, who’s birthday happened to fall on our last day of commlab.
Jen designed the the look of the front page in photoshop and found links to all the priceless and iconic gifs. Avery coded it together, and I made the diary page.
From there ideas sort of kept spiraling out and before we knew it we had a webpage, a cake, and an LED crown. I thought it was fitting because each was fairly representative of ourselves.

But anyhoo, this is the webpage: http://averymax.com/life-of-alvin/
It was also pretty hilarious that Alvin clearly stated before hand that he was a fan of absolute minimalism before we had a chance to present ours.

Video footage of the moment

Alvin’s Secret from Jen Ho on Vimeo.

Thanks Marianne for helping us go last!

And just as some proof that the page is as we planned; this is the design the webpage was based off of:

Our RGB color mixer has been through many stages and changes. I love our idea because it takes a very simple digital concept, and brings it into the physical world as an elegant creation. On the downside, because we had gone through so many changes, we ended up running short on time.

Idea 1: Grass space
Our very first idea was to move clear plastic tubing with servo motors like so:

The idea was to have tubes lit with LEDs mounted on the ceiling that would gravitate towards an individual that walked below it.

We immediately ran into several problems.
1. We couldn’t control the bending direction of the noodles. They tended to bend in the direction the tube had been coiled.
2. Servo controls would have been extremely noisy, not to mention complicated.
2a. Not to mention we wanted a graduated bending of the noodles.
3. We turned to electromagnets, but Liesje surfaced a whole area of problems with magnets sticking to each other.

Because of the multitudes of problems, we decided to drop the idea.

We brainstormed for the next few weeks. We realized we spent way too long brainstorming.
But we ran through these iterations.


We had hit upon one idea that we really liked– an RGB color mixer.
We just had to figure out the interaction portion.

Eventually we settled on the idea of a simple cube with 3 sensors to control the output.
We carefully decided what materials to use before purchasing, but we decided on a frosty acrylic cube with 3 HotPot linear potentiometers in a box of R, G, B, and White LEDs rather than a single RGB led. We decided on white because we found that mixing RGB manually for White is actually technically difficult, so we had wanted to fake it with white LEDs.

From here on out we ran into a new set of problems to overcome.
1. Wiring and Organizing the LEDs

Bad planning here. Eventually we color coded the wires and rearranged the LED pattern more efficiently.

2. How to wire and power 100 LEDs in parallel.

The wiring was complicated, but we came to this conclusion. The powering was more tricky, it required math and some trial and error. We used the bench power supply to figure out how many amps we would need, and subsequently what power adapter to buy. We used some basic math to figure out what resistors we would need.

3. And making the box

We haven’t completed the box just yet, but we have the panels. Unfortunately we stupidly glued the pieces together incorrectly, so that put our entire construction on hold. We also decided to have the LEDs sit on a grid on a side of a reflective acrylic sheet rather than maxing a cluster or box of LEDs.

Oddly enough, code was not a problem.

int potPin1 = 0;   // select the input pin for the potentiometer
int ledPin1 = 11;   // select the pin for the LED

int potPin2 = 1;
int ledPin2 = 10;

int potPin3 = 2;
int ledPin3 = 9;

int val1 = 0;      // variable to store the value coming from the sensor
int val2 = 0;
int val3 = 0;

void setup() {
 Serial.begin(9600);
 pinMode(ledPin1, OUTPUT);
 pinMode(ledPin2, OUTPUT);
 pinMode(ledPin3, OUTPUT);
}

void loop() {
 val1 = analogRead(potPin1);    // read the value from the sensor,
between 0 - 1024
 val2 = analogRead(potPin2);    // read the value from the sensor,
between 0 - 1024
 val3 = analogRead(potPin3);    // read the value from the sensor,
between 0 - 1024


 analogWrite(ledPin1, val1/4); // analogWrite can be between 0-255
 analogWrite(ledPin2, val2/4);
 analogWrite(ledPin3, val3/4);

Serial.print("R: ");
 Serial.print(val1/4);      // print the pot value back to the
debugger pane (devided by 4 to make sense to us)
Serial.print("  ");
Serial.print("G: ");
 Serial.print(val2/4);      // print the pot value back to the
debugger pane (devided by 4 to make sense to us)
Serial.print("  ");
Serial.print("B: ");
 Serial.println(val3/4);      // print the pot value back to the
debugger pane (devided by 4 to make sense to us)
 delay(200);
}

At this point in the code we still hadn’t yet decided how to code the White LEDs.

All in all, though the project has yet to be completed, I’m glad we took our time to decide on something we all liked. It was an incredibly fun process despite the fact that I had CommLab and my applications presentation at the same time. It still feels like my semester ended with a bang.

Next steps:
1. Make the box
2. wire up the 100 LED sheet
3. attach the pots
4. upload the code and we should be good to go. (and maybe some more photos)

How to Make a Hippopotamus Sandwich from Jen Ho on Vimeo.

I had taken a class for After Effects a few years ago, and this project was mostly about remembering all the shortcuts. It was a bit frustrating knowing what I COULD do, but being unable to remember HOW to do it. But I still had fun with the program.
Our inspiration behind our video was Shel Silverstein’s “A Recipe for a Hippopotamus Sandwich.” We felt it was a straightforward visualization and still a significant part of our childhood. (At least mine)

RECIPE FOR A HIPPOPOTAMUS SANDWICH
-by Shel Silverstein

A hippo sandwich is easy to make.
All you do is simply take
One slice of bread,
One slice of cake,
Some mayonaise,
One onion ring,
One hippopotamus,
One piece of string,
A dash of pepper–
That ought to do it,
And now comes the problem… Biting into it!

It’s been a while and I have fallen seriously behind in my updates!
In reverse order from most recent to least recent:

Movie Project – The Aperture

The Aperture from Alvin Chang on Vimeo.

Sound Project
Listen here

Stop-motion Animation – Paper Mode

Paper Mode from Alvin Chang on Vimeo.

All my projects have been a blast. I had a tendency to stick with the same partner, but I’m proud of each project we produced. For the next project, we will actually not be partnering up again, unfortunately, but it will be a good opportunity to see what we can do separately.

Earlier in the semester I became overwhelmed with “the list.” It was like a never ending battle that I would never ever win. I thought of ways to make a consolation prize to myself, and thought about making a tree that would visualize the emails in an aesthetic way so the more emails there were, the more complete the tree would be.

Then towards the end of the semester, I decided the idea could be a reality. I had a bit of a struggle starting up the code. I had found code that would check email in processing, but ran into the problem of checking through the inbox every single time I ran the processing sketch, which would take a while. After contacting Dan Shiffman for help, he pointed me to Gabriela G. who also happened to be working on the same idea and had made more headway with code.

The code changed from strictly processing, to include php, a new email account used purely used to check the list, and a loadString code that would check the php code and run it in processing.

The next step of the process is getting the emails to be represented visually. At first, we wanted to try working with an algorithmic tree, but due to the time constraints and the fact that a tree insinuates the structure would be hierarchical, we dropped the idea. Instead, we’re now considering going with a garden idea where each student or each email topic could be a flower. In the case of the garden, it would probably be an email title rather than a person.

I would still like for the data to be visualized by person, because we can easily watch email topics cluster up, but we this would give us an idea of who writes the most. I am still thinking of alternate visuals, but for now, the garden idea works. I’ve tried running our data with another student’s visualization code, and it can be a little overwhelming for processing, so we do need to keep it simple.

Ultimately, we would like to be able to display this information on a screen where it could ideally run real time. We would like for the flowers/visual to be mouse-over-able for either a name or email topic, and as the responses increase the flower changes.

Further thoughts I was toying with was hiding ‘easter eggs’ in the code, so when specific people write to the list,  a rainbow will be added to the background, or the birds will fly across the screen, etc.

General idea:

Php link: http://itp.nyu.edu/~gg964/getheader.php

(Stores email data since Nov 8th)

PHP:

<?php

$connect_to = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX';
$mbox = imap_open($connect_to, "itplist.printer", "721broadway");

$headers = imap_headers($mbox);

if ($headers == false) {
   echo "Call failed<br />\n";
} else {
   foreach ($headers as $val) {
       echo $val . "\n";
   }
}

imap_close($mbox);
?>

Processing:

String lines[] = loadStrings("http://itp.nyu.edu/~gg964/getheader.php");

println("there are " + lines.length + " messages on the list!");

for (int i=0; i &lt; lines.length; i++) {

println(lines[i]);

}

Final Project concept. Explain the concept of your final project online. Write it and/or illustrate it so that readers who are not in this class can get a clear and concise idea of what you plan to make for the final.

My group’s final project is an interactive ceiling-hanging field of tubes/noodles that move in correspondence with pressure sensors on the floor. The idea is that as you move on the matt, the noodles will bend towards you in a friendly/creepy but still ambient way. The noodle movement would bend from the tension of the wires in the noodle and servo motors controlling the noodles. Ideally we would also incorporate light into the project, but as of this moment we’re still struggling with getting the noodles to bend in the correct direction.

A single noodle

Reading Response to Visual Intelligence:

Because of the chaos of the week Geetha and I decided to split the work by having one of us do a mindless activity (sewing) while the other read the reading out loud. Although it could be considered semi-cheating on our homework, I actually felt like it gave us more opportunities to discuss the readings. I’ve covered a lot of the reading material in a psychology perception class, and it gave me knowledge/insights I could share. But we still both found it interesting to me how our good our brain is at filling the gaps. The class I took in college mostly covered visual and auditory perception, but it was just day after day of realizing how everything we see and hear is affected by surrounding information.

For example, we had a lot of optical illusions to look at. One involved staring at a circle with a smaller circle to the right or left. At a certain distance from the page, the smaller circle falls into our blind spot, and instead of seeing nothing, our brain fills in the information for us with the surrounding picture.

Even with auditory information, when we see someone mouthing the words “dah” but we hear “bah” we end up seeing what we hear. Or even with songs in foreign languages paired with similar but mismatched captioning makes us think we hear what we read.

Example: http://www.youtube.com/watch?v=sdyC1BrQd6g

Lab:

This lab was very relevant to my group’s media controller because we are working with an accelerometer to detect handshake wave patterns to initiate a contact swap. We went over this lab together to all get comfortable with the basic idea of the code. It helped one of us understood the code fluently enough to explain it to us.

Step one of gibberish

Step 2 of gibberish

More gibberish (ASCII)

Visualizing the accelerometer movement

At this point we tried to make the lab more relevant to our project and started with an attempt to visualize our accelerometer data.

Data starting to make sense (x, y, z, switch)

Our x, y, z values

After a few more edits we ended up testing various people’s handshakes then lining them up in photoshop to compare the similiarities/differences. But this was before we parsed our data.

Handshakes

http://itp.nyu.edu/~jtl239/icm/week5/index.html

© 2012 ITPeed Suffusion theme by Sayontan Sinha