
﻿ I 'm going to take you on a journey very quickly . To explain the wish , I 'm going to have to take you somewhere which many people have n't been , and that 's around the world . When I was about 24 years old , Kate Store and myself started an organization to get architects and designers involved in humanitarian work . Not only about responding to natural disasters , but involved in systemic issues . We believed that where the resources and expertise are scarce , innovative , sustainable design can really make a difference in people 's lives . So this all began my -- I started my life as an architect , or training as an architect , and I was always interested in socially responsible design , and how you can really make an impact . But when I went to architectural school , it seemed that I was the black sheep in the family . Many architects seemed to think that when you design , you design a jewel , and it 's a jewel that you try and crave for . Whereas I felt that when you design , you either improve or you create a detriment to the community in which you 're designing in . So you 're not just doing a building for the residents or for the people who are going to use it , but for the community as a whole . And in 1999 , we started by responding to the issue of the housing crisis for returning refugees in Kosovo and I did n't know what I was doing , like I say , mid-20s , and I 'm the , I 'm the Internet generation , so we started a website . We put a call out there , and to my surprise in a couple of months we had hundreds of entries from around the world . That led to a number of prototypes being built and really experimenting with some ideas . Two years later we started doing a project on developing mobile health clinics in sub-Saharan Africa , responding to the HIV/AIDS pandemic . That -- that led to 550 entries from 53 countries . We also have designers from around the world that participate . And we had an exhibit of work that followed that . 2004 was the tipping point for us . We started responding to natural disasters and getting involved in Iran and Bam , also following up on our work in Africa . Working within the United States , most people look at poverty and they see the face of a foreigner , but go live -- I live in Bozeman , Montana -- go up to the north plains on the reservations , or go down to Alabama or Mississippi pre-Katrina , and I could have shown you places that have far worse conditions than many developing countries I 've been to . So we got involved in and worked in inner cities and elsewhere . And then also I will go into some more projects . 2005 Mother Nature kicked our arse . I think we can pretty much assume that 2005 was a horrific year when it comes to natural disasters . And because of the Internet , and because of connections to blogs and so forth , within literally hours of the tsunami , we were already raising funds , getting involved , working with people on the ground . We run from a couple of laptops in the first couple of days , I had 4,000 emails from people needing help . So we began to get involved in projects there , and I 'll talk about some others . And then of course , this year we 've been responding to Katrina , as well as following up on our reconstruction works . This is a brief overview . In 2004 , I really could n't manage the number of people who wanted to help , or the number of requests that I was getting . It was all coming into my laptop and cell phone . So we decided to embrace an open -- basically an open source model of business , that anyone , anywhere in the world , could start a local chapter , and they can get involved in local problems . Because I believe there is no such thing as Utopia . All problems are local . All solutions are local . So , and that means , you know , somebody who is based in , in Mississippi , knows more about Mississippi than I do . So what happened is , we used MeetUp and all these other kind of Internet tools , and we ended up having 40 chapters starting up , thousands of architects in 104 countries . So the , the bullet point -- sorry , I never do a suit , so I knew that I was going to take this off . OK , because I 'm going to do it very quick . So in the past seven years , this is n't just about nonprofit . What it showed me is that there 's a grassroots movement going on of socially responsible designers who really believe that this world has got a lot smaller , and that we have the opportunity -- not the responsibility , but the opportunity -- to really get involved in making change . ( Laughter ) I 'm adding that to my time . So what you do n't know is , we 've got these thousands of designers working around the world , connected basically by a website , and we have a staff of three . By doing something , the fact that nobody told us we could n't do it , we did it . And so there 's something to be said about naivete . So seven years later , we 've developed so that we 've got advocacy , instigation and implementation . We advocate for good design , not only through student workshops and lectures and public forums , op-eds , we have a book on humanitarian work , but also disaster mitigation and dealing with public policy . We can talk about FEMA , but that 's another talk . Instigation , developing ideas with communities and NGOs doing open-source design competitions . Referring , matchmaking with communities and then implementing -- actually going out there and doing the work , because when you invent , it 's never a reality until it 's built . So it 's really important that if we 're designing and trying to create change , we build that change . So here 's a select number of projects . Kosovo . This is Kosovo in '99 . We did an open design competition , like I said . It led to a whole variety of ideas , and this was n't about emergency shelter , but transitional shelter that would last five to 10 years , that would be placed next to the land the resident lived in , and that they would rebuild their own home . This was n't imposing an architecture on a community , this was giving them the tools and , and the space to allow them to rebuild and regrow the way they want to . We have from the sublime to the ridiculous , but they worked . This is an inflatable hemp house . It was built ; it works . This is a shipping container . Built and works . And a whole variety of ideas that not only dealt with architectural building , but also the issues of governance and the idea of creating communities through complex networks . So we 've engaged not just designers , but also , you know , a whole variety of technology-based professionals . Using rubble from destroyed homes to create new homes . Using strawbale construction , creating heat walls . And then something remarkable happened in '99 . We went to Africa , originally to look at the housing issue . Within three days , we realized the problem was not housing ; it was the growing pandemic of HIV/AIDS . And it was n't doctors telling us this ; it was actual villagers that we were staying with . And so we came up with the bright idea that instead of getting people to walk 10 , 15 kilometers to see doctors , you get the doctors to the people . And we started engaging the the medical community . And I thought , you know , we thought we were real bright , you know , sparks -- we 've come up with this great idea , mobile health clinics that can -- widely distributed throughout sub-Saharan Africa . And the community , the medical community there said , " We 've said this for the last decade . We know this . We just do n't know how to show this . " So in a way , we had taken a pre-existing need and shown solutions . And so again , we had a whole variety of ideas that came in . This one I personally love , because the idea that architecture is not just about solutions , but about raising awareness . This is a kenaf clinic . You get seed and you grow it in a plot of land , and then once -- and it grows 14 feet in a month . And on the fourth week , the doctors come and they mow out an area , put a tensile structure on the top and when the doctors have finished treating and seeing patients and villagers , you cut down the clinic and you eat it . It 's an Eat Your Own Clinic . ( Laughter ) So it 's dealing with the fact that if you have AIDS , you also need to have nutrition rates , and the idea that the idea of nutrition is as important as getting anti-retrovirals out there . So you know , this is a serious solution . This one I love . The idea is it 's not just a clinic -- it 's a community center . This looked at setting up trade routes and economic engines within the community , so it can be a self-sustaining project . Every one of these projects is sustainable . That 's not because I 'm a tree-hugging green person . It 's because when you live on four dollars a day , you 're living on survival and you have to be sustainable . You have to know where your energy is coming from . You have to know where your resource is coming from . And you have to keep the maintenance down . So this is about getting an economic engine , and then at night it turns into a movie theater . So it 's not an AIDS clinic . It 's a community center . So you can see ideas . And these ideas developed into prototypes , and they were eventually built . And currently as of this year , there are clinics rolling out in Nigeria and Kenya . From that we also developed Siyathemba , which was a project -- the community came to us and said , the problem is that the girls do n't have education . And we 're working in an area where young women between the ages of 16 and 24 have a 50 percent HIV/AIDS rate . And that 's not because they 're promiscuous , it 's because there 's no knowledge . And so we decided to look at the idea of sports and create a youth sports center that doubled as an HIV/AIDS outreach center , and the coaches of the girls ' team were also trained doctors . So that there would be a very slow way of developing kind of confidence in health care . And we picked nine finalists , and then those nine finalists were distributed throughout the entire region , and then the community picked their design . They said , this is our design , because it 's not only about engaging a community , it 's about empowering a community and about getting them to be a part of the rebuilding process . So the winning design is here , and then of course , we actually go and work with the community and the clients . So this is the designer . He 's out there working with the first ever women 's soccer team in Kwa-Zulu Natal , Siyathemba , and they can tell it better . Video : Well , my name is Sisi , because I work at the African center . I 'm a consultant and I 'm also the national football player for South Africa , Bafana Bafana , and I also play in the Vodacom League for the team called Tembisa , which has now changed to Siyathemba . This is our home ground . Cameron Sinclair : So I 'm going to show that later because I 'm running out of time . I can see Chris looking at me slyly . This was a connection , just a meeting with somebody who wanted to develop Africa 's first telemedicine center , in Tanzania . And we met , literally , a couple of months ago . We 've already developed a design , and the team is over there , working in partnership . This was a matchmaking , thanks to a couple of TEDsters : [ unclear ] Cheryl Heller and Andrew Zolli , who connected me with this amazing African woman . And we start construction in June , and it will be opened by TEDGlobal . So when you come to TEDGlobal , you can check it out . But what we 're known probably most for is dealing with disasters and development , and we 've been involved in a lot of issues , such as the tsunami and also things like Hurricane Katrina . This is a 370 dollar shelter that can be easily assembled . This is a community design . A community-designed community center . And what that means is we actually live and work with the community , and they 're part of the design process . The kids actually get involved in mapping out where the the community center should be , and then eventually , the community is actually , through skills training , end up building the building with us . Here is another school . This is what the U. N. gave these guys for six months -- 12 plastic tarps . This was in August . This was the replacement , and it 's supposed to last for two years . When the rain comes down , you ca n't hear a thing , and in the summer it 's about 140 degrees inside . So we said , if the rain 's coming down , let 's get fresh water . So every one of our schools have rain water collection systems , very low cost . A class , three classrooms and rainwater collection is five thousand dollars . This was raised by hot chocolate sales in Atlanta . It 's built by the parents of the kids . The kids are out there on-site , building the buildings . And it opened a couple of weeks ago , and there 's 600 kids that are now using the schools . ( Applause ) So , disaster hits home . We 've see the bad stories on CNN and Fox and all that , but we do n't see the good stories . Here is a community that got together and they said no to wait , to waiting . They formed a partnership , a diverse partnership of players to actually map out East Biloxi , to figure out who is getting involved . We 've had 1,500 volunteers rebuilding , rehabbing homes . Figuring out what FEMA regulations are , not waiting for them to dictate to us how you should rebuild . Working with residents , getting out -- them out of their homes , so they do n't get ill . This is what they 're cleaning up on their own . Designing housing . This house is going to go in , in a couple of weeks . This is a rehabbed home , done in four days. This is a utility room for a woman who is on a walker . She 's 70 years old . This is what FEMA gave her . 600 bucks , happened two days ago . We put together very quickly a washroom . It 's built , it 's running and she just started a business today , where she 's washing other peoples clothes . This is Shandra and the Calhouns . They 're photographers who have documented the Lower Ninth for the last 40 years . That was their home , and these are the photographs they took . And we 're helping , working with them to create a new building . Projects we 've done . Projects we 've been a part of , support . Why do n't aid agencies do this ? This is the U. N. tent . This is the new U. N. tent , just introduced this year . Quick to assemble . It 's got a flap , that 's the invention . It took 20 years to design this and get it implemented in the field . I was 12 years old . There 's a problem here . Luckily , we 're not alone . There are hundreds and hundreds and hundreds and hundreds and hundreds of architects and designers and inventors around the world that are getting involved in humanitarian work . More hemp houses -- it 's a theme in Japan apparently . I 'm not sure what they 're smoking . This is a grip clip designed by somebody who said , all you need is some way to attach membrane structures to physical support beams . This guy , designed for NASA -- is now doing housing . I 'm going to whip through this quickly , because I know I 've got only a couple of minutes . So this is all done in the last two years . I showed you something that took 20 years to do . And this is just a selection of things that got happened in -- that were built in the last couple of years . From Brazil to India , Mexico , Alabama , China , Israel , Palestine , Vietnam . The average age of a designer who gets involved in this project is 32 -- that 's how old I am . So it 's a young -- I just have to stop here , because Arup is in the room and this is the best-designed toilet in the world . If you 're ever , ever in India , go use this toilet . ( Laughter ) Chris Luebkeman will tell you why . I 'm sure that 's how he wanted to spend the party , but -- but the future is not going to be the sky-scraping cities of New York , but this . And when you look at this , you see crisis . What I see is many , many inventors . One billion people live in abject poverty . We hear about them all the time . Four billion live in growing but fragile economies . One in seven live in unplanned settlements . If we do nothing about the housing crisis that 's about to happen , in 20 years , one in three people will live in an unplanned settlement or a refugee camp . Look left , look right : one of you will be there . How do we improve the living standards of five billion people ? With 10 million solutions . So I wish to develop a community that actively embraces innovative and sustainable design to improve the living conditions for everyone . Chris Anderson : Wait a second . Wait a second . That 's your wish ? CS : That 's my wish . CA : That 's his wish ! ( Applause ) We started Architecture for Humanity with 700 dollars and a website . So Chris somehow decided to give me 100,000 dollars . So why not this many people ? Open-source architecture is the way to go . You have a diverse community of participants -- and we 're not just talking about inventors and designers , but we 're talking about the funding model . My role is not as a designer ; it 's a conduit between the design world and the humanitarian world . And what we need is something that replicates me globally , because I have n't slept in seven years . ( Laughter ) Secondly , what will this thing be ? Designers want to respond to issues of humanitarian crisis , but they do n't want some company in the West taking their idea and basically profiting from it . So Creative Commons has developed the developing nations license . And what that means that a designer can -- the Siyathemba project I showed was the first ever building to have a Creative Commons license on it . As soon as that is built , anyone in Africa or any developing nation can take the construction documents and replicate it for free . ( Applause ) So why not allow designers the opportunity to do this , but still protecting their rights , here ? We want to have a community where you can upload ideas , and those ideas can be tested in earthquake , in flood , in all sorts of austere environments . The reason that 's important is I do n't want to wait for the next Katrina to find out if my house works . That 's too late . We need to do it now . So doing that globally . And I want this whole thing to work multi-lingually . When you look at the face of an architect , most people think a gray-haired white guy . I do n't see that . I see the face of the world . So I want everyone from all over the planet , to be able to be a part of this design and development . The idea of needs-based competitions -- X-Prize for the other 98 percent , if you want to call it that . We also want to look at ways of matchmaking and putting funding partners together . And the idea of integrating manufacturers -- fab labs in every country . When I hear about the 100 dollar laptop and it 's going to educate every child , educate every designer in the world . Put one in every favela , every slum settlement , because you know what , innovation will happen . And I need to know that . It 's called the leap-back . We talk about leapfrog technologies . I write with Worldchanging , and the one thing we 've been talking about is , I learn more on the ground than I 've ever learned here . So let 's take those ideas , adapt them and we can use them . These ideas are supposed to have adaptable , they 're allowed to be -- they should have the potential for evolution , they should be developed by every nation on the world and useful for every nation on the world . What will it take ? There should be a sheet . I do n't have time to read this , because I 'm going to be yanked off . CA : Just leave it up there for a sec . CS : Well , what will it take ? You guys are smart . So it 's going to take a lot of computing power , because I want this to -- I want the idea that any laptop anywhere in the world can plug into the system and be able to not only participate in developing these designs , but utilize the designs . Also , a process of reviewing the designs . I want every Arup engineer in the world to check and make sure that we 're doing stuff that 's standing , because those guys are the best in the world . Plug . And so you know , I want these -- and I just should note , I have two laptops and one of them there , is there and that has 3000 designs on it . If I drop that laptop , what happens ? So it 's important to have these proven ideas put up there , easy to use , easy to get ahold of . My mom once said , there 's nothing worse than being all mouth and no trousers . ( Laughing ) I 'm fed up of talking about making change . You only make it by doing it . We 've changed FEMA guidelines . We 've changed public policy . We 've changed international response -- based on building things . So for me , it 's important that we create a real conduit for innovation , and that it 's free innovation . Think of free culture -- this is free innovation . Somebody said this a couple of years back . I will give points for those who know it , I think the man was maybe 25 years too early , so let 's do it . Thank you . ( Applause ) 