I want to say thank you very much for coming along. They can get some young fella, just go here and get a hot dog pee tomorrow. He's got to pee tomorrow, he's got to borrow it. You can go and buy a gala for me tomorrow and give it to them. I can sell tea and gum for you tomorrow and you can go and sell whatever you want That's what's happened to me, I think a lot of farmers have disappeared because once I've sold them and I'm saying that you guys have some legally, if you sell them, you'll make some things that's fine. We've got licenses but this guy here might not be, trust me, he can buy 10 of me today and go and sell them to the mongrel mob tomorrow. They have very much of luck attracting back so on and you're going to see where you're going. No, if you have to procure it and the police are here immediately, you've got to look at that data and say ok, well this guy had it originally, come and this guy get it and they're saying in their report that they can't use the registration system that sort of thing to do. If there was a database that allowed them to do this quickly and easily, would that change the view at all? No, look at me, I've got five heads. I'm a big cat with the USA and all my life I've had human rights, I've got pistols in it and I'd tell you about it, there's a 50% chance that they'll break them into place if they enter into the serial number. Really? Is it that bad? So when I've sold them, they're going to sell them to a dealer and then again they'll say oh yeah they've sold everything out and they don't sort things out. Both the cinnamon overhead, of course they've been tried and counted, it doesn't work I mean we're going to get big from the issue about keeping the guns out of the game which is really what the issue was and I can't understand how gang members are going to get a gun license so I mean that just seems to be the worst. I can help you there, there's about 3,500 known gang members to the police 26 of them have firearms license, alright? So they're always going to get guns, they've been proven and everyone's been proven and so on. So you're not going to stop them getting them? Being a gang member is a category that sees you are not a very good person so the courts have actually ruled on that. If you steal a gun, you're then charged with having a gun unlawfully. If you also steal a car and a couple of other things and what have you and something else more valuable, you're charged for stealing all those as well. When it comes to court, do you see many people get charged and get time that's incurring with his other charges?  That if you get caught poaching fish, you lose your boat, your car and a whole lot of other stuff.  Well, Kenyan, if you get caught with a gun then you get slipped on the hand with a wet bus ticket. I think if you go back to some basics here, one is when you sit before a firearm license and anyone correct me here if I'm wrong, but safety is drilled into people when you sit and test. There's actually not a huge emphasis on security. Now I work in agriculture for a little time, I do a lot of farming and I hear time and time again too many people lack stories and lack security with them. So that's where they get stolen. Secondly, regarding safety and security, I still think there needs to be better measures of security than you hear of too many stories of safes just being ripped off of you. If they take a hold of you, it doesn't matter what you do, they're determined. They're going to take it. They're going to take it. If they make it harder, then that's all better. But rather than spending a ton of money on frivolous things that actually aren't going to change anything, maybe they should get a government subsidised for higher quality heavy duty safes. I'm not any of you guys in this room, I'm sure he can be holding a ring of thinking. Which is, I don't know a lot of you guys around and you've already got you, he can be, and my biggest concern if they change the serial amount of T-22s to serial rate rifles, a shotgun, then all of those guys and thousands of them, they shouldn't dance. They're going to say, well now my $3,000 breed is going to be worth $500 because I can't afford the $12 safe.  You've got to give them a reason to get their get-relicence. You can't just give them a good production. You guys have really worked hard to get yours, but I'm talking about thousands and thousands of people.  I wasn't just hiding, going around with it or selling it in the black market. That's where they're going to go. You're going to find out more.  What you've got, you want to protect. And it's amazing how many of you guys have already got it. You understand that. It's something where there's way more guys than you guys that aren't here to stand up for what they're going to lose. The magazine at the moment, when does it go to make it? Seven shots. Seven shots. I think if you read this, guys, the police have come back and seen it. They would like to make U.C.S.A.s and leaving shots and over. Okay, so T-22 roogers, all the shotguns. It's not a war. The police get to change, this is half the thing. The police are changing their policies. You can go to one area of New Zealand and the firearms guys got one. Yes. The interpretation of the war. Yes. If you go to another one, he's got another one. The police shouldn't be setting this stuff. So there's one really important point to say, and this kid did come through with some of the mountain safety training actually, is that the firearms officers need a much stricter guidelines about what they should be doing and should be looking at and should be testing because the lack of consistency is real consuming. So this total inconsistency, it's a war as we've got, but I think it's one of the best in the world. Here, here. We set them up, because of the spot. Same gun safe, same paper thing, and passed because of gold. When the gun came in the next time, I had to do it just for 10 slides of shotgun ammunition. He took one look at it, started using the word like Armageddon and how could I possibly need that in our ammunition. And I failed about 4 or 5 times. And I said to him, I'm going to look at your file and see what I passed last time. Then he came back the next day and said, well, it says in your file that you wanted to do the arm. You should have seen that.  He said, well, they're still there. He'd come back and seen what he thought was an excessive amount of ammunition. It depends on the person. You get their interpretation.  Would you use a gun to defend yourself? He said, if you answer no, you get a straight to question 27. If you answer yes, you've got another hour of questions. The guy doesn't even come and see me anymore. He rings me on the goddamn phone and says, what do you think about this fight, John? Blah, blah, blah. And I go, well, he's good as God because he drank too much. Nah, he's fine. Well, what I've tried to do is outline what feedback I've got, which I will take back to the committee and take back to my caucus. And that is the recommendation that we look at to censors. We'll not look at review and revise the censors for people who are using firearms to commit a crime. The second thing is that fit and proper person, we've got to ensure that if someone is in a gang, they are automatically ruled out of that fit and proper person category. All prospect or associate. That's what we said, all prospect or associate. Absolutely. The third thing is what I was trying to explain before is to make the firearms act more prescriptive. So the arms officers actually have a lot less discretion, but they know exactly what they've got to do and it's not up to the discretion or the interpretation, which varies right across the country. People are asking me, on the white feet, they want you to clarify what your position is on registration. In terms of registration, again, what I've heard loud and clear is that it doesn't work. But that's not emphatic, am I right in saying that? But in terms of keeping guns out of the hands of criminals, it doesn't work. If you guys are saying that fit is the number one way that criminals can farm firearms, and we haven't actually seen any evidence, any dialogue to suggest that. I can give you data. I have got data on how many firearms the police have recovered. Okay, so let's say it's employed that, the number one way that criminals can farm firearms and registering the guns is going to do nothing to fit. If we did register firearms, would it be easier for the police to trace where those firearms have come from? Your own example answers that question. You said there were 14 MSSAs found at the gang headquarters. They don't know where any of them came from. MSSAs have been registered for how long? It's been since 1992. Since 1992. Out of the 14 firearms that they found, surely the cause of one of them has been since 1992, and they couldn't tell you where it came from. And what I will do is I will go and ask the police about that raid, and find out if they had managed to track where any of those guns had come from. Can we go back to what you were saying before about you've come here tonight, you've talked about what you're going to go away with.  What were the other points you were going to raise? Just making the firearms a lot more prescriptive. So we didn't leave it to... So secondly, taking things out of regulations and putting it into the Arms Act, which would mean the Arms Act, it's obviously a bigger piece of legislation, but what it would do is it would take discretion, first of all, out of the hands of firearms officers and police, but what it would also do is whenever the police wanted to change the rules, it would have to be an amendment to the Arms Act, and it couldn't be done through regulations, i.e. MPs don't debate it and New Zealanders don't have their business met on it. We entered this in good faith, and I didn't start this by saying, okay, how can I f**k off $200,000? I was... No, you heard exactly. But now, I genuinely... I'm genuinely concerned, or want to note, how we can do things better so firearms don't get in the hands of criminals and gangs. We've got subject... We read all these, and we also heard from people who were... If you say there were... I read everything. And what we did is we had the police as our expert advisers, and on every single committee with every single report, whether it's tax you have expert advisers from the IRD, if it's a law and order you have expert advisers from the police, and so on and so forth. So, you know, what I am doing here is saying that the feedback I've received from right across the country is we've got that wrong, but what we now need to do to get it right, what we now need to do is have a different conversation around how we actually achieve the outcomes that we set out to achieve in the next one. I think the concern here, Mr... is that you go back to Wellington and say those things, and they say, in the other nine, say, no, we've got a spot on, let's carry on. Okay, well, I'll tell you what happens. I'll tell you what happens. Okay, so the process is the police receive this report, and then they write a report for the minister, and they don't have to agree with any of this. That report is going to take about three or four weeks, so it will nearly be on her desk. The minister then makes a decision around whether she accepts that police report or not, and so if she accepts it, or doesn't, if she doesn't accept it, then this ends up in the bin and we all move on and it's like this didn't happen. If she accepts it, or there are certain aspects of the report that the police accept and the minister accepts, then that is codified in legislation. So what you'll end up with is an amendment to the Arms Act, which then goes through the parliamentary process, which then allows Kiwis another chance to submit on any of the changes to the Arms Act. And what I will do is I'll probably write a one to two page report for my corpus, and saying, hey, on all the feedback I've got, this is what I've heard, and this is now what I believe our view on this should be. So they're acting in that manner. And you know what, that is a very good point actually. In one of the police association magazines, a number of the association members, i.e. police, said, I think it might have been sixty percent, but it's quite a high percentage of them, that we do not believe we're getting an understanding of firearms. So my takeaways of what I've said a couple of times and what I'll take away from this, and what I would do if I was a police minister, I promise you that the police won't make change in regulations because I have no control over that. But what I would say is unless they push a bill through under urgency, then no legislation will be passed before the election. And unless the bill goes through under urgency, then anything has to go to a select committee, and the select committee has to call for submissions. And what I would urge every single person to do is if a bill does go to select committee and you have real concerns about it, then you're going to say to write in and let the committee know. How do we find out if that's happening? I'll let you know. In fact, all you guys are here that have got big networks says that if there is a piece of legislation with changes to the arms act, it will get out there. I have no doubt about that.


