Good afternoon. Ladies and gentlemen, I am going to talk a little bit about how the new routing stuff in Drupal 8 will work and how that is based on shared components with symphony and symphony CMF. First of all, I am not Tobias who was originally supposed to give this talk. I only, I was asked to do it like a week and a half ago and prior to this I didn't actually know that much about this stuff. So I've been trying to read on it like crazy but there might be areas that I cannot answer but luckily the guy who did it is actually here so maybe he can help us. So definitions, what is routing? Generally when dealing with MVC for web frameworks, a thing that's not really very well defined is how do we actually get to our controller's model's views? And that answer is the hidden R in MVC I guess. So whenever HTTP request comes in, then a miracle occurs and somehow the request is transferred to the right controller and everything happens the way we want it to. And basically each framework historically has done this slightly different ways, slightly different but also similar ways. We had something like it in Drupal 7. If you've ever written a Drupal 7 module you're probably familiar with these future arrays where we have all these magic keywords that we Drupal reacts to in interesting ways. And even more interesting if you want to mess with the routes or menu callbacks or whatever we call them provided by other modules you can use this nice hook menu alter to tweak whatever. So for example this example is from the diff module which replaces the standard revisions overview in Drupal Core with one that actually shows the difference between revisions. It can also be used to change the access control on other routes. So if you want to have your own custom access control for node or whatever crazy stuff. The menu system in Drupal 7 is not very well understood by many. It has this big router table and stuff happens magically at cache rebuild and no one tends to worry about it but if you ever get in trouble with this you're going to have a lot of trouble. The system in Drupal 7 has a lot of different responsibilities. I won't read them aloud but it does a lot of stuff. That's not just routing and that leads to interesting problems. So symphony has a very different take on this. It basically has a big file called routing.yaml which defines all the routes for your app and that's very nice but there's a problem. As the symphony documentation says symphony loads all routes for your application from a single routing configuration file. This file can contain includes so you can say yeah by the way I would like to add the panels routes to my module or something like that. And that's fine for symphony but we wouldn't really want our Drupal 8 module to have to contain instructions like go into the core folder and open the routing yaml files and insert these lines here because yeah that's not really a nice friendly experience when that user downloads a new module and this basically means that anyone who has who needs to administer your Drupal site would have need to have access to the file system. It will also mean that we have this huge file that contains information about where we show these local task tabs. So if you need to if you want to hide the local task tab on the signup form so the request password tab is hidden for example you would need to go and edit the routing file. That is not very pretty. So a different solution was needed and as it happens there was there's a similar project or not a similar project but from the symphony side they have been trying to work on building a very nice toolkit of content management related components for symphony and they had a similar problem. Basically what they wanted to be able to was to have some routes being defined by the admin UI so when you go and create a new page you enter a URL and use that as a as a route so to speak so you create page less about and that's stored in the database but that can also be combined with real normal or regular symphony components that loads routes from static files and code. So collaboration happens two of my colleagues and Larry and a few other guys including some people from the EC publish framework got together or I don't know did you get together but at least they figured out to collaborate on on building a better system for this. It says hope. So what did they do? Basically this and I'll try to explain this graph. I'll see if I can liberate the microphone here. Oh well I hope you can hear me. Basically it all starts with the request that comes into Drupal is passed into what is called a chain router and a chain router or the chain router is basically a part of the symphony CMS components and it allows you to have multiple sources of routes for your symphony app or in this case for Drupal. And these routers all the viper RG will be called whenever there's an incoming route. Oh nice very nice thank you. All right yeah much better. And basically what Drupal ships with is a configuration where the single router that's configured out of the box is the so-called dynamic router and that calls into a Drupal component called the route provider. And as the name implies this route provider loads the route collection from the database and before this step whenever you enable the Drupal module in Drupal 8 you are allowed to have a module name dot routing dot yaml file in your module which has the same syntax as the standard symphony routing file but this file will be processed by Drupal and read into the route table in the route database. So whenever this happens whatever routes you define in your module will be taken into consideration. This one loads all possible matches so if you have a long URL so if you have a node slash edit slash diff slash you know whatever it will also load slash node and node slash edit and is that wrong? Okay what's the fit for then? Oh yeah my bad yes it loads all routes where the URL can match and then it goes through the matcher and for your route you can provide additional parameters that needs to be that needs to fit before this route is a match so it could be that this must this route only accepts post requests it could be a special header condition so this route only will only serve JSON data so it could be the accept header and there's a whole a whole bunch of conditions you can provide for your routes and once the matcher is done selecting which route is to be processed it will go into the it will simply modify the request object the request object in symphony has so-called attributes and these attributes are metadata on that different modules have attached to the request so the selected router will simply be another attribute on this request object and then we go into what is called the enhancing phase and enhancers in symphony is a very very powerful tool in many ways so in Drupal 8 for example the authentication of users is a so-called enhancer so whenever a request comes in and the router has been defined the the authentication enhancer runs on the request and looks at the token and figures out is this a valid authentication token and if so it adds stuff to the request object telling you that this this request is authenticated and the user is so and so and the same goes for all sorts of parameters and whatever else you can find on the request object is generally added by these enhancers and once all that is done we have a final request object and this request object is then passed to the controller that the route has defined that it wants to to use and this is pretty much what i just said in text form but basically what it means is that when i go to my dupal sites and requests notes slash 42 slash edit dupal will then go through all this stuff and decide that the notes edit page controller or whatever it's called is the right controller the right route to handle this and will do whatever is necessary to call it the use of this most people will likely never need to mess with this so the common the common use case will simply be to go at this stuff to your module file or to your to the routing file in your module and just be happy that you all this magic works but if you look at the diagram oh where was the diagram here there is the use case for a theoretical other other router so here you can also you can attach a standard symphony router and say i want this router to so provided that you have a standard symphony app that you want to combine with dupal you can simply mount it inside your dupal application and say yeah but all requests that starts with api are now to be handled by this other router or basically all requests will go to each router in the priority order and then you configure the other router you add to only listen to those that start with api for example the other use case so since hook menu is dead hook menu alter is of course also dead and but luckily there's another way to do this and basically this is a so-called enhancer is it not yeah the name the naming for all this is sort of confusing but the main point is that you can add a so-called route subscriber that gets to mess with all routes that are found and so when the router collection is fine the routes collection not router collection the route collection the collection of possible routes for url when that is determined then you're allowed to mess with it and basically what this does is check if the user has selected that he wants to use the admin theme when editing note pages and if so if this is a note operation route so if this is the user the note edit page or a similar page then set the option on the request admin route true and admin route true is then later recognized by dupal as hey let's use the admin theme for this page so this is one thing where we would previously had used hook menu alter and the interesting thing here is that the route object is fully available here so you can not only can you set options on it you can also change options on it so if you want to change whatever so if you want to change one of the routes provided by the views module you don't have to mess with the views modules routing file you can modify it via this process yeah so some of the use case another use case for adding another router to the symphony side of things would be backwards compatibility i know ec publish does this and they do it for the reason that they don't really want to they want to provide backwards compatibility so if you have an old ec publish module using the old ec publish router which i don't know a lot about but the general idea is that you can still use your old ec publish stuff over there and ec publish has then implemented symphony router that calls back through their old routing process and that is then added with a lower priority so first it checks with the symphony the standard nice routing stuff the same as we've pretty much the same as we've seen here first it checks with that do we have anything that matches and if not then it goes back and calls the old the old school routing um hope yeah and you can make your own routers if you have like a high performance use case if you have like a api that receives a thousand requests a second or something it could actually be beneficial for you to say okay i have this ultra optimized router it just has these three methods and i'll just go into plug it in before it calls the dupal router and so there's a lot of flexibility here that's very nice so basically that's the general overview of things i have prepared a few i have you know been digging through this code a lot and i'm not really sure what i would want to know so i would like you well i wonder if you might help me figure out what is there what is what would you like to know if you wanted to mess with this in dupal seven could i get you to step up the mic sorry is that good yes so in dupal seven the menu system is both for routing the incoming requests but also for displaying the menus on the on the page yes does this handle that too or is that some other component it does to some degree or well oh wow this resolution is really small no it does oh wow basically some display logic is in here is this big enough can i make it bigger somehow or something this is not my day where's my whim command one hold on a second give me a proper editor so some of these things are related to presentation so basically the node operation route turns out to help you define what's you know does this this is a node operation so let's display the admin menu and a few other things but as far as the visual visual menu structure the old the the menu module and back well back in dupal seven there was two parts to the menu system there was menu ink which was built into core which was the routing part and there was menu dot module which is the let me create a custom mod menu so i want to have an about link in my menu and i wanted to point to node slash seven that part still exists and i think it's still called menu module as well and that part is basically that hasn't changed all that much i don't know if this is too small but basically this is dupal eight and the menu links table still contains the the visual menu structure with the names of all the pages and stuff and i'm not really sure of the implementation detail but i think that the menu module implements a router that reads from this or okay um but this is this is still separate from the router table which is much smaller i don't know do you want to clarify right um does that answer your question somewhat all right anyone else yes so if i am on drupal eight and i am having like a lot of problems with their routing component and maybe some bugs and i want to just uh like override everything how would i do it like to basically plug the other parts that drupal you know implements and stuff but make basically i don't know make maybe drupal use like phpcr or something like custom very custom um is that possible or how to do it i think it would be theoretically possible there is this file um called call services ink which here is um um chain router basically here these lines says that drupal core uses the symphony chain router i'm actually making less it's readable by selecting it this these lines define declare that the drupal core uses symphonies chain router router uh and it wants to add this router dynamic um which is defined above which is the dynamic router and this this this services yaml is where it's all bound together i'm not really sure if it's easily possible to override this without actually having to edit this file it is uh says larry um but yeah that's that's basically if you if you remove the dynamic router uh from the picture then drupal's routing will no longer be considered but i think in doing so you would basically prevent the function of almost any drupal module you you install and so i i think if you want to do that maybe you don't actually want to use drupal okay enough anyone else over there do you have any code examples of like just a regular module where you want some custom code or entities that you custom make pop up um you know normally in drupal seven you know i i call this menu action and i wanted to run this function how does that work with this new setup so so you're saying you want to make a new url yeah new url and call this certain function in my module to do what i want to do and it's not it's it's using drupal stuff but it's sort of totally custom it doesn't use the same stuff if that makes sense i think actually the examples in in drupal core itself are pretty good uh i used the mode node module before it has a big routing file here and basically what you're doing with these declarations here uh node ad page is somewhat simple so you're saying i want at this url node slash add um i provide a few things here but basically this um you're saying you're declaring your route and saying which which controller do i want to handle this route okay cool um i don't know if there is a simpler version somewhere yeah most of these deal with entity forms but if you this is standard symphony stuff so if you look at the standard symphony routing documentation you can see the like the completely simple brain deads let's call a controller or no magic use case but you will need a controller it's you can't do what we used to do in drupal 7 and have a function that does stuff okay we'll need to make a controller cool thank you um so in drupal 6 i think you had to actually go and visit the modules um listing page in order to pick up new modules that you'd created since the last time you visited the page in drupal 7 i think you had to clear the cache you had to run uh cron or something like that um what's the process for actually activating new routes in drupal 8 i think it's still the same i think you still have to clear the cache uh because the the router the router table i showed before here it ingests all these routes you have to find in your yaml file and that is cached so it doesn't have to read all the modules yaml files and process them for every page request because that would be slow uh so that's pretty much the same anyone else i could also show you i i have played a little bit with xd bug so you can actually see how it works because let's see die on me now um but yeah i think the base the what really helped me understand how all this stuff happens was simply to fire up xd bug see what happens set break points here and i see how it jumps through all these different um different parts of the the layer this is conceptually a bit harder to reason about than what we had in drupal 7 but it is it is much much more flexible uh there's a lot more different points where you can customize stuff without having to override the whole system and sharing code with other projects is of course also a super great idea all right i think yeah oh i think it actually is working now so let's try for a second um almost so i'm going to insert my secret password here and then i'm going to enable xd bug uh yeah somehow stuff never works when you're trying to demo it maybe it went to phpstorm instead never mind um but xd bug yes please and phpstorm is also nice when it works otherwise thank you and um enjoy your con


