October 2009
10 posts
I was incredibly honored to not only attend, but to address the Pop!Tech conference over the past few days in Camden, Maine. The accomplishments, insight and creativity of the attendees was staggering, inspiring and frequently chilling.
Slipping back into New York a few thoughts have coalesced from the dizzying speed and scope of the past 3 days. Surrounded by with luminaries like Michael Pollan, Chris Jordan, John Fetterman and Dan Nocera it begins to seem obvious that the only checkpoint for consumption, production and waste is with the individual. From an energy, packaging and food perspective, the inputs and outputs are what matters. Government regulation and legislation is a pipe dream, so how do you create the societal will to change these behaviors inside and outside of the choir?
In a great presentation about networks, James Fowler forgave all of us for not being able to do this on our own. Like happiness or weight gain in a network, the new patterns of behavior must be adopted en masse to succeed and spread.
Speaking with Chris Jordan about the pacific gyre and his incredibly troubling albatross series, I start to wonder if it might not be better to just remove all the trash cans in New York City. Steve Barr repeated a glib quote that the best way to improve the nations schools would be to “make private schools illegal” and it’s tough to argue with the logic. Jordan’s work exists in part because the sanitation system works too well. We have no sense of the enormity of our collective consumption. Occasionally, a garbage can overflows in SoHo, but for the most part, our waste is quickly and efficiently shepherded out of sight.
If the damage is done the moment a plastic water bottle is created, it seems like a slim difference between whether it’s recycled or zipped off to a landfill or dropped on the ground. Perhaps the true vastness of consumer society can only be visible in the light of a good old fashioned sanitation strike, and I wonder if it’s not a quick path to collective disgust with how little concern we pay to our trash. I have recycled for as long as I can remember, but it no longer seems like baseline good behavior.
On a much more upbeat note, I encourage you to familiarize yourself with the outstanding work being done by new pals Kacie Kinzer, Zach Lieberman, Marije Vogelzang and Gideon Obarzanek.
You can visit my presentation at poptech.feltron.com or read a synopsis of the talk.
![]()
My first success at envisioning an output and realizing it with Processing. After learning about the random() function and creating a field of randomly placed, sized and colored dots, I attempted to try and control the size of the dots in a way that would create a circular overall shape.
After numerous trials and errors, I found that my calculations for determining distance from the center of the canvas were flawed, and all resulted in rectangular boundaries. To get the circular result, I would have to apply the square root and square functions to implement the pythagorean theorem.
Finally, I added an if() statement to crop out spots from appearing outside the bounds of the circle, and created the following animation.
import processing.opengl.*;
void setup(){
size(640, 480, OPENGL);
background(255);
noStroke();
smooth();
}
void draw(){
float s = random(-200,200);
float t = random(-200,200);
if(abs(sqrt(sq(s)+sq(t)))<200){
fill(random(255),random(255),random(255));
ellipse(width/2+s, height/2+t, abs(sqrt(sq(s)+sq(t))-200)*.25, abs(sqrt(sq(s)+sq(t))-200)*.25);
// saveFrame(“circleDots-####.png”);
}
}
Update: Aaron Meyers has weighed in with some extremely elegant updates to my crufty code. Of special note, he points out that the P2D renderer has much better anti-aliasing, and that there is a built in dist() function for determining distances. Thanks Aaron!
import processing.opengl.*;
float radius = 200;
void setup(){
size(640, 480, P2D);
background(255);
noStroke();
smooth();
}
void draw(){
float s = width/2 + random(-radius,radius);
float t = height/2 + random(-radius,radius);
float distFromCenter = dist(s, t, width/2, height/2);
if (distFromCenter < radius) {
fill(random(255), random(255), random(255));
ellipse(s, t, (distFromCenter-radius) * .25,
(distFromCenter-radius) * .25);
}
}