The Himalayas are a remote, tectonically active area undergoing climatic fluctuations that provide biogeographic templates for mapping endemic biodiversity. However, substantial data gaps separate the eastern and western regions of the Himalayas, making it opaque to clarify the diversification scenarios. A study evaluated phylogeographic and phylogenetic hypotheses for a widespread fish, Snotrout, Cyprininae, Schizothorax, by sequencing 1,140 base pair of Metrictin DNA Cytochromy, Cytb, from central Himalayas samples and augmented with GenBank sequences. The study found that Snotrout originated in central Asia, dispersed across the King Hi-Tibetan Plateau, then into Bhutan via southward flowing tributaries of the east flowing Yarlink-Sangapo River, YLTR. Headwaters of five large Asian rivers provided dispersal corridors from central into eastern-southeastern Asia. The study also found to distinct Bhutanese phylogenetic groups, suggesting vicarians as a driver of greater species divergences across rather than within basins. The Himalayas are a component of the Earth's largest glacial reservoir and its unique aquatic biodiversity must be defined and conserved through broad transnational collaborations. This article was authored by Binod Regmi, Malisa Douglas, Karma Wangchuk and others. We are article.tv, links in the description below.


So what is this about we luckily won a project to implement a Kubernetes platform at a chemical Producing company so that was the challenge itself because if you think about if you reduce chemical goods Something went wrong then potentially it is not so good for everyone So yeah, but before we go in detail a few things about us. So my name is Tobias. You can say Toby I'm working for a cuba medic since four years Now as a principal architect help to adapt it customer side Kubernetes in a scalable way and yeah, I'm Mario. I'm also working for cuba medic I'm a professional service a Kubernetes consultant. We basically help our customers to build up their cuba medic Solution inside of their data centers or in their infrastructure and as you can see we're both from a barrier That's why we were little hosin of course And now to go deeper into everything We need to go back in history. So Yeah, sorry, it's Friday and history lessons are always bad and no one likes history lessons, but When we go back into the end of the end of 18th century We had the first we were ease that started mass producing goods. This was called industry 1.0 now, I mean it's new but we go with it and Then we have a involvement in the industry line so we had mass production in this at the start of the 20th century and we had Computer automation in this 70s. So there were the first manufacturing lines that use robots and kind of out started automating things and now we reached the point where we call it industry 4.0 and we are now at the Point where we have interactive systems. We have microchips in all of the manufacturing lines dial down to the single device and everything in the Manufacturing plant is also virtualized. So when we look at industry 4.0, it's Like every manufacturing Plant that we have need to be self-sufficient but also interconnected to different other plans because we the whole production line maybe spends over a lot of factory plants and We are currently into the process that we have like data analytics in every single step and also security and observability that mice does our systems are still running and Also, we want to improve every single step of our manufacturing process So the problem here is we now need a lot of compute power and we also need a lot of a lot of servers But we cannot put them in the cloud because the amount of data that we would move to the cloud and get back from the cloud It's just too big. So everything is placed next to the manufacturing manufacturing manufacturing line So all of those Machines need to work, but there are some locations that are very small So maybe you need to put something into the cloud which brings us to the big topic it's all Everywhere and we need to combine everything and we need to be flexible and for this we thought Why not run the workload in the tool that we use all in our days and Kubernetes Yeah, and then we said, okay, Kubernetes cool Chemical manufacturing. Oh scary Okay, so let's get this started and we said, okay, come on. We are experiencing Kubernetes What should go wrong? And then we thought okay, what's mainly the targets for all this project? So we thought okay, let's start with some Workshops we discussed with and then we came down to a few key project targets so basically is One is hosting manufacturing software Why it's different? Manufacturing software is mostly not as like cloud native software are you are need to connect to your P systems like SSP You need to connect to machines. You need to connect to devices We have a requirement that some Windows tablets are needing some of our services and it's like printers Do they ever get asked in a project about printers with Kubernetes? We are and that's was the thing so and then we realized okay. That's also different kind of network We are used to like IT network, but that's a manufacturing network We have at least three firewall as far we know Across to reach this network So we have a firewall from our managed service to the customer from the customer to the cloud from the cloud to On-premise from on-premise to the user workload So you see there are a lot of components what are really like interconnected and we need to first understand What is the topic of manufacturing and that's What they want is a high stability in a high grade of formation Why if it's could be that a data center or our data center on the manufacturing get destroyed by an accident or something? And they need to be capable to review to this review to the reviewed reproduce this quickly and Yeah, then we need independence. So Our operation of Kubernetes Does not in should not affect any other microservice deployment or the Manufacturing software deployment. We need higher availability and that's across the distributed locations So this would be the location means we have currently running on sweet data centers But the plan is to run it on 30 data centers So and then Yeah, we need e2e operations. So we need a team who can operate across the globe the status centers So the next data centers us so it will be completely different as we currently are working in Europe Okay, then Independency what means in this in detail. So it means that we want to decouple things We were thinking in microservices, but it also means that an update of component a should not Block or roll out of component B and that's goes back to the infrastructure So if we blocking people to deploy their changes, we are like kind of the bottleneck and that is not possible in this case We wanted to be fast because fast means for them That's they want to migrate more or less everything in the end to the manufacturing line So I called it digital backbone for them is not Kubernetes for them is a digital backbone for their future. So they want to be fast And important thing my thing is abstract complexity Everything is really complex. I think Kubernetes now is a point where we say, okay This is really really complex. It's maybe too complex already and that's something what you need to keep in mind that you make things simple more consumable and More repressible that you say, okay, we still can handle it in a two-pizza team Okay, so High availability Everyone has a different Interpretation of it in our case it was combined H8 across multiple data centers. So not only in one data center it must be overall data centers and Multiple failure zone. So we have we sphere there. We have Escher. We have multiple really physical machines there where we need to cover and we have a target as a for 99.9 0.6, so this means monthly monthly we have sift 17 minutes downtime what Is not much when upgrade fails or something. So this is really a small number Where we can fail and that's something what do you think in a year? It's only three hours a year is really long So three hours if something face could be really a tough time for him to fix it but currently we are fine managed to do it and We now get in detail how we did it. Yes, so we have another Component that you usually not think of is We are in a corporate world a corporate world has a lot of departments and they don't necessarily want to speak it to each other and they are really really big and you need to communicate with everyone and for this we needed to Basically go to our to our customer and say we cannot do everything by ourselves. So and we need we need a counterpart So for this we have stakeholder team at our customer to with whom we talk with whom we we design the whole architecture and with whom we yeah talk on a daily base and Create the complete architecture But also we need to talk to the consumer departments because they are creating the requirements for what they want to run on the cluster What they need? Well, for example, we now need 200 terabyte of data storage somewhere to be accessible in every data center This is this is a new requirement.  Maybe they know a little bit, but the first thing is they ask Are you do you really want to do this how you want to do this? No, you can't do this and it's a constant Yeah communication with them to bring them up to speed and also to teach them so that you work together as a team So we came up with the idea Why not splitting the competences? Into Small departments so that everyone knows exactly this is my part this is where I can focus on and This is where where my core competencies are so we started With one team which is part of the car part of the customer, which is the core infrastructure team These teams are there for providing the basic level like I need my data center I need my network. I need my firewall appliances I need my Azure accounts and so with these teams we basically first designed the base layer of of everything and The next team is the application platform team So this is the team that with whom we work so you can you can say it It's basically a vendor inside of the corporate and they and their customers are the different departments and they ask you basically hey We need a Kafka, but we don't need a Kafka for us alone. Can we just jump on a Kafka? So this team is providing very Large services on the bay on a global level and you can basically just go in and buy stuff from them and The last team from the customer side is not one team. It's We don't know how many because we never talked to them, but they are currently always talking to to the to the department above them These are the teams that are actually running their workload on those Kubernetes clusters that we that we provide together with the with the customer team and They they are come all of the requests for we need this we need that we need we need all of we need more storage And we need to take all of this in account and this is our job We are basically the cloud native infrastructure team. So we provide large services in all of the data centers and We are doing the consumption reporting We're doing the metering and we are creating the the clusters and we are creating the all of the infrastructure And also we are taking care of the infrastructure. So we are the people where you get say hey everything is down do something now and Then we come to the point where we say Running Kubernetes in the manufacturing line. How do we actually do this? I mean, it's not the simplest way but We said tell them to accept it What can go wrong? Now we are more on a technical side. So we solve kind of the setup But then a core idea was okay to handle this We need to repeat to the function units and system does not mean that it's Technical a unit. It must be a component what we can use. This is not just Kubernetes This is infrastructure. We have lots of things to care about vSphere permission models and Everything should be managed by API and good ops So we said this is our approach To manage the scale because we already know that we need to manage 30 data centers across the globe globally 24-7 with a high SLA and for that the modernization was really the king, but How will our friend the great firewall work this because the firewall don't have a API we can implement against Yes, do you ever talk to? firewall teams in great Corporates It's really hard. It's hard and we called it Wonderwall because you never know if there's one firewall more and That's what we did then we built kind of object groups. We said, okay We structure rise it we structure rise the firewall rules in objects and said, okay Component a of data center need to talk with component B of data center but the data centers are a generic object very putting different data centers into it and Make it then with this who said scalable Maybe you think this may be a fancy program what I can download. No, it's was exo sheet Okay, what else? I think everybody heard it infrastructure is code is great and Automation automation is our key success factor and this starting with the setup of how our team can set up So we need to really clear How someone can bootstrap because this can be possible that we call that they get a call some of my colleagues Do you also sitting here? Hi? Get called in the night need to check out repository and somehow need to find something And that's mostly the time what you lose and you remember if everything is down We have 70 minutes in the months and that's why we said, okay Documentation must be also in the code repository that you have a single point to come into it And we need a center rise scaling architecture So we have one core concept or a few core concepts what we can then duplicate similar. We think data centers kind of our Pots and we say hey we want to scale up the data centers and also the users want to consume it like that so the difference between a Cluster provisioning between clouds are only a few a few parameters That brought us to the idea. Okay. We standardize the data center Standardized data center means for it. It must be independent and universal But we have standard interfaces how we connected how we manage services there and we don't use any cloud Specific us and that's we're basically say okay data center. We need to quickly put everything in Kubernetes That's our interface where it can implement it and make it for our and customers easy to consume and The setup is really important It is repeatable in short time because the disaster recovery case is one of the main factors of this company So the company said to us like if the production is down for half hour It's cost and already a million and that's can you think about if something like hardware can fail What this means so we need to be really good at this Yeah, so we started when we go back like back in the time we had like Hmm, we introduced containers containers are now like cattle So we don't care about them.  We say hmm My my notes are I don't care about them. We can throw them away Now we go to the point where we say Kubernetes clusters. I don't care about Kubernetes clusters Also cattle I can throw them away and quickly create the menu and why not do the same approach with the data center So we created basically a template for a data center for each of the locations Where you run it to so we have one management layer on top of it, which is currently located in in Azure But this doesn't this doesn't matter and we are using our own software, which is an open source software called Cubimatic like our company so we basically say we run Kubernetes inside of Kubernetes So we have on our master we have on a seat so we have a seat in each of the locations and You run their your cluster with the control plane and inside of the Inside of the worker nodes of your seat or of your master you have the control planes of the user clusters Instead of containers So this makes the overhead really really small because h a user cluster only needs 0.3 CPUs to run in an HSA setup and you only the worker nodes are really then there for for your workload and You can quickly spin those clusters up in each of the environments that you potentially create because you don't want to run Only production you also want to have a dev and an integration and probably a sandbox where you want to test things But the problem is when you template a data center, you don't need just Kubernetes clusters There are a lot of more things that you need in every state single data center and this brought us to the idea Hey, why not create a service cluster? Right next to our seat that is in every single data center and with this service cluster We provide all of the basic services that you need to run the data center So we started and this is now bringing us to all of the CNCF world We started to create this the service clusters So in every of the service clusters we have at the accordion s for the NS service a registry We're currently using harbor a CI CD pipeline Agro CD and Now the funny thing Some you need IPs for your worker nodes and for your load balancers. So and for tablets and printers yes, and tablets and printers and you and There's nothing. I mean, there's something we figured out. Hmm. I see the HCP But I see the HCP does not run in the container. So we Created I see the HCP inside of a container and now can basically give IP addresses everywhere Outside of our Kubernetes cluster while running the DHCP server inside of a Kubernetes cluster and you need storage To store like pictures Every single manufacturing process is taking a photo so that you basically see Is everything all right can be improved on this? So there's a lot of pictures being taken and also you need a repository But wait a minute They are not all all they are not all arrows connected to the master service cluster. Yeah for the s3 we said Okay, we don't want we don't want to have the data replicated to the master because it's just too much data And it's not important the idea. There's only only important inside of the inside of the data center where it's really really needed and This brings us to the point that yeah, you can template it But you cannot do it for every service in the same way So you need to really figure out what is important for your use case and what is not important for your use case and As you can see We set up the idea that everything has it's a local address Which means that every single service in all of the data Data centers has always the same address. So when I'm in data when I'm in a manufacturing plant a And I call local dot DNS dot manufacturing. I get the nearest I get the nearest core DNS if I do the same thing in Data center B. It's the same address but it's also the local one and this brings us to our flexibility that we have When we hit the disaster case because as we said half an hour outage one million loss So basically the data center If if something happens with the internet connection, we still need to our plan to be operational. So we made our Fail over case the default So our fail over case is always this is how it's the the request is typically looks So we always call the the local service and we don't care if we have the master available Or we don't care if the other data centers are available. This also is a speed improvement But what if my local installation is failing? That's also easy we can just fail over to the master or fail over to the to the second data center location and How we managed to do this is basically everything is Tripled down from the master. So the changes are made and pushed to the master and it's always Put down to all of the these services below so that you basically can repeat That that all of the data is still in on the same on the same page And this makes everything really really easy in a disaster case and we can even say oh We have lost our master and we have lost our local data center So we just use another data center and this makes everything more and more reliant to any other topic So what this was the theory what we started with and what went wrong now Yeah, basically you can think that it's not everything work from scratch So and it was more like a trail map. So it's really something what you consider each project has his own Characteristics each data center has his own character characteristics and there are people who also are involving there So you cannot just say hey we do it that way and it's the only way we do because security says I don't care What do you want you need to? Discusses with us and we need to approve. So we are here the final one who approves it. So that's Yeah, and that's brought up to the idea So it's mostly like a trail map what you repeat and repeat and try to improve So our core success was we started small So we said okay We want one time the first end-to-end thing solved and then we improving by time and the first thing What do we take a look was the local infrastructure. So we needed to get into the data center setup We needed to get it explained it to us mean to understand what are the policy policies How we can connect to this Even like to have a jump server there was really a hard task because first you need to convince them. Okay, we have to save Implementation for it and we our we call it virtual operation center is really safe and it's Safe that we can access your critical production network also backup What means backup?  No problem But it's not the end story because you need to think about where to store it in the disaster case because it doesn't Help you if you have it in your local data center and it's burned down. So there you need to talk with the customer Okay, what are your failover strategy where we can store it? Do we have a three service to store it and so on and Yeah, then core infrastructure basically we thought that's the easy part, but we figured out that yeah these fear Kind of is different as we expected it as we saw it at other customer Somehow we have now we send we had dedicated zones where we wasn't aware about and we need to figure out Okay, how we can use this to make it really liable and network I mean, yeah, you know when if you have a name for something like Wonderwall The network was really a challenge because sometimes we didn't even know there's a firewall in between Security firewall. I said it Segmentation and authentication authentication is important. We need to have every person identified then How you onboard a managed whole managed service team with customer accounts. This was really really organizational challenge Good. What else? So services we said everything we want to consume needs to be a service Mario told you there's three service for for example, and this must be local that the nest service be local caches It's was this implementation detail that you can reconcile was key So they are independent, but they can reconcile and that is the point here on the independence thing So we said central master. This is the holy grail if we change a configuration that's there and On the locals, we just have replicas similar as pots. They can go away They can spin up there can scale up but if something happens the core brain is the central master and Then we have the partial connectivity where we said, okay That must be our default and we need to reconcile and that's brought us to this architecture. I Think automation is for everyone clear But if you have things what is not automated and maybe you have new tools what you don't know Then you think about declarative Management to so you we created wrapper around things what maybe are not in our responsible But we needed to configure them and need we needed to Bring that to other departments like the firewall rules Cluster management. That's mostly our core topic where we came from but this was only one pass And that's what we find out. So one pass is there We have a global service per API to the provision across the clouds That means I can talk to the same endpoint to provision a cluster in Azure or on the local data center in Europe or in local data center in US and that's helped us that we had the ops tooling There's dashboards and also there we need to be aware. Okay How can we come? Operational when a data center is disconnected. So this was also in use case to think about okay We need potential more entry points to the custom environment because if we only have one jump host And this one is not reachable then we have a single point of failure Okay, we solve this one and then we came to like the applications Okay, we find that the application has some other dependencies as we saw it's a use in Kafka They had some really classical workload as well and they have super nice microservices and then we like To consume the lot of storage and we run everything fine We sphere and then we move to cloud and looked also fine. But after a time we getting Okay, we only have 10% utilization in the communities cluster. Why we had our cluster autoscaler as well as on premise We have cluster autoscaling, but don't premise VMs can mount a lot of more volumes as Machine time what we choose in Azure? So I don't know if everyone knows that but in Azure you have limitation of discs What you can mount to the machine and that brought us we spent a lot of money for nothing because the CPU memory was idle So we redesigned it learned it and said, okay We need different groups of node pools and then the outscaler was also like modified that it's can scale individually based on the volume workload and based on normal workload and Yeah, that's scaled and up and then we said, okay. Now we understand it. We said Okay, let's continuous watch and that's the key point that you start The whole thing again. You cannot implement this in one step. If you want to do it It's will be slow. You never have a result and the people will get asking Hey, is there something it's like a black box and for us what a key success factor? Hey, we have quickly something we can show and now we improve and we now improve the security But the application team could already start and the other teams can already work with it. Yeah, and We came about with three key points. So the platform that we have need to be adept by design We need some kind of standardization and we also need more the modularity because not everything as we learned not every data center is the same and We must be flexible, but we need to do it with predefined components that we can easily really reuse and Currently we have a managed service with Under and under the SLA we have 39 clusters 206 nodes 878 CPUs 3.2 terabyte of memory and 200 terabyte of storage and also you need a playground Which is not under SLA that you can just screw up like delete the master of and some things like this So yes, I did Cluster as we have 12 clusters 94 49 nodes 274 CPU and 1.1 Terabyte of memory and with this We have finished and you as well. So coupon is over Thank you everyone. Yeah questions if not, oh There's one can you can there's a mic next next to you? Oh So We set it up. We started implementing it in February Last year and we went production in April It's was true. Yeah, and we was pre-production. Yeah, April was pre and we basically we did it with two engineers from our side any other question if not Have a great evening. Thanks for coming. Thanks for staying and yeah, see you at next cube con. Hopefully