The hand-loom industry in Tamil Nadu plays an important role in improving economic conditions of the rural poa by providing them employment in many places. The government report itself says that the sector provides employment to around 3.19 lakh hand-loom beavers. Several lakh people are directly or indirectly employed in this sector. Hand-loom industry is located predominantly in Kanchipuram, Madurai, Vellore and Salem districts in Tamil Nadu. Newsclick visited a hand-loom unit in Madurai to understand the issues of the workers and industry in general. 100 rupees, 80 rupees, 70 rupees, 110 rupees are required for the work of the workers. The hand-loom industry has become a bit of a nuisance. It is now a nuisance. It has become a nuisance on the half of the land. It is still there. It will not happen if we leave it for half a year. There is no work for 5 months. If there is anything at home, we can see the work of the workers. If we do not see the hand-loom industry, we will not be able to eat. We have been in so much trouble that we have come here. When we first saw the work of the workers, we thought it would be a nuisance. The workers have no idea whether they will be able to work or not. The workers who have been working in and out of Madurai are getting 300 or 200 rupees The workers who have been working in and out of Madurai are getting 500 rupees or 200 rupees. But if we look at the hand-loom workers, they have been working for 11 to 12 hours in the morning. It is a big problem for them to work for 100 rupees every morning, till 8 o'clock a day. When we look at the workers who have been working in and out of Madurai, we feel that they do not have enough money. When we looked at them for a while, we saw that there were many workers in the area over 1100 to 9900 people. When we looked at it, we saw that the workers of the workers were doing well. Today, we can see that the workers are working in the back of the labour market. We can see that there are no workers working in the back of the labour market. If we look at the work of the workers, we cannot save the workers. This is the process of production. The elderly are the ones who are not able to stay in this area. The elderly are the ones who are not able to stay in this area. We have been facing a lot of difficulties in this area. I have been working since I was 10 years old. We saw the same work. We saw the same work without going to any other work. That is the problem. From that day onwards, there was no such work. Even now, there is no such work. If it was like that, we would have changed the work at that time. From that day onwards, we would have left the work at that time. We would have to do one thing. We would have to do the other thing. We cannot do anything more than that. In the last round, no one did anything. Government years gone by all of these. They were given by government. They had lost their jobs. We But we didn't do anything for the poor. We were in front of the lockdown. I am a bit sad. I was worried about the bus and the auto. But I went to work. What else can I do? I can't do anything with food. I have four daughters and three sons. I have my one son and I have two daughters. I have two sons and I have two daughters, and I have two sons and I have two daughters. They have provided the hospital for me. They have been seeing me for a year. They have been telling me that they are going to give me a salary. There are no other evidence for this, that is why they are going to destroy the business. The business leaders and the people of Urupati are in a lot of trouble. They are suffering from the loss of the businessmen.  They are giving 10% to the 2nd generation. They cannot even buy 10% from them. They are giving 7% to 8% to the 2nd generation. They are not going to buy 50% to the 2nd generation. They are giving 100% to the 2nd generation. They are giving 70% to the 2nd generation. As per a report, the state produces handloom cloth of about 2500 lakh meter on average annually, of which the handloom cooperatives contribute around 1200 lakh meters. The average annual sales equal 1500 crores and the cooperatives share is around 700 crores. In terms of export, the average annual earnings are 600 crores, of which export sales by handloom cooperatives through merchant export is around 260 crores. For the last 67 years, this handloom cooperatives have been producing handloom cloths. Thousands of people have been working in handloom cooperatives. This is the reason for the loss of the businessmen. Now it has been sold out. Now it is about 40% of our business. We have been fighting for 40% of the business we had before. It has been sold out. In the last 5-6 years, the handloom cooperatives are being sold out. From that, the handloom cooperatives started to change. Then, the handloom cooperatives were sold out. We have to implement GSE after that, and then we have to deal with Corona. If you ask about the situation, we have given jobs to the businessmen, we have paid the workers, and because of the situation, it has become difficult for us. We have been in a state of emergency for almost 8 to 10 days. It has been very long since we have been able to carry out the work. The government should be able to build a bridge in the area where they cannot save the workers. Many people have been working, some of them haven't renovated, some haven't renovated in January or March. These people haven't earned enough money. It's been 6 months now. From March to now, they have been working. They have been working for 10-20 days. They haven't worked for long. They don't have anything. The owner of the company has paid Rs. 200 and it's on the floor. That's what has happened to the workers. The workers have been working. They have been saying that they have to pay Rs. 7500 per month. If they pay Rs. 7500, they have to pay their rent and house rent. They have been saying that they have to pay Rs. 7500 per month. They have been saying that they have to pay their rent and house rent. They have been saying that they have to pay their rent and house rent. We have been working for 45 years. The people are working for 45 years. We have to do it. We have to do it. We have to do it. We can't do anything. We can't think about it. We can't do anything.


