So I only hold four cryptocurrencies. I hold Bitcoin, Bitcoin Cash, Litecoin and Ethereum. And the order of this is in chronological order. So meaning that when I bought Bitcoin some years ago, today that Bitcoin is both Bitcoin and Bitcoin Cash. So I have equal amounts of Bitcoin and Bitcoin Cash. I also bought some Litecoin a few years ago, and I also recently bought some ETH as well. The reason I hold this is very simple. Bitcoin, of course, is the most important. It's the one that started everything. I think if you think about blockchain, the one and only blockchain would be the Bitcoin blockchain secured by Proof Of Work. I'm a big believer.  That's the reason I hold Bitcoin. Some people are surprised that I also hold Bitcoin Cash.  They already sold all the Bitcoin Cash. But I see Bitcoin Cash as a very worthy successor or as an original Bitcoin. It most cleanly adheres to the Satoshi's white paper. I think Bitcoin Cash keeps that spirit alive for Bitcoin to be an instrument of payment for it to be valuable because it's easy to pay and therefore has network value. So I know the core team is strongly opposed to it. But for me, they're both my children, so I love them equally. Litecoin, of course, you know, many people know, my younger brother Charlie is the creator of Litecoin. So many years ago, I bought some Litecoin from him. Yeah, of course, it's gone up in value. So I just hold it just to be tied to the Litecoin legacy. In Ethereum, I've recognized Ethereum's value as a new cryptocurrency that has smart contract capability, especially all the ERC 20 tokens. And I'm quite impressed by how Ethereum has come about age over the last few years. So that's why I own Ethereum as well. I remember getting a gift from my brother of a cassacious Bitcoin. You know, so it's worth a lot now.