In this topic, we are discussing the mean vector of multivariate normal distribution. In previous lecture, we have developed a PDF of multivariate normal distribution. And in this, we will find the mean of the multivariate normal distribution. Now, we have the PDF of multivariate normal distribution, which is equals to this. PDF of multivariate distribution, we have developed, let sigma inverse equals to A. Sigma inverse, which is equals to A. And what we have here is, this is the positive definite symmetric matrix, it's property. There exists a non-singular matrix C, such that C prime A is T, which is equals to identity matrix. And modulus, if we take it, which is equals to 1. Now, let this portion, let X minus mu, which is equals to CZ. What we are doing is, basically, we transformed it. X minus mu, which is equals to CZ. And the value of X here, we have found, which is equals to CZ plus mu. After the Jacobian of transformation, two or more than two variables, when we take its derivative, we have to use Jacobian. Now, Jacobian, which is equals to mod of curly X over curly Z. Because the second variable is Z. Now, mod curly X, X's value enter key, then curly Z, Z, curly Z. With respect to Z, we have differentiated it. When with respect to Z, you have differentiated it, then what value we have here? Mod of C determinant. Since the modulus of C prime A, which is equals to 1, we have separated its determinant. So, determinant separated, which is equals to 1, C prime C, C square, A as it is, equals to 1. We will take A to the side of equality. So, this is equal to minus 1. So, we have taken its square root. When we are taking its square root, then mod of C, which is equals to minus 1 by 2. The density function of Z. Now, whose density function is Z? Why Z? Because we have transformed the variable X into Z. Which is equals to this one. Now, here was X minus mu transpose. So, what value we have for X minus mu transpose? Look, X minus mu, C, Z. We have entered C, Z, A. Now, for A, we have, we know that the sigma inverse, which is equals to A, A, C, Z. And what is this you have? We have A, which is equals to, whose equal A? We know that the A, which is equals to sigma inverse. Now, we have transformed Pdf. Further, we have solved it. Look, minus sigma, it has been cancelled out. 2 pi P by 2 exponential of this value. Now, you have transpose. How will we write transpose? Z first, transpose and C prime transpose. A, C, Z. Now, we know that T prime A, C, which is equals to identity. If we do this in identity, then we have exponential of minus 1 by 2 Z prime Z. Further, now, what did you write? 2 pi minus P by 2 Z prime Z, we have written. I varies sum, I varies 1 to P, Z i square. Now, you have P terms. What did we do with P terms? Because we are multiplying, right? If P terms are multiplying, we can take it as product. And this product is capital pi, I varies 1 to P, 2 pi. Now, it is with P, so here it is 1 by 2. E raise to power minus Z square by 2. For mean, now you know that we have to find the mean, so it means that we have to take expected value. Now, expected value of i-th component of Z is, now we have to take its expected value. For expected value, what you have? Limit minus infinity to infinity up to so on minus infinity to infinity because it is a multivated case. Z i, simply you have expected value of Z in the univariate. Sum, unit into its probability. Similarly, unit into its probability. So, what is unit? We have Z i into F of Z. This is a continuous case. You have it in discrete and it is in continuous. Further, Z i as it is, F of Z. Here, we have entered the F of Z which is expected value of Z i. It is simplifying. We have just entered the value. Now, we will solve it. Here, you see what we have done. We have separated the i-th term and we are separating the remaining terms. Integral minus infinity to infinity Z i. This factor is multiplying with Z i. We have taken it from the integral. We have taken it from one integral and the remaining values are coming from the other integral. So, Z i, we have taken the i-th unit. This value came here. Into Z i. The i-th value is different. Now, this is the i-th. Now, there will be no i in it. Other than i, the remaining values are coming. So, capital pi. Next, we have a variable. H varies 1 to P but H is not equal to i because we have taken the i-th values. So, here, you have the remaining values. H varies 1 to P. Integral minus infinity to infinity. So, this is the whole as it is. But, here, the variable comes from the i-th. Further, we know that we have to solve this part. What is the answer for this part? Further, we have just done it here. 2 pi minus 1 by 2. We have taken it from the integral. So, 2 pi square root Z i into this. We have the remaining factor like this. So, this is not i equals to 1. This is basically H equals to 1. And H is not equals to i. Now, here, we know that this factor, the odd power of it is an odd function of Z is equals to zero. We know that we have done this in normal distribution. That the odd function we have is equal to zero. So, this is the first function of the previous equation. This is the odd function. So, the odd function of Z is equals to zero. That is, the expected value of the first part is zero. Multiply. What is this dot basically? Multiply of the other value. So, zero is equal to zero. So, the expected value of Z i is equal to zero. Hence, the expected value of Z is equal to zero. Now, we have X minus mu equals to CZ. This is what we have transformed, which we had let, we had suppositioned. So, applying expectation on both sides. Okay, we have applied expectation. Expected value of X minus mu which is equals to expected value of CZ. Expected value of X. This is constant. The expectation of constant is equal to constant. So, the expected value will be applied to us in X. And here, you have C constant expected value applied to Z. So, expected value of Z. Z i is zero. So, expected value of Z is equal to zero. Further, expected value of X which is minus mu which is equals to zero. Because, this factor is zero. Now, this is zero. So, where will this mu come from? Now, hence, prove expected value of X which is equals to mu. So, this multivariate mean vector of multivariate normal distribution we have determined. Expected value of X which is equals to mu.


