Okay. Good afternoon, ladies and gentlemen, and welcome to the Center for Strategic and International Studies. We are so pleased to have a very distinguished panel of speakers today. My name is Johanna Mendelson-Forman. I'm with the America's Program. On behalf of myself and my colleague, Heather Connelly of the Europe Program, we had decided to co-sponsor an event with our trustee, Henrietta Four, who is going to do most of the heavy lifting and hard work today, but I just wanted to open and welcome you. Our panelists, whose names appear there, and you have their biographies, will be introduced by Ms. Four, but I just wanted to tell you that on this sixth anniversary of the earthquake in Haiti, we feel this is a very appropriate moment to look back, but also more important to look forward. CSIS has had a long and abiding interest in working the Caribbean and also working with international donors partners, so we're pleased that you were able to join us today, and I will turn the panel over to my colleague and trustee, Henrietta Four. Thank you. Thank you very much, Johanna, and we are very proud of your programs here at CSIS. So thank you for doing this six-month anniversary for the Haiti earthquake. I just spoke to the ambassador, who you do not see on the panel today. Raymond Joseph is in Haiti. He is in Port-au-Prince. He has just come from the ceremony at the palace, honoring the six months, and today was a ceremony to thank the world, and so he asked me to carry a few thoughts to you, and here they are. People say that there is no progress, and yet President Clinton today in Haiti said that in his 30 years of experience, that Haiti is ahead of where the Asian tsunami reconstruction was at this point, that the Haitian people, the ambassador said, have been very patient, and that we are asking them to continue to be patient, that the first phase has been completed, that reconstruction starts now in the second phase, and that in approximately six weeks we should see a lot more things happening, that's his quote. So he wants to thank the people around the world for their goodwill and for their extraordinarily generous outpouring of help to the people of Haiti. So that is from the ambassador. So let me now begin with this panel. It is the six-month anniversary today, July 12, 2010, an important date after a 7.0 Richter scale earthquake destroyed Haiti's capital, Port-au-Prince, and many surrounding communities. Comparable scale of this disaster is even greater than the Asian tsunami in terms of the impact on one country, and it is the largest natural disaster recorded in the Western hemisphere. You know the statistics already, 230,000 people dead, 500,000 injured, 1.5 million displaced. Moving from crisis to recovery, Haiti is nothing new for these resilient people, but only a year and a half ago when I was administrator in USAID, and General Keane was also there, we visited Gonnaive, and we saw that four major hurricanes had wiped out the services that the town was under water, 6,000 people had been killed, and people were living on their rooftops. And today after the earthquake, Haitians are still recovering from the shock and trauma of this cataclysmic event. The city of Port-au-Prince remains a site of several thousand camps of internally displaced persons. The government is still operating out of temporary headquarters, and the country is still in a humanitarian recovery stage, rather than one of rebuilding. I visited in March with Presidents Clinton and President Bush and General Keane was also there, and what we saw was that there has been some progress, but not enough. In the last two decades, Haiti has been the scene of eight UN peace operations. The time of the earthquake, the UN's stabilization mission in Haiti, MINUSTA, was in its sixth year of operation. The mission had close to 7,000 soldiers and 2,000 police marked an important collaboration for the region's militaries in support of Haiti's rebirth. But in spite of all of the foreign assistance that's entered Haiti over the years, and this earthquake has prompted many, to proclaim that we must build back better. And so we have begun. The Clinton-Bush Haiti fund is focused on economic opportunity. The Interim Haiti Reconstruction Commission is focusing on rebuilding infrastructure and coordinating assistance among all to match with Haiti's own development plan. Our panel today is going to assess the concept of building back better and what it means in terms of humanitarian recovery. The international philanthropic support, the role of transatlantic partners have played in this massive effort to assist Haiti and Haitians. And I think all of us are feeling a sense of urgency, that the assistance is slow, but that we are all trying to help Haitians to rebuild their own lives. So let me introduce our panel. And let me begin on my left with General Keane. General Keane is the military deputy commander of the United States Southern Command in Miami, Florida. He is the second in command of one of the ten unified commands under the Department of Defense. He is a native of Kentucky. He was an infantry officer with 18 years in airborne status. His experience in Latin America includes assignments in Panama, Honduras, Brazil, Colombia, and as the commander of the U.S. Army South. His most recent position was the director of U.S. European Command Operations and Plan Center, thus UCOM Chief of Staff. The ambassador, unfortunately, is not with us today, Raymond Joseph, but I know that all of you know his fine background as a journalist and it has been our ambassador in Washington since March of 2004. Next on our panel is Sam Worthington, the president and CEO of Interaction. It is a coalition of United States-based international, non-governmental organizations focused on the world's poor and most vulnerable people, with more than 180 members working in every developing country. The U.S. public contributes about $6 billion annually to its members and the members themselves manage more than $4 billion in partnerships with the United States government. Before this, he was the National Executive Director and CEO for Plan USA, focused on child-centered community development, and he's been a good friend and good colleague of mine. Next, we have Dr. Antonio Dele-Thea, director international economic and financial affairs with the European Commission. Antonio has been director of international affairs at the EC's Directorate for General Economic and Financial Affairs with both authority for bilateral economic relations with non-EU countries and working with the key multilateral and regional economic development institutions. He also acts as the European Commission's financial sous-sherpa. He has most recently been an economic advisor to Romano Prodi, the previous European Commission president, and he is an associate professor of Applied Economics in the Basque Country University. He is currently on succumbent. We are hoping, Paul, I'm going to skip over you for a moment, because you're going to speak first. We are hoping that later we will be joined by Julissa Reynoso, who is the Deputy Assistant Secretary for Western Hemisphere Affairs. She's currently at the White House. She is in the Bureau for Western Hemisphere Affairs at the Department of State. She is an attorney by trade. She has recently been with Simpson Thatcher and Bartlett in New York, focusing on international arbitration and antitrust law. She has published widely in both Spanish and English. But let me turn first to our colleague from USAID. Paul Weisenfeld is in charge of the entire U.S. government approach to reconstruction and development. He is the Haiti Task Team Coordinator. I last saw Paul when he was Mission Director in Peru, and he and Administrator Shaw were just in Haiti on Friday. So Paul, if I may turn to you to tell us a bit about what you saw on the ground, what are the conditions, how is reconstruction coordination? Thank you. Thank you very much, Henrietta, and thank you to CIS for this opportunity. I guess one of the first things I'd note that I saw on the ground that I think is appropriate to highlight at the six-month commemoration is we saw the results of an enormous and successful humanitarian assistance effort. There was truly an international effort led by the United Nations. The United States took a major part. The European Union took a major part. And there was an enormous logistical support that was absolutely critical, led by our own forces of the United States military forces, the Department of Defense. It was led by General Keane here. And the results of that humanitarian assistance effort are still evident. We haven't seen a subsequent disaster related to waterborne disease in Haiti. And I think people here, as the media has talked a lot about the six-month commemoration, today you'll see that the statistics that we see things that potable water is 50% more available in Haiti today in Port of Prince today than it was before the earthquake. So I do think it's important to recognize the successful efforts. And the implementing partners in this effort were the NGO community represented today by Sam Worthington. In terms of the ongoing effort, which everyone is rightfully focused on, we saw, had the good fortune of traveling with Administrator Sean Friday, we saw that there is a lot going on. We saw transitional housing programs. There are close to 5,000 transitional houses that have now been erected in and around Port of Prince. And we saw one of the programs that we saw that was very inspiring is an effort to repair what are called on the ground yellow houses. There's an enormous habitability assessment process that started with support from engineers of the U.S. military forces in Haiti. They're assessing the building stock that's been damaged by the hurricane. Today, 170,000 structures have been assessed. 46% of them have been deemed structurally safe, and those are marked as greenhouses. 28% of them are marked as yellow houses, meaning houses that require minor repair, with about 24% red houses that require major repair or demolition. One of the things that we in USAID have launched together with other international partners is an effort to repair those houses. So we've seen what we saw on the ground was engineers working with Haitian masons, with Haitian engineers, with the Haitian ministry and involving the communities to repair these houses and encourage people to move back in. And that's a very heartening thing because at the end of the day, what we really want to do is rebuild communities. The IDP camps are a big issue that we saw that is still an overwhelming issue. I think Henrietta mentioned that there's still one and a half million people displaced in Port of Prince. And the effort going forward is going to have to focus in a very robust and aggressive way on helping those people move into better shelter. The hurricane season is that everyone knows has started in Haiti. And as I know, you'll hear General Keane say you don't need a vicious hurricane in Haiti, you just need a lot of rain in order to have a negative effect on people's lives and livelihoods and see the loss of life. So the effort moving forward has to involve moving people into transitional houses as quickly as possible, accelerating the process. The international community hopes to have 125,000 transitional shelters up by this time next year, and moving as many people as possible back into those greenhouses or yellow and red houses that have been repaired. I think another one of the efforts we saw on the ground in meetings with Prime Minister Belarive is that the Haitian government is interested in taking a lead role in some of these key obstacles. I'll highlight two obstacles and then turn it back over to my colleagues. One is rebel removal. One of the critical impediments to getting people out of the camps and into decent housing, whether it's the green, yellow or red houses or whether it's new transitional housing, is removing the vast quantities of rubble. We have 25 million cubic meters of rubble in Haiti in Port-au-Prince now. By comparison's sake, the World Trade Center in New York generated 560,000 cubic meters of Haiti, cubic meters of rubble. Again, in Haiti, it's 25 million cubic meters of rubble. It's just an enormous quantity of rubble that has to be removed. The absence of finding clear land is the significant impediment to moving people out of housing. The government of Haiti, the Prime Minister, told us while we were there, is that they are spending about $15 million over the next month of their own resources to bring in heavy equipment from the Dominican Republic to try and move, unblock the major thoroughfares, and that will free up roads for the removal of other rubble. That's a very hopeful sign. Coordination is another big issue because I think everyone knows the amount that has been pledged in Haiti is truly extraordinary. The donors pledged close to $10 billion. And it's easy to spend money fast. It's difficult to spend money effectively. We want to move forward quickly, but we want to make sure we're moving forward in the right direction. And if you want to do that and you want to ensure that it's sustainable and effective, we need leadership from the government of Haiti. The government of Haiti, as Henrietta mentioned, has created the Interim Haiti Reconstruction Commission, co-chaired by Prime Minister Bellarive and President Clinton. And they have already approved a number of projects going forward. And one of our efforts in the international community needs to be to support that commission with staff resources, with equipment resources, with technical expertise to enable them to play a leadership role in the planning and oversight of reconstruction resources to ensure that money is spent effectively and is transparent so that the international community can have confidence that the resources are going in a way that meaningfully affects and improves people's lives. So thanks again for this opportunity. Paul, I know that we will come back to you with questions about property titling and if that is also a problem. But let us turn now to General Keane. Thank you very much for holding this forum and asking South Common on behalf of General Frazier. I'm very pleased to represent US Southern Command. I would like to start by taking us back a little bit and putting some of my remarks in context. And I would refer to the photograph that's shown up here. This particular photo was taken a few weeks after the earthquake, and it's right outside of City Soleil. And the banner, if you can't read it up there, that is a soldier standing there as a Brazilian soldier. And the banner says, we guarantee the security for the reconstruction of Haiti. And that was the message, obviously, that Manusta and the UN forces were there to do. And thankfully, they were there because as our military, the US military and the other military forces that responded to the earthquake, it was indeed fortunate that the UN forces were there on the ground. They had been there for obviously for a number of years. And the conditions that they had set with respect to security enabled us to focus our efforts on humanitarian assistance. And the close collaboration and coordination that we had and enjoyed with both the UN civilian leadership, and particularly obviously with General Floriana Pashota from the Manusta Commander's role and now General Paul Cruz was extraordinary. And we were able to work side by side from the very first days. What's out of this picture is that this is a food distribution point, one of the first 16 points that was set up to feed all those in need throughout Port-au-Prince. And at the food distribution point were US paratroopers from the 82nd Airborne Division, standing side by side as they did on many places throughout Port-au-Prince with the UN military forces, in this case, handing out food. But in other cases, providing support to rubble clearing or to doing all sorts of humanitarian assistance tasks. And we were able to do our task from the Joint Task Force Haiti standpoint within the envelope of security that was provided by the UN forces there throughout the course of our time there. And as you know, at the height of the US Joint Task Force Haiti deployment, we had approximately 22,000 soldiers, sailors, airmen, Marines and Coast Guard men on about one February. We stood down Joint Task Force Haiti on one June. But we continue with about 500 soldiers from our National Guard led by the Louisiana National Guard in Haiti today. And they will be there for several more months doing a number of projects, what we call New Horizons exercises in support of USAID, as well as the government of Haiti and the UN efforts. And we are particularly focused those efforts in areas outside Port-au-Prince, go naïve, like Kaiser and other areas that while they weren't directly affected by the earthquake, they are impacted from the earthquake by the displaced persons that move to those areas, putting strange on the medical capacity in those areas as well as the schools. And we were building schools and we were providing medical assistance programs working with the NGOs in those particular areas. So I think the highlight of my time in Haiti is really captured by the close coordination and collaboration that we had working in support of our lead federal agency USAID, but all of our interagency, but in particular with our UN forces in the NGOs. And I've often said that what I learned from this experience was that the real scouts and soldiers for humanitarian assistance are our NGOs. They were the ones that were really doing the heavy lifting. And we were able to redeploy our military forces as quickly as we did from this devastating earthquake because of the capacity that they were able to respond and increase in their capacity as well as the response that the UN was able to put in place. I would like to talk just a second about what we are doing now, and what we are looking to do as we go down the road over the next few months. Clearly, from our perspective in terms of potential impacts of weather, whether it be tropical storms or disasters, it is a major concern to us that what could happen in the coming weeks or months. So we have worked very closely with USAID and the UN forces in Haiti to be prepared for a storm. And again, it doesn't take an earthquake. It just takes a lot of rain and a short period of time to create a major catastrophe as we saw in 2008 to respond to that. We've done a number of things to include working with forces on the ground to rehearse for contingencies, making determinations and examining what's currently in place and what capacity that they have and what we have in place that could respond very quickly and what we think we would have to bring to bear if we had something along the line of what we had in 2008 or even something worse than that. And we're doing a number of rehearsals, as I mentioned, both in Haiti as well as US Southern Command as well as with our joint staff to talk through these contingencies and what might be needed. And I know the United Nations has also done rehearsals with that regard. So what I can say is everyone is focused from the tactical to the strategic level on what could happen if we were to be faced with a major storm or even a lot of rain in a short period of time in Haiti in the coming weeks and months in order to allow, as the sign says, there the reconstruction efforts to continue during a very, very difficult period of time. So with that, I think I'll just turn it back over and take any questions you might have. Thank you. Thank you, General Keen. Well, Sam, you've had the perfect introduction for the nonprofit world and you've just completed a survey of where all of the NGOs are in Haiti. Will you tell us a bit about the NGO response, how the money is flowing through the system and how effective you think it's been? Well, thank you and thank you for the comments, General Keen, about the NGO community and good afternoon. To understand the context of Haiti, I think it is important to step back and look at a few basic common knowledge. One is the sense of scale. If I think a good way for people living in Washington DC is if you imagine every third or fourth building in Washington DC damaged people living out on the street and then multiply it times three, that's the scale that we're talking about. The other reality is that this was the poorest and remains the poorest country in the Western Hemisphere, 70% of the people in Port-au-Prince were in abject poverty before the earthquake. The other reality that we see, and this is in the 21st century disasters, is a massive public outreach caring from Europe, from North America, from this country that results in a big public engagement. And the last reality is that their world has created non-state actors that now play a crucial role in all global disasters. Many of these are professional institutions, interaction represents a large number of them. We are releasing today an accountability report for 38 organizations and the work that they have done since the beginning of the disaster until now. Others are institutions that have been in Haiti for decades going forward. We also have on our website a map at www.interaction.org, a map of all the major operational NGOs where they're working throughout the country, the type of projects they're doing and the clusters and the UN clusters that are involved in. I say all this because there is a significant responsibility that rests on the shoulder of the NGO community. In terms of interaction members, our members raised $978 million to date. They've spent $294 million on reconstruction efforts. These are all brand name organizations you'll recognize from the Red Cross to Catholic Relief Services to Care to the International Rescue Committee to Mercy Corps, other groups that are also present in this room. The organizations will be there for a long time. And because of this and because they know that resources are ultimately scarce and that public giving happens up front, over $500 million has been set aside for reconstruction. And our main fear is not one that we're spending too fast or too slow, but whether there will be enough resources left for the effect of reconstruction of Haiti because the burn rate in these camps is enormous. And we do have $1.69 million people still in camps. And as they slowly transition to Transitional Shelter, we will witness a reconstruction effort that is happening at the same time as ongoing relief. And that is not going to change anytime soon. One of the things that was significantly different from this disaster than the tsunami was the degree of coordination among the different actors. From an NGO perspective, it was the first time we set up an NGO coordination office 10 days after the earthquake. We had ongoing dialogue with South Com and US military working very closely within the UN headquarters and the cluster system with USAID. So from an operational sort of command and control coordination effort, this is the best we've seen. And yet the complexity of the disaster, the magnitude of the problem, the number of actors on the ground have made it very difficult. I think it's important to recognize that all systems were stretched. While we focus oftentimes on the government of Haiti and its limitations, the NGO community in essence has reached to some extent its limit of its capacity down here. And the issue is not, please spend more people down to Haiti. Are there enough highly qualified individuals who could handle a food distribution for 60,000 people for a month and have done this before, working with the military standing by, able to coordinate the thousands of volunteers in a camp as you manage the camp's health infrastructure or water sanitation infrastructure. These are jobs that are acquired over time and the professional global NGO community in many ways has remained as stretched as can. And we've seen some of our members move from 80 people on the ground for the earthquake to over 1000 at this point in time. And I'm just talking about one interaction member. The Interim Commission on the reconstruction of Haiti is a very positive step. I think our challenge is that it while it has been stood up, its capacity to coordinate still remains limited. We need greater resources invested into that capacity. The NGO community stands ready to put resources into the government of Haiti. Our space tends to be at the district and municipal level. In many ways, we are confronting a challenge by what has not happened. As Paul mentioned, it's the disease outbreaks that have not occurred. It's the access to clean water that is in place. It's shelter and so forth that exists in camps. And in many ways, this could be one of the distortions of aid. For some individuals, you've created conditions in the camps that were better than the slums they lived in beforehand. This has led to some extent to individuals coming within the camps. And yet, as the humanitarian community is our imperative to try to make life as easy as possible to individuals in very difficult circumstances. The next significant step is a very complex one. The world has significant difficulty dealing with an urban disaster. Urban disasters cannot be handled simply in different silos of activity, but there need to be some broad strategic planning. And while we do have this presidential commission on resettlement and it's beginning to look at the ways to move individuals, we still have a circumstance where individuals remain afraid to go back to their homes. Last estimate, there are 45,000 homes that were labeled green with individuals who had not yet migrated back to their homes. To some extent, this is understandable, given the shock of the earthquake. But this shows that it is not just about reconstructing buildings, but it's about rebuilding lives. It's enabling individuals to have a sense of economic well-being in places where they may be resettled, to have a sense that the roof over their head may be one that is secure and safe, that they can have a livelihood. And this is where it is crucial to talk about the rebuilding of Haiti and not just the rebuilding of the Port-au-Prince and other Laoghan affected earthquake areas, but rather an investment in jobs and a capacity of a country to lift itself. If you look at our map and see where the U.S. NGO community is working, it is all over the country. And it is crucial that relief efforts and the reconstruction efforts look at Haiti as a whole and invest ultimately in the Haitian people. And I think when we are talking about, to some extent, the NGO community being the front line of this disaster, the real front line, are the Haitian people. The work being done in the camps is being done by the Haitian people. Over 90 percent of all NGO staff are from Haiti. And it's ultimately the Haitian people who are moving that piece of rubble one person at a time in a cash for work program. And so I'll give you hopefully a general sense of our community, its work, and look forward to your questions. Thank you. Thank you very much, Sam. And I know we'll want to come back to your comment about running out of money, the pull of the long term and the short term. Antonio, let us turn to you for your thoughts from Europe. I know that you have focused on sanitation, on shelter, on transitional shelter, but you've also been thinking about the long term. So where are your priorities? Thank you very much for having invited the EU delegation and myself in particular. Let me add to the nice words of introduction that since a few months I'm Minister for Economic Affairs at the EU delegation here. So this explains why I participate in this in this forum. So coming back to the main subject, indeed, the approach that the the European Union has taken in this in this catastrophe has has been based on a quick assessment of the situation, which, in fact, as other speakers have have highlighted, it has been a major humanitarian humanitarian disaster. So a humanitarian component was key. It is more important than the Asian tsunami. So that's the first point. But the second and crucial point that was not the case in many other catastrophes is that in this in this one, there was almost a complete disruption of the country and the state. So the institutions of the Haitian state were struck, were destroyed, besides the human and physical losses of the of the governance of the country. The President's palace, the key ministries, parliament, judiciary were affected, which, of course, made more difficult to respond in a coordinated and effective way to the to the huge challenges that were they were facing. The third element that is important when looking back to it is that the the country was already in a very fragile situation. So it was not a normal country. It was a country with plenty of weaknesses and and these made even more difficult to respond. Fourthly, the international community, not not only the government and the state, was affected by the international community that was working on the ground, was also very much touched by the by the earthquake.  Our charge d'affaires was killed in the earthquake and as many others, many other delegations or many other representatives of the international community were in a situation of distress or even in capacity to to react and I mean all this led to a certain inability to respond as everyone would have liked to the gravity of the situation. So in this context, what was the EU response? I mean, again, it was geared to the to the main problems. The first one, as I said, it was a humanitarian and civil protection problem. The second one was reconstruction. Reconstruction, both physical and reconstruction of the state or at least support to the state, to the to the continued governance of the state. So in the first aspect, humanitarian aid, well, I will not enter in a beauty contest, but just a very few figures. Almost four million US dollars were released in 24 hours, 800 experts, 2,000 military personnel, 260 officers were posted to the on the ground. And they, of course, they didn't come by themselves. They brought with them, I mean, assets or urban search and rescue teams, advanced medical posts, water purification modules that were were absolutely necessary to face the immediate needs. But as you rightly said, besides this short-term humanitarian and civil civil protection element, we were also looking at the reconstruction of the state. Reconstruction, as I said, both in terms of physical assets, but also in terms of enabling the state to to pursue its activities. And this is a point that I would like to make. We were always under the principle that reconstruction cannot be done in on behalf of the Asian state. Reconstruction must be run by the Asian state. And this was a very important element that indeed, I mean, in the short term, there could be a price to be paid for that, but in the longer term was, in our opinion, a crucial because we know that after a while, the attention of the media will fade away. And it is of not much use to leave the country to a government that is not capable of running the day-to-day affairs. So we, from the beginning, we put a lot of emphasis on helping the government to restore its basic activities and being in the back seat, together with the military and the other international community donors. So and then, as for reconstruction, in accordance with the government of Haiti, we based our action on three main priorities. One was governance. Second was road infrastructure in order to enable the reintegration of the country and the delivery of the aid. It was crucial to restore the infrastructure. And third, to rebuild or to maintain the social services. So in, as I said, much of the aid was geared toward just helping the state to go on. So much of the big part of the aid was channeled through budget support just to let the country go on. I mean, to let the government keep on paying bills and service and provide the basic services. There was, of course, emergency aid. There was, of course, help to reconstruct physically the ministries and the posts of command. And then a point I would like to also to emphasize is that, to some extent, this capacity of the government to respond to the society's needs has been slightly hampered by the political situation and the fact that there are elections scheduled for the month of November. So again, we believe that it is important that HACI recovers its own normal political activity and democratic activity. And therefore, it is what part of our aid is also geared towards supporting the electoral process, both financially, but also technically. And, of course, in helping the state to restore and to recover and to continue delivering, we have provided significant technical assistance through our teams and through NGOs. So finally, the point of aid coordination. Indeed, as we all mentioned, it was an unprecedented challenge that the various components of the international community were facing. And it was a high responsibility because the generosity of both bilateral official aid but also the private aid in an unprecedented way could not be just disappointed. We know that it is our responsibility to make sure that people see that this is useful and therefore that this example can also be useful for the future. So we face important problems. On our side, it was also somewhat unprecedented. The need to coordinate the military and the civil parts of both humanitarian aid but also recovery. Of course, when we look backwards, the bottle is empty and half full. But as others have said, I mean, the half full is significant and can not despair us from the fact that indeed there is still a lot of suffering and there is still a lot to be done. So I think I will stay there. We have ourselves learned a few lessons. We have put in place and started improved cooperation methods within the EU for coordinating the assistance that is run by the European Commission from the European Union budget with that that comes from our member states. So we have initiated the new programming joint programming efforts but I mean, and also we have initiated new methods of coordinating with other donors. So all that has have been lessons that we have learned and that we hope that we will be useful both for the second stage of reconstruction of Haiti, but also for other cases that may appear in the in the future. Thank you. Thank you, Antonio. Let me ask our panel a couple of quick questions on what they think lies ahead so that we all have a shared sense of what the people on the ground can be expecting as well as those of us in the development community. So panelists in the area of housing, what can people look forward to? We have a number of issues on property rights, on rubble removal, on transitional housing. But there is a great number of people as Sam mentioned that are still in tent camps. So what do you see ahead? Paul? Fine. Well, I think what we see ahead is the need for a major planning effort. I think at one level is there's Port-au-Prince and then there are areas outside of Port-au-Prince because we had somewhere between 400 and 600,000 people migrated outside of Port-au-Prince. They present different challenges. But to start with Port-au-Prince, for instance, I think what we as the international community need to do is help the government develop a master plan. They need to have a vision of what they want Port-au-Prince to look like. Where do they see the residential neighborhoods? There are some camps that are in areas that are potentially viable as areas for new settlements, and there are others that are not because of the terrain. There need to be those kinds of master planning decisions made. There are some other key issues that have to be walked through. One of them I mentioned, others have mentioned is rubble removal. We really need to help them accelerate rubble removal in a robust way and there needs to be planning to do that, which includes things such as an increased number of disposal sites. There's one major disposal site, and that's a significant impediment. The roads that are being used for normal traffic are being used for rubble removal, and we need to help them plan out increased numbers of roads, increased numbers of rubble sites, crushers, a network of crushers around the city, so that you can reduce the amount of rubble that has to physically be moved. Land tenure you mentioned is a very, very complicated issue. I've heard the prime minister say that they had a pilot land tenure program in San Marc years ago, and they asked people to come forward and put forward their claims for land and the people in that one city, the numbers of claims that came in that one city exceeded the entire land mass of the country of Haiti. So working through those difficult property issues is really going to be a morass and we need to set up, and from our perspective, a community based way to allow people to register their claims and allow them to be adjudicated at a community level where people know who lives where, who owns what. Another complicating factor is beneficiary selection. 70% of the population of Port-au-Prince more or less were renters. So who and many of them lived in multiple family dwellings. The model being pursued by a lot of us, a lot of NGOs, are these transitional shelters which are things that are easy to put up in the, in the, to deal with the humanitarian imperative of getting people in more functional shelters as we worry about the rains. But if you had a plot of land that had a multi-family dwelling and five families living in several stories and several of them were renters and some were owners and you put up one transitional shelter who gets it. So there, there's, there is a long list of things that have to be worked through. At the same time I think we will see in the coming months, as I mentioned, we have 5,000 transitional shelters that have been put up. We have thousands and thousands of houses that have been assessed as habitable. So we're, we're going to start to see movement in the coming months. But we need to, in order to see, to really deal with the 1.6 million displaced people, we have to work through that complicated morassive issues. Thank you, Paul. Antonio, you mentioned the elections. Will they help or hurt this situation on housing? Well, I understand that land, land rights to some extent have also been the solution, the settlement of these rights has been also hindered by, by the pre electoral phase towards the presidential and the legislative process. So going through that may clarify the situation and may enable the government and the and the and parliament to focus on that and then clear the way for the solution or at least a betterment of the situation. And Sam, would you also weave in your thoughts about the health, the sanitation systems and school because we're coming up to the new school year? Well, President Praval had us as top priority getting people back to school. And there are in a lot of the camps now, child friendly spaces and school spaces for children to begin school to some extent associate of the camps. I think it was somewhere slightly more than 3,000 schools were destroyed. Many of these are unfortunately buildings where you look and there's a floor and then two feet above that floor. There's another floor. And you unfortunately know that there may still be a lot of bodies in that school. It will take a long time before we could begin to rebuild schools over over time. And this gets back to the question of rubble removal. It also has to do with the dealing of issues of human remains. The whole sense of how can a community feel that this is a safe space for their children to go to, especially those that have lost children and so forth. Sanitation and health overall, the big challenge is can we have the conditions to some extent that have been achieved in many of the camps become a reality for the rest of the city. And that will not happen overnight. It ultimately means in terms of health, the building of a ministry of health infrastructure from the top down, but also from the bottom up. The NGO community is less good at working directly at the top of ministry and building its capacity. And we leave that to nation states. But when it comes to frontline clinics and delivery systems of those front line clinics, cold chains for vaccines and so forth down to those clinics. That is an expertise that the NGO community is currently working with the government of Haiti with the Ministry of Health to help develop that infrastructure over time. In terms of land, I think it's important to give a sense of just how crowded some of these camps are. There are camps on median strips of roads. There are camps on very steep hills. People are living, you know, I've witnessed two sort of football soccer fields with about 5,000 people living on them. Space is at a premium. And this whole issue of how to find appropriate land and yes, there has been some resettlement of sites outside the city. But as Paul indicated, this will be a slow, complex process of working out land rights as it was in Ache and Indonesia. And it is not simply you can't simply go out there and rapidly build if you haven't worked out with individuals in a community what to do. And lastly, beyond all the planning that any of us will do, I think we have to acknowledge the ingenuity of the Haitian people of the individuals who will go back to their own plot to set up something. And some of the core logic behind transitional shelter is to give individuals something to work with to rebuild a home, recognizing that a fully reconstructed home will take time and that it will require extensive, some extensive urban planning, which is yet to occur. Thank you, Sam. And General Keen, you had brought in the USS Comfort, precisely for the fact that there were not enough facilities in country. What now happens? Do you feel that there is enough capacity in country to pick up where you leave off?  General Keen? In this particular case, the devastation of the earthquake was so significant that the overwhelming response from the international community and, of course, the robust deployment of U.S. military there in all the areas, particularly in the medical area, we weren't quite sure what was needed in terms of how much was needed. And therefore, we responded with a hospital ship in order to address what we knew was going to be a great demand. But what I think many of us were surprised that in the particular medical arena was how quickly the NGO community was able to respond and rebuild capacity, even in a rudimentary way, to address the devastation. And then from the military perspective, how we enabled that was by opening the airport and the seaport as quickly as possible to enable these deployments of NGOs, whether it be hospital capabilities from governments. But I think we weren't quite sure how quickly we would be able to transition in terms of decreasing the size of our military based upon the increasing capability of the international community, whether it be NGOs or other militaries. In some areas, we were surprised just how quickly the rate will be medical being one of them. I know I personally was surprised at how quickly that capacity was able to build. But just getting around the city in terms of transportation was a huge, huge problem, not because only because of the devastation and the numbers of roads that were blocked through to rubble and everything else, but just to the lack of transportation assets and getting those in there. So I think what we can be on the positive side to see was in many areas, the buildup of capacity, but the long term reconstruction efforts in order to sustain that capacity I think is the question in the major area that we were faced with and a lesson that we took away with it was the numbers of displaced persons and how we were having to deal with that and the lingering effects of that as we talked about I think is the capacity that still is not reached to the level, but it was something that our military course was not there to provide shelter, but we were able to support the efforts of the NGO community were appropriate. One quick question before I turn to our just arrived panelist, Julissa Rinozzo. Panelists who have just spoken, meaning Paul and Antonio and Sam and General Keane, are we ready for the hurricane season? No, hold for just one moment. Okay, panelists are you ready for the hurricane season? Are we ready? At a fundamental level I think one can never say you're ready for a hurricane season. I think we have to admit that there's an enormous amount of work that's been done. There's been major prepositioning of medical supplies of various commodities, food and blankets. Just on the USAID side alone we have thousands and thousands of kits for 100,000 people prepositioned either in Port-au-Prince or in a warehouse in Miami that we maintain. The American Red Cross, the European Union, UN agencies have prepositioned large amounts of food, blankets, non-food items, medical supplies. So I think people are prepared. I think in discussions in Haiti on Friday I think we saw that there needs to be a little better effort at coordination because all of these different groups are doing all kinds of wonderful work and I think some conversations still need to take place to understand everything that's been done and understand what potential gaps are. There may be no gaps there may be some gaps but I think we can do a little bit of a better job doing that and identifying where we need to fill the gaps at the end of the day if a major hurricane hits it's going to it's not going to be pretty but I think we are ready to respond quickly. I know General Keane can certainly speak to the great work that the U.S. military has done to prepare to respond in the event of a major hurricane. General Keane? Well since last November the U.S. Southcom has had to respond to four different disasters in Latin America this only being one of them so I think it's not a matter of if it's only a matter of when we have to respond during this hurricane season hopefully it won't be back to Haiti but I think the message I would say is the international community and all of our partners in the region certainly need to be prepared because Haiti is very vulnerable to not just a hurricane but just a heavy rainfall if you will. And I think that is something that everyone has taken extremely seriously both on the ground as well as those in the U.S. Southcom in terms of we watch the weather very closely and we do things to prepare for if we do have to return and how we would do it and working with those that are on the ground but also the international community. Thank you. Well there's a Madam Secretary it's wonderful to have you here, welcome. We are interested in your thoughts on how we are doing. You've been gathering the Latin American community and the Caribbean community to be helpful so your thoughts. Yeah and I apologize for being late. I have President Fernandez in town today from the Dominican Republic. I think the most remarkable piece of the story is the response from the international community to the disaster. From day one we had at one point 140 nations respond to the disaster in some capacity or another and currently in every country in Latin America and the Caribbean did something for Haiti which is if you know the history of Haiti and its relationship with its neighbors is truly amazing being the fact that Haiti was isolated for so many years and because of the way it became a nation and for a period of time because it was simply the poorest country because it is the poorest country in the Western Hemisphere. Many of its neighbors did not want much to do with it. Now essentially starting with the Minusta, Brazil being the lead in Minusta and the diversity and the contributions of many countries to Minusta especially countries from South America Uruguay, Paraguay, Chile, Brazil, Argentina it started with that and now we have contributions and presence of the entire region in Haiti from Canada down to Chile and Caracom the community of the Caribbean is also playing a significant role in Haiti today primarily through its political leverage and it will also play a role we believe in the upcoming elections being a major factor in terms of observers and also as one that can as an organization in a community they can they have the the political standing to be to be an honest broker. Obviously the Dominican Republic is critical as well giving its its proximity and the fact that that many of our at least the initial assistance for Haiti came through the Dominican Republic through the Dominican roads and the airports and it has continued to be a sound neighbor and partner with Haiti and we hope and believe it will continue to play that role. The biggest challenge going forward is keeping that level of commitment from from the world and making sure that the pledges that were made in March and the not only obviously the monetary but also the the commitment the political economic and moral support that Haiti deserves from its neighbors and from the whole world is sustained. The region in particular play is significant in that to that effect and our job and the State Department partly is to make sure that we keep our neighbors invested in Haiti from Minusta to reconstruction to political support to instability and that will take all of us from the riches to the poorest. So that's kind of where we are and it's it's something that we've never seen before in terms of the role the the input and the participation by the by the Western Hemisphere in one country and it's so far been for the good and we hope it will continue that way.


