
﻿ My work is about the behaviors that we all engage in unconsciously , on a collective level . And what I mean by that , it 's the behaviors that we 're in denial about , and the ones that operate below the surface of our daily awareness . And as individuals , we all do these things , all the time , everyday . It 's like when you 're mean to your wife because you 're mad at somebody else . Or when you drink a little too much at a party just out of anxiety . Or when you overeat because your feelings are hurt , or whatever . And when we do these kind of things , when 300 million people do unconscious behaviors , then it can add up to a catastrophic consequence that nobody wants , and no one intended . And that 's what I look at with my photographic work . This is an image I just recently completed , that is , when you stand back at a distance , it looks like some kind of neo-gothic , cartoon image of a factory spewing out pollution . And as you get a little bit closer , it starts looking like lots of pipes , like maybe a chemical plant , or a refinery , or maybe a hellish freeway interchange . And as you get all the way up close , you realize that it 's actually made of lots and lots of plastic cups . And in fact , this is one million plastic cups , which is the number of plastic cups that are used on airline flights in the United States every six hours . We use four million cups a day on airline flights , and virtually none of them are reused or recycled ; they just do n't do that in that industry . Now that number is dwarfed by the number of paper cups we use every day , and that is 40 million cups a day for hot beverages , most of which is coffee . I could n't fit 40 million cups on a canvas , but I was able to put 410,000 . That 's what 410,000 cups looks like . That 's 15 minutes of our cup consumption . And if you could actually stack up that many cups in real life , that 's the size it would be . And there 's an hour 's worth of our cups . And there 's a day 's worth of our cups . You can still see the little people way down there . That 's as high as a 42-story building , and I put the Statue of Liberty in there as a scale reference . Speaking of justice , there 's another phenomenon going on in our culture that I find deeply troubling , and that is that America right now has the largest percentage of its population in prison of any country on Earth . One out of four people , one out of four humans in prison are Americans , imprisoned in our country . And I wanted to show the number . The number is 2.3 million Americans were incarcerated in 2005. And that 's gone up since then , but we do n't have the numbers yet . So I wanted to show 2.3 million prison uniforms , and in the actual print of this piece , each uniform is the size of a nickel on its edge . They 're tiny , they 're barely visible as a piece of material , and to show 2.3 million of them required a canvas that was larger than any printer in the world would print . And so I had to divide it up into multiple panels that are 10 feet tall by 25 feet wide . This is that piece installed in a gallery in New York ; those are my parents looking at the piece . ( Laughter ) Every time I look at this piece , I always wonder if my mom 's whispering to my dad , " He finally folded his laundry . " ( Laughter ) I want to show you some pieces now that are about addiction . And this particular one is about cigarette addiction . I wanted to make a piece that shows the actual number of Americans who die from cigarette smoking . More than 400,000 people die in the United States every year from smoking cigarettes . And so this piece is made up of lots and lots of boxes of cigarettes . And , as you slowly step back , you see that it 's a painting by Van Gogh , called " Skull with Cigarette . " It 's a strange thing to think about , that on 9/11 , when that tragedy happened , 3,000 Americans died , and do you remember the response ? It reverberated around the world , and will continue to reverberate through time . It will be something that we talk about in 100 years . And yet on that same day , 1,100 Americans died from smoking . And the day after that , another 1,100 Americans died from smoking . And every single day since then , 1,100 Americans have died , and today , 1,100 Americans are dying from cigarette smoking . And we are n't talking about it ; we dismiss it . The tobacco lobby , it 's too strong . We just dismiss it out of our consciousness . And knowing what we know about the destructive power of cigarettes , we continue to allow our children , our sons and daughters , to be in the presence of the influences that start them smoking . And this is what the next piece is about . This is just lots and lots of cigarettes : 65,000 cigarettes , which is equal to the number of teenagers who will start smoking this month , and every month in the US . More than 700,000 children in the United States aged 18 and under begin smoking every year . One more strange epidemic in the United States that I want to acquaint you with is this phenomenon of abuse and misuse of prescription drugs . This is an image I 've made out of lots and lots of Vicodin -- well , actually I only had one Vicodin that I scanned lots and lots of times . ( Laughter ) And so as you stand back you see 213,000 Vicodin pills , which is the number of hospital emergency room visits yearly in the United States , attributable to abuse and misuse of prescription painkillers and anti-anxiety medications . One-third of all drug overdoses in the U. S. -- and that includes cocaine , heroin , alcohol , everything -- one-third of drug overdoses are prescription medications . A strange phenomenon . This is a piece that I just recently completed about another tragic phenomenon . And that is the phenomenon , this growing obsession we have with breast augmentation surgery . 384,000 women , American women , last year went in for elective breast augmentation surgery . It 's rapidly becoming the most popular high school graduation gift , given to young girls who are about to go off to college . So I made this image out of Barbie dolls , and so as you stand back you see this kind of floral pattern , and as you get all the way back , you see 32,000 Barbie dolls , which represents the number of breast augmentation surgeries that are performed in the U. S. each month . The vast majority of those are on women under the age of 21. And strangely enough , the only plastic surgery that is more popular than breast augmentation is liposuction , and most of that is being done by men . Now , I want to emphasize that these are just examples . I 'm not holding these out as being the biggest issues . They 're just examples . And the reason that I do this , it 's because I have this fear that we are n't feeling enough as a culture right now . There 's this kind of anesthesia in America at the moment . We 've lost our sense of outrage , our anger and our grief about what 's going on in our culture right now , what 's going on in our country , the atrocities that are being committed in our names around the world . They 've gone missing ; these feelings have gone missing . Our cultural joy , our national joy is nowhere to be seen . And one of the causes of this , I think , is that as each of us attempts to build this new kind of world view , this holoptical world view , this holographic image that we 're all trying to create in our mind of the inter-connection of things : the environmental footprints 1,000 miles away of the things that we buy ; the social consequences 10,000 miles away of the daily decisions that we make as consumers . As we try to build this view , and try to educate ourselves about the enormity of our culture , the information that we have to work with is these gigantic numbers : numbers in the millions , in the hundreds of millions , in the billions and now in the trillions . Bush 's new budget is in the trillions , and these are numbers that our brain just does n't have the ability to comprehend . We ca n't make meaning out of these enormous statistics . And so that 's what I 'm trying to do with my work , is to take these numbers , these statistics from the raw language of data , and to translate them into a more universal visual language , that can be felt . Because my belief is , if we can feel these issues , if we can feel these things more deeply , then they 'll matter to us more than they do now . And if we can find that , then we 'll be able to find within each one of us what it is that we need to find to face the big question , which is : How do we change ? That , to me , is the big question that we face as a people right now : How do we change ? How do we change as a culture , and how do we each individually take responsibility for the one piece of the solution that we are in charge of , and that is our own behavior ? My belief is that you do n't have to make yourself bad to look at these issues . I 'm not pointing the finger at America in a blaming way . I 'm simply saying , this is who we are right now . And if there are things that we see that we do n't like about our culture , then we have a choice . The degree of integrity that each of us can bring to the surface , to bring to this question , the depth of character that we can summon as we show up for the question of how do we change . It 's already defining us as individuals and as a nation , and it will continue to do that on into the future . And it will profoundly affect the well-being , the quality of life , of the billions of people who are going to inherit the results of our decisions . I 'm not speaking abstractly about this , I 'm speaking -- this is who we are in this room . Right now in this moment . Thank you and good afternoon . ( Applause ) 