It's not so bad if you can do it, and you don't hurt yourself, and you especially don't want to be hurting yourself in the gym. And if anybody saw Bill DeSimon's presentation last year, there's certain biomechanics of every joint, of every muscle, and muscles are patently ignored in the gym. There's thought of as a suggestion rather than, you know, you've seen guys doing a behind the neck military press. They prop up, and they grab the bar here. They're going, yeah, awesome. I'm really feeling my deltoid. What they're actually feeling is ligament binding and impingement at the joint. Because your arms come into your scapula. Here's a little anatomy, guys. How does your arm attach to the rest of your torso? It's not at the shoulder. It's here at your collarbone. It comes into your shoulder blade, attaches to the AC joint, which then attaches here to the clavicle. Okay, so it comes in at 30 degrees off of the, what's called the frontal plane, which cuts you from the back. That's why a normal military press isn't terrible, because it's at least in that plane. But the moment you rock back here, you're getting extension at the joint and compression at the joint at the same time. And you want to think about this AC joint as kind of being like football pads, right? It extends way over your shoulders, way out to here, if you've seen these guys. Think of the bone as that over your humerus, over the glenohumeral joint, which is your shoulder. As you think about it, it's not here, it's moving down here. So you've got this distance that you're all, everything underneath is going to run into that bone. And since this is its most protruded point, you're getting the most impingement right here. But I'm feeling those deltoids. So there's a lot of trade, there's a lot of lore built into this. And you're going to want to be informed by biomechanics, by kinesiology, and you're going to get a lot of that just watching Bill's presentation last year. If you want to make your joints last, because it's like pulling rope over a boulder when you flex. Those tendons, ligaments, they are moving over bone. Bone is not the smoothest thing in the world. They do wear down if you're not careful. Training five days a week is a sure way to expedite this process. If you're looking to have crappy joints, train five days a week. If that's your goal, that's an easy one to achieve. But you're not, you're training for health and you shouldn't be getting injured in the gym. The whole point is to make you better at doing things away from the gym, right? That's what you're training for.  You keep getting stronger and you get bigger and then you get to 50.  And you've invested maybe an hour a week. You've got lower body fat percentage. You've got low resting heart rate. Blood panels are good.    The more aromatase you have, the more of the testosterone that you are producing gets turned into estrogen. And the more this ratio gets out of whack. The flip side of that is that have you ever noticed how when your grandmothers or mothers or aunts, they go through menopause?  They really have this reduced fear and sort of aggressiveness that they suddenly have. Or at least that we don't associate with all women. It's because their ratio of testosterone to estrogen has changed. Simultaneously, when men go through what we colloquially term manopause and their testosterone to estrogen ratio gets a little smaller. They have a little bit less testosterone to their estrogen. They become a little calmer. They become a little less manlike. Because testosterone has two functions. Truly two functions. I'm getting crass and you all better laugh. Ready? Bucket or kill it. That's all testosterone is for. That's all it does. And if you're training, if you're training, you maintain some of that. If you get in fat and out of shape and not training, you're losing that. You're really losing that edge. And you can maintain this on the smallest amount of effort. Well, your effort at the gym is going to be high, but you're only investing an hour a week, maybe. Depending on how good you are.  You know? And so on and so forth. So I've got some examples. I'm fortunate enough that I've trained people from the age of 10 all the way up to the age of 92. And everything in between. My joke is that I charm women between the age of 50 and 70 on a daily basis because they can afford my fee and they're patient. Their demands from training is that their bones get stronger. And strangely enough that they have someone to talk to. Personal training is not unlike hairdressing. I mean, you are dealing with very fragile people and you're not wielding sharp instruments, but it's the same thing.  They tell you about their daughter's divorce. They tell you about someone's drug rehab.  They tell you about how they had 12 drinks last night and yet they're still here to work out in the morning and maybe you should go easy on me. They do all these things. It's a relationship and that's part of the reason why I enjoy it so much. And so I have some examples of this. People who have managed at different points in their life to keep perspective, to make this a part of their life without making it their life, to make their life better, every aspect of their life. So I start off after talking about all these people who are genetic freaks with two genetic freaks. When I first moved to Austin, there was a gentleman who was working for us. His name was Ben or working out with us. His name was Ben. He used to be a power lifter and you could tell he had a barrel chest. He had short legs, short arms. He trained three exercises once a week. He came in. He did a pull down. He did what's called a ventral chest, which is kind of a combination dip and chest press. And he did a leg press. They were all done very slowly to momentary muscular fatigue. Ben, at a height of about 5'7", had over 16.5 inch arms lean and he could still pull close to 500 pounds in the deadlift with minimal amount of training. And his total time investment exercising per week was 10 minutes.  That's why I'm starting off with him because they're impressive. But they're also not the norm. And the next guy we had, his name was Andrew. Andrew looked like he played rugby, like a college rugby player. He had calves that were super thick. He had a yoked neck and he had actually strangely reasonably small joints. And he ran an IT company. Austin's got a lot of those. And he would sporadically train.  But in those two months' time, without fail, he'd come in looking like he's been constantly training, bigger than anybody in this room. And he'd train once a week, again, 10 minutes, and he'd put on 10, 11 pounds. And then he'd stop training for the rest of it because business demands. He had travel, he had kids, he had so on. But he was able to focus and get the most out of those workouts and maximize the genetic card that mommy and daddy handed him. But he understood that. Most guys who are big and strong don't understand that it's not that you aren't as big and strong as me because you work less hard. There's not an understanding. It's the same way someone who's a genius can sometimes have a hard time grasping, why don't you get this concept? Why don't you understand it immediately? There's something unseen. It can't be told. And it can't be given. They've already got it.   They own insurance companies. They're lawyers. I have one right now person. She's in her early 60s. Shredded to the bone. She and her, she's a physical therapist. And she, a number of years ago, decided to compete in Primal Quest.  Have fun. Since a 10-day race, they drop you off in Moab, Utah, although they changed the location. You never quite know where you're getting dropped off, so you can't scout it.  You're going to bike. You're going to row. You're going to climb. You're going to walk.  And occasionally one of the pit stops will put you at a Denny's. And after about five days, suddenly that grand slam seems like gourmet cooking when all you've been having is like power bars and granola. Their group was the oldest. They all averaged age 56, 57. They trained with us 21 minutes twice a week. And you know what they did the rest of the time? Biking, climbing, running, all the stuff that they'd actually be doing at this event. Most of the competitors were in their mid-30s. Some were in their late teens, but they were usually like a fourth man on a team. This group finished in the middle of the pack, which, comparatively speaking, you got people 25 years younger than you and you're beating them, even if you don't win the thing. That's a victory. And they came back and they were like, yeah, we were tired. None of us got hurt. We were able to do it. We're really proud of ourselves. I know that when I was younger, I had this idea that being in your 50s and 60s meant that the slowdown was inevitably going to happen. That's probably because of Western aging, the people we see. Fortunately, we have these examples, like I talked about Clarence Bass earlier, who's still under 77% body fat at 73. And he still competes in rowing. Who are breaking that mold? So you have to think over the long term. You don't have to think I'm going to train until I'm 50 and then I'm not going to do anything after that. And I've had some really old clients. I have one currently. His name is Jim. Jim sends me all sorts of chain-letter jokes.  Do your grandparents have your email address? Are your grandparents Republican? Because if they fit these things, this is Jim. So he sends me lots of jokes. And he always does a joke when he comes in. And he always likes it when I have a lady fill in for me on my workouts because he gets a hug out of them, right? Because grandparents, grandpas, especially are seen as non-threatening. But this is one of the jokes he told me. One day he comes in, he goes, you know, Skylar, my mother once, she never trusted me. She never understood anything at all that I did. In fact, she thought I was in the KKK. She comes to me and she goes, Jim, I think you're in the KKK. He goes, Mom, why would you think that? Why would you think that? And she said, I heard a couple of little girls down the street saying you were a grandmaster under the sheets. Grandmaster, they wear sheets. Guys, 80. Guys, 80. Clearly his testosterone ratio is still good.