Good evening everybody Thank you for coming. My name is Mariano Cugnetti. I'm the CTO at enter Enter is an ISP in Italian ISP. We are a company based in Milano, and today we will talk about the superpowers of Cloud based on OpenStack first of all Let me introduce the large set of technologies that are required in order to build a successful public IAS We are running a public cloud on OpenStack since 2013 But before we have experienced a lot with OpenStack since the cactus release Providing VPS services. These are just a small list of the technology involved in our environment Which require so many skills that sometimes the younger they are the engineers The best is the the result the better the result you get from them We are a team a very small and agile team We started with six engineers now we are ten and the average age when we deployed this environment was 22 years except for me obviously Since we are an ISP we come from a strong network Experience and skill we deployed our cloud because we already had a large network Spreading across Europe. We provide our customers which are mostly Italian companies They which have their headquarters in Italy. We provide with VPN MPLS VPNs across All around the world and especially across Europe In order to be in total control of the networking supply chain We decided to move the closest possible to the customers by activating our point of presence in the Main internet exchange in Europe. That's why we asked to local access provider like British Telecom or Telefonica or other smaller and more agile providers to deliver L2 traffic In these pops. That's why we set up our pops in Milan obviously where our data center is and in Frankfurt close to the deserts Which is the main German internet exchange in Amsterdam close to the m6 Which is the main internet exchange of the whole Europe in? UK close to the links and in France close to the France six We had these five pops and then we ended up asking one of our Co-location customers in Italy, which is bergacom to provide a 10 gigabit ethernet ring a metro ethernet carrier Link across all of the five pops. So we are running our cloud With the silos which are deployed into pops that are connected at a layer to a 10 gigabit ethernet ring. This is not an OPEX. This is a KPEX We actually bought the link. So we are we really own the network and Having a dedicated network means having very low latency between all the nodes and the regions and they've been very large Bandwidth to play with everything you will see after So this is the map of our network You can see the pops in Europe and you can see also the connection we have in Italy and in Europe Super services means as Randy by a store said once OpenStack is not a cloud platform. OpenStack is The core is the kernel of any cloud service you can you may want to build That's why we decided to design our offering based on OpenStack and other services Obviously, there are the main services running in OpenStack computing. We run KDM It's a very powerful and efficient hypervisor. It has a very low footprint compared to VMware and to Zen server and It's so it can use the hardware in a more efficient way we do not do over provision because the hypervisor can by KSM or ballooning can optimize the usage of RAM and virtualization In computing we also consider to have glands Which we use to provide templates and to provide snapshots all across the regions How does it work every time a user? Takes a snapshot of an instance. It is the image file is copied to the object storage Which is a large cluster Spending all Europe and so all the copies of the file the image file are copied to the other sites in Europe So if you just change the region you are working on you will be presented with the same snapshots You have just taken in other regions. So it's very easy and very Immediate how to you can snapshot a whole infrastructure and restore it in another region for redundancy and distribution storage it took me At least two or three months to decide whether to go self or to go swift both had very good advantages and We decided we wanted to keep both we use swift because we have a partnership with siftac and At the time when we went online Self was not providing geographical distribution and was not going to deliver storage policy which storage policies which swift does and allows us to Let the user decide where whether the the data inside a container must be replicated across all the cluster so all across Europe or must be contained in one single region for Regulation or for security reasons. So our customers can decide when they deploy a container whether they want to Spread the data across their Europe and the cluster or not on the block storage side Which allows us by tweaking The caches on top of the the net to the the storage nodes to reach at least 12,000 I OPS per single node, which is a quite amazing result compared to enterprise Storage systems We use only commodity hardware So these performances are achieved on top of super micro super servers Which are quite common in the open-stack environment Obviously, we also run ephemeral storage inside the nodes And we decided to have all the storages split across different platforms So in in case of fault of any component you can have redundancy of the data networking since our experience with Cactus Diablo and Essex Showed us the limit of the v-land Plug-in to design overlay network. So we decided we would have gone in production with the VXLan Which at the time of the of the launch of enter cloud suite, which is our product Was in a alpha. So it was very very very very Experimental we decided to do this and by the hell with the help of melanox technologies that provide the hardware both off from the network here from the switches to the nicks we reached a very efficient level of offloading So the CPU is not loaded with the compression UDP acceleration. That's required in villain in the XLan Will we run a pure open-stack pure neutron L3 and open v-switch? Solution we don't run any proprietary Plug-in, we didn't want to all of our cloud of all of our installation ranging from Nova to Swift to Any component is made up by open source components DNS DNS is the cheapest most affordable and available system to provide the Geographical load balancing across regions since we have regions in different Places in Europe and since our users are replicated through a Galera cluster across all the region Every user can just switch to one region to each other with no real authentication needed This is Possible also because we use couch base to replicate tokens across the the regions Moreover having a cluster distributed cluster. We can let the regions communicate each other the DNS is Fundamental because if you want to have infrastructures, which are distributed across regions you need to provide some flexible tool to balance across Your installation so we decided to get the best from route 53. I mean the API support the Configurability and the load balancing ha and geo functionalities But we decided to get the most out also of Dean DNS Which was the only one providing a DNS based on an anycast network So since we own the network and since we come from the network we are skilled on this So we decided to build an anycast network. So our DNS out our Authorities of DNS are exposed on API's on an IP Which is like 8888 by Google? So every user just called the same IP to request to forward his query to our DNS and is Automatically wrote it routed to by BGP to the closest DNS This allows the users also to use geo IP Gip DNS That let the user interact with the closest instances so you can have multiple Resolutions based on the location of the user on the network You can also configure load balancing weighted load balancing You can have a 70% of your traffic going to region in Milan and 30% going into the region in Frankfurt if Milan fails automatically the system detects it and Routes 100% of the traffic to Frankfurt The DNS is running on an engine that we developed in house and it's based on a scala technology and We are particularly proud of it because every DNS query takes at at maximum three milliseconds to be answered So it's a pretty good pretty fast as a DNS service and the last thing You need in order to distribute your contents Object storage is fine for a lot of purposes, but when it comes to distribute static contents software updates, etc You definitely need to have some caching Local and close to the user and you need to have low latencies in accessing the static data Obviously we could not build A worldwide network to provide CDN so we partner with the hibernia networks with which is a US company that acquired at reto a very known company from Holland and They provide us with 200 pops all around Europe with their proprietary any cast network And they provide CDN services based on a proprietary solution for CDN Interfaces are very important. We think that most of the users here are very familiar with with Horizon but in some cases you find users there are Newbies or quite new to the cloud so they may get stuck on building the network and building the router configuring the allocation pools and so they require for something very fast where Difficult decision are taken by someone else. So that's why we decided to develop something close to the Typical service VPS service for Developers so that they can be very fast and develop in deploying Instances and infrastructures on the cloud this does not mean it's Simplified it's easy to use it, but you find out all the functionalities you have in horizon Moreover, we developed our own html 5 Interface for horizon and for object storage for swift anybody who had used the interface on horizon for Containers knows how difficult is to cope with it. So we decided to rewrite it from scratch And other interface we are running is a scalar. We have a partnership active with scalar We are listed as cloud providers in the scalar comm and we also provide the local installation of scalar to our users. So they can access to Self-feeling autoscaling functionalities inside our cloud Super management means that we can play with developers. We need very simple Test and via test and dev environments. They don't want to cope with infrastructure They don't want to plug too many things in their infrastructure. They just want servers and start And boot up immediately, but we also work with companies and that's why we are exploring the world of enterprise Because the managed cloud is something that the big ones like Amazon and Google's are not covering so that a niche It's a niche between giants, but it's an interesting niche for Companies like us to investigate into Hardware is the one of the most interesting challenges we are facing We as I told you we worked we started working in 2011 We dealt an HP, but the more we went over Working on Opistak. We understood that we could carve our own platform Dell and HP and the vendors in general provide the multi-purpose service, but when you need specific Performances for example for SAF or for example for Swift It comes out that the multi-purpose is not fitting anymore So you start investigating how to build your own configuration and that's why we ended up working with Supermicro The next step is not only Assembling the hardware but building ourself in Milan We run a make a space and the co-working space so our idea our hacking attitude is quite Developed so we like to do it ourself And that's why last week I was at the open compute summit I had a keynote there and we are collaborating with the open compute project and we are we have delivered deployed three regions out of five and London and Paris were planned by the end of 2014 we delayed by three months because we want to deploy those regions with open compute hardware And so that's why we have to think about the platform Obviously more challenges are coming and we think that The way the cloud is standardizing on top of it of the user experience Is something we need to support and that's why we are Working a lot on Docker because we think that the moving Workloads on our cloud will be made mainly with Docker both on public clouds and private clouds So that's why we we are working closer with Docker to support it in our cloud That's it. Thank you very much. If you want to visit us We are at boot 34 if you have any question feel free to ask Okay Okay, the question is did we find any issue and talking we in working with the token replication the answer is yes Yes, because if you don't replicate them correctly You end up reauthenticating every time you fail to authenticate both on horizon and on the APIs Moreover, there was a bug into catch base that was very difficult to find out. So Updating to the latest release we solved the the problem so but couch base definitely was the solution to our problem the latest release Any other question? Okay. Thank you very much. Thank you for coming