Apologies in advance, I appear to have prepared a lecture that hasn't got a single definition and a single theorem in it at all. It's just a string of examples, but there's one lecture left tomorrow, so I'll try and define what I'm doing today tomorrow. So I want to just begin by recalling the Horry-Vaffa construction. So what do we have? We have X contained in a toric variety, F, and this is a complete intersection.  And then there's some additional assumptions. So we assume that there's a partition of R, R I guess is the number of rays of F. So we assume that there exists a partition, E, S1, SC, and then U of, is that what you called it? So I don't know if before U was introduced, U though is just a place to put the determinant of your partition as opposed to just this joint subsets. So for obvious reasons, I'm going to call you the uneliminated variables. And then this partition has to satisfy the following, so such that. So the first one is I want E to define a basis on L-dual. So I want J or a genuine E, a basis, L-dual. In the second one, I want each of these line bundles to be written as a positive collection of these DJ in my basis. So I want each I to be in generated by E. Third condition, I just want the SI to actually define the LI. So I want each LI is just equal to the sum of DK for KN. So given the state, we can define the mirror. So for each of these SI, I'm going to pick a distinguished element. This is really no big deal. Basically, this picture is an affine picture. And so this is basically just choosing an origin. So just pick an origin. And I'm just going to write SI interior or circle, however you want me to pronounce this. I'm going to pronounce it interior. So the SI subtract just a little bit of notational shorthand. And we want to write D as a matrix. So it's going to be M minus D, M matrix. And it's just called DJI. And this is written in terms of the basis on to the M, I guess, dual at this point. And the choice of basis we've made on Alster. Then the next step is we just introduce loads of variables. Variables for everything inside. So introduce following collections of variables. So variables on X1, XM, I also want variables, YJ is J's ESI interiors. And now define some relations between them. So define relations by, I want to say, XK is going to be the same thing as all of the 1 plus YJ, or J in SI interior. And that is I. So this is if K is equal to my choice of a distinguished element. So if K is equal to a little. And I'm going to define it to be YK over 1 plus YJ. If K is in SI interior, otherwise no relation coming from this.  So I want XK equal to 1. And this is from K equals 1 to M. And this is for all J equals 1 to minus D. So basically this is what I've actually told us before. And introduced the Horovath construction. And the mirror of D of X is just eliminating these variables from the sum of the X's. So by rewriting Q is equal to X1 plus dot dot dot plus XM in terms of these variables that have survived. So let's have a look at what's survived. We have the X's that are in my uniliminated variables. I'm also left with X's corresponding to my distinguished elements. How many of them are there? I've lost track C, of course, core dimension. I'm also left with my Y's when my Y's are in my S interior. So these are the variables that I rewrite W in. And then I just need to subtract off the constant term. So everything today is basically going to be done up to constant term. And subtracts off S's. Yeah, right, exactly. Because they're sort of being sent to the origin, as it were. So they're just sort of corresponding to Wands. And to me, the Horovath construction is still slightly mysterious. All right, so I did do an example of this before. I think it was the cubic surface. But I'm going to do a slightly different example. So I'm going to make DP6. I'm going to start with a type variety P1 cross P1 cross P1. And this has divisor data, weight data, which is given by 1, 1, 1, 1, 1, 1. And six devices, D1, D2, Rheinbender. So I'm going to pick just a single one to be 1, 1, 1. Well, so now the next step is I need to choose basis inside L. The obvious choice of basis I'm going to just pick is D1, D3, D5. So pick a basis. I mean, it's kind of implicit that choice in the way of my matrix. So I have E1, 3, 5. And now I'm going to choose a way of writing L. I'm going to write it as D2, D4, D6. So I have S is going to be 4, 6. And U, well, there's nothing left. So U is just the empty set. And what the heck, I need to choose a distinguished point in here. So I'm going to choose little less is equal to 0. What are the variables? We have about x1 to x6. And then we have y4. And we have y6. And we have relations. We have x2. So 1 over 1 plus y4. We have x4, y4 over 1 plus y4. And we have x6, y6 over 1 plus y6. And we just look at these rows of the weight matrix to get products equal to 1. So we see from the first row that x1, x2 is 1. The second row, x3, x4 is 1. And then the final row, x5. So we have W is just x1 plus x6. And so this is equal to, and just going to do this a little bit slowly, because it's an intermediate step that's actually useful to have. So x1 is just 1 over x2. x3 is just 1 over x4. x, which one? 5 is just 1 over x6. And then this is going to be x2. Just rewrite this in terms of y. I'm going to get pedantic and write that over 1. And then by construction, this is equal to 1. Let me just label this with a star. But anyway, this gives me writing x equal to y4, y equal to y6, we recover our Laurent polynomial, f, x over y, et cetera, et cetera. I just subtracted off the constant term, which in this case is 4. If we just set p equal to the new polytope of this, it gets something that looks like this is the origin. Taking the spanning fan, I recognize this. Looking at this star, I mean, I can forget the constant term here, because it's not going to matter. Like I say today, we're going to be very loose with our constant terms. But I've got these three distinct expressions. So let me just call them A, B, and C. It's not 2, it's 4. And nothing stops me just drawing their new polytopes, too. And I'm going to draw their new polytopes on the new polytop of p. So we have A is this one. Remember, x is y4, y is y6. So we have A is this one, and B is this one, and C, and B is this one. So I mean, you can see that these three new polytopes, if they're risen in a natural way through the construction, because they arose in the mirror, and they also look a lot like they've got a lot to do with the resulting polytop. You know, they fill it out and give it its shape. So we're going to give them some names. And this terminology, perhaps not the best, and it might not be stable. But we're going to call those three things three struts. And we're going to call the collection of those three things a scaffolding, because it sort of holds p up. So we'll call them C struts. Rather, I mean the new polytopes of A, B, and C. And a collection of struts is a scaffolding. We could happily do all of this without these names, but I'm going to call them this, whether I define it or not. So I might as well get it out of the way. All right. So this is our gain. Our gain is to invert this process. I want to start with a polytop, and I want to see if there's a way of putting a scaffolding on it, so that I end up with other ampolynomial. And I want to do this in such a way that it gives me the correct amount of ampolynomial. It'll give me a toric complete intersection description of my variety. Now, because we're starting with p, and we really don't know much else about p, it really is just a sort of combinatorial gain. And I've started writing my lecture a little earlier. I might have got to the point where I could have given you a sort of definition that made sense. But for now, we're just going to do a series of examples, and at the end of this, pretend that we can extract what the correct definition is. Maybe we don't even know what the correct definition is. So an example, I want to do the cubic surface backwards. So I'm going to start with p. This is in N, and I want to somehow see that this is the cubic surface. I'm going to give it a strut or a scaffolding. Now, there's a very obvious choice of scaffolding on this, which is just the triangle itself. So a single strut, that works good enough. So I'm not going to draw that again. So we have a single strut. So how can I turn this into something like a Laurent polynomial? Well, this is, if I just choose x and y to be that, this is just 1 plus x plus y to the 3, and then translate it down to there, so x over y. OK? And now I need to sort of invest this process. So I'm going to define x2 to be 1 over 1 plus x plus y. And I'm going to define x3 to be x over 1 plus x plus y. And I'm going to define x4 to be y over 1 plus x plus y. And I'm going to be slightly slapped. That's about my constant term. And I'm going to get this is equal to 1 over x2, x3, x4. And now I'm just going to simply add on x2, x3, and x4 because I'm trying to recover w through this process. So I'm still going to use an equal sign. But I'll try and at least make a token effort to note that it's not really equal. And so this is going to tell me that I should set x1 to just be this product. And this is going to give me the intersection data. Well, I've got d1, d2, d3, and d4. And then I've got my single line bundle. And it's going to be 1, 1, 1, 1. Then how do I figure out what else is just the sum? So I just sum those to give me. So I've just inverted the process. So we have, OK, maybe to make it really concrete, I have e is equal to 1 is equal to 2, 3, 4. And no one eliminated variables. I'm going to just put a little dotted line here. And this is just going to be a notational device. What we're going to do is, when we choose our e, we're choosing a basis for L dual. And so I'm always just going to rig it up so that my basis is on this side of the dotted line. And so I'm always just going to know I can write an identity matrix here, whose size is just equal to the rank of the variety. Just going to do it as a little placeholder, OK? All right. But also knowing that, I can read off the binomial that describes, well, actually, no, too soon, too soon. So we have L is just equal to d2 plus d3 plus d4, OK? And we have f, let's say this is p3. And so I know what the rays of f are. So I could just take the kernel of this. So I have the fan of f has rays, obviously, up to a choice of basis. But it's got rays, row one, row two, row three, and row four. And I'm just going to do e1, e2, e3, and minus e1, minus e2, minus e3. And these are in nr, which is three dimension. And if you remember from the adjunction formula, what we need to look at is minus kf, minus l. So this is just equal to, so always because it's a total variety, minus k, you just sum the di's and take the negation of it. So it's minus the sum of the di's. And then minus l, what was l? I've got d3, d3, d4, OK? So I'm just left with minus d1. And I can turn this into a polytope in the dual lattice, m. That's where you can draw devalues. So we have, so I'm just going to call it q of minus d1. So this is just going to be defined. Just think this is the definition for all cases because it is. You just need to choose all those. Yeah? That's the sum of the di's. Yeah? Minus. Yeah, good. I'm going to take, I'm going to take, you is here. OK, I'm going to take u of rho1 greater than or equal to minus 1 because I've got exactly 1 d1. And then I'm going to take u of rhoj, it's going to be greater than or equal to 0. And this is for j equals 2, 3, and 4. If you work it out, this is a polytope with the following vertices. L was defined by using p2d3d4. So that defines what the binomial is that gives us x in p3. So x is given by the binomial. I'm going to have to choose some variables, aren't I? I can't use x's. I can't use y's. Call them. I can't use capital X's. OK, so I'm just going to assign some variables to p3. And then the binomial is going to be given by z1 to the 3 minus z2, z3, z4. What I can do is I can quotient n by the corresponding vector 1, 1, 1. I get q dashed is going to be equal to the convex half of q1, 1, 2, and not not. This is now inside m prime. So I can at least draw a picture without too much fuss. Looks like this. And remember, this is in m. So I need to recover the fan xp. I need to take the normal fan, and the normal fan is going to look something like up to a sine issue, which probably I should have just done all of these as best they're equal to. So up to a sine issue, the normal fan recovers spanning fan. All right, let's do another example. Go into this in much less detail. Let's just start with what I happen to know is dp6.  And I'm going to construct the other way. So I'm going to start with this in nr. And I'm going to give it a scaffolding. And I'm going to use two structs. I was trying to do the scaffolding in yellow. So the scaffolding in this case, I think when I draw it you'll see I'm just going to do this. And I'm going to call this one a. So notice that square is just equal to the Minkowski sum of a line plus a line. And this information tells me that what I'm going to get is cut out by two line bundles rather than one line bundle. And so we're going to have struct a is just going to give me 1 plus x, 1 plus y over x. And then struct b is going to be over y. And then up to constant term, I'm going to write this as 1 over, so x1, x2. I'm going to write this as 1 over x4, x5 plus 1 over x3.  And then what have I done? Well, I've done the obvious thing. So x3 is 1 over 1 plus x. And x4 is x over 1 plus x. And together, this is going to define one of my line bundles. And then x5 is 1 over 1 plus y. x6 is y over 1 plus y. And this is going to define a second. And then the relation that gives me x1 and x2, I just read off the denominators. And so we have x1, x4, x5 is equal to 1, and 2, x3. So we've covered a complete intersection data. It's down to six devices. I've got two devices. And by construction, d1 and d2 give me the basis for L-dual. And then I just read these off the denominators. So I've got 0, 1, 1, 0, 1, 0, 1. And then L1 is going to be those two. And L2, so again here. Sorry, I should have pointed out this is up to constant time. Let's try and answer a question using this construction that's been hanging over us from a few lectures ago. So if you remember, we started with the cone over the hexagon. And there were two distinct mutations. And one of them gave us p1 cross p1 cross p1. And the other one gave us, we don't know. So we'll use this struct method to find out what the other one is. So let me draw it carefully. So it was a square here. And then these that gave us a square face here, if you remember, looked. Just to label these, this was the origin. This was z. And then I think I had 1, 0, 0, 1, 0, 0 minus 1, 0. This will be 1, 0, 0, minus 1, minus 1. This was in. So I need to put a strut on it. A scaffolding on it. And actually, you'll find that there's only one way you can do this. You'll think that you see one way and you'll discover that you can't really do it. There is, in fact, only one way to do it. And it's not what I just drew. And it's given by taking, let's call this one a, or this one b. And then this time, I'm going to use the unaluminated variables. So I've not been using those before. So I'm going to make this one and this one unaluminated variables. So we've scaffolded with two struts to unaluminated cyclincl. And I'm going to not choose the obvious basis for n. So for a basis, I'm going to use the following. I'm going to use, well, 1, 0, 0, so far, OK. 0, 1, 0. And then 0, 1, 1. And when I write down my Laurent polynomials, this one's going to be x. This one's going to be y. And this one's going to be z. Now let me try and write down my scaffolding. So I have, OK, so a, going to give me 1 plus z. Divided by xz, 1 plus z. Divided by y. Then I have my two unaluminated variables, which are just x and y. So the same trick as always. So now I'm just going to write this as, let me think. So it's just going to be one ion bundle. So I'm going to write one ion bundle rank 2. Over 1 over x3. And then x3 up to constant n. x3 is going to be 1 over 1 plus z. x4 is just going to be z over 1 plus z. And together, it's going to define l. And then x5 is just going to be x. 6 is just going to be y. And we have x1, x4, x5, x2, x3, x6 is equal to 1. So we get the divisor data. A, B, 1, 2. Here it's going to be an identity. What do we get? 0, 1, 1, 0, 1, 0, 0, 1. And then l, this time, only comes from d3 and d4. So I'm going to get 1, 1. 1, 1 divisor in 2 plus p2. So this answers the question that we were wondering before. How can we figure out what that variety was? So there's just time I'm going to do a final example. And then next lecture at the very beginning, I'm just going to try and give a formal definition for struts and then see if, or at least, you'll have anything you want to say. So final example. So do you remember we had those third 1, 1 surfaces? And the question was, OK, very good. We've got polytopes. But what are our various varieties? How are we going to understand this? And we just do the same thing. So I'm going to take one of the examples, this one on the list, which just looks like this. And I think it had the origin here. And my scaffolding that I'm going to use, again, there's only one choice I can make. I mean, it's completely uniquely defined. I'm going to have to choose this strut here. And I have to choose this as an unaluminated variable. So scaffolding, one strut, one unaluminated variable. So the basis I'm going to use is, I'm just going to use this and this is my basis directions. So I'm going to use 1, 1 and 0, 1. And this one, I'll just associate with x. This one, I'll just associate with y. And I'm going to get 1 plus y to the 4 over xy plus. So this here is, and this here is my unaluminated variable. And then just doing the same trick. So it's going to be just rank 1. So this is going to be 1 over. So it's going to be 3x4x5x2 plus x3 plus x4 plus x. Wait, wait, wait. Seriously, let's get the number. x2 to the 3 plus x3 plus x4, x2, x3, x4, good. So up to constant term. And then this is where x2 is just 1 over 1 plus y. x3 is y over 1 plus y. And together, this defines my divisor L, and then x4 is equal to x. And we have the relation x1, x2 cubed, x3, x4. So finally, just write out the divisor data. So d1 is going to be my basis dc4. And it's going to be 1, 1, 1. And then L is just coming from dc. So it's going to be 4. So what I have is x4 and 1, 1, 1. So that is what that variety deforms to. OK, so I'm definitely going to stop there. Like I said, it consisted of no definitions, no theorems. Any questions?