John Philip Gabbaman suffered a knee injury in training and will miss the rest of the season. That is the projected timescale for him suffered media ligament damage in training and basically won't be back, you know, hopefully he can get himself fit ready for pre-season and next year hopefully have a fully injury free season. That's what we all want, you know, returned after 597 days back for Palace and then a few days later was unfortunate in a contact injury in training. It's devastating for the lad, it's frustrating, I guess, for Carlo Ancelotti that wanted the same. And, you know, obviously Evanton's summer transfer plans will involve the sentiment field and maybe that would have been determined with how well Gabbaman done. But I don't think Evanton can take that risk now, I think they need to get another one in who's got the same kind of physical mobility. But hopefully Gabbaman can get back to fitness and can be an important part of Evanton's squad next year. But really gutting for the lad and hopefully makes a very quick, swift recovery. The game last night at Brighton, which was dire, let's be honest, so Yeri Mene limp off as well, he suffered a muscle injury and the manager now expects him to be out for around three weeks, which proves Evanton's, or rather, gives Evan the unwanted crown of being the team with the most injuries in the Premier League. And the season, it's been a lot of injuries for players this season from every team, but Evanton have had real, real injury problems the whole season. And it's stopped any kind of continuity, any kind of pattern, any kind of consistency really. And the manager's gone on with it and it is frustrating, but what can you do? Hopefully you can get everybody back for four or five back, at least for Friday's game against Spades, which is now a must win game, another one. As Evanton still continue to try to get into Europe, the manager said after the game last night, Evanton is still in the home for Europe, said it'll be difficult, but we can still get into Europe. And quite frankly, Evanton, I've got to start winning football matches, it's as simple as that. You know, Spades on this Friday, Arsenal away, the following Friday, two teams that are right by us, six points would be lovely. At the moment you look at that Evanton side last night and think, is it capable of getting six points in those two games, but having the four players back on Friday would make a big difference. And the manager did say, he expects Alan, Dominic Alvarlyw, Jordan Pickford, Joshua King, all to be fit, Andre Gomez as well, all to be fit and in contention for the game on Friday. And you put those four or five back into the squad and back into the team, it does make a difference. And who knows, maybe that point last night at Brighton will be important come the end of the season. Who knows. Transfer news out of Italy today, suggesting that Napoli want Yeri Mina and he could be used as a hymn, you know, used in a swap deal with Kula Barley and Money. I don't know if there's any accuracy in this. It's, you know, the Kula Barley to Everton store, he's been running for ever since. Carl Amantilotti came through the door of Finchfarn, but if that was to be the case, then I think a lot of other Tomings would be quite happy with Yeri Mina moving to Napoli and Kula Barley coming in here, even if he is 30 years of age, still a good defender. Yeri Mina, of course, has only got two years left on his current deal this summer and therefore a decision does have to be made whether we extend Yeri Mina's contract or whether we do let him go out the door. Obviously he's had a few injuries, but he's still an excellent defender for Everton. Rarely his numbers prove that, but I want to keep an eye on him. Finally, Andrea Balotti, the Torino striker, he's been linked with a move to Everton as well this summer. Other teams interested in Milan and Chelsea as well. I don't see anything in this one if I'm being perfectly honest because he's not going to come in and I don't see him and Dominic Alderloom playing up front together and he can't play wide and he's not going to come in and sit on the bench and I don't see Dominic Alderloom becoming a bench player for Everton, not yet. So that one for me is filed under transfer rumour. Big, big time. That is it for the news daily. Give the video a thumbs up, subscribe. If you haven't and if you want more videos, join us on Patreon. See you later.


