We warmly welcome you to CSIS quite a day for the financial and banking leaders of the world to converge on Washington D.C. The markets are certainly reacting to the leaders appearing here. We're lucky to have one of the superstars of that group of finance ministers and finance secretaries from around the world, a good friend and terrific leader of the Philippines, Secretary Cesar Parísima. He served as, he assumed his office as Secretary of Finance in the Philippines about a year ago, last July, just over a year ago. And before that he served as Secretary of Trade and Industry from 2004-2005 and Secretary of Finance in 2005 and was reappointed as the Secretary of Finance again last year by President Aquino. Prior to resuming his responsibilities at the Department of Finance, he was the chair and member of the board of the National Power Corporation of the Philippines, the Land Bank of the Philippines and the Monetary Board. He's worked for any of you who know the Philippines well in the field of public accounting and is absolutely well known as one of the leaders in that field in the Philippines and actually globally. So where the money goes, I think Secretary Parísima has a very good handle on how to track that. He's a De La Salle man for undergrad and has an MBA from the Kellogg Graduate School of Management at Northwestern University in Chicago. So I guess he's born some cold winters as well as those hot summers in Manila. It's a great pleasure for me to introduce our guest speaker for today, Secretary Cesar Parísima. Thank you for joining us. Thank you, Ernie, for your very kind introduction. Good afternoon, everyone. I think I'm among friends here. I see an old friend from his U.S. Embassy days in Manila, Dan Martinez, who's back, I think, in Washington and several other phases we've seen the past few days. It's very hard to give a talk in Washington on the sidelines of the World Bank IMF and not talk about what's going on right now. So before I talk about the Philippines, let me share some of my thoughts on what's going on. I think we are in a period of transition. And just like when two big rivers meet, you know, there's turbulence and until the fundamental issues both in Europe and the U.S. are addressed, I think we're going to expect volatility. It will be like a roller coaster. In Europe, you have three interrelated problems, the sovereign debt problem, the banking problem that's very closely related to it, but more fundamentally the competitiveness issues especially of southern Europe, combined with a structural issue related to the Euro, the Monetary Union, without the fiscal union. And unless they deal with these fundamental issues, I think we cannot sweep this away. And this is going to be the challenge for the financial managers of the world for the next few years. In the case of the U.S., it is more solvable, but it will have to wait till political clarity comes after the elections next year. In the meantime, I think we have to get used to this very rough ride. When President Aquino took office last year, and if I were giving a talk at this time last year, we would have never have predicted what a year we've been through with what happened to Japan, the Middle East, and of course Europe and the U.S. But the best thing countries can do, and that's what we're doing, the Philippines, is really to focus on the fundamentals. And that's what President Aquino is doing in the Philippines. I fondly refer to it as economics, and there are four pillars to it. That's fiscal sustainability and macroeconomic stability, the area of infrastructure investments. Third is making doing business in the Philippines much easier and finally investment in people. In those four pillars, I'm proud to say that President Aquino's administration has made the major strides. In the area of fiscal sustainability, we've charted a path towards medium-term fiscal consolidation with a goal of having a deficit of 2 percent to GDP by the end of 2013. In fact, our August numbers was released yesterday, and we had a budget surplus. And people are criticizing us for underspending, a totally different problem. But President Aquino's policy is to make sure that every cent that we collect from the people is properly accounted for. And August was really principally a result of better revenues. Our revenues were up 15 percent year on year. But the challenge is not to achieve a surplus one month or the next. The challenge really is investing in the institutions so that the programs, the reforms that we've instituted can last beyond the Aquino administration. And that's what we are really focusing on. The program calls for improving administrative efficiency by investing in information technology, improving processes, better use of information, finding charges after tax evaders and tax smugglers. And really with the goal of reforming our tax structure so that it is more progressive and equitable. So this is an ongoing program. Our target this year is deficit of 3 percent, but I believe that we will be well within that target. Our goal next year is 2.6 percent of GDP. On the macroeconomic side, Grover Nottetanko is also here in Washington, has done a good job. In fact, the President has decided to give him another six-year term as a boat of confidence to what is done the past six years. We've improved the management of our banking system. Our reserves are historic highs. We're a balanced payment surplus country. In fact, our debt to GDP is down to 42 percent net of holdings of our GFIs and local government units. It's very close to our peers. In fact, I'd like to say confidently that we are underrated by the credit rating agencies. We borrow at investment grade rates, but we're not rated investment grade. In fact, I haven't looked at the rates now, but two weeks ago we were borrowing at a lower cost than Italy when they issued a $15 billion four-year or five-year bond. The point is the key in this era of turbulence and transition is really to continue to invest in the fundamentals. That's what we will focus on in the next few years, fiscal sustainability and macroeconomic stability. In the area of infrastructure, we need to make sure that the gap between us and our ASEAN neighbors in particular be removed in terms of infrastructure. This is key to our competitiveness, especially with the ASEAN integration coming in 2015. President Aquino has programmed to tap private sector capital, expertise, technology and management to help government in achieving this. We've revisited the PPP regime in the Philippines. We have one out already, a tollway of projects and several more in the pipeline. We will use a combination of PPP, ODA and budget space to improve our infrastructure. In fact, this is going to be the best use of the foreign exchange that's coming our way as a result of policies in the U.S. to use foreign exchange in a more productive manner. That's going to be the challenge for not only the Philippines, but the rest of Asia. The Asian Development Bank estimates that ASEAN alone will need at least $60 billion in infrastructure investment for the next five to eight years. As a result of this need, the ASEAN finance ministers have embarked on the creation of a fund to facilitate the recycling of these reserves within ASEAN. It is a modest amount to start with, but our goal is to make sure that this becomes rated AA at the very least so that the central banks of the region can invest in this fund to facilitate the recycling of our reserves into our infrastructure in ASEAN. In terms of improving the environment for businessmen in the Philippines, the President has made this a priority. In fact, in the latest World Economic Forum ranking, we've jumped ten notches, but we're still at 75. We'd like to be in the upper quartile. To do this, we really need to work on many areas. We've made the baby steps the past year in this regard. For example, the Land Bank of the Philippines and the Securities and Exchange Commission have agreed to cooperate in terms of incorporation of entities in the Philippines. Before, you can only do it in the eight offices of the Securities and Exchange Commission. With their agreement starting last September 15, you can now go to any of the Land Bank branches in the Philippines to incorporate companies and new companies. This is a palliative. We really need to invest in IT because the ideal situation is to create a portal that would allow you, even from here in Washington, D.C., to incorporate a company in the Philippines. The Philippine Business Registry is being developed by the Department of Trade and Industry. In the Bureau of Customs, we're finalizing the plans for implementation of our national single window that will make it easy for importers and exporters to get permits from over 40 agencies through one portal. If this works in the Philippines, then we can connect our national single window to the national single window of other countries, which again will facilitate trade between us and our trading partners. The Department of Local Governments, for example, has a program to harmonize forms and procedures in the 200 largest local government units. So we're investing in this area. Our goal is that by the time the President Aquino leaves office, we should be in the upper quartile in the surveys of competitive rankings of countries around the world. Now in terms of people, which is really the key asset of the Philippines, the source of our strength and our pride, our balance of payments surplus, for example, is due to our remittances, which has proven to be resilient, again due to the quality of our workforce, our BPO industry, which is growing 20% per year is now among the top three in the world. Again, it's due to the quality of our workforce. So is our electronics industry, our shipbuilding industry, and across many other sectors. But the key is really continuing to invest in our people. So, for example, in the 2012 budget, 33% will go towards investment in people from education, health services, and conditional cash transfers, which really is an investment in the children of the poorest of the poor. So that as we improve our economy, they can become productive participants. So this is a key strategy of the Philippines. Right now, when you compare the Philippines as a country with our neighbors, it is very hard to compare favorably. But when you compare a Filipino with neighboring citizens, then you have a chance to be compared favorably. And this is going to be our key strategy. But underlining all of this is good governance. The key strategy of President Aquino is to continue to invest in the institutions of government so that we can make it not only a catalyst for the flow of capital, but a partner of the business sector in building the Philippines. The past 12 years, we have continued to grow, but at very low rates. And as a result, poverty in the Philippines has continued to increase. And the reason, I think, is primarily the quality of governance. President Aquino believes that with better governance, private sector will have more confidence. And with more confidence, they will make more investments. And with more investments, they will create more jobs, and the consumers will have more buying power. And we get deeper into the virtuous cycle. And that really is at the heart of what he is trying to do. And his goal is that by the time his term ends, that he's done a lot of reforms in this area so that his successor will have no choice but to continue the reforms that he started. In his own words, yesterday he was at the World Bank. He said, and I quote, the goal is to percolate socioeconomic development to the greater majority. And it all begins with cleaning up government, instituting a culture of transparency and accountability. At the bottom line, a culture of trust in government. The strengthening of institutions levels the playing field and provides for an environment conducive to economic growth. Any gains that will be reaped from this growth are then channeled into vital social services, such as those in education, health, and poverty alleviation. People who are educated and healthy have the capability to exploit the livelihood opportunities provided to them by business. They are likewise empowered as consumers, which further spurts economic growth at the macro level. Good governance is at the heart of his administration's socioeconomic strategy, and the people are at the center of good governance. Governing with integrity, with honesty, with transparency, with accountability, not only heals a national psyche that has long been characterized by cynicism and mistrust of government. It also provides the foundation for equitable progress. Good governance is good economics. So that's what we're trying to do in the Philippines. It takes time to build institutions. It takes time to have reforms. It's not going to be a single event. It's not going to be a single policy. It's going to be a journey. But the past year, we've had the changes across the board from policies to programs to the way we do governance in the country. For example, we've opened up the skies outside Metro Manila, which should auger well for tourism in the Philippines, which we believe is the low-hanging opportunity for our country. We're going to align this by investing in infrastructure and by encouraging the private sector to build hotels and other services for tourism. So good governance hopefully will resonate across the seas and hopefully the question that's always in the mind of investors from outside the Philippines about the way things are done in the Philippines can be answered. And hopefully with that answer comes more investments into the Philippines, which should help us build our country. So I'd like to invite you to come for a visit so that we can show you New Philippines under new management. Thank you. Thank you very much, Cesar. It's a compelling case and you've laid out a great framework for reform in the Philippines. I also want to say thank you to Ambassador Quesha for his leadership here in the United States. He's bringing that message to us and to Congress and to investors and to Filipino Americans and others in civil society here, so we really appreciate his work. And I also would like to thank the congressmen who've joined you on this trip. And I know they were here with you and the President. But thank you for coming to CSIS today. We know that your work in the area of reform and transparency in the financial sector is very important in the Philippines. So thank you for coming. I'd like to open up the floor to questions. Easy format. We just asked that you let us know who you are and what your affiliation is. And I thought I would kick off, if I could, with an initial question. And that is, you mentioned Europe and the fact that they have economic union without fiscal union. Could you talk a little bit about what the ASEAN finance ministers might be learning from the current crisis, particularly maybe looking at Europe, because a lot of people talk about ASEAN integration and they say, would that be, eventually, would that look sort of like a European model? And I wonder what you're thinking about that now. We often refer to what we try to do in ASEAN as the ASEAN way. In fact, in terms of bringing together the 10 countries, we are very mindful of the stages of development those 10 countries are in. We have, on one extreme, one of the richest countries in Asia. And on the other extreme, probably one of the poorest countries in Asia. The idea is to bring in the 10 at their own pace and take advantage where there are opportunities. For example, even before the 2015 integration, we've integrated 13 industries that we thought were already ready for integration. Among them are electronics, garments, some automotive parts. And what we've seen is that in the 13 industries that we've integrated, they've become more sustainable because the cluster is now more complete. So moving goods from one ASEAN country to another is like moving it from one US state to another. So you get the benefits of a larger market that should attract investments with scale that will have the efficiencies to be competitive in a very global market. That also improves the ability of ASEAN to become the alternative to China or even India. The vision of ASEAN is to be the hub of Asia trade. We have never talked about monetary union. I think at best, probably, we will aim for common customs border. Personally, that is something that I think would be necessary so that you cut all this arbitrage place that is going to happen if we don't try and reduce some of the disparities still that's present in our customs rates and rules. So I think we're watching carefully what's happening in Europe, but one thing is clear. Globalization is here to stay and countries will have to be part of it to flourish. And to be part of it, you must have the scale. You must build the islands of excellence that can become part of global supply chains. And that's what we're trying to do in the Philippines and the rest of ASEAN. That's why the key theme of ASEAN now is connectivity. Within ASEAN, with its dialogue partners, China, Korea, Japan, and we're trying to add India and the rest. And I think if this works, this would be good for the whole world because the solution really for the world now is for intra-Asia trade to increase with Asia as the ultimate consumer. This is I think going to be the challenge for all of us to try and shift our strategy from export to the West model to one that's export within Asia, consume within Asia. And this is where I think harmonization of policies among countries would be crucial, especially in terms of exchange rates. Because we cannot continue to use exchange rate as a tool for competitiveness, especially with what's happening now. So we're watching carefully what's happening and trying to learn from it. Okay. I thought you would have one, Nick. I knew this was a friendly. First of all, I'm Nick Small from Crown Agents. My question is, Secretary, you mentioned ease of doing business and working towards simplifying processes across the Philippines. You mentioned the National Single Window and understand there's already been great success in the Philippines with this. And I heard a number recently of close to half a million transactions already going through the Philippines National Single Window. Do you envision that the Philippines may in fact bring some of its expertise now out to ASEAN where some of the other member countries may be struggling in this area and could benefit from the experiences of the Philippines? Well, in areas where we're the center of excellence, definitely. But in areas where we have a lot of problems, I'd rather not. It's like spreading a virus and we don't want to do that. But clearly, we are working on use of technology so that we can have better information as a tool for performance measurement, which I think is key to creating meritocracy and institutionalizing the reforms that the President is trying to do. I think ultimately that's going to be the challenge for us. And I think this will take time because you have to convince everyone that they're going to be winners in this change process. And I think a lot of those that benefit from the current situation may not want that to happen. And that's ultimately the challenge for us. Mr. Secretary, Chuck Westrup from Peregrine, we've talked before about this. And I just wanted to see if you could give us an update on where we stand on the harmonization and equalization of incentives at the different free port zones and in the different areas within the Philippines. I know there was some kind of legislation going on a few months ago. And I just wondered if you could give us an update on that. In terms of people investing in the country, you go to different locations and you get different incentives. So I just would like to see if you have an update on that, of course. Well, the bill is now with the Senate and we're working with the Senate so that we can go to Baikam and ultimately have a bill ready for signature of the President. The idea is to be smart with incentives. We accept that we need incentives, but at the same time we believe that incentives have sunset provisions and that we use it to really develop industries that would not go to the Philippines without those incentives. And we're working closely with the Senate on this and we hope to finish it within the next 12 months. We have two congressmen here who've done their job already. So the Senate now is doing their job and hopefully can get back to the conference committee so that they can agree on a common bill for signing of the President. That sounds actually pretty functional. Could maybe you should transfer technology to Capitol Hill. Yes, Mr. Secretary. I'm Al Santoli, Asia America Initiative. And my question is two related components. One of which is that we talk a lot about industry and technology, but one of the greatest needs in the world and it will be increasing is food. Food, agriculture, food and water are absolutely essential. Also for investor confidence it's about stability and a sense of coherency within the 7,000 islands and the major regions of the country. Zeroing in on Mindanao which has the best potential of agriculture and also gas and oil between the Linguansan swamp and the offshore area of Palawan which also is a flashpoint for instability and conflict. It would seem that where people are more concerned in thinking about the more industrial sector that these areas like for instance environmental reclamation for the peace process to work and for the natural gas to be able to be utilized that central Mindanao area is critical. And I'm curious as to whether within the developmental plans you're thinking of tying in good governance, tying in peace process, tying in foreign investment. There are plans being made to stabilize that area by revitalizing that particular place because it's the centerpiece of climate, agriculture and energy. And then secondly tied into this, we're entering the next stage of this international economic crisis. I think it's beyond a doubt that 2012 and probably 2013 are going to be very tough years with the kind of needs that are there in terms of human development. And I agree that the Philippines best resource is its human resource is the people. And rather than so many Filipinos with their golden life to go someplace else in the world to utilize their skills to be developing it right at home so the Philippines can benefit from that. The non-governmental sector needs to have a more prominent role and what gets in the way is that when people want to be helpful far too often they get caught up in customs and that you know for you can't rely on charity but especially during the next couple of years the non-governmental sector is going to have to have a key role with education, social welfare and all these things that are important in stabilizing the Aquino administration in building trust in government. I know Ambassador Quezia's and formerly Secretary Del Rosario when he was ambassador here is very concerned about that. Are there plans being made to help streamline the process so that the non-governmental sector will not be as difficult in getting materials, resources, supplies into the country to help health, education and social welfare at the same time that you're doing the development of infrastructure and those things that would increase peace and investment? Your question has many parts now. The first part, I mean the now, the president has sent a very clear signal that he wants to resolve the conflict there as quickly as possible. In fact he flew to Japan to meet with the leader of MILF and sent a message that if they want to have peace we should have it before 2013 before the election when he is at his political peak and that's what we're trying to accomplish. On agriculture we cannot agree more. In fact we're quite pleased to announce that the agriculture actually led the growth in the Philippines the first half grew by 7.1 percent in the second quarter 5.6 for the first half but the key really is investing again in infrastructure in agriculture, investing in financial inclusivity, giving them access to financing, organizing them so that they are more bankable and to bring in business, the large business in particular to that area and that's what we're trying to do and Mindanao wants peace can be established is certainly going to play a very big role. In the budget for 2012 the president increased the budget of the Department of Agriculture dramatically with the support of Congress to build irrigation system with the goal of improving our productivity. In terms of NGOs helping out there is customs modernization act that was passed already by the lower house it's now with the senate that's one area we're looking into except that in the Philippines they take advantage of this as a conduit for smuggling so we have to find a way the right balance so that those who really want to help are allowed to do so but at the same time those who take advantage will be caught so these are all being addressed. Good afternoon Secretary Parishima I'm Mitsy Picard of Asia Society and I have two short questions. My first one is you talked about investing in people yesterday when I heard President Aquino speak at the World Bank he talked about a shortage of I believe 66,000 classrooms times 50 students. So if you have there's a problem of education in the Philippines in terms of infrastructure and school books and supplies how are you going to invest in the people? My second question is you may have answered this but I arrived late. Could you give us some prime examples of what your department has done in terms of slashing waste school spending on the macroeconomic? On the school classroom shortage we plan to use the resources of the private sector in fact the first tranche of 10,000 classrooms would probably be visited out in the next few weeks. This will be in regions 1, 3 and 14 I think about close to 10,000 classrooms and the idea is to build all of the 66,000 classrooms by the end of next year both in partnership with the private sector as well as the government doing their part. We are also looking at various models to use the capacity of private schools. The Glass Bay program has been quite successful actually in helping reduce the backlog. What's the other part of the question? The president day one asked us to implement the civil based project and we're starting to see the impact of that and we're really we change the way we utilize our resources not only in the allocation of the resources because the bulk of it is really going to the priorities of the president plus the dividend of better ratings which means lower interest cost has created more fiscal space for us to do social services as well as infrastructure. We've also had savings in terms of less corruption and less wastage for example in the part of public works we've noticed that they are saving in 10 to 20 percent initially in terms of wastage with stock projects that we believe did not make sense which has gotten us into trouble with some European countries but we are holding our ground here to send a clear message that we want projects to really make a difference and not be built for its own sake. Anjali Kodero from Down Jones and the Wall Street Journal you just referred to you know the turmoil in financial markets and you know we've seen emerging market currencies come across the world come under a lot of pressure because of the last couple days are you concerned about the drop in the Philippine peso and will you intervene to prevent the currency from falling too much? So I guess this is your two minutes already so she asked for two minutes after this. Well the central bank of the Philippines which is an independent agency headed by a monetary board allows the market to determine the exchange rate of the Philippine peso and monitors the exchange rate of the peso vis-a-vis a certain set of peer countries and making sure that the movements are not disruptive and when the movements are disruptive that's probably when they tend to make certain moves to smoothen these changes but outside of that the best thing we can do as I said earlier in my talk is really invest in fundamentals to try to invest in infrastructure and align policies so that our businesses can be more competitive that is the best way we can help our businessmen rather than play around with currency because once you do that it can lead to trade issues which we all do not want so the best thing is really to leave it up to the marketplace. I don't have a question but an offer Mr. Secretary I just came from San Francisco for the APAC meetings I was at the APAC innovation technology and trade conference one of the things that APAC after five years of hard work the subgroup on privacy has done is set up a privacy benchmark and the reason I wanted to mention this to you and I'll tell you more it's because of the BPO sector in the Philippines which as you said grows 20% today is third in the world and we have the potential of growing even further and creating a true competitive advantage if the Philippines focuses on the privacy law that's even higher than the baseline established at APAC last Sunday and we believe that it could even capture a significant part of market share from India which is nowhere near the Philippines in terms of its commitment in that area whether it's privacy or security and our chief privacy officer was one who was involved in this for the last five years at APAC and I'd like to offer HPE's assistance to the Philippines to come up with a law that will be very strong and create that competitive advantage. We'll certainly have these discussions with officials from ICD and Congress but with your support I think highlighting the impact it can have in growing this to attract the trust of consumers especially those in the financial services sector that are our customers in the BPO space but also as per technology innovation that will allow the Philippines BPO sector to move up in the value chain so that's my offer to to you. I think the two congressmen here have volunteered to sponsor your draft bill. It's striking that right to that fine balance but what's interesting is if you can position it higher than the baseline benchmark that our other APAC economists are at right now I think that would create a true commitment. I knew if I invited Elizabeth there would be deals cut in the middle of the in the middle of a seminar. Thank you. It's good to see that. Secretary before we let you go I guess there's two questions that sort of came in from the from our constituents some of whom couldn't be here because of the other the other meetings going on in town. Two questions were they're not new questions for you but the questions were on trade could the Philippines get in the game on the Trans-Pacific Partnership eventually and how do you think about that also relative to ASEAN plus three and the second question was on infrastructure earlier I think you you came last year and we talked a little bit about how you were going to structure infrastructure projects and I think at one point the plan was that the government would actually structure opportunities and offer it to the market instead of instead of the old way of you know sort of hearing what the market wanted to do and coming in although you are open to both have you had any success in that sort of structuring infrastructure deals and offering it to the market. Those are the two questions. On TPP you know the message I gave to the US trade rep is that they should try and use TPP as a way to help ASEAN integrate rather than divide divide ASEAN by just including a few members that's the first point and secondly they must be they must recognize the different situations of the different countries. Now for example in the Philippines we must divide into three categories the changes that would probably be required if we become part of TPP. First category with those that would just require executive action which should be easy. Second category would be those that require a change in law which can also be done given the coalition that the president has but there is a third category that requires constitutional change and that should be discussed but must not be a condition to becoming part of TPP because if you do that it's like saying you're not welcome to be part of TPP because of the current political situation in the Philippines we're not ready to make to have a discussion on constitutional changes but we'll certainly consider that once we have the that discussion. So and I think that should be the framework of discussion in terms of items that may need to be adjusted for us to become part of TPP but certainly President Aquino believes in globalization in free markets in the fact that the way forward is to further integrate the country into the global economy and you know we would like to work closely with the US on this. On infrastructure as I mentioned earlier we're in the process of building the first one which is a tall way south of Metro Manila and the school houses, school rooms is probably going to be the second that will be bidded out. So the trust will be biased towards solicited projects but of course we will also consider unsolicited projects provided that they are going to be it's going to be win-win for the country that it is going to be taken up in a transparent and fair manner not in a back room. The challenge for us is to make sure that the first few projects that we launch would stand scrutiny and remove the suspicions of our people so that this program can continue without problem because we will need this program to continue even beyond the Aquino administration that the the needs is so great that we won't be able to build everything within the six years of the Aquino administration. The best thing we can do is establish the right framework give it the track record so that it can be sustained beyond our time. Thank you very much sir and I'd like to ask the the group to thank me or join me and please thank me. I've always wanted to say that. Join me in thanking Secretary Parisma for his great comments today. Thank you very much.