Everything got quiet all of a sudden. Well, good afternoon and thank you all very much. I'm delighted to have all of you here, and I understand that you've received extensive briefings from secretaries Hodel and Regan and Dole and Weinberger, so you've already had an earful. And I'll just add that I believe our economy is moving forward with strength and confidence. We've surmounted recession, built a recovery and put America on the threshold of a lasting economic expansion. I'm sure you've got all of that in the briefings that you've had so far. In 1981, we inherited an economy that nearly, well, it was nearly ruined by a nightmare of double digit inflation, record interest rates, and over-regulation and taxation. And we set out to change course dramatically, and I think that we have started this in another direction. The growth of federal spending has been cut more than in half, and across the board, tax rate reductions are providing new incentives for production, savings and risk-taking, and deregulation of basic industries like banking and energy is sparking new competition. In addition, in the cutting of that, we're eliminating a great many of those regulations under the chairmanship of George Bush and his task force. Some amazing things have occurred. We estimate that we have reduced on the part of local governments and private individuals the amount of paperwork by some 300 million man-hours a year. And I've always wanted to see what would happen sometime if we and government just shut the doors and quietly slipped away to see who'd miss us. But one example sums up the difference between the old policies of government pump priming and our approach that is based on trusting people. Last year, we were asked to support a $3.5 billion program that was meant to create make-work jobs for 300,000 people. And we resisted that, and that program didn't go into effect. We thought that economic recovery could do the job better. And so far in the last 14 months, we have averaged putting more than 300,000 people to work every month. There are now 4 million more workers on the jobs than there were a little more than a year ago. I believe that we're beginning an industrial renaissance which most experts never saw coming. It started with the 1978 capital gains tax reduction that was passed over the objections of many in government at that time. And it was then made greater by our own tax cut program in 1981. Incentives laid the seeds for the great growth in venture capital which helped set off the revolution in high technology. Sunrise industries from computers to fiber optics are creating a world of new opportunities. And as our knowledge expands, business investment has stimulated a modernized older industries with the newer technologies. We've seen the venture capital industry raised four times as much capital, 1983 as it did in 1980. And we've seen real fixed business investment increase by a 13% rate last year, the fastest of any recovery in the past 30 years. And we've seen funds raised in equity markets zoomed from 17 billion in 1982 to 36 billion in 1983 and that is another record. Potential for growth, new opportunities will be infinite if we marshal the power of incentives and human knowledge and transform our economy and reach toward our next frontier, which is space. This is why I take a very hard line to those who in the name of reducing deficits would raise taxes and risk sabotaging the recovery. Believing we can make more money available for individuals and businesses to borrow in the credit markets by taxing more money away from individuals and businesses is believing in what never was and never will be. The central problem our critics refuse to address is not the deficit alone, but government's total burden on the economy because whether government borrows or increases taxes to meet the deficit problem, it'll be taking the same amount of money from the private sector. The solution is to reduce that burden by bringing down government spending to a level where it cannot interfere with the economy's ability to grow. So we're pushing a constitutional amendment, mandating a balanced federal budget, a line item veto to prevent pork barrel projects from slipping through as amendments to otherwise needed legislation, and speedy consideration of the Grace Commissions recommendations to reduce billions of dollars in wasteful spending and subsidies. We have those 2,478, I believe it is, recommendations from the Grace Committee, and we are now studying those as to how they can be implemented and whether they will take legislation or not. And incidentally, this line item veto, I speak from experience as Governor of California, I had it as do 43 governors today, and I in my eight years out there vetoed 943 spending items inserted into the budget after it had gone back to the legislature, and I had the right to veto them out. And when they had to face those particular items, all isolated, not part of a budget, and vote yes or no on them, I was never overwritten on a single veto. I want line item veto as a president. And finally, we want to combine all these things we're talking about with another key reform, tax simplification to make our economy the undisputed leader for innovation, growth, and opportunity. We can make taxes more fair, easier to understand, and we can greatly increase incentives by bringing personal tax rates down. If we can reduce personal tax rates, as dramatically as we've reduced capital gains taxes, the underground economy will shrink, the whole world will be the path to our door, and no one will be able to hold America back. The real question America must face is not if we should work toward a balanced budget, but how? We can balance up by raising taxes to accommodate higher and higher spending, but risk locking ourselves into economic bondage, or we can balance down by reducing spending growth and tax rates and permit our economy to break free. I believe that balancing down and breaking free is the true path toward declining deficits and an opportunity society, one that will offer a brighter future to all Americans. So I've gone on long enough and perhaps longer than I should, but some of you perhaps have a question, yes? Now I have to say, yes, we've kept in very close touch and they are increasing the money supply within the bounds of the approach that they've set, the upper and lower limits and right now it's about midway in there, and that path is commensurate with the growth in the economy. All we ask of them, and of course all we can do is ask because it is an independent agency, but all we ask is a money supply commensurate with our economic growth and one that will not re-inspire inflation to take off. For my question, is there a possibility that this year we will see a summit meeting with the new Communist Party leader, Chernyenko, and yourself? Well, let me say, this is one I can't really answer for you because relationships are very delicately balanced in so many ways, but let me say that I am supportive of the idea and we are in communication, we are in negotiations of a number of things since this change to see if we cannot enhance the relationship between our two countries. We've made it very plain to them that we know neither one of us will ever agree with the other's political philosophy, but we have to live in the world together and we are the two nations that could guarantee peace to the world if we'll only get down to the business of doing it. Well, we're believers in an open market and yet with regard to high technology, we have tried to set guidelines and rules that will keep us from giving away high technology that can then be used to strengthen possible adversaries against us and that is particularly true with regard to the other superpower, but that is all that we're trying to accomplish with that and to the best of our ability to retain a free fair and open market. No, wait a minute. This was on the merger and I didn't get the last part. Well, since I know that this is a legal matter now and that it's being decided and I have tried to keep quiet on it, but I don't mind telling you, I do not believe that such a merger would reduce competition to the point that it would constitute monopoly at all. Where we're headed with regard to foreign policy in Central America, I hope we're headed directly down the line that was laid down by that bipartisan commission after they went down there for six months and studied the entire situation. I am very fearful of the attitude of some in Congress who can't see that that is in our best interest to see that we solve some of the economic and social problems of our Latin American neighbors to eliminate those societies that are based on extreme wealth and then extreme poverty with no chance and opportunity for a middle class in between. And at the same time, to bring that about and those reforms about, we've got to give them security. You can't institute economic reforms when the government in charge and the people are having their head shot off at rebels that are inspired by the Soviet Union and by Cuba. And we can use all the help we can get because those people in Congress that are trying to tell us that somehow we have no responsibility, no reason for being there and if they can't look at the map and see what another Cuba geared to expansion down there in right here in our continent, what that means to us, one of our congressmen came back from talking to some of the Nicaraguan government officials. He had gone down there opposed to our viewpoint. He came back the other way around and he told us that one of the officials in the Nicaraguan government had said to them, said to him, don't be surprised if in a year and a half you see us at the Arizona border. Now, huh? Oh, Mike Golly, I didn't think anyone would remember that. I wish Mac Baldritch were here. This has to do with our machinery and sales overseas and now. Well, the only thing that I know about the restraint on export licenses has to do again with that same security matter of anything that would affect our national security by being in the wrong hands. That curbs getting a license. I don't know of any difficulty with anything beyond that. Yes, I think we're thinking back now to when with our European allies we were trying very hard to convince them that becoming customers and virtually totally dependent for energy on the Soviet Union was a rather dangerous way to be and so this was one of the reasons why we were trying to discourage their partnership or their patronage of that proposed pipeline in the Soviet Union. Then as we went on with the summits and we finally were able to convince them to quit providing things and subsidizing purchase price and so forth with the Soviet Union and there was a relaxing and we have the creation of COCOM and the GATT treaties and all and there was a relaxing of that but there are still, I know in our own cabinet discussions there are still some items that we believe are detrimental to us to our security in that entire field. I'm being told I can only have one more and I'm sorry. Well, this was one of the things we got some agreement on with them in what's called COCOM that finally, and this was where we relaxed when they agreed that there would be restraints on their part also. Now maybe they're not as complete as we would like but we can take complaints to this body now that we formed with them and hopefully we can act as allies together and our relationship in that regard is far better than it was a few years ago when we were arguing about the pipeline. That's all I can do. You have another appointment. Well, I have to, I've just got to tell you one little experience here since the press, that fell as ours since the press, the other kinds of press isn't covering this thing. Not that I would resent this but when I'm mentioning the summits that we've had and these have proven to be quite an experience, the seven countries plus the head of the European Common Market that come together and last year we came together at Williamsburg, this wonderful village of ours that has been restored to what it was like in colonial times. First meeting was to have dinner on the first evening in the British governor's colonial residence there and so I was all set. I was hoping with what I thought would be kind of a leveler and I was going to say to Margaret Thatcher, Margaret, you know if one of your predecessors had been a little more clever you would be hosting this gathering. And gentlemen, never underestimate the ladies. I started with my line. I said, Margaret, if one of your predecessors had been a little more clever she says I know I would have been hosting this gathering. So I'll mind my tongue when I get to London for the summit this in June. Alright, well thank you all for being here. It's been a great place.