Hello everyone, welcome back to another session in dentistry and more today we have a different topic hypothesis. It's not much important in undergraduate but sometimes you can expect a question like null hypothesis or alternate hypothesis but it's very much important in postgraduation while doing thesis or short study. So this video is about the classification of hypothesis. So I'll be explaining one by one with help of an example. So before moving to the classification, we need to understand the very basic idea of hypothesis or a study. So in any study we'll be having two variables. The first one is independent variable and the second one is dependent variable, okay. Independent variable which is the course and dependent variable which is the effect. So always a study will be analyzing or finding out the relationship between independent variable and dependent variable. So we take an example of smoking and lung cancer which is a cliche example of our hypothesis or research. The smoking causes lung cancer. So all of us know smoking causes lung cancer but lung cancer can be caused by many but smoking has so much significant contribution to lung cancer. So this is a cause and this is an effect. So first of all we need to understand this concept that is what is the independent variable and what is dependent variable. So independent variable, a variable which is acting like a cause and dependent variable which is acting like an effect. Now let's move on to the classification. So before that I forgot to tell you what is exactly hypothesis.  It is not a confirmatory statement. It is an accurate guess. So it is a cancer, it is an assumption. Assumption about the relationship of variable. So we need to test the hypothesis to prove that assumption. So the hypothesis might be wrong or it might be true but we need to do a research in order to prove that hypothesis. So we say smoking causes lung cancer and that is a hypothesis. We don't have any proof for that. So any study starts with a hypothesis. So at the beginning of the study we don't have any confirmatory statement. We have just an assumption or a guess. So that is hypothesis. So now let's move on to a classification. So we have many classification, simple hypothesis, complex hypothesis, empirical hypothesis, null hypothesis, alternative, directional, non-directional, causal and statistical. Among these, these are very important. The null hypothesis and alternative hypothesis. So we start any study with a null hypothesis. That is stating that there is no relationship between these two. That is there is no relationship between independent variable and dependent variable. That is in a very short statement we can say that there is no effect of smoking in lung cancer. That is null. There is no effect. Okay. No effect. That is the null hypothesis. But alternate hypothesis is exactly the opposite. So null hypothesis we denote by this. Alternate hypothesis we denote like this. So alternate hypothesis says that there is an effect. Smoking might cause lung cancer or smoking as high chance of causing lung cancer. But null hypothesis says that there is no effect of smoking on lung cancer. So most of the studies starts with a null hypothesis and with the data collected from that particular study can reject that null hypothesis and says that there is an effect or accept that null hypothesis and says that there is no effect. So that is the most important two hypothesis, null hypothesis and alternative hypothesis. So this is a very very important null and alternative. Now let's move to the other ones. We have the first one is simple hypothesis. Simple hypothesis where we state that there exists a relationship between two variables that is independent and dependent variable. That is one causes the other or we can say independent variable causes the dependent variable. So the simplest hypothesis is smoking causes or smoking leads to lung cancer. So we have just one independent variable and one dependent variable.  So just one independent variable and one dependent variable. Now let's see what is complex. This hypothesis as a name says it's very complex because we have more than one independent and more than one dependent variable. That is smoking and uses of drugs leads to cancer, tension and chest infection. So here we have smoking and drugs causes or leads to lung cancer, tension and chest infection. So here we have more than one independent variable that is smoking and drugs and more than one dependent variable. So it became complex that is complex hypothesis. Now what is empirical hypothesis? Empirical means it is based on evidence. So if we have evidence that is we have evidence to say that smoking causes lung cancer. That type of hypothesis known as empirical sometimes we won't have evidence such as if we take the corona pandemic we don't have any much evidence on that.  So we have evidence. So if we say something or some hypothesis with evidence that becomes empirical hypothesis. Now what is null and alternative that we already discussed in detail null means there is no effect between the independent and dependent variable. So alternative just opposite sometimes alternative hypothesis also known as research hypothesis. Because if we are seeing a effect between two variables that should be a empirical one okay. So alternative hypothesis means there is already evidences present in the literature because if you are saying smoking leads to lung cancer will be a simple one it will be empirical one it will be a alternative one. Most of the studies will not be as simple as it looks will be much complicated but I am trying to give you an idea at the very basic level. So alternative is just opposite of null hypothesis where we say that there is an effect but in order to say that we need to have evidence that evidence comes from previous studies of literature. So that is a empirical one also so that is null and alternative hypothesis. So what is directional and non-directional hypothesis. So this alternative hypothesis also known as H1. So this is a null hypothesis H0 will be denoted like this. So you will be seeing in articles H0, HA or H1 this is alternative hypothesis okay. Now we have the directional and non-directional. So directional hypothesis predicts the direction of relationship between independent variable and dependent variable. Just take an example a high quality of nesting education will lead to high quality of nesting practice skills. So there is a direction. So high quality will lead to high quality practice, high quality practice. So if people with good education will definitely result in good people, I mean good nesting skill practice. So that is a direction. So we are pointing our hypothesis in a particular direction if the person is with good quality of education will be having good quality of practices that is directional hypothesis. There is non-directional hypothesis which will not predict the relationship between the independent variable and dependent variable. So the non-directional hypothesis is like there is no specific direction of the relationship. Example is teacher-student relationship influence students learning okay. So we don't know if the teacher-student relationship might increase the students performance or decrease the students performance we don't know. If the students are having not a good rapport with the teacher that might negatively affect the students performance. So it is not exactly saying a direction this is exactly saying a direction. High education high practice but teacher-student relationship influence students learning says just influencing in which direction it's not specifying that is non-directional hypothesis. Okay so that is the difference between directional and non-directional. So it all comes under different categories of null and alternative. So these are very very important. Now the causal hypothesis. Causal hypothesis means causality, smoking causes lung cancer. It predicts a cause and effect relationship or interaction between the independent variable and dependent variable. So this causal relationship is again an alternative hypothesis or again it is an empirical hypothesis because it is saying a causality that is this causes this. In order to say that we need to have evidence that is empirical. If you are saying that this causes this or there is an effect it again becomes alternative hypothesis. So that is causal hypothesis and last one is statistical hypothesis. So the statistical thing is very tricky sometimes there won't be any effect between these two variables but we might get a statistical significance because sometimes we do a study with just five people okay. We take five people who are smoking and five people who are not smoking and found out that there is a risk of four times that means there is four times risk of people with smoking to have a lung cancer and we get a statistical significance. And we put forward a statement that the smoking causes lung cancer because we have a statistical significance but does it true because we have just five samples. Even though we have statistical significance in reality we cannot say that smoking causes lung cancer because we have tested that relationship in just five people or let it be in a very small sample. So in order to prove that it should be a very bigger sample it should be a cohort study it should be studied in variety of populations variety of regions then only we can prove it or we can say that empirically or alternatively or causally. So statistical significance is just a mathematical thing we can obtain with very small sample but it doesn't prove causality. So statistical significance just says that there is an effect but in reality it won't be there. Or less chances. So that is about hypothesis. So all you need to understand is the basic idea of null hypothesis and alternative hypothesis. This is very important and rest all comes under different names of alternative mostly and the empirical the directional causal all are one or the same of alternative hypothesis. So hope you understood the concept. I'm not explaining in detail or I have not explained it in detail. I just want to give you an idea about the independent variable dependent variable concept and cost effect and the various classification. So I'll come up with a new topic in the industry and more. Thank you.