Welcome to Emerging Languages Camp 2010, or by Adam Clappalli. So I'm going to be talking about web applications, but I want to start out motivating this with an analogy from popular culture, or at least hopefully popular to people in this room. There's a far side comic strip that involves a man talking to his dog, and he's saying various things in English. Then we see the dog's view of this where all the dog hears is blah, blah, blah, and sometimes the dog's name, but mostly just blah. So I think the way that web applications are usually written today is a lot like that. The web application developer is writing a program that deals with a bunch of the languages that have become parts of the web architecture. And then all this is processed by a compiler or an interpreter for a general purpose language that doesn't have any support for these concepts and just sees everything as strings. And so all the nice things that your compiler or interpreter can do for you when it understands your program, you can't really take advantage of in this setting. So I want to tell you about my programming language, UrWeb, which is a domain-specific language for modern web applications. It has a fancy type system, and to calibrate this, I'd say it's even fancier than Haskell, if you can believe that. And the language has first-class support for the important pieces of web applications, which means that the compiler understands the semantics of these to various degrees. And so the advantages of this include the ability to do strong encapsulation where you can build components that own pieces of your application and protect other pieces from getting in there. And I'll go into a little more detail about that in a moment. And there's also support for metaprogramming where you're doing something like Ruby on real scaffolding where there's a program that will build a piece of your application based on some parameters. And in UrWeb, you can do static type checking of these metaprograms such that if the metaprogram passes the type checker, then it's going to be good in certain senses that I'll also talk about. And these senses include security guarantees such as any UrWeb application that passes the compiler can't suffer from code injection vulnerabilities. So the idea with strong encapsulation is to take sort of motherhood and apple pie ideas from software engineering that probably most of us agree with and then notice that they can really be applied further with better compiler support. So the usual story for strong encapsulation is that you have some functionality, for instance a hash table, that you hide behind a well-defined interface, for instance a dictionary interface. And then when client code wants to access your hash table, this can only be done using a small well-defined set of methods including, for this example, insert and lookup. And it's just not possible to go directly to the private fields of this data structure. You have to go through the interface and at least the traditional story is that the programming language enforces this rule for you. So in UrWeb, you can go further and the private data that your module owns can be things like a table in your SQL database or a cookie that is stored persistently in web browsers. So for this particular example, you can think about building a component that encapsulates the standard logic for doing user authentication on a website. And hidden inside of the component is a table that has the user and pass rate information along with conceptually for every person visiting your website, there's a cookie that stores which user that person is. And we should be able to ask this module, please insert a login form in this part of my web page but we should not be able to from outside the module reach in and screw around directly with the database table or other bad things like that. So the UrWeb compiler lets you treat things like cookies and database tables as first class values that can only be accessed through the language, not through some alternate text-based interface. So you can really enforce this kind of encapsulation. And we'd also like to go further and support the web 2.0 style where you'd like to be able to build a component that in a sense owns a piece of the web page that's been rendered. It owns a subtree of the page structure. So you can think of this being useful for a case like Facebook where you have a bunch of applications written by mutually untrusting users. You'd like to assign part of the page to each of those applications and ensure that none of the other applications can overwrite different applications, part of the page. And in UrWeb, this is supported by taking some ideas from functional reactive programming and the basic idea is that instead of viewing your web page as this big globally mutable variable, we instead view it as a pure function over a small set of data sources or maybe not so small. And when you modify one of these data sources, the runtime system automatically takes responsibility for propagating the consequences of those modifications to the parts of the page that should change. So that's the basic idea of encapsulation. So now let me tell you about metaprogramming. So metaprogramming or code generation is already really popular in the mainstream web frameworks including Ruby on Rails. And the standard example there comes from the Rails scaffolding, which will let you run a command line program and give it a description of a table in your database and then this metaprogram generates a bunch of source code files that provide a standard administrative interface to this table. So this lets you view and modify the contents of this table using HTML forms. And we can get fancier than this. For instance, here is an example of something implemented with UrWeb. It's an in-browser spreadsheet where the idea is that we see a grid here which is backed by a concrete SQL table. And some of the columns in this grid are pulled directly out of the columns of that table. Some of them are computed from the primary columns just like in Excel. And we can do things like filtering and sorting and so on. And we definitely don't want to have to implement something like this from scratch for every new database table we'd like to present this way. So it's very helpful to be able to build a metaprogram that encapsulates this idea and can be called with different parameters for different tables. So the way that UrWeb supports this is based on ideas from the type system world. So most statically typed languages can be thought of as having two parts. Compile time part and a runtime part, where we usually call the compile time part the type system. And usually the runtime part is turned complete and the compile time part isn't anywhere close to that. It barely even looks like a programming language. But in UrWeb, the type system really does look like a programming language. It's like a little functional programming language, kind of lambda calculus at the level of types. So you can use types to express some pretty interesting relationships between the inputs and outputs of functions. So the way that this works is that you build one of these metaprograms as a function from some set of metadata that's appropriate for the different tweaks that are possible. And the metaprogram then outputs some code, which you can take as a sub web of the overall web of your application.  This is actually sort of a type level program that as its input takes in the type of the metadata and then computes with that and then outputs the type of the application piece that has been generated. So for instance, the input metadata could be the columns of your SQL table. And then the type of that metadata is reflected as some type that stands for a set of columns and their associated types. Then we output the interface of a piece of the application. And so the way this is implemented in UrWeb, there are two important properties. The first one is that this is a pretty expressive type system. Whenever a metaprogram manages to type check in this setting, you get guaranteed that it's well behaved in some useful senses. Including no matter which inputs you feed it, the code that comes out is not going to be susceptible to code injection vulnerabilities. There can't be any dangling links within the application. A form has to agree on the number and names and types of its fields with the handler of the form and so on. Some sort of basic sanity properties for web applications. And this is only useful because we have this second property that it's possible to build a pretty effective static checker for this type system that does most of the work of inferring types and verifying that your metaprogram is really following the contract that you're claiming. So here's an example of a small program that uses a library that provides a sort of work alike for that standard rail scaffolding. I'm not showing you the code for the library itself because that's a little more complicated and I don't have time for that. But this is just an invocation of the library for a particular table. So at the start of this code at the bottom here, there's a table declaration which is using some syntax that's built into Irweb for defining an SQL table by giving a mapping from its column names to their types. And then down below that, there's a call to this library component called crud.make in this case. We're passing it three arguments, they're given names here. The first one is tab is an argument saying which table we'd like to build and add an interface for. We pass a string that just appear at the top of the page. And finally the interesting part is this last argument called calls, which is a record of metadata values. Where for each one of the columns of our database table, we give a little package that describes how input and output should be handled for that column. And in this example, I'm calling functions from the crud library like crud.int and so on that gives standard handlers for the primitive types. But you can also build your own custom handlers that do all sorts of things with input and output while still being subject to constraints that prevent one bad metadata handler from wrecking the whole application. So that static checking that I was just talking about is one of the nice properties that you get with the statically typed language as opposed to the dynamic languages. Another thing is that you can get higher performance. This is one of the standard arguments for using static types. And I just have here a screenshot to give a basic idea of that. I'm running the Siege load testing tool on that application whose code I just showed you with 20 concurrent connections, 100 hits each. And the transaction rate is the important part or at least that's the thing I'm focusing on. We get about 2,500 transactions per second, which isn't all that far off from just running Apache, serving static websites. And the question, yeah? So this just means transaction doesn't hits. It doesn't have a direct connection to databases. And even better, the memory usage of Erweb applications is much lower than with any of the usual tools. There's actually a whole program optimizing compiler that builds some very efficient native code from each program. And I have here another screenshot of the top program when I'm running the standalone web server that the compiler builds for that example application. It's this demo.exe that I have a box around the bottom here. After running this load test, the program only has about three megabytes of memory, resident. And as a comparison point, you can look a little further up this chart.  So if you compare this to something like PHP or Rails, generally even just to start up your program, you have a significantly higher one-time cost in memory and a higher cost as you scale out to allocate more things. So this is really using the native C representations, despite the fact that you can write your program in a very high level way. So that is about all I have to say. I want to point you to the website for this project. So I haven't shown you that much code on these slides. And if you want to see code, you can go to this URL where you'll find, among other things, some online demos that have syntax highlighted source code. That's it. Thanks. You mentioned functional reactive programming, but you can, I don't know if you've covered it in the slides. Can you talk more about how that plays in? So, right, I didn't have any text on the slides talking about it. So functional reactive programming has two parts of it, at least the way I think about it. There's a view of dependencies among values and stating those explicitly, so you have some value that instead of modifying it imperatively, you set, instead, write out explicitly how it depends on other values. When you change those, the derived thing automatically updates. That's the part I'm using. Traditional functional reactive programming also has some idea of event streams which replace callbacks. I'm just using the normal callbacks here, which seems more intuitive to me. Does that answer the question? How is the runtime implemented? Runtime is implemented in C. Does Ergo require you to generate your HTML from your web program, or can you integrate it with Zyner, CSS, next to MIMO? So you can use the foreign function interface to go around the type system in whatever way you want. But if you're not doing that, then the HTML really needs to be processed as part of the source code, but it's pretty easy to take the usual template languages that I would expect designers to use and write some pre-processor that changes them to the right format. So have you, or has anyone made some websites with this? Like how far have you gotten this done? I have one medium-sized application that I've been working on with it, which is kind of meta in that it's a hosting platform for Erweb applications. I'm not aware of any other real, freestanding, independently interesting applications. So for the portion of this, the funds and the browser, if you have an Erweb to JavaScript compiler, and what are your biggest frustrations with JavaScript as a combination of that?  Because all the browsers are interpreting things in different ways, and that's a big part of the frustration. So if you nest enough anonymous functions, then Gekko complains about a stack overflow, even if you never call the functions. So that was enough of a pain that I switched to more of an interpreter, bytecode kind of approach for a lot of that. Any more questions? As far as languages and paradigms, it's sort of inspired, or what would you say is kind of other than similar in that regard? So the type system was inspired by dependently typed programming languages like Agda. So in general, this is a functional programming language in the tradition of ML and Haskell, but going further in the type system direction. Do you have any plans for integrating this with other ecosystems like communities that are building all of these components for web services? Do you mean web services, I think so? You showed that you have this thing that works with SQL, but then if I want to run another database, I've got people developing that, or do you have some strategy for getting it out there? You can use the foreign function interface to wrap all these other systems, and you can give them expressive enough types to get the same kind of guarantees that are present here. But I don't have any concrete plans for alternate database systems right now. Okay? Thank you.