Alright so we are almost done with our basic tank controller so what we're going to focus on in this video is getting the turret to face wherever the position of the reticle is. Okay so why don't we just take care of the reticle and the turret in this same video because it'll just make it more sense and because positioning the reticle is actually quite simple. So let's jump over into Unity and get going. Okay so let's start by getting the reticle to be positioned wherever the cursor or I'm sorry the input dot mouse position is or the little cursor here in the game view. Okay so I'm gonna jump back over into Visual Studio and what I want to do is create another method here called handle reticle like so. Alright and in order to move the reticle let's actually set up this method first so I'm going to do another protected virtual void and let's just copy it so we don't have to type it in. Alright there we go and in order to move the reticle we need to get a reference to the actual transform that the reticle is or the game object. Okay so I'm gonna create another header attribute here we're gonna call this the reticle properties. Now you could always put this in the input script as well but in this case I'm gonna put it in the controller script. You know it's a toss-up whether or not you know one is better than the other so I'm just gonna put it in the controller class here. Alright so I'm gonna make this a public transform and I'm just gonna make it a transform that way don't do you know if if I were a game object then I would have to you know look for the transform so I would say something like you know transform dot or you'd say something like you know game object dot transform right dot position in this case I just want to say transform dot position kind of deal okay so what I'm gonna do is call this the reticle transform like so. Alright so I'm gonna copy that so I don't have to type it and we're gonna say if we have that reticle transform then we're simply going to say that the reticle transform dot position is equal to our input dot reticle position. Alright we set all that information up so with that all set up let's come back in the Unity here and hit play. Alright so now the reticle should be placed wherever the mouse is but we need to actually assign it. Alright so I'm a little off my game right now so let's drag and drop the reticle there and hit play again. There we go so now the reticle is being placed wherever the mouse cursor is. Cool. Alright so let's get the turret to point towards that reticle position alright so I'm gonna jump back into Visual Studio here and again I'm gonna create that protected virtual void and again I'm doing this that way I can override any one of these particular methods in a different script without having to rewrite the whole script. Okay we're gonna call this handle reticle and you probably see a little pattern starting to form. This is basically what I like to do and it's not handle reticle we want to do a handle turret. There we go. Alright so I like to break out all my components or script components that's not even a good way to put it. I like to handle or break out all my functionality into these kind of componentized methods instead of having you know these massive methods I've seen a lot in Unity projects. So I'm gonna put that right there so I'm gonna handle the turret and then handle the reticle. Now you could move these around however you want you know it's it's not really an issue at this point. Alright so for this now we need to get the turret transformed so I'm gonna create another header up here and we're going to say turret properties like so and I'm gonna say public transform and we're gonna call this the turret transform like so. Pretty easy stuff. Alright so now if we have that we're gonna say if we have that transform. Alright so if it's populated with something okay then what we're gonna do is we need to get a direction from the turret transform alright from its position to the reticle position. So in order to do this we need to make a new vector three and we're gonna call this the turret lookdir. Okay so for look direction right now it's gonna be equal to our input dot reticle position remember that's the position where the mouse is okay minus our turret transform dot position okay cool so that basically creates let's come back in Unity and try to visualize this so what that does is it creates a direction that points towards the reticle alright so it takes the current position of the turret right over here okay and it points it towards this and we can use that information alright so let's see how we use this information now. We can use that information to create a look direction alright so we're gonna say that the turret transform dot rotation is equal to a quaternion dot look rotation and we need to provide it a vector and this vector is that turret lookdir so we're gonna say turret lookdir like so alright so let's take a look so this isn't gonna work right off the bat but I want to show you how to debug different types of issues okay so let's go and assign the turret so I'm gonna come in the graphics group here and get this turret group because this is what I want it to rotate on okay so I'm gonna assign that turret group that's that transform into that turret transform property alright so let's hit play here and you'll notice that we are getting it to rotate and actually it is is it it's totally working isn't oh no it's not totally working see how it's actually kind of pointing towards it now you might like that that's not how tanks really work now in a cartoony situation or stylized type of game maybe that's you know how you want it to work but I want the gun to rotate up and down and the turret to rotate left and right so you can see that it's you know not working totally right so all we need to do super easy fix come into visual studio here we need to take the current turret look there all right we get that y component because currently the y component has value in it okay so I come back here into unity I'll try to you know visualize this for you guys a little bit more alright so if this gets really close you can see that you know the position of the turret head to the reticle would create a direction that points downwards and that's why the turret head is actually looking down towards the reticle so all we need to do is remove any y information that we have so we're just going to set it to zero all right super easy all righty so let's go and take a look and see what that looks like now so I'm going to play all right so perfect so now you can see if I get the reticle anywhere near the tank it doesn't look down at it we want the gun to just look down at it all right so that's what I wanted all right so the next thing that I want to do before I close out the video is just put a little bit of lag on the turret head there so I'm going to come into the visual studio IDE here and I want to put in a public float so we're going to call this the turret lag speed and I'm going to set it something like 0.5 all right okay and I also need to create a private variable this is going to store that final look direction and this is going to be a vector 3 so it's going to be the final turret look there you'll see why here in a second so I'm going to copy that come back down to our handle turret method here and right before we assign the look direction to our transform dot rotation I want to say that the final turret look there is equal to a vector 3 dot lerp we want to go from the final turret look direction so whatever that is currently set to to our wanted or our turret look there sorry by times dot delta time times our turret lag speed okay so what this is going to do is it's going to create a little bit of lag because the final turret look direction this vector 3 right here is going to be constantly trying to catch up to the actual turret look direction that we're calculating up here okay let's go back in a unity and check it out all righty so let's go and hit play now all right and it's it's pretty hard to see right now so let's go back up to our tank and let's set our lag speed to something like 0.02 and see what happens and I forgot to assign the final turret turret look direction to our look rotation so there we go so let's go back in unity here and hit play and there we go so now we're getting a nice lag perfect so it's a little slow actually you can maybe pump it up to like point 1.2 let's see what we get it's still pretty slow let's put it up to like 3 there we go maybe 5 yeah you can play around with all these values as much as you like let's say 10 there we go that's feels nice and arcadey enough but still has a little bit of fun to it maybe like 8 there we go cool all right so I'm going to call that good remember you know after you are setting values while in play mode just to copy the component that you've been working on come out of play mode and then just paste those component values and now you're set okay so I'm going to leave you guys there and in the next video what we're going to do is just set up the post effects by taking a look at unity's new post effect system that's still in preview and then we're going to call it good all right thanks so much