world is a fascinating place. From the natural wonders contained within the cocoon of the Earth's atmosphere to the spectacular light shows and hidden worlds of deep space and beyond, there is so much to learn, understand and in some cases harness for the good of all. We have built many monuments to our imagination and inventiveness, but we have also created enormous problems that affect us all, from climate change to dislocation of entire populations through war or drought, from the turmoil of geopolitical conflict to the degradation and depletion of our environment. These are challenges that we face now and in the immediate future. The solution to many of these challenges no doubt lies buried in the Googleplex of data that researchers have generated over a long period of time. The trick is to access, analyse, disseminate and make the connections contained within these boundless oceans of information. The reality is, most major breakthroughs will be done by teams large and small. Not the solitary genius so loved by Hollywood, but research teams relying on the work of hundreds if not thousands of researchers from all over the country and indeed the world. To do 21st century research you need 21st century infrastructure not just something that works for today but way into the future. That's why the Australian government through their national collaborative research infrastructure strategy has created the ARDC the Australian Research Data Commons. ARDC is a transformational investment in Australian e-research infrastructure which in turn underwrites a nation's reputation for conducting high impact research. We work in partnership with Australia's research institutions to accelerate positive change for the research ecosystem which ensures Australian researchers have access to world-leading data facilities and capabilities enabling scientists to work on data from the Australian square kilometer array pathfinder while being 800 kilometers away in Perth. It also supports high performance processing for incredibly complex modeling and computation enabling the connectivity to share tools and data with researchers and systems around Australia and the world. It also creates archiving capabilities that allow huge data sets to be safely stored and accessed by colleagues no matter where they live and collaborative tools to enable meaningful data sharing, trusted local and international customized access and measurable data citation capabilities. This gives our universities and research institutions indeed all those engaged in research enterprises the tools to build the future and achieve tangible outcomes with a mindset that embraces the next big challenge. The ARDC is built for things we haven't even thought of yet. To find out more visit ardc.edu.au


