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!

© 2012 ITPeed Suffusion theme by Sayontan Sinha