Ok, in... Ok, so maybe this should be part of a retro computing track, because it goes as far back as 1968. When Deastra sent a memo talking about why go to is bad, and why we should avoid it. And the memo was then redistributed by Niklas Werff under the name go to consider harmful. And that's the original source of the consider harmful phrase. Ok, so... What's wrong with the go to in the first place? Do we have to get some context? You can put it in different ways, but this particular way of putting it is shamelessly stole from Nathaniel Smith, who wrote a nice blog post about it. And it goes like this. This is a program in FOMATIC, which is the predecessor of COBOL, and it's an unstructured language. So as you see, there are no loops, nothing. It's not even invented. And you see a lot of jumps there. So you look at a program and you have no idea what's going on. And then you start drawing like arrows, like how the control flow looks like. And it looks like this. So you look at it and you have no idea what's going on. So what's wrong with that? You have different constructs, if, four, whatever, and go to... And some of them are good, some of them are bad. And how should we know which ones are good and which ones are bad? And one thing, one way of thinking about it is let's say the construct is good and the control flow starts in the top and then it ends up in the bottom. And if you look at all those constructs, like all of them have this nice property that just goes from the top to the bottom, if you do an if block, it can do the if part or the else part, but eventually it will arrive in the bottom. And same for four or function call or just sequential sequence of commands, but not so for go to. So it just jumps somewhere and it never returns. It never reaches the bottom of the code block. So we like to believe that the functions are black boxes. We call a function and the function eventually returns. Like nice and then easy to reason about. So if you have a main function it calls function foo, vision calls function bar, but eventually it will return from bar and it will return foo. It's also nice for encapsulation because main doesn't have to know that foo calls bar, because you change the implementation, it calls something else, you don't care, it still returns back. But try to use a go to somewhere and suddenly that's not longer a case. It just somewhere in the nested function it jumps somewhere else, never to return. Now here we have developer Bob, who is very cautious, he doesn't use any go tos, but he happens to use a library written by Alice, who is very cautious as well, she doesn't use any go tos, but she uses a library written by Colin who is careless and who uses a go to. And suddenly Bob is heard by that because like now inside the dependency tree just control flow just somewhere else and Bob's function call foo to foo never returns. Like all the assumptions he had about his code are broken. So this is kind of, it's not only like bad design, it's bad design plus plus because it's transitive. It takes only one dependency in your whole dependency tree and you are screwed. So what I was talking about was the old kind of go to that probably not many people here really remember. There were like big bad go tos which could jump around the code base from a function to a different function and you don't see those anymore. But it's actually not the long ago. When I started programming in 1984 I've got Sinclair's Spectrum and it had like built-in basic and it actually looks like much like the flowmatic code I've shown before. There were go tos all around the place and it just jumped around. So you don't see this anymore but what we have now is this kind of thing. Domesticated go to which can jump only inside a function. So that's the go to in C. Like you can jump inside a function but there's no way to jump out. So it's still bad but it's at least not transitive. So the call in, the developer of nested dependency can really break your workflow. OK, so now that I've explained the whole go to thing from 50 years ago what does it have to do with modern programming thing? And I'm coming from the networking background. I'm an author of ZeroMQ and I've made several networking libraries and the problem that occurs all the time is how to handle asynchronous calls basically. So this is what you have on wire. There is a byte saying that the following field is going to be 13 bytes long and then you have the actual beta. And how are we going to process that? So the old school way of doing that was like classic Unix way where you launch the process for each connection and the process was nice and sequential and it just read this, read that and that was it. But then people realized that launching a process per connection is probably not a good thing because it's slow and takes a lot of resources so we have to do better and so the threads were born and the interesting thing is about threads is you can't really find out who invented them but probably the person was to ashamed to actually... OK. So... So what we have to deal with nowadays is this kind of thing. We have this async function which looks like a function but it's not really a function because you would expect it to do whatever is inside the block and then return as a normal function but it doesn't. It returns immediately and then at some later point the async part is done. So if you just look at this naively as if this was a normal function you would expect it to print one and then to print three and then to print five and four and two but actually what you have is one, two and this part is executed three, four and then five. So it's weird. And yeah. And it gets reverse in JavaScript where basically those functions are anonymous and nested inside the code and this looks like a normal structure code but it's... it executes in very different way. So the layout of the program has basically nothing to do with the order of execution. So what you see here is one, three, five, four, two. What was printed out is one, two, three, four, five I guess. OK. The only thing to do it in is classic state machines where you remember what state you are in and the variable and well, this is at least explicit about what it's doing. So you go, you are in this state so you switch to a different state you will launch async call and some later point the function calls again with the reading done message and the other part of the state machine is executed but look at this code, it's terrible. And this is one slide but if you look at the real implementation it's like pages of this kind of stuff nobody can really grasp it to that first site. So then enter Golang. So the nice thing about Golang is that it introduced coroutines as a first class citizen and you are back to the old style of programming where you basically launch a process for each connection and it's nice and sequential except it's not a process, it's a coroutine which means it's cheap. Like this tag is at the beginning like two kilobytes and the context switch is pretty quick like 20 nanoseconds or something. So OK. So it seems that we are done but what's wrong with the go to? You see it kind of looks like the old go because in one way it just continues but in the background somehow the control flow just jumps away to some different function it's very similar to go in a way. So and you have the same problem as we had before. So once again Bob launches coroutine from Alice's library which downstairs is called from calling's library and calling does go and launches a coroutine which is running in background and the call returns to Bob's code Bob thinks OK the bar thing is done but there is actually a coroutine running in background and Bob has no idea. So it's sensitive again if any of your dependencies launches a coroutine in a background you have the old problem with this vile big bad go to. So how easy is it to fix? So one would say OK let's make coroutine scoped. So we have a scope, we launch a coroutine and when we get to the end of the scope the coroutine will be cancelled and that's it. Except that that doesn't really work because look here it is the classical code so we have a server which accept connections is handled by a handler which is a separate coroutine but if it was cancelled at the end of the block well it would be actually cancelled immediately and nothing would happen. So that's not good enough so what we really need is two different kind of scopes one is the normal scope and one is the better scope which cancels all the coroutines that were launched inside it. So this is in C this is a code using a library that I wrote called libdale and basically you see that the two scopes here there is a thing called a bundle it's a bundle of coroutines you initialize it in the vile you launch any number of coroutines inside it and once you want to shut down your server or something you jump out of the loop here at the break and you close the bundle and that cancels all the coroutines it's kind of you see it's indented like a nice structure so there are several languages that implemented this like this in python a library called trial which does the pretty similar thing except it's nice so you open a thing, they call it nursery which is the same as the bundle in the previous example and you basically do the same thing you launch the coroutines and once you get out of the block or the coroutines are cancelled so is that it? is that easy? so there are still some open problems here we are not yet there for example there is a difference between how libdale handles the termination and how trial handles the termination what trial does is you start your nursery you launch free coroutines and when you get to end the block, it waits it waits till all of them are finished and when they are finished it just continues if there is an error in any of them you just writes an exception and when the exception reaches this point it cancels all the other coroutines and then it continues libdale does it differently so there you open a bundle you launch some threads and at some point you say close bundle and at that point the coroutines are closed so the difference really is that in this case you have kind of like main thread which is in control of all other threads in the other case like all of them are created equal and and that there is no like the controller and the control so which way is better it's pretty hard to tell because in the trial version you have this nice error propagation where you throw an error and the error gets to the caller coroutine which is main but the problem there is if that happens then it kind of looks like that one of the coroutines can cancel its siblings and even its parents and we just very unstructured way of doing stuff so that's not nice about it so it would be nice to know whether we can combine the two approaches that we would have nice error handling and kind of nice encapsulation where coroutine cannot cancel its parents ok, so some other problems that are still unsolved or partially solved how would we how would we handle timeouts? so one way is to use something like as a golenx context where you have an object on which you can call cancel the timeout function and it will cancel after it or you can pass it manually to each function who knows what's better great spirit, that's a hard problem so for example you want to shut down your server and you say ok I am giving you like 5 seconds to finish of whatever stuff you are doing to close the connection decently and then shut down so we don't have a good story for that ok, I'm sorry to interrupt we're out of time unfortunately but we started a bit late so, thank you very much for the talk