With forward pay from Appalachian Wireless, you'll avoid contracts and credit checks while taking advantage of some awesome perks, like unlimited talk, text, and three gigs of data for just $44.99, or with five gigs for a mere $59.99. Forward pay, that's today's Appalachian Wireless. It's time for Mountain Music, presented by Mountain Music Exchange, the heart of music in the mountains. Welcome to another edition of Mountain Music. This week down at Mountain Music Exchange we've got a Nashville band with some Knot County roots. Here's Triple Run. Take a listen. Without the influence she received here in the mountains, Knot County native Brittany Taylor says she wouldn't be the artist she is today. I started singing just with my dad, ABC's and Elvis songs, and then quickly I learned about the Kentucky Opera, a friend had told my mom about it, her daughter was in it, and I got involved with that, which was a godsend and a blessing for me. I feel like my experience in Nashville would be completely different without the Kentucky Opera and the Mount Arts Center. Unlike many artists in Nashville, Triple Run were given the creative freedom to do their own thing while recording their new CD. We kind of just stuck ourselves in a room for two and a half months or so and just figured it out. It was a lot of fun and a lot of fights and you know, figuring it out. But like, what came out of it was something that we're really proud of and we felt like it was very genuine of what we are. Yeah, this EP is kind of just what happens when you stick the three of us in a room. Literally what we did. There's a longing for these mountains when someone packs up and leaves, a longing so strong, it's strong enough to inspire a song. Hake in Kentucky, I came up with that idea as I was driving back to Nashville on the parkway and it was at a time, like I came up with that when I was feeling really discouraged having to drive back to Nashville. I wanted to stay in Knot County and stay on that mountain and not go back. I didn't want to go back and so it just, it meant a lot to me and it's about that. About Hake in Kentucky, will you take me back if I come back?