Drug use problems are often associated with health harms. Infectious diseases such as HIV, AIDS and hepatitis C have clear links to drug use. But there are also links between drug use and mental health problems that we need to consider. People with problematic forms of drug use often suffer from both a substance use and a mental health disorder. The coexistence of a substance use and a mental health disorder in the same person is usually called psychiatric comorbidity in substance users or dual diagnosis. There aren't many figures on the extent of mental health disorders among drug users, but the numbers affected can be very high, up to 80% in certain groups of drug treatment patients. Depression is the most common mental health disorder associated with substance use, but anxiety is also often seen and comorbid substance use disorders are more common in people with psychosis.  Substance use and mental health disorders are interlinked in different ways, which are sometimes overlapping. In some cases, a mental health disorder can be considered a risk factor for drug use, which may lead to the development of a substance use disorder. In other cases, drug use can trigger the development of a mental health disorder. Clinical practice has also shown that comorbid disorders often interact to make each other worse. It is often difficult to diagnose comorbidity among drug users. For example, in a person entering drug treatment, acute psychiatric symptoms might be attributed to their drug use, or the effects of withdrawal or intoxication from drugs may be misinterpreted as psychiatric illness. Patients need careful diagnosis and integrated treatment, where the two disorders are treated at the same time with professionals from both fields working together. Providing this level of care is a major challenge for policymakers, professionals and clinicians.