Should we butt-drip and fall? Yeah. You're going to be tuned into both of these. All right, so VH, how do I sound now? That worse. Oh, great. That's a funky.


What to do if Windows 10 can't see computers in its network? You can see the list of computers in your local network by opening the File Explorer or by executing the NetView command in the command prompt. Make sure access to files and folders is enabled. Turn on Network Discovery and turn on File and Printer Sharing. Click on the Network icon to check if the Network Discovery option is active. The on position changes the network time to private and the off position to public. Another way to solve this problem is to set static IP addresses for the computers where you would like to have shared folders.


There is more than just snow piling along the streets of Boston garbage is not getting picked up. Thousands of residents are complaining that there have been no garbage trucks for as long as two to three weeks. B. U. T. V. News reporter Christina Loeb is live in Boston with the latest on all this trash talk. Thanks, Lauren. As you can see beside me, there are several random trash bags and litter all over just this one snow bank. Residents have taken to the city's Citizen Connect app to post their complaints. I'm taking a look at the app now in just about 45 minutes ago. There are three back to back complaints raging anywhere from Roxbury to East Boston between the app and the mayor's hotline. Residents have filed over 4,000 trash related requests and officials have said only about 200 of those have been addressed earlier this morning. We went out to take a look at the problem throughout the city with already a record breaking 99.9 inches. The Boston winter continues to dump snow, leaving residents difficulty dumping trash.  I live in South Boston and right now we can't even get to our trash barrels.  They don't really do a great job of picking up the trash itself. So there's kind of trash, you know, everywhere all over the street bags will rip open and stuff. So it's just been a pain. It's definitely a problem. People need to like I know it's an issue with all the snow, but it does need to be taken care of piles of litter also limit the already cramped space pedestrians have to walk on city sidewalks where snow mounds have taken over. Residents are being urged to be patient while the ongoing snow and trash removal battle don't seem to be resolved any time soon. The mayor is asking for residents cooperation as the city continues to recover from the historic amounts of snow that we've seen. Public Works is also asking the residents place their trash in accessible locations to help speed up the process. Reporting live from Boston for BU TV 10. I'm Christina Loeb. The Boston Globe is reporting that a disposed Christmas tree was even cited on top of a snow bank in Dorchester. Christmas was two months ago.