Centre for Democracy and Development, CDD, has chaired the Independent National Electoral Commission and critical stakeholders, including security agencies, political parties, the media and civil society organizations to reply lessons learned from the 2023 general election and the conduct of the elections in Imo, Kogi and Bayosa. The CDD Election Analysis Centre made these calls through a member of the Centre, Fung Kebarua, at its pre-election briefing in Abuja on Friday. It is important for the Independent National Electoral Commission, INEC, and other critical stakeholders including security agencies, political parties, the media and civil society organizations to apply lessons learned from the general elections in the conduct of the off-circle elections. While the threats of violence, misinformation and inducements are factors that might play a role in the outcome of the elections, these issues can be addressed if there are sufficient efforts to mitigate them. Members at the Independent National Electoral Commission to be impartial in security agencies to show professionalism and unbiased in discharging their duties during the exercise. We want to clearly, you know, call on the security agencies not to support any political party or any candidate because part of the reason why violence happens is when, you know, the voters, they see clearly some PAP officials are coming and they get all the necessary protection then it, you know, annoys some people even though it's not a justification for them to do anything that will undermine the credibility of the peaceful election there. But we really want to call on all the politicians, all the political parties and the security agencies not to do anything capable of raising any tension in these three states. Already we have at hand, you know, a tension in these three states and we would like the security agencies to be professional to completely be unbiased so that there will be some level of sanity, you know, for this election to happen. We note the increasing synergy between the security agencies and INEG and the expectation is that that will address some of the concerns and fear and across the board and all the critical stakeholders, the politicians and other non-state actors will confirm. The security agencies are rising up to the calendars in terms of, and of course, we notice in the past four hours there have been some discussion, including apologies here and there from those concerns. So we do not expect that that will snowboard into the process. Hello, hope you enjoyed the news. Please do subscribe to our YouTube channel and don't forget to hit the notification button so you get notified about fresh news updates.