Why are the Europeans so anti-Israeli? And that is the philosophy or the moral code of altruism, and this motivates both our intellectuals and the Europeans. Altruism tells you, if others are your concern, if being self-pursuing your own self-interest is evil, then being successful is evil, because how do you become successful? By pursuing your own self-interest. Being strong is evil, because how do you become strong? By pursuing your own self-interest, and that is evil. Having a powerful military is evil, because how do you get a powerful military by being selfish? By pursuing your own interest, and that is evil. And who are the good guys? The good guys are the weak. The good guys are the poor. The good guys are the suffering, because they clearly didn't do what was in their self-interest, otherwise they wouldn't be poor and suffering. Now notice that when the Jews were poor and suffering, and had just suffered the Holocaust, and were starting this country from scratch, Europe loved them. They were the good guys. When did that change? 1967. When Israel proved itself strong, powerful, and confident, well, they must have been selfish all those years.


Why dating a chick over age 27 sucks? Okay, so 27 years old seems to be the age when chicks start freaking out about their age 25 and 26 still seems kind of young for a chick, but for some reason 27 seems so much older I think it's because it's the age that's considered late 20s as opposed to mid 20s like 25 26 Also 27 is the average age most females get married in the United States Age 27.4 in America is the average female age of her first marriage.   She was meant for The healthy ability to have children slowly starts to diminish at the age of 30 And this puts a ton of pressure on them This definitely messes with their moods and their personality Imagine your boss following you around in life with a ticking clock for two years of your life Constantly reminding you of the deadline Though that's exactly what age 30 is to chicks and it totally messes with their brains And a chick over age 27 expects so much more from you Uh, they expect you to be top of your class to be in top shape To already be the boss of the company you work at to have a nice car to be a homeowner A stud in bed to earn six figures already And a chick north of 27 expects so much more from you because you see A 19 year old or 20 year old chick doesn't mind if you just have an apartment and you're working at target But a chick nearing 30 You gotta be way more on the ball than that They already expect you to be damn near a CEO of a company Because women over 27 need to get married quick and the pressure is on them Well, actually correction the pressure is on you