Hey, who do you watch as our YouTube videos? We have seen our YouTube videos, and you know that we're not afraid to roast some internet stars from time to time. When they're doing something tough, thank you. When they're doing something they shouldn't be doing, like exploiting their children for money so they don't have to do real cash. Tell them they'll go to jail if you don't buy their merch. Or performing a cringy live show, just for a quick cash grab. Stuff like that. Yeah, stuff like that. So we thought, hey, if we're gonna do a live show, why not take all these flaming hot roasts to the stage? Oh yeah! Playing this little idea to our lawyer, and he told us that if we show someone else's video on the screen, they could sue us.  But we still wanted to roast someone, so we were racking our brains trying to figure out how do we roast someone who isn't a real person.  You guys want to see us roast a native person? Yes! Good, cause we're doing it anyway. Hey Justin Chad! Oh boo! Stinky! Justin has four million followers on Instagram, and he's the world's biggest douchebag. But most importantly, he's not real. Yeah, Justin may look like any other human being. Living his human life no differently than either you or I, but that actually couldn't be further from the truth. And that's because he's just a bunch of facial features and body parts that we found on Google Images, and Photoshopped together to make it look like one person. But just because Justin Chad isn't a real person, doesn't mean he doesn't do some really messed up things. Oh, and it definitely doesn't mean that we can't rip him to shreds. That's right, fact number one, Justin's favorite activity is punching dog!  Hey G-mud off the screen! Danny? You thought we were booing the dog? Huh? We're booing the guy. Yeah, that's what I said.  No, yeah, I meant dog isn't like, bro. This is my dog right there.  He's like, fuck! He hasn't interpreted it. I don't know how you interpreted it. Um, guys, Justin actually holds the world record for most dogs punched. I know it's a weird record for them to have, but they do it every year. And when reporters questioned how he's able to sleep at night, he was reportedly quoted as saying, I don't need sleep. Because I'm not a real person. Oh my god. Fact number two, Justin once started a GoFundMe campaign to raise money for his sister's hospital bills and raised over $30,000. Sounds nice, right? Yeah. Don't boo yet. This is not the bad part. I appreciate your enthusiasm though. You're wrong because Justin doesn't have a sister. How could he? He's not real. And he used all the money he raised to buy cigarettes that he then gave to a bunch of little... Well, again, you shouldn't because he's not real.  Yeah, and I gotta say they didn't even like them. No, they were super ungrateful. One of them kept going like...  He's trying to speak some weird kid language to us. He's like, we don't speak nerd. Yeah. Totally ruined Christmas for us. Fact number three, Justin may have single-handedly caused World War I. Yeah, that's right. Justin is responsible for one of the most devastating events in human history. Total fuckboy move, if you ask me. You'd think the United Nations would be able to track him down and hold accountable for his crimes against humanity, but for some reason they haven't been able to yet, which now that I think about it, it must be because he's a fictional character that we both made up. Yeah, and that's all bad enough. It really is. But we haven't gotten to the worst part yet. Justin's content, the thing that made him famous in the first place, and it's disgusting, it's awful, and of course it's not real. So we hired a team of the world's best and most expensive visual effects artists to bring our vision of his content to life, and we're all going to watch that right now. We're just pushing one dog. Oh my God, I'm holding on into my dirt. I'm just going to say what we're all thinking. Yes.  We spent way too much money on that animation.  Yeah, how much did we spend on that? It was like half the tour budget. What? Yeah.  Damn, that's way too much money. But you know what, guys? One thing is for absolute surgeon. That's right. If we ever saw this dude in real life, which we won't because we couldn't, I know exactly what we would do.