Back to our live Guys We live on YouTube or what here, I don't know what's going on. I got zero viewers Streaming let's check YouTube check twitch


Hi, I'm Derek, I'm European, I live here in London, I'm PHP 7.4's release manager, which pretty much means that every month or so I have to make packages, make sure that the security patches got merged and then release things by announcing those in the mailing list. Today is the release date of PHP 7.4.3, so after this presentation I'm going to have to release that. I also work on XDbook, you might have heard of that, if not please Google it, and if you have questions, feel free to ask me. If there's anything during the presentation I usually would invite you to ask the questions by raising your hand, but I won't be able to see the hands, so do the questions at the end of the presentation, I think that would work better and maybe somebody can run around with a mic, I don't know whether that works or not. I like maps, I like beer, I like whisky, some of these things will come back in examples, and if there's any further comments feel free to ping me on Twitter, it's also in the bottom of my slides. I can't quite see that there, but that's okay. Alright, so what is the biggest thing in PHP 7.4? It is type properties. Now you know how I said that I like whisky, so my example, I also like using emojis in my class names. I wouldn't recommend you do that in production code, but at least put some color to the slides here. So properties you can already have in PHP 7 or PHP 5 or even PHP 4, but what you can now do in 7.4 is you can also add a type to it, which is new and pretty cool. So in this case we have the Republic Private or Protected, and then you have a type name, in this case int for integer, there's a number, you can use class names, you can use fully qualified class names, the namespace in front of it, as well as nullable versions as well. So the bottler can either be a class, sorry, an object of the bottler class, or it can be null. You can also make them on static properties. Again, the type name comes after the public and static keywords. You can't, of course, have a type called static because that gets confusing here. You can use default values for them. So in this case the int rating 92, that sounds like a pretty good whiskey to me if it's out of 100, and then you have things like nullable strings. And then the last bit is that it is also possible to have multiple properties in one row, but I think that most coding standards prohibit that, and I would probably not recommend you do that, but it is possible that the keyword public would count for both of those property names that you've defined, and so will the type. So this has public bull, chill filter, and public bull coloring added. Now, how does this actually work? Now, if we have the following bit of code, again, don't use emojis in your real code. Well, would you guess the output of this one? What do you think this output? Anyone want to shout out? An error? Yep. I heard an initialized property. Some of you have been using PHP 7.4 or reading documentation. That's mean. But yes, it will give you an error message, because this property h hasn't been initialized yet, and if it's not been initialized yet, you don't know which type it is. So PHP doesn't know what type it is, which means that any time you access an initialized property that hasn't been set to any value, default value is a set value, then you'll get an error throwable. So the initialized state is checked when reading properties. Okay, next one. Now, this bit of code, again, the distillery property has been defined as a type distillery as a class. I set it as a string. What do we get as output? You get an error, right? Because that's what you expect. It must be an instance of distillery, but we use a string. So type validation is used when writing two properties. Okay, so what's the output as this one? In this case, I'm not setting the distillery, but I'm setting the int, the h to the string 29. Anybody wants to guess what this does? Can't hear anything. But this works. This works fine, because type coercion is still being used. The script isn't doing strict typing, because we didn't define that for the script. So type coercion still works. It gets automatically converted to an integer just like it would do for a argument, for a method or a function argument. So when you define strict types, then, of course, you'll get the error saying that it's the wrong property type. That makes sense. On top of the introduction of type property, a few other things have also been changed or actually added to PHP's type system. Before PHP 7.4, if you would inherit a method, you would have an overloaded method, then all the method arguments as well as all the return types had to be of the same type. Now, PHP 7.4 relaxes this so that it follows the list of substitution principle, big word. I hope to explain it a little bit here. But it would allow you to widen types or narrow types depending on whether you have an overloaded either argument or return type. So let's have a look at the return types first. If you have a bakery, a bakery makes bread. That is quite a wide range of things, because it includes muffins and whatever things, right? Bread-y things. A patisserie is a more specific type of bakery, and it would only make baguettes. I mean, that's silly examples, but hopefully you get the idea of a more specific type of bakery. So let's have a look at the return types. They are just out of this. Which means that in this case, a return types are covariant, meaning that they can return a more specific type. Because that means that any time you use this overloaded class in any context where you originally would accept a bakery, that is still fine, right? Because the return can never return more than the original class or original method might have expected. So restricting the return type. That's called covariant return types. And in this case, you get a fatal error because we're doing the all the way around. We start with a more specific type and then widen it in an overloaded method, and you can't do that because originally classes that would have made use of the original class wouldn't necessarily understand how to do anything beyond using a baguette. They don't know how to handle all the other breads, for example. So they cannot return a more broader type, but they can return the same type. Now, the argument types are exactly the other way around. So in this case, we have the class asterisks. We need to get the example somewhere, right? And asterisks home spores, which is quite a specific type of animal. Now, any class that has an extended method is fine to accept a wider range of animals because classes, this method could then decide on its own to handle the wider class of animals and then also handle the bore case, for example. So method arguments can accept a wider or a broader type range or the same, but you can't do it the other way around because that would mean that in a context where you would usually use asterisks as a class, you wouldn't be able to use goals because it would only be able to handle a narrower type, in this case, a bore. It's a bit of a tricky concept, but it does make sense if you look at it. You basically need to say, if I have an overloaded class and method, can I use it in the same context that I could use the original class and method? Now, there's one addition to this, which ties in back to the properties, the property types. So property types in PHP can only have the same type. In this case, they're the same type. They're both planets, so that's fine. Because properties are both something you can read to, sorry, write to and read from, and because of both these constrictions, in order to be able to use a property in an overloaded class, they have to be the same type. So we call these invariant property types. And if you do this wrong, you get an error and you get a complex subject. PHP 8 is going to make this more complicated by also having union types. And I need to figure out some of the better examples in that case. Okay. There's a whole bunch of smaller things in PHP 7.4. I will go through those a bit quicker, and then we go back to slightly more interesting things. So it's a bit of a big mix of things in here. PHP already had an assignment operator. It's the equal sign or the percent equals, not percent. Sorry. S-tricks, equal sign, but basically change the value and angle, right? By doing a multiplication. We have something like the null coalesce operators means that if this first, if the bit behind the equal sign is null, then we use the value, the string value behind it. But you still had to duplicate the whole property that you're going to set to as well as the one as you're comparing with to be able to use this value or default value. In PHP 7.4, you can now do this in one go by using the question mark equals operator or the null coalesce assignment operator. It can be kind of handy in this kind of situation where you need default values, for example. The spread operator is something that has been added to also be able to use this in a literal, in an array literal. The dot dot dot or spread operator, whatever you want to call it, you could already use to accept an array of arguments, sorry, extra arguments to a method that then will be put in an array that would have been, in this case, apples as an array. And these things, you could already do 7.4 extensives to be able to inline array literals in another array literal. So in this case, we have an array called apples. We have a red apple and a green apple. And then we have an array fruit where we have a pear, a peach. Then we embed all the other elements from apples in there. And beyond having apples as a static array here, you could also use an iterator for that, for example. And then at the end, we add a strawberry and a tomato. And then when you call implode on them, you'll see that we get our lovely fruit salad. Now, people complain about it. Tomatoes don't belong in a fruit salad. But I got it as criticism in one of my previous versions of the song. But I'm going to leave it in. All right. There's a whole bunch of code that you could write in PHP that is really silly. And of course, everybody makes silly mistakes. But in PHP 7.3 and earlier, you would never get a warning on this. It just returned no. And in PHP 7.4, it turns this into a lot of warnings. So the first one we have, we set it to false. It gives you now five warnings or notices in this. The first one says, try to access an array offset of value of type bool that gives you a warning. And then the square bracket 2 will give you offset on type no. The 3, the 4, and the 5 will all do that. Which is kind of handy, basically show you that you're doing something wrong. But otherwise, you just get no. And it's kind of hard to find, because it could either be the 1, 2, 3, 4, 5 array index that would have been different. And you wouldn't necessarily know one. It will also do this array offsets on numbers. Like I have in the second example where var array is 1, 2, 3. Var 0 is, of course, the number 1, 2, 3. But you can't take the one offset out of a number. So you can error for that. And similarly, you'll get the same kind of warnings if you do this on arrays with no in the last example. Something a bit bigger in PHP 7.4 is something called FFI, foreign function interfaces. This big disclaimer is absolutely necessary. FFI is a really good way of talking to C libraries directly from PHP. There used to be an extension in PHP in PACKLE a long time ago for PHP 5. It's called XFFI. We also named that X dangerous, because it was the most dangerous way of making PHP crash. Not because it was wrongly implemented, but because it's really hard to do, because in order to make use of this foreign function interface, you need to know how you interact with C code and how pointers work and memory management works and things like that. Normally PHP developers are not necessarily all too familiar with that. So this is kind of a harder way of doing this. Or let me say this is an easy way of doing things with C libraries, but it is a harder way of debugging this kind of thing, because you have to do it both C and PHP. So this is bundled with PHP 7.4, but it isn't enabled by default because it can be kind of dangerous. Also consider this experimental and there's no documentation or very little documentation. In my opinion, this should not have been part of PHP 7.4. I think it should have been in a PACKLE extension for a while and then introduced in PHP 8, but not always my opinion counts or it counts, but don't always agree with me. So now how do I use this? I'm not sure how many of you have seen that C code, so I'll start with a very simple function, which I have in the library that I've written for doing calculating the position of the sun in the sky. Basically what the arguments mean is like the double the D is a time or a point in time. It is not Unix timestamps, but it doesn't particularly matter what it is. You get to Unix from... Oh, this doesn't work on the screen. I always keep forgetting that. You go from the Unix timestamp to the number that it needs by this calculation. I can't actually remember what it is. But where in PHP, you can really return only one return value from a function. That's the same for C. But in this case, this function needs to return six values. And in C, it's a common way to do that as an API by using, by passing in the pointer to where you want to store the value in. And in order to, from CLAN to do that, you need to make sure that you have created space for this pointer that the sun post function is going to write into. PHP doesn't really have that concept, so it makes it a bit harder to explain. Okay, so what the function does is you give it one number and it returns six numbers back, which tells you where the sun should be in the sky. Now, how do you use that? From PHP Lens, you use FFI load. You give it a header file. And in C, it's a common way to have header files defined in H-files. What FFI implements is a very basic part of H-files that only will understand function definitions as well as type definitions and round-dru pre-processor macros and stuff like that. So it's a very stripped down parser of header files in C. So this variable FFI now holds this, well, it's basically an object that does marshalling for all the function that are defined in this header file, in this case, sun post. Now, because we use this pointer thing, we need to create places in memory where it's to store these values in. And because this is done with a C type, it's the double C type, although this is the same in PHP. You need to create these five arguments here. You need to allocate an FFI object that has the exact same type as what the header definition says. In a menu called a sun post function, you give him this date here. I'll have to use this mouse. You put his date in here. And then you get, by passing in the address of the containers that you made, because that is what the s-strix does in front of the return types in the header file, you can then the result of the spec. Now, this is a trivial example. But it took me quite some time to come up with this because, as I said, there's no documentation. So you need to come up with, well, how do I create memory structures? Well, you did it by FFI new. How do I pass it in here? Well, I'm going to go back to the FFI address. In the end, I think this could be quite useful for writing PHP extensions that you now will have to write C code for. Write them in FFI, which is basically writing them in PHP. But it does mean that you could compose or install these PHP extensions without having to recompile anything. So I think this is quite powerful. But I think it is more something to be used for people that already know how to write C and want to make all the libraries available through Compose without you as a user having to compile any new extension. So I think that's where the feature is in. All right. I can see you, so I can answer your question. All right. Okay. So the question is, does this create an object? It doesn't really create an object at all. The FFI variable is basically just some magic that makes this work. So there's no actual object. There's no compilation happening whatsoever. No. All right. The next big thing is preloading. Well, or so we thought. I'll give you the caveats in a moment. Opcache is an awesome tool to make sure that PHP doesn't spend lots of time recompiling or parsing your scripts every time it sees a new file. It is awesome. But everything in PHP is currently based per file. Which means if you have a file defining a class that extends another class, and that class that file hasn't been loaded, PHP uses auto-loading mechanisms, right? And that still works fine with Opcache. But for every time it sees this file in every new request, it would still have to check whether the inheritance works, whether the function arguments match, and it will have to do more work than in PHP 7.4 because of the type properties. It has to do quite a bit of work still. Now wouldn't it be great if it wasn't a way of PHP doing this up front before it even starts running your script? And that is what preloading is about to solve. So in PHP 7.4 has this new any directive called Opcache.preload of which you can specify a PHP file which will be run before PHP's request cycle starts and where you can preload code. Now as a small example of this, on the command line you turn it on by Opcache Enable 1 which you need to have. Opcache Enable C Lidled 1 because Opcache usually only works in a web server environment. And then the extra argument is Opcache preload equals the file name. You can of course also do this in PHP I now. Now the moment you do this, through this preload file if you change them on disk it won't change anything in your application. In the only way of refreshing the code that has been preloading is by restarting PHP FPM or anything else that runs PHP. Just something as a cave yet. Now how does this work or how do you make use of it? In this case, this little script what it basically does, it has the underscore preload function and the only thing it does it basically loops over all the argument files in the current array. If it's a directory, calls itself it's basically recursive way of finding all the PHP files under a certain path. In this case, var www send framework library. And for each of these files that it finds it calls opcache compile file. It does all of this and then at the end Opcache has already pre-discovered pre-resolved inheritances and all the abstractions resolved all the traits that you might have used so there won't be any overhead of doing that per request which of course means that you end up speeding things up. It's not a lot but it is about 10% which is always worthwhile to have. So cave yet is about preloading it doesn't work on Windows I can explain at a smaller point later why it doesn't work and before PHP 743 it's not really it's a bit crashy in places so let me put it away. So wait until later today if you want to play this PHP 743 should have all these things resolved but it still won't work on Windows for reasons that I'll leave for some other points all the time. Now, I spoke about f of i a little bit the stage that is really slow in using f of i is looking at all the definitions in the h files now if it is only one line with the send pass on previously that's not a lot of work but if it's a more complicated API that takes quite a lot of time but you can hook preloading and f of i together and in this case in my preload ink the one that I used in the previous slides to load the send framework I can also use f of i load give it the header file and then in the header file that I'm loading I have my function definition for f of i load as well as the f of i scope the f of i scope you can then use later in your script to find this little marshaling object f of i to then call the functions again which is what I've done here now this is going to be fun for the future but I wouldn't quite say this is primarily to use yet I'd wait until 745 or 746 to get to the production I would say all right so with type properties come in other problems some frameworks symphony in this case uses a hack to find out whether arrays are references of each other and it uses like a side effect in PHP where if you assign an array although it copies over the main array array elements in there if there were references to other things it will still keep these references it wouldn't duplicate these bits and symphony uses that for finding out whether things are reference or not in PHP 7.4 you can no longer do that so there's a new class part of a reflection it's called reference reflection and you can use that for finding out what is a reference to each other I have a very small example of an array element I create two references one to the second element in the array and one to the third one then I add an element to the array the fourth element to the array which I then also make a reference to the third element in the array which is the number two I really should have made this one based and not zero based for this to make more sense in an example in any case with this reflection reference you get back something that represents a reference or you get no if it's not a reference so let's have a look at what the script actually outputs for the first one for the fardump r0 and r1 it returns first no because the first element in the array to zero has not been referenced anywhere so it's not a reference whereas for r1 which is a reference which you see here as a so that doesn't work a reflection reference you get back as an object and then all the other ones you can get the id out and if the id is the same then you know that these things reference the same element now this is something that I don't think many of you would be using or should be using but it is there in case you relied on this additional behaviour which you can see here in the pjp7.3 and earlier there is a new custom serialisation mechanism because two of them isn't enough there is a reason why this has been added the serialisable interface in PHP has issues in such a way that if you serialise lots of nested objects and serialising only one of those objects that have been embedded in this serialised string you can't really do depends on context potentially done earlier in the string so you can't plug out only certain bits to unserialise reliably so that is the problem with the serialisable interface the sleep and wake up magic methods are not powerful enough to do any useful things because with sleep you can only specify the property names that you want to serialise basically which means you can't do any calculations you can't do type checking and stuff and that so that has a deficiency so the next one in 7.4 is two new magic methods they are called unserialise which if available you can use to return the property names and the values that you want to serialise so in the example here sorry when we call serialise here what we are basically returning the property T or we call it T that is shorter than temperature and in that we store the temperature and then when we are storing this by using underscore underscore unserialise then we plug out the value of the temperature back out of the array now if you want to do this in a nested way you can but you need to do this yourself so in this case we have a fire class that has serialised and unserialised and then we have a star class that extends fire so how you would serialise from that is then you would do the properties of the class that you are doing and then you call parent underscore underscore serialise and the class has been extended to then serialise that part so it is up to you now whether you would serialise the properties from classes that you have inherited and of course if you do that you also need to restore them by calling calling parent unserialise in underscore underscore unserialise it is the same thing as setting up classes with constructors and destructors you are supposed to call parent parent underscore construct to set up things defined in the parent class and then you get this lovely string that is on the bottom of the screen it is not particularly interesting PHP 7.3 if you wanted the hash extension you had to enable it and PHP 7.4 is always there by default which is a great move function like password hash and password verify are always available now and everybody of you should be using that if you do anything with passwords yeah I know this is boring PHP 7.4 has new features we also removed a few features or we removed a few extensions from the core distribution to be more specific x-recode anybody of you ever use that I have but that is probably 15 years ago alternatives called iconv is a lot better the recode library that the extension used hasn't been updated since 2001 old software shouldn't really be used xwddx any of you have used that for anything it sort of started at the same time as SOAP of course this has now been surpassed by using JSON as a transport mechanism so this extension hasn't been removed yet and there is no alternative for it and it has been moved to the PACKLE extension repository which we sometimes refer to as subarea because these extensions go to freeze basically and then the exa-interbase extension which has been removed from the core distribution had no maintainers the moments the vote for removing this extension came through a few maintainers that apparently existed but didn't interact with anybody else saying we're removing this, we're maintaining this well, you're a bit late now we did ask for people whether they were maintaining it so I'm happy to announce that although this is no longer part of the core distribution people are maintaining it again which is good news and they can do this in their own leisurely time in a PACKLE repository without having to wait for the PHP release cycles which happen basically once every year so I like talking to people about all the stuff that makes into PHP and it's a modern thing tonight you start with a podcast so I started a podcast last year called PHP internal news where I get to talk to all the people that are things with PHP now because there are so many features in PHP and it gets kind of boring to talk about it what I just sort of want to do is also introduce you to people that actually work on the code and with that oh the sound actually works, that's great so that's the opening to tune so what I'm doing is every time I talk to somebody I have them introduce themselves and I end up talking to a lot to a specific person he's Nikita Popov he's basically responsible responsible for pretty much 80% of what gets added to PHP but let me introduce myself so I'm Nikita and I work at JetBrains to develop PHP particular writing song nice RFCs that we can discuss in this podcast this was episode one from 20 times to him or something like that he gets a little bit annoyed with me bugging him anytime he comes up with something cool again in any case the first thing we spoke about was saying a string and number comparisons you know that PHP is kind of weird with comparing zeros to strings with zeros in it and so on so you made a nice RFC for that however this never made it to a voting so this might make it into PHP 8 it's kind of useless to talk about in a PHP 7 but it might show play them hi everyone I spoke with Joe I work on PHP and related tools that's me so Joe he does kind of interesting extensions like slightly on the edge kind of things he did the parallels extension for using some parallel execution in PHP but I spoke to him about something called re-references so re-reference that actually made it into PHP 7.4 is a way of creating a reference to an object without keeping a PHP memory manager reference to it and this is important in situations where sometimes you have like an ODM or ORM that keeps objects meta information about objects that are loaded from the database in memory but the way how what currently happens is that they usually create like a big array with each array element having a link to the object and then the meta information but the moment you do that PHP can never free the memory associated with these objects anymore because there's a reference to it which isn't really particularly performant so what re-reference allow you to do is they allow you to create a reference to an object but it doesn't prevent the PHP memory manager from freeing the object if there's no normal other reference linked to it which is kind of a useful thing to have and the way how this works is that there's a class called weak reference and you can construct a weak reference by using the create method on that static factory method called it by the object and then you get a weak reference class that encapsulates that object so and in order to get the object back out of it you call the get method out of that and that returns either the object or no if PHP's memory manager has freed it for other reasons so in this case I can't use to keep forgetting about that we have this class called ghost it has a method called boo which echoes boo I mean what else do ghosts do so we create this object we create a weak reference to it and then we call get on the weak reference and then we call the method boo on it when we then unset it and try to get the object again it no longer exists so first thing it says boo it is no in evil code if I would have tried to call the boo method directly on this no of course you get an exception because you can't call methods on no so you do always need to make sure that the reference or the weak reference is still valid before you do things on it which is kind of useful thing to have so that made into 7.4 PHP 8 will have something extended of this called a weak reference map but this is PHP 7.4 talk I am still Nikita and still working on PHP core on behalf of JetBrains ok so Nikita again we spoke about short arrow functions and short arrow functions is a new way of writing closures but in a short hand form so traditionally in PHP 7.3 and earlier if you want to have a closure that adds two numbers to each other we have to do arrows the name of the function function as a keyword the arguments that are being passed into the function when it is being called use the use keyword and then the why in this case is all the arguments that are bound from the outside scope to also be able to use inside a closure now what you can do in 7.4 is the following you can define a closure not using by the function keyword but by using fn combined with the arrow following the initial function you still have the arguments that you pass in into the arrow function which is the x but you don't have to import with use all the other variables from the surrounding scope anymore this is of course a lot shorter to write but it also has additional benefit that you don't have to use the use keyword to implicitly bind variables from the outer scope into the closure now this is mostly useful for things like this where if you have like an array filter you only want to keep in your array everything that is already part of another array that we do in the first example with an array here in PHP 7.4 you can write it a lot more shorter by using this shorthand or short array function and in my opinion it makes it a little bit more readable now the implementation in 7.4 only allows a single expression after the arrow it is possible that in future versions of PHP we would allow for multiple lines which of course is currently what you can do with a traditional closure but also has to keep this additional benefit of having the variables from the outer scope implicitly bound to the closure themselves as well but that might be PHP 8 or not all right PHP 7.4 ties up some warnings that depending on whether you implement a class sorry whether a class implements an interface any arguments in the signatures don't match you get a fatal error but if you did it between two classes you would only get a warning and PHP 7.4 these things are being thrown together to make sure that they always behave the same but also that they don't make into PHP 7.4 PHP 8. again, sorry have to wait until the end of the year question for you, what is the output of this little script I'll give you a few seconds the correct answer is they shouldn't have passed code review because nobody should write code like this so in PHP 7.4 this now adds warnings it outputs 4 by the way go try it out if you want later in PHP 7.4 it will now show you this it will show you a deprecation warning saying that you can't use nested ternaries unless you use parenthesis to indicate what you really mean to do in PHP 8. it is possible that you'll get a fatal error if you don't use parenthesis but I'm not sure whether that actually be merged into the language yet because of course doing that breaks code we don't like breaking people's code so I'm going to try to show you this what is the output of this example what did I hear? you shouted something sum 3.7 no the output of this is actually just 7 you want to guess why? I will try to explain it the dot and the plus operators have the same precedence meaning that it will get executed from left to right so the first thing that PHP does it does sum the number 3 to it so that results in the string sum colon space 3 then we add a number to it and the moment you use a plus both operands need to be number what is the numeric value of the string sum colon space 3 it's 0 and then it adds 7 so the result is 7 in PHP 7.4 it says the behaviour of unparan unparan . Everything you can do is change the page of six . and then you can choose to change the page of the unparan which is what you expect to be happening. These subtle changes can potentially break quite a lot of codes. so when the Cheater wrote this he looked at the top thousand PHP products on stack over full done but all of these were bugs and so we're pretty confident that anywhere where people do this it is never on purpose and in that case that makes it an easy decision for us to then break this kind of code and eight because if it's bug in all the case that we can find us pretty sure it's going to cause issues that you hadn't expected in your own code somewhere as well. Okay I have Nikita again no worries I won't play his soundbite over and over again. It's a simple change in 7.4 is that you can now throw exceptions from the two-string method. In 7.3 you couldn't and you get a fatal error that says method explode to string must not throw an exception. In 7.4 it will still get a fatal error because you haven't called the exception but you won't get a fatal error because you are throwing exception from a two-string method which is kind of handy it's a minor thing but I guess it makes sense at some point. Simple change to the language quite a big change internally in PHP because two-string is used in so many contexts that and they all had to be made safe for them also being able to do with an exception being thrown from that. So sometimes these things look simple but are actually quite a bit harder than they look like. And Scott Dotson I got involved in PHP in my early themes. Okay sometimes the sound quality isn't the greatest. This was Scott and he made a simple change that that me personally calls the most amount of grief in my own code. What is the output of this script? Base converts converts the string from base 16 in this case to base 10 that's so hexadecimal to decimal. What is the output of this? If you can guess what the answer is you're pretty good with this. I'll give you I'll give you the answer it is 237 no warnings or anything like that. How does it get to 237 here? Well basically what base convert does it ignores everything it doesn't understand for that base which means it only sees the e and the d in the string and hexadecimal ed is 237. Yeah great isn't it? PHP 7.4 this will now say deprecated invalid characters pass for attempted conversion. Now some of my code I had used this as like a cache key for something at some point but it had a minus character in it and minus is of course not part of this so they're then filling up my log saying that I did do something wrong actually that code is used in this presentation so I had to go through all these slides to make sure that the templates were cached otherwise this error would have actually shown up on my slides giving the presentation. Yeah I haven't fixed that code yet I should win. Bishop would you mind introducing yourself as well? Yes I am also a full stack developer have been using PHP since 2003. Okay so Bishop and Scott got together to add another syntax trick to PHP 7.4. If you have big numbers it's sometimes really hard to see how big the number is because well if you would write this down in like text you'd use a dot or comma or whatever or an apostrophe between a thousand right and PHP could never really do that but you can now in PHP 7.4 you can use the underscore between numbers in numeric letters to make these things easier to read. It also works for all of the other situations where you can have a numeric literal so it works in like floating point numbers where you can have the underscore between every third where you cannot have the underscore is between the three and the dots and the dot and the one it has to be between two numbers and if it's a hexadecimal number the a to the f also count as a number you can so in this case I use that for pie it didn't pie didn't fit on my slide it's kind of it's a joke it's a mouse joke I'm sorry too early for jokes but I think where this mostly makes sense in cases where you have like so like the TT watching is a little too that I that I've extended to to read the date of my watch and it comes in all kinds of hexadecimal numbers and boxes and stuff like that and these things you had to hard code and by being able to use the underscore that actually make that code quite a bit easier to read or when you have to deal with binary things for turning on the IO ports on your Raspberry Pi and stuff like that I think this is a more usable case than just doing for the big numbers because in general it's very unlikely that you have like constants for these big numbers in the first place where you absolutely should never use it for is for things that aren't actually numbers now hopefully you never hard code a phone number a credit card or the social charity number in your PHP code if you do you probably should find a different job in my opinion and that's of course you're doing testing with the payments right where you sort of have to hard code your credit card but remember these things are not numbers a credit card is not a number you don't do calculations with a phone number you don't do calculation you don't add one to the number now I actually don't know if this is a real phone number so please don't call it I just matched up some numbers again I probably should have added an a or something in that to make sure yeah so don't do that but you should never have Thomas in the first place hi so my name is Peter Brown I'm a full stack developer I've been working with PHP for almost 10 years now so this is a curious thing most of the people that did some of the smaller changes to PHP 7 for they weren't original C developers they were all working on their PHP code they found something wrong with PHP and they came up with an idea they'll maybe make PHP a little bit better so I write an RC for it some of them can write their own codes their own C codes to actually implement the features but many others went got together with somebody else that is more familiar with the code in this case I think Theodore spoke with Bishop again to then implement a feature on PHP so you don't necessarily have to be a C developer to propose changes to PHP but it would be really helpful if you at least have some patch it doesn't have to be a fully fledged patch but it needs to be something that it looks like it is implementable because sometimes IDs are great but implementations are really hard to as an example generics I'm sure all of you would love to have those in PHP but that is not a simple task for example in any case Theodore came up in our suit to deprecate the curly brace method for accessing array elements and string offsets so PHP 7 4 will no longer just show you 5 5 SS but it will also show you the warning that the array and string offset access with curly braces are now deprecated Hi I'm Mateo Becati and I'm a PHP consultant mainly I've met Mateo several times he helps organizing the PHP day conference in Italy and he likes PDO and he likes using newer fangled operators in his in his SQL statements so in the last few years relational databases like MySQL and PostgreSQL have all that JSON kind of style things in order to get along with the times where you have like document data source like how to be among them be for example and the way how they implement all this interesting new features is by introducing new operators in this case it's the question mark operator now the question mark in PDO as you probably know is basically a placeholder for value so you couldn't use this SQL statement that wasn't me I don't know what happened there any case I'll just don't continue I'll just continue talking you can't have the question mark because this is a value right it represents a value operator so you need to then um I should call that escape it to be able to use it so that is what Mateo provided he ordered an RFC that allows you to escape the question mark and the way how you do that is by duplicating the character now so instead of having one question mark you get two question marks suddenly now that looks a bit weird because usually you'd expect things to be escaped with a slash in front of an in strings but in SQL it's already a common thing to escape operators that needs to be escaped by duplicating them so in this case instead of having the json call question mark foo you get json call question mark question mark foo so it doesn't interpret that specific question mark as a placeholder for value been in stats use it as an operator okay I'm not quite sure what's going on I only have two more slides so the last slide I can just talk about it this slide is not important is all the deprecations in PHP 7 form there are a whole bunch of things that we have removed from here from the language that almost none of you use the real type is basically a synonym for double type so we don't need this anymore there's some constants that are not there anymore that's the filter sanitize magic quotes filter hopefully none of yous even know what is anymore there's some other code that still made use of magic quotes yeah that's been removed PHP 5 4 a decade or something ago and a whole bunch of other things that none of you really use very much or we couldn't really find any evidence for for people still using it's still flashing like no signal linked at me here distracting me I don't know it's definitely plugged in and so yeah these things are removed I wasn't going to throw to all of them one by one anyway but have a look at the slides when they get published to find out whether these things affect you or not