Transcranial temporal interference stimulation, TTIS, is a new type of neuromodulation technology that uses a sine wave potential generated by a DDS to stimulate the brain. This technology can be used to treat various neurological disorders such as Parkinson's disease, epilepsy and depression. The proposed TTIS device consists of a DDS, a current transformer and a current amplifier. In vitro experiments showed that the error percentage of the stimulation currents was less than 2%, indicating that the device works well. In vivo measurements also confirmed that the two pole configuration provides better cortical targeting than the four pole configuration. Finally, a pilot animal experiment showed that the two pole TTIS successfully activates the primary motor cortex in rats. These results suggest that the proposed TTIS device is safe and effective for neuromodulation. This article was authored by Zhao Zhong, Borshing Lin, Chunwei George Wu, and others. We are article.tv, links in the description below.


30 minutes is a really aggressive time frame to introduce a group of people that doesn't really have much context for this, so I'm going to maybe go a little fast, maybe hopefully not too fast, but also there's a, you should think of this talk as a starting off point, a jumping off point for your interest in Rust if you become interested, and maybe there will be a few things here and there that you could sort of jump off and use or look into. I'm going to be writing a blog post over the next few weeks, I think, that talks about how you specifically integrate Rust into a Ruby or Rails application, and I'm not going to talk about that today because that's kind of its whole other talk, but I think if you really, if you leave this talk thinking that you really want to use Rust for something real, that's probably going to be the best way for you to do that, so keep an eye out for, on the Skylight blog, we'll be talking about it. Yeah, what's up with that? So I think the way a lot of people look at programming languages is with this sort of quadrant grid, you can see that when they announced Swift, Apple created this quadrant grid, and among, despite the fact that it's really silly, like I don't think Ruby is faster and more performant than, and more performant than JavaScript, and I don't really, I don't understand any of it really, but I think people do think of the world in terms of these quadrants, and I think if I was going to give a talk about Rust and I wasn't me, probably I would also make one of these quadrant diagrams and try to stick Rust in one of the quadrants, and for me, I'm showing this because I think it's kind of a bad way to think about program, programs and programming in general, and the reason for that is that in programming, really the only thing that is, that stays the same is change, the only constant is change, and what that means is that a lot of people have this fixed picture in their head of this trade-off between performance and productivity, and they imagine that that trade-off is kind of fixed, so if you gain a little more productivity, then surely what that means is that you've traded off some performance. But if you look at reality, you look at reality, and this is let's say 2005, you'll see okay, there's the programming language JavaScript, which didn't have that logo at the time, it was a reasonably productive programming language, it was a dynamic language with lambdas, and not very fast, and then if you were going to look at that diagram and fast forward 10 years, obviously JavaScript hasn't improved, it hasn't really changed that much in terms of productivity, it hasn't gotten, maybe it's gotten a little bit better, but for the most part, the language that most people write today, the same language that most people wrote 10 years ago, so if you were going to think about things as just a trade-off between productivity and performance, you would expect, well, of course, JavaScript hasn't gotten any, hasn't become worse in productivity, so that means it must not have gotten faster, but of course what actually happened during that time is that JavaScript got a little bit more productive with ES5 and some ES6 features, and a lot faster, and really, in reality, every language that sticks around for any period of time tries to figure out ways to improve productivity without reducing performance over time, which means that every single language is always moving, it looks like you should have to go down and to the right, but really every language is going up and to the right, and when a language changes enough, or when a new language comes out that is sufficiently different from other languages, it enables a whole new generation of people to do something that they couldn't do before, and I think JavaScript is a really good example of this, right? JavaScript was really a slow language to begin with, but when JavaScript got fast and when it got a little more productive and when the ergonomics of using it on the server got better, it enabled a whole generation of front-end developers to write back-end code, and I think you could say, oh, well, I don't want my jQuery developer writing back-end code, you can say that all you want, but the reality is that if you're looking at the quadrant, you miss these shifts, these changes in the programming landscape that enables whole generations of people, large groups of people to do something that they weren't able to do before, and Rust is sort of trying to do a similar thing, right? So Rust is a new language, but Rust is also trying to enable people who might not have been willing to do something before, or might not be able to do something before to do something now. And just to give you a high-level sense of what's going on here, before Rust, there were essentially two kinds of languages. There were languages that were safe, and what I mean by safe is that if you write a program in the programming language and there's no bugs in the compiler or the interpreter, your program cannot have a segfault, right? So whenever that happens to you and Ruby, what that means is that there's some C code involved.  And then there's other languages, C, C++, and a few other languages of that, that give you direct control over where you can put your memory, and that direct control gives you the ability to get better performance, better memory usage, and all that. But the tradeoff of that is that if you make a little mistake, if you slip up a little bit and everybody knows who's ever tried to work with C or C++, that it's not just a matter of learning these five tricks here, it's a matter of being a guru basically in a language. If you make any mistakes, it's unsafe and you could fail, you could segfault. And what Rust is trying to do, fundamentally at a high level, is to give you the safety of a language like Ruby, without forcing everything to go through a garbage collector or a reference counter, so basically giving you the ability to control where your memory is going directly, exactly, and for people who know that that could mean putting things on the stack, or a variety of other places where you might want to allocate memory, you have direct control over that, but you don't have to trade off safety. And I think from an ergonomics perspective, if you are a person that has ever tried to write code that's more efficient by having more control, the biggest source of ergonomic pain, the biggest source of productivity is not just that you lose all these high level features, it's also that at any point you could crash. So just eliminating the ability to ever crash really is a big shift in the landscape of what's possible. So what does this enable? What does it mean? So like I said before, I think the way you should always look at the programming landscape is looking for shifts, for changes in what some language is doing, what's possible? What does it mean to have a language that is both low level and direct memory control, but also safe? What does that enable for us? And what it enables is a whole new generation of people who are systems programmers.  It enables a lot of people who maybe would have been excited or interested in low level systems programming to do it. And no JS, which claims to be low to the metal, that's not what I mean when I say systems programming. I don't mean programming on the metal in no JS. I mean really, really programming on the metal, really programming at the level of the machine. So before I continue, I want to just throw out some real talk here. And that's to say that all of us in this room, including myself, have been part of the high level language tribe. We spend a lot of time talking to ourselves and each other about why we find ourselves being productive in high level languages. And a big part of the high level language, a big part of what we tell each other in a high level language is a lot of yaginy. You aren't going to need it. And some of that stuff has to do with features that you don't need. But for this purpose of this talk, what I'm talking about is you aren't going to need better performance. And I think that's the thing that we tell each other a lot. And I think that in many, many cases, maybe perhaps most cases, that ends up being true. But sometimes there are some cases where you actually do need better performance. And I'll give you some examples of this. So one example is anytime anybody ever says 60 FPS or jank or real time or high frequency trading or anything like that, anytime anybody ever talks about needing predictable performance, I think 60 FPS is a good example, they need better control than you get with a garbage collector. Anytime anybody ever says, I need to use less memory. Memory's too high. If you're writing a cross platform library, like LibSat, something that is meant to be embedded in a lot of different places, that's a place where you care about performance. And more importantly, whenever you're starting to dig into your programming language internals, whenever you're reading the Ruby C code or trying to understand the JavaScript JIT, these are cases where it turns out that you do need the performance. And what it means when we say, I don't have to worry about performance, I don't have to worry about the details, I don't have to worry about whether I put this on the stack or the heap, I don't have to worry about whether this is allocating or not. What that means is not just that you don't have to worry about it, which is a great blessing when it doesn't matter, but it also means that you can't worry about it. And I think perhaps more importantly, it means that if you figure out a way to control what you're doing by reading the C code or figuring out how the JIT works or doing some hacks, it means it's very, very difficult to communicate to other developers about what it is that you're trying to do from a performance perspective. And sometimes it does matter. So here I have a couple of examples from Ember, which in JavaScript there's very, very good JITs, but those very, very good JITs are very opaque. But when you end up caring about performance, you end up really trying to understand how it works. So here's an example where we have a function called make dictionary, and we do a whole bunch of pointless things that are total no ops in the semantics of the language, but what it does is it tells the runtime to not try to make this into a struct, and that allows us to avoid certain deoptimizations. And you can see there's a big comment here. Here's another thing. There's a function called intern, which takes a string and gives back a non-rope version of the string, and that ends up having performance problems to not do it. And you can see on top it says, when do I need this function? For the most part, never. The premature optimization is bad, et cetera, et cetera. And here's the whole comment. So it turns out that when you care about performance, we should think about what is the point of a programming language? The point of a programming language is to let us communicate with other human beings about what it is that we're trying to do. And if it turns out that you don't care about performance, then you don't want to waste your time communicating with other human beings about performance. That becomes a waste of time. It becomes very noisy. It becomes difficult for you to understand what's going on in your code. But as Dave Herman, who founded Mozilla Research, says, when you actually do care about performance, then performance is part of the domain of discourse for you and your collaborators. You actually want a way in the programming language to explain the performance requirements that you actually have. So it is true that it often doesn't matter. And I think what I'll say clearly here is if it doesn't matter, then using a programming language like Rust to solve that particular problem that you have is not going to be the best use of your time, because it's going to end up forcing you to say a lot of things that you don't care about. But there are many cases where it actually doesn't matter, where performance actually has a real impact, where memory usage has real impact, like Skylight, which is the project I work on that caused me to get into Rust in the first place. And when it matters, it's actually a blessing that I have to write all these annotations. It's that I'm able to communicate to Carl and Tom and all the other programmers who I'm working with exactly what performance requirements we expect to have from the program that we're writing. So that's why you should care about Rust and the kinds of cases you should care about. Now I want to get into what is Rust. So I can spend a lot of time talking about the low-level performance. I think you can do some benchmarks if you want to look at all the performance features. I want to talk a little bit more, because this is a ruby crowd, about high-level productivity. And before I talk about productivity, I want to talk about one really important principle in Rust, which is the idea of zero cost abstraction, which I know sounds a little bit like snake oil. But the idea behind zero cost abstractions is that when you add the ability to do an abstraction in a programming language, in most cases, if you're not very careful, you end up adding a little bit of cost, a little bit of cost, a little bit of cost. And then when you get to something that's as abstract as Rails, you end up with a lot of cost. And the idea behind Rust is to find abstractions that you can enable. And I'll show you some examples of that in a minute, that you can add with very little or zero cost. And what that means is that you can get pretty abstract in terms of the programs that you're able to write without it introducing a whole lot of cost. And I think this is a big part of what is really appealing to me about Rust, which is that even if we didn't consider the safety aspects of writing in a programming language like C, and of course I do, the fact that C is so difficult to write abstractions in is really also a big problem. So I'm going to start by looking at a program in Ruby that you can look at if you go to Active Support. And that's the blank method that exists on strings in Ruby. So here's how it's implemented. I just dragged this out of Active Support that you reopen the string class. You specify blank regex. And that's there because performance reasons you don't want to be putting it in line. And then you investigate the blank regex at runtime. And then similarly, we have this method on array, which is basically an alias for empty. And then we have nil class. Nil class is always considered blank. And then there's more and more, there's booleans and whatever. And this exact kind of problem, this exact kind of thing is actually something that Rust lets you talk about. And I'll show you how that works in Rust. So in Ruby, actually, what I showed you here is sort of traditionally how you would do it. And that basically globally opens up all these objects and adds the blank method. There's also a new feature in Ruby called refinements, which allows you to do a similar thing but in a scoped way. And that's more like how it works in Rust. So first of all, in Rust, when everything's statically typed. So if you want to say that there's a blank method, you say that there's a trait called is blank. And we just make a trait called is blank. And we say that it has a function on it, that function takes whatever self, whatever it is, and it returns a boolean. And the first thing that we do is we implement is blank for strings. And that ampersand string thing over there just means that it's a static fixed size string. So there's also strings that you could push things onto, basically mutable strings. This is that symbol there means immutable string, that guy over there. And this regex over here basically is a macro. So anything with bang at the end of it, which is going to change to prefix at soon. But anything with bang means it's a macro. And that means basically that it gets converted into something fast. So even though it's a regex, it doesn't end up being interpreted every time. And basically what this is doing is essentially equivalent thing that we did in Ruby. We basically say we have this is blank trait, and it has an is blank method, and it returns a boolean. And here is the implementation of it. You can do similar things for other types. So we've now said I want to implement is blank for arrays. That basically also means a fixed sized array. This little thing here, if you're not familiar with other languages that have types, is called a generic. So this is basically saying this is implemented for an array of any type. So it doesn't matter what type it is, as long as it's an array of that type. So what this means over here, it's an array of that type. It's implemented. And then the actual implementation just says, check the length if the length is bigger than 0. Actually, that should be equal 0. Let me fix that. So if the length is 0, it's blank. And then we do a similar, so Rust also has no null. So null is always represented as a type called option. So here we're going to say implement is blank for an option of anything. And the option of anything is basically saying, okay, if it's none, which is like the nil question mark method in Ruby. So and then finally, implement the same thing for boole. So basically in the same way that you can go ahead and implement things in Ruby for any type, even types you don't own, you can basically make a trait in Rust and you can implement it for any type. And the way that that gets used is you would say something like use active support colon colon is blank and then you would be able to use it. So that is the scoping mechanism. You have to say where you want to use it. But once you said that you want to use a trait, it's now imported into that scope and you can use it for any object that's implemented for. So we can implement it for, use it for string, for arrays, for booleans. And then the last one of theirs, I made an array of one and I pulled out the last value of it and in Rust that would return an option because it could be nil and like I said before, I implemented this for options. So basically it works for all these different types. And one really cool thing about Rust Traits actually is that if you make your own type, so if I make my own type in my own library and I want to implement is blank, I can actually implement it just fine, which means that just like in Ruby, you know the blank, you just have to implement the blank question mark method and it will work. If I make my own type and I want it to be compatible with this trait, I can implement it myself. It doesn't have to be something that the person who implemented the trait decided to implement in the first place. And so I just showed you a pretty cool feature which is basically it looks like oh dynamic dispatch, awesome, everything is a message, et cetera. But like I said before, in Rust, everything is a zero cost abstraction. So how does that actually work? And the way it works in Rust is that Rust actually knows when it looks at those, when it looks at empty string that is blank, it actually knows ahead of time exactly what method that's gonna be calling and it actually will statically dispatch that method to the specific function that needs to be called or it might even inline it and you can explicitly tell it to inline it if you know it's performance critical. Also using traits doesn't involve allocating anything. So even though in a normal language, you would basically be forced to allocate because it's virtual dispatch and you need the dispatching table in Rust, simply using a trait doesn't cause any kind of special allocations. It basically works fast. It's like as if you had written a static method and called it directly, even though now it's basically polymorphic. Now there's one other thing that you can do with traits that's pretty awesome. So far I showed you that you have an object and you wanna call a method on it and it can be polymorphic, right? And now I'm gonna show you what if I wanna make a method and that method will take something that implements a particular trait. So in this case I have a method called, a function called firstline and that firstline function is just gonna call readline on whatever reader I give it. Now obviously I could write a firstline function and I could make it specific for a standard in or I could make it specific for a file but what I wanna do is I wanna make a function that's specific to any kind of buffered reader. And in Ruby of course you just do this by saying please implement the readline method and I'll call it. In Rust you say I'm gonna take, you say this thing here which means I'm gonna take, it's generic over any type R as long as that type implements buffer and buffer is the thing that implements the readline method. And then here I'm basically saying I'm taking a mutable reader of that type and then, sorry, and then when I go to call it basically, actually that's another mistake.  And again if you just look at this you could imagine well I'm calling it with some random thing and it doesn't know ahead of time like the function is not written for a specific type so probably what that means is that it will be super slow because it will have to be packaged up it will have to come with maybe a lookup table and then it will have to get sent and then it will have to be virtually dispatched. But actually what happens in practice in Rust is that it's super fast and the reason it's super fast is that every single time you call that function it will basically say okay you're calling that function with a buffered reader, I'm gonna go make a special version of that firstline function for buffered reader and I'm gonna use that at compile time. And what that means is that the actual, all the lookups at runtime are static are known ahead of time. And again when I call standard IO standard in and I call the same function firstline it's basically as if I had called this special firstline to function that was set up. So the idea is that you get the high level the high level functionality that you expect the productivity that you expect from being able to just say I don't really care what this is it's just anything that takes a reader I'll just call a read line on it and under the hood what's happening is it gets specialized, it gets made super fast. So another way that this is zero cost is that the compiler specializes any methods that use what we call trait constraints. So that's pretty awesome and I think it's a good example of something where you can get a pretty high level of productivity in even above what most dynamic languages let you get at a performance level that's much higher than what most static languages let you get. So that's traits. The next thing I wanna talk about is iterators and lambdas. So if you've written Ruby code or JavaScript code then what you know is that it's very powerful to be able to use blocks or lambdas to abstract over some kinds of things. And Rust has a thing called has lambdas but it also has a feature called iterators which you can basically think of as being the equivalent of lazy enumerators in Ruby. And basically the idea here is that you can basically say okay give me a range from zero to 100 and then I'm gonna filter over it by saying it's filtered by you know is it divisible by six and then I'm gonna map it by multiplying by three and then I'm gonna print it by saying numero whatever and then run it. And there's, so number one if you look at this it looks very high-levelly, it looks, first of all there's no types which is pretty cool but second of all it looks high-level, it looks, you know you're using filter and map and all this stuff but again you sort of get this zero cost abstraction thing going on. You get, so first of all, iterators are always lazy which means there's never any intermediate objects that get created but unlike in Ruby that doesn't produce any additional allocations. This is basically all done locally. It also uses generics under the hood like I showed you before which basically means that every single time you call dot map or dot filter it's actually generating a special version of the code for the thing that you're actually trying to do. Also, so one thing that you have to do whenever you're doing a loop in a high-level language if you wanna look up you have an array of 100 items and you say give me the 50th item is that the, at best the compiler has to say let me check to see if the 50th item is there and don't let you access memory that's out of the bounds of the array but if you use something like map not only is it a higher level of abstraction you're using a lambda but you could actually do a single bounce check and say okay I can see this 50 items so then you can basically just do the rest of the iteration without doing any additional bounce checks as you go through it so you can get both higher level of abstraction and faster performance at the same time which is pretty awesome and finally Rust actually doesn't have any C-style for loops it only has looping over, it has a raw loop but other than that it only has looping over iterators and that's because Rust itself is very, very confident in the performance of iterators and the ability to make those very fast and efficient and low memory usage. So those are sort of two high-level features and I think you can definitely see that if you look at these features that they're features that you would expect to have in a productive language but not necessarily in a low-level language. So I talked about the fact that this is productive but earlier I said that Rust is sort of unique in the sense that it gives you something that's both fast but also safe unlike a lot C or C++ which gives you fast but not safe and so far all the things that I showed you you sort of come to expect from languages that are managed that have a garbage collector don't necessarily come to expect from a low-level language and there's a reason for that which is that it's a little bit tricky to do and I wanna show you, I don't wanna get too much into the details here but I wanna show you one kind of example that I think may help you understand number one what's tricky and number two how Rust deals with it. So I made a little program here which is Ruby program, it has a point it inherits from a struct with X, Y, make a line, the line has a length method on it and the length is just figuring out the length of distance between two points I made a distance method which takes two points makes a new line P1 and P2 gets the length and then my count method basically I have a count function which is sort of like the main function here which basically will go get the distance and it will return the right value. Now let me sort of trace through the program what exactly is happening here so the first thing that happens is I make a new point and because this is a garbage collected language because it's trying to be safe and Ruby doesn't really know what else is gonna happen with this point afterwards it's basically forced to allocate that point on the heap it's basically forced to make an actual object and allocate it and put it somewhere else because it doesn't know what else might happen with this point in the future so I go and I make a second point. Now the next thing I do is I call the distance function and the distance function also makes a line object and again because Ruby doesn't really know what's gonna happen with a line object it has to go and put a line somewhere on the heap and then it goes and calls the length method on the line and the length method actually starts pulling things off of the point which is actually super dangerous if you weren't garbage collected right because now we're just pulling random things off of this object so we're really happy that these things are allocated on the heap because if they weren't allocated on the heap if they were basically, if they were managed manually if you were basically allocating them and freeing them and you start pulling random things off who knows what could happen so we basically go and we pull a few things off we do some calculations then we call the square root function which is yet another function we give it the values that we gave it and then we return sorry and then we return and what's kind of interesting about this is that I sort of told you a story of it being somewhat unclear about what's going on like what is this point object, what is this line object I don't really know what's happening here but what's kind of interesting is that most programs actually are written in this way in which even though in theory the point object isn't sort of known what it's doing in practice it's being created it's getting passed a bunch of functions then it's getting returned and then we're done with it right so in practice what's happening is that we're creating objects they basically get used in computation they get returned right away nobody hangs on to them people aren't making threads and storing them off or putting them in other structures this ends up meaning is that even though in theory this is all very simple and you can sort of understand statically I can just put the memory in some known location pass it around, get it back everything's great because of the fact that Ruby doesn't really know it ends up being forced to go and do a lot of extra memory work to deal with the fact that doesn't really know what's going on so let's look at the equivalent program let me zoom through that sorry so let's look at the equivalent program in Rust and the first thing that you should note is that it's not that many more lines it's sort of equivalently sized there's more types obviously involved so it's a little denser but there's a little bit of a different thing going on here so first of all when we say point over here in Rust when you say it this way and when you don't explicitly allocate it what you're saying is I would like the point to actually be allocated in a known fixed location that doesn't have to be allocated and you have to do extra work to make it be allocated somewhere else so you make these two points and then you call this other function and the other function also gets these two points and the way that it received them is basically by moving them into this function so this function is now the owner of these points and what it does with those points is it makes a line and it basically takes the points puts them into a line and it's basically now created this new object and again because I didn't explicitly say that I want to allocate this somewhere else now it gets allocated in a fixed known location and when I call the length function the length function is getting called and actually you'll might notice something interesting here which is this ampersand before self and what the ampersand means is just what it means something very simple which is you can use this self but you can't hang onto it you're not allowed to go make a thread and move it somewhere else you're not allowed to do something that would cause this reference of this line to outlive this function call so this is something that you don't get to say in Ruby you don't get to say this line cannot outlive this function call but if you do get to say it now you know for sure what exactly is happening with it so then you do all the same sorry then you do all the same amount of work but when you return from the length function you're actually confident that that line hasn't disappeared which means that the compiler can look at this whole program and it can say okay I know well it doesn't have to just say I know that I don't have to allocate anything we as a programmer have told Rust exactly where it should allocate everything and so that's fine that I think you can sort of understand how that could work but you're probably thinking okay well you can do that but what if you actually make mistakes like what if you need to hold something for the longer than the size of the stack and let me look at a really simple function here which is a function which opens a new file from a particular path and prints it and I'll just sort of walk through how this works this is a more complicated example and so what happens is we make a new file and what we do in the same function is we read from the file and again remember what I said before which is that in Rust if you don't say something specific and this thing that you say specific is box which basically means put this boxes up and put it somewhere else if you don't say that it's always allocating things on the stack so basically what we said is open this new file allocate it here and then we go print you know print line that says go read some stuff from a file and don't worry about errors that's what unwrap means and then when we get to the end of this function it's basically going to go close the file automatically because it knows that only one thing has access to it at a time so that works fine and as expected and obviously you can see that there's nothing dangerous that could happen there we can't accidentally refer to memory that we didn't expect because it's all self-contained now let's look at a second example where we actually read the file to a string inside of a thread so we go and we say I have a file let me open the file and then we go and we spawn a new thread and we read from it so actually this is also fine because what happened here is that we read from the file in the first place and then the only other time we ever used it again in the entire program was inside the thread so the Rust compiler is like okay the file was allocated in one place now we can get moved somewhere else and we're good and then when the thread ends up finishing that's the point at which the file gets the allocated and closed but there is actually one case that doesn't work where it's very dangerous and where you will be doing something bad and that's here where you say make me a file and then you say okay in a thread I wanna read from it and I also wanna read it from it outside of here the thread obviously in a garbage collector language this is totally fine because what will happen is the garbage collector will hold the reference will hold two references and it will wait till both of them get cleaned up and then it will clean it up but like we said before what we would like to be able to do is not have to worry about the garbage collector and what hopefully you've seen so far is that in many many cases you can just write normal programs and everything will work fine and you won't have to worry too much about these rules but you may write a program where you decide to have a file or any object and have it be referenced from two threads at a time or if there's other ways to have this happen and if you go ahead and do that if you try to do something that violates the ownership rules in Rust you get a compile time error and what that compile time error will say is hey, you used this moved value file and there's more that it prints out which tells you exactly where it was used in other places so basically what this means is that if you actually end up doing something where you try to do something that would require a garbage collector then obviously since Rust doesn't have one by default it will basically it will give you an error and what this means is that you can write most of the time normal programs that are very memory efficient that are very fast that are also very safe but you do have to worry about the case where you're doing something dangerous but unlike in C or C++ you get notified when you try to do something dangerous so this probably was a little involved for people and that's fine I think ownership is probably the only reason I talk about it here is because ownership is the number one topic that I think people need to know when they learn Rust because it's kind of magic how you get automatic memory management but also no GC and also it's safe it's like kind of a magic combination and this is how it works that there's sort of a set of rules that you have to follow about who gets to own what pointers but it ends up being very powerful so that's called ownership and if you start learning Rust make sure you pay special attention when you come across a section of the guide or whatever tutorial that talks about ownership so let me go sort of back to the beginning which is why does this end up mattering for anybody? the reason it ends up mattering is because Rust sort of opens up the ability for people to do low level systems programming who would not have done it before like me, I would not have done low level systems programming before whenever I wrote C code before I wrote Rust I was always very afraid and I always didn't really feel comfortable experimenting because I knew that if I wrote 500 lines of C code and tried to put it in production there was a good chance that I made some kind of mistake even the people who write browsers who are the best C++ hackers in the world make mistakes and get exploited so I was never very comfortable experimenting in my own applications with C code or C++ code because they were so dangerous and what this lets you do what Rust lets you do is it lets you say I have some area that has been driving me crazy performance wise I've tried everything, it's been crazy I've spent all this time reading the C code learning how the JIT works, all this stuff and I just want to basically go in and be explicit about the performance requirements this is something that you can really experiment with and not worry that you're gonna write a little bit of low level code and all of a sudden you're gonna start having your app crashing constantly and what this also means if you're willing to go and learn Rust is that you can, if there's an area where performance actually matters you can beat your competitors if you're a high frequency trading company and all your competitors are writing code in Java and they have all these GC pauses and you write your code in Rust maybe you'll be able to beat them out and so obviously don't do this whenever performance doesn't matter but when performance matters probably your competitors have similar performance requirements and you can out-compete them and just in general it's safe I think it's easy to think about low level code and say low level code is either low level code is super dangerous and it's so hard to write and there's all these crazy C macros and what's happening here and Rust is a safe language it's a productive language it's not as high level and as productive maybe as Ruby but if you care about performance I think it's great it's safe Rust enables a whole new generation of high level programmers to write systems level code so I think what you should ask yourself is what can you do with that power? Thank you very much