So, every time you make a face, no matter how you move the mouth, it just looks fake. Not a problem. The reason why this looks like a fake smile is the same reason why Mark Zuckerberg's smile also looks fake. Even though his mouth is smiling, nothing else on his face seems to agree with it. And that's because, ironically, even though the mouth is the hardest part of the face to animate, it is also the least important when it comes to identifying emotion. Most of the emotion on the human face actually comes from the eyes, brows, and cheeks. So, if you're smiling down here, but not up here, it's gonna look fake. So, fix the cheeks, eyes, and eyebrows if the face isn't looking right. For the shape keys, I break the face down into two parts. Lips and eyes. As far as the lips go, my set includes smiling, grinning, frowning, smirking, screaming, and gritting. Then as far as the eyes go, the most important animations are blinkin', happy, surprise, sad, and glaring. I also have two extra keys that controls the brows rotating in and out. And I have three different types of keys for closed eyes. The first is just blinkin', nothing fancy, just short and sweet. But the second one is designed specifically for when the eyes stay closed for a long period of time. This is the kind of face your lady friend makes before she casts a magic spell on her enemies.  And the last one is for taking damage or pain. It's very similar to the second one, but the muscles are even more exaggerated and the eyes are more scrunched together. The brows are also now furrowed in. Another useful thing that you can do is divide the damage for the left and right side. This is for things like when the character flinches from stings or takes minor damage. It also works really well if you needed to close one eye when aiming a rifle or a bow and arrow. When you are doing happy eyes, don't forget to move the cheeks up and rotate the brows away. And for surprise, remember the cheeks go down a bit and the brows go up. Glaring is the opposite, so everything in the face should get narrow and move towards the eyes. You would be surprised how many expressions you can make by combining these keys. For example, taking damage looks a lot more convincing when you add the open mouth. If you combine the happy eyes with the open mouth, you get that classy happy anime face. If you combine the same mouth with surprise, you get something similar but with the eyes open. If you combine glare with grit, you get a good growling face. But you can get a totally different expression by just simply changing the mouth to a smirk. So play with them a bit before making keys for new faces. Also, just a reminder, if you're still having trouble, the fully rigged version of this model will be available for download very soon. So you can see how I did it and reverse engineer it later. Anyway, hope that helps. If you enjoyed this video, please don't forget to like, subscribe and ring that bell. Hope you have a fantastic day and I'll see you around.


You are still watching where his World Arthritis Day is observed on the 12th of October every year and it's a global health awareness event that helps create awareness about rheumatic and musculoskeletal disease. This day aims to bring people around the world on a single platform so that their voices are heard and more support is provided for better treatment options for people affected with this rheumatic and musculoskeletal diseases. So I don't know what it is that I have, but I'm always having pain in my knee, I don't know what, because I know when I was growing up I had one aunt that you know my mom said oh she had arthritis so I was thinking okay, but what they had told me was that she used to wear so much heels and all of that so maybe that's why silently I just programmed my head. Snickers, slippers, sandals you know I really wear heels and even when I wear heels they are really short. So now when I say I have knee pain recent times I'm not going to check it out so I'm just assuming that. I've had back pain for the longest you know and initially like arthritis would think okay because I'm quite heavy on the chest but to be honest it's not even my upper back it's more of my lower back. My dad had the same thing, he had some lumbar thing you know so I think subconsciously as from a child you know I said this is the thing that daddy has, this is the thing that daddy has you know so over time I mean painkillers have been my best friend but I would say since I started exercising it has really really reduced like to see me not complain of back pain wow it's amazing. I have to stop exercising because of my knee right but I don't even know how I'm going to do it but at some point you know I still do my yoga, I still do my cycle, I exercise quietly at home I don't just put it on social media anymore so nobody's monitoring me but hey. That monitoring is so nice. Okay so we have a lot of stories in the knees what did you find quickly? UK considers restriction as Nigerian immigrants accounts for highest number of dependents. The United Kingdom is considering tightening the rules on how many relatives, relatives migrants can bring into the country as Nigerian migrants, as Nigerian migrants accounts for the highest number of dependents. Daily Mail reports the UK home secretary, Swela Breverman is considering tightening the rules on dependents after its figures showed a startling inconsistency across different nationalities coming to the UK to work and study. I mean seeing this I don't even know what to say because every day somebody is going to chant, every day somebody is living to the UK it's almost like we that were here now it's almost like I wish our brain is working well or not you know it's alarming. I actually thought they had already implemented it too because from what I heard from a few people they said they had already stopped it so if they are still considering it it means more people will quickly put in the impute because what I heard was that you know what I heard was that they had actually stopped so if you're coming to study because which was what a lot of people did yeah they go one person applies to go study then takes the entire family with them right the dependents but now they're saying that yes you can come and study well you can't come into the country with your defendants you come alone study and go back you know but hey UK I think they should they should actually they seem to me like they are a bit confused right today you want immigrants to come in legally tomorrow you don't want them anymore so that's what I would tell Nigerians can Canada might be longer might be the this process might be it might take a lot of time but I think Canada is still the best bet because Canada is still looking for UK is a bit saturated right so and it's not like it's particularly cheap to stay in the UK so but that's to tell you how bad you know Nigerians just really want to just anywhere but Nigeria I mean six hours away to be honest so it's not too far from home and you also have a lot of Nigerians there so you don't really feel like you're away from home you know because let's be honest as much as everybody is relocating from the moving abroad it's really lonely it's lonely and it's just building a bar yeah you're compared to the UK and you can send your mum beside me if it's just come home we can just you know go back just cook some Nigerian food you know put in the six out of five and bring it to you right you won't really feel that I'm away from home so true true yeah but hey so you can have two people low so I have actually have I have like two stories I really want to first of all I saw a very very disturbing video a military personnel that was caught you know stealing what was he called bullets let me see if I can find the story quickly he was caught I don't know if they have that video it's actually really disturbing he was caught with bullets so he had wrapped the bullets within his like the inner pants trouser he was wearing so this is the video so he had they had caught him with the bullets with that inner trouser he was wearing he wrapped lots of bullets so the story is that he goes into so he goes into the camp and picks up this and steals from the reserve right that's the story I don't know if there's an audio they can just quickly add the audio to it yeah so that those are the bullets coming out those are real and the law so the allegation is that he goes into the military camp steals this bullet and goes to sell to the terrorist to the Boko Haram guys so you know when they say that and I mean this is just ties nicely to what we talked about yesterday there is no way certain things continue without an insider being part of it so we see that we have we are not yet there when it comes to the war against insurgency these are the reasons why part of this right where we have insiders going to go and either become informants to the threats like the Boko Haram guys or they are selling ammunitions giving them ammunitions and you know who knows what else this man has been selling you know it's just that today was just an unfortunate that they caught him you know so I mean when I saw that video I said this is really disturbing and again I just wanted to also mention another story I found in the news this big brother was his name the big brother former big brother reality TV star his name is Rico I believe right apparently he was involved in the car crash and currently he's battling for his life so according to the management they says hello everyone Rico is not disposed of his social media right now he was involved in a ghastly accident and is currently on life support while his situation is critical and doctors are on him we implore support and prayers so apparently there is an account if people want to support him there is an account I think his mom's account yeah I think that's the post there that blog so there's an account that is supporting if you want to donate to him but what really was a bit worrisome for me I really wanted to hear what was the cause of this accident right because for an accident to get to the point of like you are on life support it means it must have been really bad and where did it happen was it on which of the roads did it happen was it human error like in terms of over speeding or was it as a result of our bad roads I mean so I like when we try to add a bit of context to stories like this you know why it's not because we just want to know for no insect let's also help to identify like if there's an accident abroad they would say okay this and these are the causes of this accident so that somebody else life can be protected yes and you can take a bit of caution right but our heart goes out to him and his family so I think it's his mom's account that has been that's been published online so in case you you feel led to want to support you know because right now they say he's battling with his life this guy is so young he's so handsome and I know that he acts he does a lot of acting he's on tinsel like I don't even understand what would I was he drunk what I'm so I'm lost you know what would have caused this kind of accident to the point of life support is one thing that you have an accent you just break your leg but life support that is really really really really serious yeah our heart goes out to him I just hope that he comes out of this life all right so we'll take a break now when we come back from the break we want to discuss mental health and a laro our very own will be joining us via zoom or something stay with us right back


Hello everybody today I want to talk with you about one very important email which we got from Banggood's Dropship Center. As all of you know we have a partnership between Autodesk and Banggood and this way Banggood telling us about any issues which they have with our buyers and our dropshippers. So the first thing here is that you cannot do dropship from Banggood without registration to Banggood's Dropship Center. Now not only this that it's against Banggood's Dropship Center and actually Banggood's terms of conditions it's also very important for you to get to register to the Dropship Center because we have the partnership between Banggood and Autodesk and you will get immediately the VIP level in the Dropship Center which means that you will get 7% discount for each of the products in Banggood instead of the regular 5% which every user will get. So this is why it's very important to register at Banggood's Dropship Center because from the one side you will get the huge discount of the 7% and from the other side you cannot do dropship from Banggood without registering to their Dropship Center because it's against their terms of condition. The other part of the email wrote that you cannot use Banggood's name when you do dropship from Banggood to eBay. So when you send the products don't say that you are Banggood say that you are your own store if my store's name is Lior Posing I will not write there that the product comes from Banggood I will write Lior Posing. So here are the two things first you cannot use their name. The second thing is that you should register to the Dropship Center to be able to take the descriptions and the images of the product without it it's illegal and Banggood can actually to complain to eBay about this and you will get vero for these products. So this is super important under this video you will have a link to other video of AutoDS where I show you how to register to Banggood's Dropship Center using AutoDS link and then you will have 7% discount for every product in Banggood which is amazing. Actually all what you need to do is when you do the registration process slide down from where you hear about Banggood write AutoDS and then you will get it automatically. If you're already AutoDS user and you already registered to the Banggood's Dropship Center without the AutoDS tab just contact them in the chat and you will get a 7% discount just write down to Banggood hey I'm using AutoDS I didn't get a 7% discount because I'm not on the vehicle level because I registered before I know that you have a partnership with AutoDS and then you will get a 7% discount. I hope that this video will help you see on the next videos I will create some more videos about Banggood if you have any questions about Banggood about Dropship from Banggood about Banggood's Dropship Center write down under this video and I will be really happy to make other videos about these topics and also to answer your questions here on the comments. See you on the next videos don't forget to subscribe to this YouTube video under this video there is a red button bye bye


Late last night, Iran confirmed that it unintentionally shot down Flight 752. This is an extremely serious matter. Canada and the world still have many questions, questions that must be answered. Earlier this morning, I spoke with President Rouhani of Iran. I told him that Iran's admission that its own armed forces unintentionally shot down Flight 752 is an important step towards providing answers for families. But I noted that many more steps must be taken.  We need full clarity on how such a horrific tragedy could have occurred. Families are seeking justice and accountability, and they deserve closure. I reiterate it to President Rouhani that it is absolutely necessary that Canada participate in this investigation. We expect the full cooperation of Iranian authorities. Currently, three visas have been approved for members of the Standing Rapid Deployment Team. We expect that the lead members of this team will arrive in Tehran around 4 p.m. today and establish a presence on the ground to support Canadian families. Additional team members will follow. We're working with our partners who are facilitating the process by which visas are granted. Currently, the Iranians are cooperating in granting visas. During my call with President Rouhani, I also condemned the Iranian strikes led in Iraq that risked the lives of our members who are fighting Daesh, as well as those of the coalition. I also repeated Canada's call to de-escalation of tensions, as well as our commitment to ensure peace and security in the region. It is at times of tension like these that tragedies like this crash can happen, causing great loss of innocent life. President Rouhani's response to me was a commitment to collaborate, to give closure to the victims, de-escalate tensions in the region, and continue this dialogue. Our focus remains accountability, transparency, and justice for the families and loved ones of the victims. As Minister Champagne said yesterday, our government is taking additional steps to provide more support to those grieving. I've asked the Clerk of the Privy Council to set up an emergency task force, which convened earlier today. Additionally, consular and immigration officials have been dispatched across the country so that they can be in direct contact with the families of Canadians affected by this tragedy. Minister Mendocino has set up an emergency line to ensure that officials from immigration Canada are available to help with any visa issues. Minister Champagne and myself continue to be in contact with all other governments to ensure that families receive the support they need. I spoke to all the leaders of the opposition and to several Prime Ministers from the affected provinces. When Canadians face great difficulties, they show solidarity, one with the other. In the face of the tragedy, we have been there for our neighbors, our communities, and our fellow citizens. I know that this wave of compassion brings comfort to those and those who have lost a loved one after this tragedy. But know that our government will not stop demanding answers to the questions that persist. We will be there – I will be there – to watch what the light has done on these violent events. I remain in close contact with our partners as are my Ministers. Last night, I spoke to Prime Minister Abe of Japan, who is on his way to the Middle East. And I will soon be speaking again with Ukrainian President Zelensky and Swedish Prime Minister Löfven. Minister Champagne has been in touch with his counterparts from Iran, Switzerland, Turkey, Sweden, and Ukraine in part to discuss progress on issuing visas for our teams. He will also reconvene a second call of the International Coordination and Response Group for the Families of Victims of PS 752 to coordinate our response for the families together with representatives from Ukraine, Sweden, Afghanistan, and the United Kingdom, who are also grieving. Minister Garno is also in contact with French authorities rather than with them today. I assure you that all these discussions continue. I want to end by sharing with you a bit of what I did yesterday. I had a chance to sit with some of the families of the victims. They are hurt, angry, and grieving. They want answers. They want justice. What Iran has admitted to is very serious. Shooting down a civilian aircraft is horrific. Iran must take full responsibility. Canada will not rest until we get the accountability, justice, and closure that the families deserve.


Here's a clip of me juggling a soccer ball with my quote-unquote weak foot. I'm naturally a right-footed player, but in many ways my left has become better than my right. Here's how I improve my weak foot and how you can do the same. If you don't know about me, I used to be a huge underachiever, but through obsessive self-improvement I found my success. Earned a college scholarship, played for my national football team, a YouTube channel with over 100 million views I've helped players worldwide and I'd love to help you improve faster and achieve more. In this video I'm going to teach you how to juggle with your weak foot. Naturally I'm a right-footed player, but I have two strong feet and if you've ever watched one of my videos, if you want to be a progressive soccer follower, that idea of having a weak foot is done. It's over. You've got two strong feet from now on. You just need to put more practice, more effort, more attention on your weaker leg. Get them both the same. It's going to serve you for the rest of your playing career. So if you want to start juggling better on your weak foot, number one, give it more attention. Most players, let's say you're a right-footed player, how do you start juggling? From the very beginning, you're just on your right foot and you're doing as many as you can on your right foot and you never give this guy, unless like every so often it comes over here, then you finally touch it. So from the beginning, basic juggling should be right left. So from the very beginning, go right left, right left, right left. If you're watching this right now, you're a young player or a beginner, don't handicap yourself by putting all your time and attention on this and then coming back to this one five years later and trying to improve it. Do it from the beginning, right left. But let's talk about the technique because that's what probably feels different, right? You have one where you hit it and it feels natural and then you go to use your other foot and it feels weird. You can't flex it in a certain way. You can't flex in the same way as your other foot. And that is exactly true. It's because this foot, this ankle, these toes, they don't have a what's up. I hope you're finding this content helpful. Watch this all the way to the end. If you want to find out which subscriber got this video's special shout out. The same flexibility, the same strength. They don't have the same muscle memory. You've done this action on this foot, thousands, hundreds of thousands, millions, maybe not millions, but a lot more times than you have on this one. So obviously it's going to feel different, but the more you do it, the more you focus on it, the more you think about it, the more natural it will become. So maybe just start like this, kick and catch, but really focus on strong foot. If you're trying to hit it and it's not getting up high enough, you need to flex that foot harder. You need to put a little more force on it. You need to kick it a little harder, but focus on curling the toes, flex foot. It's not weak. It's not limp like this. If I'm making contact like that, the ball's dying. So really focus on curling the toes, hitting under the ball, just like you would on your strong foot, getting good backspin on the ball, and maybe just start like that with a bounce. Okay, trying to get good curl on the back of the ball. Then you need to start doing what you did originally on this foot and that's getting multiple touches, trying to keep it up as many times as you can. Okay, you can do big ones. You can do these little ones. You can do touches with different parts of the foot, little bounce, but you need to give that foot more time. So it's not rocket science. It's not over. You don't need to over complicate it. The same way you made this foot good is the same way you're going to make this foot good. So don't make it any harder than it has to be. Just start putting in the practice, adding up the repetitions, evening out the repetitions. But from the beginning, nice and easy with both feet. Don't put all the emphasis on one foot from the beginning, but if you need to catch up, give this guy the time it needs, just start with those like bounce touches, focusing on good contact. It's better for you to kick it too hard than not hard enough. Focus on flexing the foot, curling the toes, cradling under the ball, creating backspin on the ball, and then trying different techniques, building comfort using different parts of the foot. And one more skill that I like to do or one more drill that you can do for your weak foot that I think is really good. And it'll actually help you improve a lot faster, help you improve that strength and the flexibility in the foot. Because if you're trying to juggle with your weak foot, I'm going to guess and you're really struggling.  So you need to practice that skill. And if you can just practice a foot stall, try to get a nice pocket in there, curl the toes really. I'm really flexing the toes up towards my head, towards my knee. And I'm trying to keep it in that pocket right there. And I can feel the tension in my shin and in my ankle joint. And if you really have a weak foot, then that's probably going to be really tough. But the more you practice this, the more strength you'll have in that foot. And now we'll transfer into your juggling skills. So I hope that helps. Here's how to improve juggling with your weak foot.


We're clay and Christina from his flight second grade class in Columbia, Missouri Our question is why do stars twinkle instead of shine? Hello, my name is Anna free ball and I'm a professor here at MIT I'm actually an astronomer and I'm going to answer your questions about space You ask why the stars are twinking at night and we even have little songs twinkle twinkle little star But you're right there are the stars themselves are actually not twinkling It is the earth's atmosphere that makes the stars twinkle the real stars of course are spheres of hot gas and they don't have spikes at all But when the light from the star travels through the atmosphere of the earth Which is what we call the sky what you see or the air where the clouds are and so forth That that air the mass of air actually distorts the starlight you can imagine there's a lot of wind going on in the atmosphere and It just sways the starlight a little bit left and right and back and forth and so forth And so it the round star light suddenly gets Distorted in all sorts of direction and it looks like it has spikes I'm marching from Miss Nelson second grade class in Columbia, Missouri. My question is do stars move at night or do they just look like they're moving because of the Someone else asked a related question about stars and why it looks like that they're moving on the sky The stars themselves actually not really moving sometimes they move a tiny tiny little bit But it takes years for astronomers to actually see that they're moved with respect to each other on the sky however every night the stars come up their rise and then they go down in the same way that the Sun rises in the morning and goes down in the evening and that is because Earth is actually moving so you have to imagine that all the stars in the sky actually fixed and What we are doing on earth is we're doing this here The stars and I'm doing this I'm essentially moving my head across the star and that is exact same thing as me Looking in one direction and the stars doing this So to us it looks like the stars are moving because we think we are fixed on earth But that is just the perception that we have living on this planet for real the stars are fixed in The universe and we are moving with spinning around and we're even moving with the earth around the Sun So that results in a lot of apparent motion on the sky


It is now time for Member Statements, a member from Huron, Bruce. Thank you very much Mr. Speaker. I rise today to discuss an important topic to Ontario's future, and that is rural health care. And it's my understanding, specifically during the bear pit session yesterday at Roman Good Roads, we heard a lot from municipalities with regards to the importance of rural health care. But there's two hospitals in my riding that require attention by this government. The South Bruce-Gray Health Centre, specifically their Chesley Restorative Care Unit, as well as the Concern Hospital. First, the RCU, the Chesley Restorative Care Unit, is part of a 10-bed approach to help patients regain their independence after acute phases of illness with the expectation that they would be able to return home. The closure of this unit, scheduled for spring, will push patients and they'll have to remain in hospital for a longer period until their discharge or until a bed in a long-term care facility becomes available. This will end up costing more in the long term rather than getting patients back home and improving the quality of life. The Restorative Care Unit is a model that should be followed by this government. And secondly, the Concern Hospital. I've spoke about this situation before. In 2008, they were promised dollars by the Liberal government. In August 2011, this community had a carrot dangled in front of them with the promise of a new hospital build. And now today, in 2015, nothing has come to fruition. Just today, Concern and Cure and Kids Laws approached the minister to say, please help us, our hospitals, in disrepair. We need this government to focus on rural health care. Thank you. Thank you. Member Statement. Member from Windsor West. Thank you, Mr. President. Dana Belly. Thank you, Mr. Speaker. My writing of Windsor West has to offer when it comes to building partnerships in our community. She's the owner and founder of Art Indeed, an organization that provides a wide range of holistic based art programs at her studio and community organizations across town, including the Alzheimer's Society of Windsor and Essex County. Alzheimer's, as many in this chamber know, is the most common form of dementia and is both devastating and incurable. Speaker, I'm proud of the work Art Indeed is doing with the Alzheimer's Society of Windsor and Essex County. I recently toured the society and was impressed by the quality of services that are offered like education and counseling for people suffering from Alzheimer's and related dementias along with their families. Last year alone, the society offered over 3,000 counseling sessions, 110 support group meetings and distributed over 7,000 information packages, all while self-funding 35% of their annual budget. With the number of people suffering from dementia expected to double in a generation, I'm thankful for the creative partnering of Art Indeed and the Alzheimer's Society. I think all members in this chamber will agree that we should help foster these relationships as we search for ways to fight and live with Alzheimer's and related dementias. Thank you. Member Stenitz, the member from Halton. Thank you, Mr. Speaker. I'm pleased to rise today in the legislature and acknowledge some very special Ontario talent that gained international recognition on the world's biggest stage over the weekend. Like many people throughout the province, the country and across the globe, I tuned in to watch the Oscars on Sunday. And while some may have been watching the stunning dresses, outstanding music and really inspiring performances, it was really the awards that were being handed out that drew most people's attention. I'm pleased to say that our province was very well represented in the winners' circle. You see, Director Chris Williams, who was raised in Kitchener and later attended the animation program at Sheridan College in Oakville, took home the Oscar for best animated feature for Big Hero 6. Not to be outdone, Craig Mann, born in Oakville, won a best sound mixing Oscar for his work on the film Whiplash. Speaker, it's clear that these Oscar victories were both very well deserved. To have local talent succeed at the highest levels is inspiring and something we should all celebrate. I want you to know that this is a reminder of what can be achieved with hard work, passion and determination. Their outstanding success reminds us all that we must continue to support local talent and ensure that we are doing all that we can to help Ontarians realize their full potential. I'd like to congratulate both of these local artists and wish them the best of luck in their future endeavors. Thank you very much, Mr. Speaker. Thank you. Member Stevens, the member from Kitchener, Connor Stolgoff. Well thank you, Speaker. I want to thank the Canadian National Institute for the Blind for coming to Queen's Park today. And thank them for all they do to support blind or partially sighted Canadians and helping them build the confidence and skills to go about their daily lives. I've always been a strong advocate for the work CNIB does. Whether that be providing audio books or hard copy books written in Braille, giving peer support for those that feel depressed or angry with their vision loss or teaching CNIB clients tips on how to complete tasks many of us take for advantage in our daily lives. I personally struggle with care of the conus, a degenerative disorder of the eye where the cornea thins and changes shape to a more cone like structure causing substantial distortion of my vision. Luckily I have a way to deal with my eye condition using special contact lenses. I understand the struggle many Ontarians face and how critical post vision loss rehabilitation therapy is to our health care system. As a member of this legislature, I look forward to working with CNIB as they move forward on their path to change to ensure our vision care in Ontario's health care system supports our aging population and those who need special vision care. I welcome all MPPs and their staff to the reception this evening in the dining room from 6 to 8 p.m. and speak with those from CNIB so you can learn more about the important support they provide across Ontario and throughout Canada. Thank you Mr. Speaker. Thank you. Thank you for allowing me to speak today. I like to use my time to highlight something I see happening across my riding and across the province. We're seeing people really starting to support their local communities by buying local. Returning to local farmers markets, local wineries and local workers to highlight a few examples. They're even going on stay occasions where they stay at home and see their local sites and entertainment, giving back to their community and the tourist sector. I've been calling on communities to buy local for years. I'm very happy to see so many people are supporting that initiative. In my riding, I like to commend Dan Patterson, President of Niagara College, for opening up the pre-qualifying bid process, so bids for local contractors. This kind of thing creates an opportunity for skilled tradespeople who live and work in Niagara by expanding the list of pre-qualifying bidders they are able to include two local companies. By making room for locals and supporting our local electricians, construction workers and builders, we're making sure good, decent jobs get back into our community that will come from this. I like to see this trend continue, especially with our new hospital in Niagara Falls. Mr. Speaker, I like to see this province buy local and support our local wineries and our local arts and culture across the province. By taking into account areas where there's high unemployment and by focusing on buy local strategies, we can put good, hard-working Ontarians back to work. Thank you very much. Mr. Speaker, I'm pleased to stand in the House today to celebrate a remarkable person from my riding of New Market Aurora. On February the 15th, I had the opportunity to present a long-time Northern York region resident, Della Taylor, with a certificate to honor her 100th birthday. Della was born on February the 9th, 1915, on a farm near the beautiful hamlet of Lloyd Town, not too far from my riding and in the township of King. This was a significant year, not only for Della and her parents, but also for the shaping of Canada's future, for it was the early days of the Great War which forged our nation's early identity. Della's strong constitution was built on the family farm where she learned not only how to run a household, but also how to run a farm. It was on this farm that she met her future husband, William. With the 1930s came the Great Depression, yet Della and William did not let that stop them from marrying in 1934. That union resulted in three children, William, Barbara and Bernard, as well as five great-grandchildren and 12 great-great-grandchildren. Mr. Speaker, these are the people who, reaching 100 years of age, is a great milestone. And through their hard work and selflessness and determination, this generation was witness to a country coming of age. And we thank Della Taylor and her friends and her family for building a fantastic province and a fantastic country. Della Taylor, we thank you and happy birthday. Thank you. Thank you. Mr. Speaker, the members from Prince Edward, please, thanks. Thank you, Mr. Speaker. And the member opposite was earlier referencing Sunday Night's Oscar Awards, and quite a show it was, as the red carpet was rolled out in Los Angeles, and they handed out the Oscars in California. Well, there's a big event this weekend in Belleville. They'll be rolling out the green carpet for the fourth annual 2015 Belleville Downtown Dock Fest. And who knows, we may have some future Oscar winners as a result of having their films on display this weekend in downtown Belleville. And by the way, Lady Gaga was great on Sunday Night doing the sound of Music Medley. I loved it, loved it. But I digress. The International Documentary Film Festival kicks off with the screening of Keep On, Keepin' On on Friday Night at the Empire Theater. And the film tells the story of an unlikely mentorship between jazz legend Clark Terry and Justin Coughlin, who's a young piano prodigy. And Coughlin is actually going to be on stage at the empire as well as the film is being played. And then he's going to Centennial Secondary School, and he's going to be meeting with 150 music students from nine local high schools in the region and talking about the film and just talking to them about music. So the film festival, while it's a great opportunity to show 50 different documentaries over the three-day festival, it's also an opportunity to engage young people. And I think that's what this is all about at a number of different locations throughout Belleville's core. The Doc Fest offers local filmmakers, as I mentioned, an opportunity to show off their work. 14 local filmmakers will have their docs hit the screen, including Belleville's Aaron Bell. And the story that he's telling is Crawford family of champions, and Floyd Crawford moved to Belleville in the 1950s. He became the captain of Belleville's McFarlane's hockey team that went on in 1959 to win the world championship. But the big story is the offspring, there are nine of them who have gone on to incredible things, including Mark Crawford, who won coach of the year in the NHL in a Stanley Cup with the Colorado Avalanche. So congratulations to everybody involved in Belleville's downtown Doc Fest, and I look forward to hitting the green carpet on Friday night. Thank you, Mr. Speaker. Thank you. Member Stavitz, the member from Davenport. Thank you, Mr. Speaker. And I'd like to take this opportunity to recognize an organization doing tremendous work in my riding of Davenport. In January, I visited Safe Haven Project for Community Living, a respite center providing care for children with multiple disabilities and complex medical needs. For over 25 years, Safe Haven's doors have been open to help children from zero to 18 with special needs in Toronto and central Ontario region. Safe Haven provides a unique service as it recognizes that very rarely do children with special needs fit into exclusive silos of care. Children at Safe Haven are treated for numerous conditions and many aren't able to walk, see, or hear. Safe Haven is equipped with high quality, trained, and very motivated staff with expertise in dealing with children with many complex ailments. And children at Safe Haven are granted a room equipped with specially designed beds to suit the needs of the specific child. And importantly, families remain involved in all aspects of their child's life at Safe Haven. When I tour their great facilities at Safe Haven, I met with many of the children as well as several dedicated staff members, including Beverly Gordon and Kimberly Godwa. Beverly started Safe Haven 25 years ago and will be retiring in March. I'm proud to say that our government has generously supported the important services provided at Safe Haven. The Ministry of Children and Youth Services has provided over $200,000 in out-of-home respite funding as well as money to facilitate renewing the building this year. Mr. Speaker, I am humbled to represent this fantastic organization and I look forward to assisting them any way I can. Thank you. Thank you. Member Stevens, Member from the Kitchener Center. Mr. Speaker, this past Sunday I was honored to be invited to speak at the Kitchener Majeed to a large gathering of my constituents in the Muslim community on a very serious issue, and that is domestic abuse. This is a deeply disturbing issue that affects many families and crosses all boundaries, no matter the social, cultural, or economic context. Violence and harassment against women should not be tolerated, and for women who find themselves in these circumstances, they need to know that there is help for them. This is the message that I delivered to the gathering. In 2013, our government introduced the Domestic Violence Action Plan, which included $14.5 million in increased funding for women's shelters. Mr. Speaker, within some communities, it's very difficult for women to leave an abusive relationship as they face shame and isolation. Although they've done nothing wrong, they're accused of dishonoring their families by going public with the abuse that they're living with. I was recently asked to chair the select committee on sexual violence and harassment against women. Our job is going to be to address prevention and consider ways to shift social norms and other barriers that prevent people from coming forward. Mr. Speaker, I want to thank the people who attended the event at the Kitchener Majeed for being courageous enough to want to talk about domestic abuse, and I say let's keep the conversation going. Thank you. Nice. I thank all members for their statements.


My name's Davy Chappy, and today it's time to get back to the very roots of the origins of D&D, the bravest little creature of them all, the hop, I mean, the halfling. I'm gonna talk about the everyday life of the smallfolk, as presented in Mordenkainen's Tome of Foes, as well as go over the in-game stats so that you can enjoy traveling to the ends of the earth in your own games. As always, keep in mind that most of this is just my opinion, so if you feel angry enough to boil me, mash me, or stick me in a stew, be sure to leave a comment down below. And now I'd like to take a moment to thank all of the wonderful patrons who pledged to my Patreon last month. Space Cactus, Night Vision Ninja, Chaos Plays, Alex Tuffin, Alexa Barco, Dankmonio G, Constellation, Maxwell, Patrick Rooney, Adam Picton, Mighty Deadpool, Paul Christopher, Adam Villareal, Douglas McIntosh, Emma Ollard, Michael Conley, Jeremy Clark. Truly, if I could thank all of you in person, I probably wouldn't, because some of you are really far away, and I hate flying on planes, but it's the thought that counts, and I will be thinking of you always, even when you don't want me to. But with that out of the way, let's begin. So, Halflings are those super short folk that want nothing more than to stay at home, eat beans, and tell stories by the fire. And yet every once in a while, one or two unlucky Shire folks somehow get caught up in big whirlwind plots about saving the fate of the world or something, despite the fact that Halflings would much rather just continue existing away from the hub above normal D&D adventures like they've been doing since the beginning. Even when a Halfling leaves the safety of its village and goes out into the world, there is a good chance that it can find refuge inside any given major city since Halflings are beloved by most races, and so are welcomed with open arms, to the point where they often create little communities of Halflings within those major cities where they just continue to do their thing. Truth be told, it's not really known where Halflings originally came from. They've just been around, doing their Halfling thing of being peaceful Amish small folk while the rest of the world destroys itself in plots of racial unrest and political intrigue. Is a Halfling society poised to become the next noble line of aristocrats? No, but have some corn. I guess the closest thing to an origin story that Halflings have is the story of how their primary goddess, Yandala, was just wandering around the beginning of time one day when she spotted a colony of wild Halflings in the tall grass and decided to capture I mean adopt them and train them to use their special skills. The select few that she decided to keep in her main party instead of putting them in the PC of the mortal world with the rest ended up being elevated into legendary status, making up the rest of the pantheon and giving Halflings more family members to talk about. As that story tells, even their gods aren't exactly native to them, instead being practically adopted by the Halflings because Halflings are total bros who welcome everybody into their homes if they don't cause trouble, even primordial beings. In fact, Halflings don't talk about or treat their gods like the revered holy symbols that other races see them as, but instead just see them as part of the family using informal terms and phrases to make the gods sound more humble and homely just the way the Halflings like hell pretty much every god in their pantheon reads like a good old-fashioned adventurer rather than an infallible god such as Charmalaine the goddess of luck and keen senses whose feats range from solving a chamber of 1,000 traps to stealing from Tiamat to escaping a Sahuagan army. She carries a mace that warns her of danger, has a ferret animal companion named Zafin and can send her spirit out to scout ahead for her. Now tell me that that doesn't sound like a level 20 player character and not a god. Along with her, Halflings also have extended family in the form of Sheila, Pararoil the farming goddess, Arvorene the god of battle tactics because even hobbits have to defend their homes sometimes, Cryolail the goddess of friendship and happiness, Brandebaris the god of stealth and dickery and Urgalan the god of death and mourning all these gods are revered in ways that would be seen as unconventional by other races such as with the mere tip of the hat as a halfling walks by a shrine or a flower placed delicately or maybe a strip of nice crispy bacon but they're all as respected as an uncle or a grandfather to the Halflings. Now all of this would make one wonder if all that Halflings want to do is sit at home and eat munchies all day then why would there even be Halfling adventurers in the first place? Well there are a few reasons. The simplest one is that for one reason or another the Halfling got shanghied from its home and thrust into a magical adventure full of swords and fear but for a more common explanation we have to look deeper into the life of a Halfling. See when Halflings are first growing up they have a tendency to wander off and explore every acre of land they come across. As Halflings grow older this impulse mostly wears off to the point where they are content with the lives that they're living but for some Halflings this impulse only grows stronger and they feel a sense of wanderless that takes them beyond their homesteads and into the great unknown. These types of Halflings are said to have fancy feet syndrome and that their god Brandebaris has influenced the Halflings and bestowed his favor onto them guiding them on their adventures and it's just as well too as Halflings are said to possess an almost supernatural luck that protects them from danger when they need it most almost as if every Halfling has an unspoken bond with the forces of the universe or maybe it's just Aunt Charmalane making sure the kiddos don't get themselves in too much trouble but no Halfling would be half as good without the stats to back it up and Halflings have some of the neatest abilities in the game if anybody would actually play them. To start with all Halflings gain a plus two to dex so they're one of the few races classed as small as well as one of the few races with only 25 foot of movement they can speak both common and elven their bravery gives them advantage against being frightened they can move through other creatures even enemies which let me tell you is a big help and they can re-roll their dice whenever they roll a natural one which means that unless your new roll is also a natural one you can say bye bye to crit fails my friend then from there the Halfling has three sub races in the form of the lightfoot the stout and the scags ghost wise. Lightfoot Halflings get a plus one to Charisma and can hide behind other people which no you cannot just normally do with any character. Stout Halflings also have actually nicknamed Half Dwarves get a plus one to Constitution as well as both resistance to poison and advantage against poison and the spookalicious ghost wise Halflings get a plus one to Wisdom and can telepathically communicate with anybody within 30 feet provided you share a language. What I like about all three subclasses is that none of them really outshine the others unless you're looking for a specific class race combo which makes it really easy to fit the Halfling into almost any roll that you might want. Hell the Stout Halfling Barbarian is actually a totally dope character choice which I think is just amazing. No matter what you pick I'm sure that with a little bit of humility and maybe just a little help from your extended family you'll have a blast playing every session like at second breakfast but that'll about do it. I hope you enjoyed this video leave a like and comment if you did subscribe if you want to be a cool dude and maybe support me on patreon so that I can slowly make my entire life revolve around D&D. Also if you want to stay up to date on all of your dave news I can put link to my social media in the description below but yeah davey out.


This lecture is part of Berkeley Math 115, an introductory undergraduate course on number theory, and we'll be about the question of which primes can be represented by various quadratic forms of the form ax squared plus bxy plus cy squared. For example, we might ask which forms are sums of two squares, or which forms can be written as a square plus two times another square, or maybe a square plus three times another square. So before doing this, let's recall some previous results we had. First of all, number n is primitively represented by sum form ax squared plus bxy plus cy squared with discriminant d, with discriminant d. It's equivalent to saying that d is a square mod four n. So primitive means x and y are co-prime, of course. And we also saw that any form is equivalent to a reduced form which satisfies b as absolute value less than or equal to a is less than or equal to c. And here we're going to take all forms, be positive definite. So the negative definite case is much the same as the positive definite case because you just change sign. The indefinite case is somewhat more complicated and we'll be discussing it a little bit more in a later lecture. And now the idea is as follows, suppose that there's a unique reduced form for some discriminant d, then a number n is represented by that reduced form if and only if this condition is satisfied because if this condition is satisfied, n is represented by some form, but any form is equivalent to a reduced one which represents the same numbers. So now what we're going to do is to go through the various possible discriminants. Well, the discriminant has to be zero or one mod four and since the form is positive definite, it must be negative. So let's look at the negative numbers that are three, one or zero, mod four. So we get these numbers here, that should be 12, that's minus 15. And this lecture we're going to look at the first six of these and see what the corresponding reduced forms are. So after minus 12 things start getting a bit more complicated as we will see later. So let's do the easy cases first. First let's try discriminant minus three. Let's find all reduced forms of the form ax squared plus bxy plus cy squared with d equals b squared minus four ac is minus three. You remember reduced means that b is less than equal to a, it's less than equal to c and it has the consequence that three a squared is less than equal to d as we saw earlier. Well, this is now minus three and if three a squared is less than equal to d we can't have a equals zero. So we get a equals plus one. It can't be minus one because we're just working with positive definite forms. And now if we look at this, we see b squared must be odd. So b must be odd and b is absolute value at most one. So we find b equals plus or minus one. So this gives us two possibilities, x squared plus xy plus y squared or x squared minus xy plus y squared. But we can really change one to the other just by swapping x with say minus y. So these forms are equivalent. People sometimes add a little extra condition to the condition of being reduced where you sometimes say that if b equals a or a equals c then b is greater than or equal to zero. And if you add this condition to the form being reduced then this already eliminates that form so you don't have to waste time showing their equivalent. But the problem is this condition is a little bit fussy and difficult to remember. So anyway, so what we, so we've seen that any positive definite form with d equals minus three is equivalent to x squared plus xy plus y squared. So n is represented by x squared plus xy plus y squared primitively if and only if d equals minus three is a square mod n because if this condition holds then n is represented by some form of discriminant minus three and they're all equivalent so they all represent the same numbers. So let's look at this in a bit more detail. Let's take n to be a prime because this makes it a little bit easier to figure out which primes that work. Then we see that p is of the form x squared plus xy plus y squared if and only if minus three is a square modulo r prime p. And we worked out earlier when minus three is a square modulo r prime using the quadratic reciprocity law and we saw this as equivalent to saying p is congruent to zero or one odd three. So this tells us which primes can be written in this form. For instance, let's take a look at a few examples if p is three or seven or 13 we get this is equal to one squared plus one times one plus one squared. This is equal to two squared plus two times one plus one squared. This is three squared plus three times one plus one squared. I suppose I ought to do one where y isn't one. If we have 19, this is equal to three squared plus three times two plus two squared and so on. In fact, we can do a bit better than this because if p is equal to x squared plus xy plus y squared, well, suppose x is even. Then we can write p is equal to four x over two squared plus two x over two y plus y squared which is equal to three x over two squared plus x over two plus y all squared. So p can be written in the form three x squared plus y squared. Well, what if x isn't even? So y even, we can do the same obviously except we change x and y. If x and y are both odd, then we notice that this form x squared plus xy plus y squared can be written as x plus y squared plus x plus y times minus y plus minus y all squared. And now we've again written it in this form but now x plus y is even. So no matter what x and y are, if p can be written in this form, then it can be written in the form x squared plus three y squared. So we have the following theorem. So p prime is of the form x squared plus three y squared if and only if p is common to zero or one odd three. And again, we can just check a few cases. Three is equal to three times one squared. Seven is equal to three times one squared plus two squared. 13 is equal to three times two squared plus one squared. 19 is equal to what's 19 equal to? It's basically four squared plus three times one squared and so on. So that's done the case D equals three. It's told us exactly which primes can be written as a square plus three times another square. So now let's look at discriminant minus four. So we want to find reduced forms of discriminant minus four so we have ax squared plus bxy plus cy squared and we have d equals b squared minus four ac equals minus four. It's reduced so b is less than a is less than c and we remember this implies that three a squared is less than d which is equal to four. And as before, this implies that a is equal to plus what because the form is positive definite. And now this condition here implies b is even and if b is even and has absolute value less than a this implies that b must be zero and this determines c. So the only form is x squared plus y squared. So this is the only reduced form of discriminant minus four that's positive definite. Notice there's another, there's actually another reduced form of discriminant minus four which is minus x squared minus y squared but that's not positive definite. So n is represented by, I shouldn't say n greater than or equal to naught is represented by x squared plus y squared with xy co-prime if and only if minus four is a square mod four n. So we had this condition that says n is represented by some form of discriminant d if and only if this condition is satisfied. If n is negative, we obviously have to use the form minus x squared minus y squared. But if n is positive, then the only one that can represent it is this one. Anyway, now let's take n to be prime just to make because then we can work out what this condition is. Well, this says minus four is a square mod p or four p but it's obviously a square modulo four and we worked out when minus one is a square modulo p this is just equivalent to p being congruent to one or two mod four. So we've now managed to get this theorem due to Fermat which says that p prime is of the form of x squared plus y squared if and only if p is congruent to one or two mod four. And again, we can check two is equal to one squared plus one squared, five is equal to two squared plus one squared, 17 is equal to four squared plus one squared, 29 is equal to five squared plus two squared and so on. So notice by the way that if n is one mod four this does not imply that n is a sum of two squares. So we can have 21 cannot be written as x squared plus y squared. So this really does require p to be a prime. Now let's look at d is congruent minus seven. So as before we've got the form a x squared plus b x y plus c y squared and we want b squared minus four a c equals minus seven. We have b less than or equal to a less than or equal to c and we have three a squared less than or equal to the absolute value of d which is minus seven. And as before this condition here implies a equals one and now this condition implies b is odd and b is absolute value at most a. So b is equal to plus or minus one. So we get two forms x squared plus x y plus two y squared. We get x squared minus x y plus two y squared. And as before we can get from one to the other just by changing x to minus x or by saying b must be positive. So we can cross this one out. It doesn't give us anything new. So any form with d equals minus seven that's positive definite is equivalent to this. And of course there's another one of discriminant minus seven where we just change all the signs. So if n is greater than or equal to zero then n is equal to x squared plus x y plus two y squared with x y co prime if and only if minus seven is a square mod four n. So just as with minus three let's try and figure out when this happens. So when is minus seven a square mod four n? Well let's take n to be a prime. So we want minus seven is a square mod p. So it'd be a square mod alone odd prime. So this is equivalent to saying minus seven p is equal to plus one or zero I guess for the case p for seven which is kind of trivial. And by quadratic reciprocity this is the same as saying p seven is equal to plus one which is equivalent to p being one, two or four mod seven. So the primes of the form x squared plus x y plus two y squared are exactly those of the form p congruent to zero, one, two or four mod seven. And we can check a few cases. For example, seven is equal to one squared plus one times minus two plus minus two squared. It's a bit hard to spot this because they need to take that number to be negative. And similarly 11 is equal to one squared so 11 is equal to, let me see if we take y equals four eight. Yeah, we can take one squared plus one times two plus two times two squared. So there should be a factor of two in there. And the next ones are 23 and 29. And I'll leave this as an exercise because it's very confusing doing this in your head. Well, the form x squared plus x y plus two y squared looks a little bit messy but we can actually make it a little bit better. You notice that if p is equal to x squared plus x y plus two y squared with p odd, then this implies y must be even because if y is odd, this bit is even and this bit is even so p would have to be two. So we can now write this as x plus y over two squared plus seven y over two squared. So if p is not equal to two, then actually p can be written as a sum of a square plus seven times another square. So the primes that are seven plus seven times another square are the ones with p congruent to zero, one, two, four, seven, except for p being two, which doesn't quite work. So for instance, we can write seven is equal to zero squared plus seven times one squared. The next one was 11 is equal to two squared plus seven times one squared. 23 is equal to four squared plus seven times one squared and so on. So we've dealt with the forms x squared plus y squared x squared plus three y squared x squared plus seven y squared. The next one is x squared plus two y squared where we take D equals minus eight. So let's try and find the reduced forms. We have a x squared plus b x y plus c y squared and D is equal to b squared minus four a c is now minus eight. And as before, we see that three a squared is less than or equal to minus d and plus d. And this is eight. So again, this implies a is equal to plus one if the form is positive definite. Obviously, things are gonna get a bit more complicated when the discriminant d gets larger because we will no longer be able to assume that a is equal to one. And as before, this gives b to be even and b must be less than or equal to a in absolute value. So b is equal to zero and the only positive definite form with D equals minus eight is x squared plus two y squared. So we've now got the form x squared plus two y squared. And n is of the form x squared plus two y squared if and only if minus eight is a square mod four n. That's for x, y equals one, of course. And if n is equal to p a prime, what we want is that minus eight is a square mod p. And we saw when this works earlier, this is just saying that minus two p is equal to plus one. And we found this is equivalent to p congruent to one or three mod eight. So the primes of the form x squared plus two y squared are exactly those of the form one or three mod eight. And we can write out a few examples. Three is equal to one squared plus two times one squared. The next one is 11, which is equal to, let me see, I think you'd have to take x equals three. So three squared plus two times one squared. The next one is going to be 17, which should be some square plus two times another square. And we can see that's actually equal to three squared plus two times two squared and so on. So now let's go on to D equals minus 11. And again, if we look at the reduced forms, we have, as before, we have three a squared is less than or equal to the absolute value of D. And this still involves a being less than or equal to one. So we can take a equals plus one. And as before, b squared minus four ac is equal to minus 11. So b is odd. So b is equal to plus or minus one.  And as before, we can eliminate this one just by changing x to minus x or something like that. So any positive definite form, with D equals minus 11 is equivalent to this one. So as before, we find p prime being is of the form x squared plus xy plus three y squared is equivalent to minus 11 being a square modulo four p. And by using quadratic reciprocity, this says minus 11 p is equal to plus one, which by quadratic reciprocity turns out to be the same as p being a quadratic residue of 11 or zero, which means that p has to be congruent to zero, one, four, nine, 16, which is five or 25, which is three modulo 11. So these are the primes that can be represented as x squared plus xy plus three y squared. And you can write out a few examples as you want. Now, in the case p equals seven, we could convert the form x squared plus xy plus two y squared to x squared plus seven y squared by assuming that y must be even. That doesn't quite work here because y doesn't have to be even. I mean, the problem is this coefficient here is now odd rather than even. So it's not so easy to discuss forms of the form x squared plus 11 y squared. Now let's finish off by doing D equals 12 when we get an extra complication. So D equals minus 12. So we're looking at A x squared plus B xy plus C y squared with B squared minus four AC equals minus 12 and it's reduced. So B is at most A, which is at most C. And as usual, we get three A squared is less than or equal to the absolute value of D. And now we have a bit of a problem because this now implies A is equal to one or two because this is now 12. So we're finally getting something a little bit more interesting than A always being one. So let's first of all look at A equals one. Well, here we notice that B is even. So if A is one, B must be equal to zero and C must be equal to three. So we get the form x squared plus three y squared. But we've got another one. We can have A is equal to two. And we can now take B has to be even and so we get B is equal to minus two zero or two. And if we look at these three cases, we get two x squared minus two xy plus two y squared from B equals minus two. Here we get two x squared and then we want four AC is equal to minus 12. So this case doesn't work.  And as before, we can change x to minus x. So we can forget about this one. So we see we actually get two non-equivalent forms. So any positive definite form with D equals minus 12 is equivalent to one of these. And we notice that these two forms are not equivalent. In fact, we mentioned this in an earlier lecture because this one is always even for no matter what x and y are. And this one is sometimes odd. So if we've got a number, all we can do is to say it's represented by, so n is represented by at least one of x squared plus three y squared, two x squared plus two xy plus two y squared, if and only if, so it's represented primitively. So x, y must be co-prime. If and only if minus 12, which is equal to D, is a square modulo four n. Well, so how do we separate out these two cases? Well, we notice that this one is always even. So if n is odd and minus 12 is a square mod four n, this implies that n is of the form x squared plus three y squared. So in particular, the primes of the form x squared plus three y squared are exactly the ones such that minus 12 is a square modulo four n. And we actually did this earlier for discriminant minus three. So if n is prime, this is equivalent to p being congruent to zero or one modulo three. Well, so almost all the forms we've done so far, except for the form 12, had the property that there was only one equivalence class of forms and for 12 there are two equivalence class of forms that one of them is irrelevant for odd numbers because it always takes even numbers. When we go beyond discriminant minus 12, things get even more complicated because we start getting several different equivalence classes of forms and it begins to get more and more complicated to tell which numbers they represent. So we'll be doing some examples of this in the next lecture.


Hi, my name is Guido, so I'm here to present Guenetti, which is a tool we've been developing at Google in the last few years, and I'm here to present it in a slightly different way. Basically, since I was tired of presenting the usual of what Guenetti does and how to use it, I'm going to present a bit of how I use it personally on my laptop in a totally unofficial way, just to make my project, my technical manager more scared about this. So what's Guenetti? Basically for people who haven't heard about it, it's a cluster virtual machine manager, which actually means that the cluster is not of virtual machines, but is of physical machines, machines we call nodes, and the cluster is used to schedule virtual machines. So you can use various hypervisors. We now support Guenetti 2.0, KVM and Xen, and you can use, you will be able to use LXC or normal CH routes in 2.1 when it will be released, or if you are very brave, you can use it now. And we use various types of backend disks, so our main development is on DRBD and LVM, but we also support files, although it might have some improvements. It might use some improvement. We support different operating systems through an API, so basically what you can do is you write a bunch of scripts, and they can install your operating system under Guenetti, and this can be used to install almost whatever. We have an example operating system, which is open source, and it's based on the bootstrap, but anything else can be created. You can use static images or install your own, not Debian based or whatever. And yeah, basically you use Guenetti to install these instances and schedule them on nodes, on a cluster of nodes, and then we have features like live migrations without needing any storage or network or shared storage between the machines, and we use DRBD to do that. So in this way, you can use basically cheap hardware or normal server hardware without any special features to create a network of virtual machines. And as I was saying, we are going to talk about how to create and dispose of development machines on a system like a laptop rather than a cluster, but because, I mean, I thought everybody already knew about the cluster stuff, and it was kind of boring, so. Maybe it's me, and I've talked about it a bit too much. If you want to talk a bit more about it later, just ask questions and we'll figure it out. So development Debian release status. We have Guenetti 1.2, which was our former release. We don't use it anymore. It's in Lightning. And of course, I mean, anything which is in Lightning is already old, right? So we know that Debian Stable has this feature. XenHVM doesn't work, but Houston is trying to fix it in one point release or something, and you can only use Xen. Only now only Xen.PVM. And the last latest stable is Guenetti 1.2.8. It has a couple bug fixes more from 1.2.6, but in general, just don't use any of them. Okay, Guenetti 2.0. This is the current stable release. We are currently at 2.0.2, but 2.0.2 is broken, so we are using 2.0.1 also instead. This is the release I would recommend you to use. We just uploaded it to Debian. We didn't have time before, so it was still 1.2 before. And yeah, basically, it went through new very fast. I think I had to bribe a few release managers for that, but yeah, no, actually, FTPmasters. And that one has support also for KVM, and that's the one we are targeting for Backport Sorgh soon, since at least you can use Debian Stable and a newer version of Guenetti. This also makes sense, because mostly in a Guenetti environment, you're going to use a machine just for Guenetti, and then use services on the virtual machines scheduled on Guenetti. So it makes sense to have a newer Guenetti there, because it will mostly be your only or about only service on the machines. And then we have a development branch, which is called Branch 2.1.ingit. That contains all the new things. It has a design doc which outlines what we're going to achieve or has some version of what we're going to achieve, which will be different anyway, but at least you can get some ideas. And if you have any feature which you really want and you are willing to implement and you're willing to sign our evil copyright thing and contribute patches, this is the branch to look at, unless it's just small fixes or minor features which can go into Stable. Let's talk about the structure of Guenetti a bit. So basically we have a bunch of demos, because Libvert had one and we wanted to have more, so we have at least three. The first one is Guenetti Master D. This runs on the Guenetti cluster master. Each cluster has one master node, which is where you give all commands, and you can fail over this role from one node to the other, should one node break and so on, because we want redundancy.  So you submit a job, which is, for example, create an instance, and the master will execute this job. We'll see how this works later. And job can execute concurrently. Guenetti Master D handles locks and things needed for this to happen. There is one cluster config. It's present on the master.   And it replicates data, as we said, to other nodes. There is some data which is replicated to all nodes, and all of the data is replicated to a subset of the nodes, on big clusters. You have three nodes, everything is replicated everywhere. But in order to scale, we want to replicate only parts of the data to all nodes to have less traffic. Guenetti-noded is a very simple node. It's just HTTPS RPC, and it's used basically to give commands to the nodes. So the master D has the actual decision-making process, and then tells the node something like create an LVM partition, and the node does it. But this doesn't have any state. It can only query things from the system and report them to the master, or execute operations as the master requires it. Guenetti-RIPI is used, it's also an HTTPS demon, but it's used externally from the cluster in order to actually interact with Guenetti. So if you want, you can just interact on the system with scripts, which we'll see in a minute. But if you want to build a web interface or something else, or graphical GTK interface which interacts with a Guenetti cluster, you can do that through RIPI. RIPI doesn't support all operations which are available in a cluster, just some of them, but it's very easy to add new ones. Because basically, you just need to decode an HTTP request and submit a job using the library which is provided. So if that's needed, 10 lines, they say. I never touched this code. And there are more demons to come because we want to be better and better. So there's some design for, for example, a configuration demon into one which will be able for you to query quickly configuration variables from many nodes in order for it to be available even if the master dies or something. But this is in the design doc for one, for two one, and we don't have it yet. So it doesn't make sense to talk too much about it. Then you have scripts. So as we said, if you don't have your own web interface and you just want to use Guenetti normally, you can use this script to interact with the cluster. And these are also simple scripts. They basically parse your command line option, generate an opcode, which is a Guenetti operation, and then submit it to the master demon. Or for some exception, execute it directly. This is usually GNT cluster. At cluster level, you can create a new Guenetti cluster or execute some cluster operation like get information about the config, change some things and things like that. And you can also change which the master is. This is one of the operations which doesn't use the master because, of course, you need to create a new one. Then you have instance commands. Instance commands are used to actually do your real work, which is to create virtual machines, otherwise you don't need Guenetti. Node management is to actually extend your cluster. When you create it, it has only one node. But if you are working on a cluster level, which is not what this talk is about. But in general, I mean, if you use Guenetti on a cluster level, you use more than one node. So you extend nodes or you can repair them, mark them as offline and do these kind of things. Job management. So most commands just wait on the console and just pretend they're doing the job. Even if they're just actually pulling the master and asking it for information about the job status. But you can also submit jobs. So you can say, create this instance and I don't care. Just give me my shell back and do it. Job management allows you then to query the job status and to see if your job actually succeeded, what the output was. If there was an error, which error it was and so on. OS, we said we have an OS interface, which is documented. So you can just dump operating systems on all nodes and they will be visible by Guenetti. Of course, if you're developing your own, it might be that you think it should be visible, but it is not. And GNT OS will tell you why. Basically, it will tell you why it's not conformant to the API in our opinion. Or if it's not present on one node and things like that. Or it will just give you a list of available operating systems. GNT backup. This is used to basically export instances in the node file system. And it's used, for example, if you want to back up an instance, do some work and then recreate it and things like that. It's broken some of the time, so I wouldn't rely on it too much. But it mostly works in stable releases. And GNT debug is just used for us for debugging. I'm not sure if you'll never use it, but you can have a look at it and see if there's anything interesting. Other than that, we have some tools. This is mostly tools we use internally, which we thought they were handy. So we're just shipping them out with the rest of the source. LVMStrap is used if you have a node with many disks to just bootstrap an LVM block device dedicated to instances. GNT expects to zero that its block device is actually dedicated to instances. Rather, it's LVM block device, the volume group is dedicated to GNT. So if you have a volume group for the system, you should keep it outside. Of course, I don't do that and I just ignore GNT errors. But that's another way to use it. CFG shell is basically a way to edit config data, just use VI. CFG Upgraded is used to upgrade from one, two, to zero. Hopefully, we won't need it for two, one, but it's too early to know. And yeah, basically if you have a one, two cluster, probably you want that. If you don't, you better ignore it. And HTools is a nice implementation of some external features. It's basically not part of the GNT project itself. I think mostly because it's written in a different language and things. But it basically contains things like automatic allocation and cluster rebalancing. So if you have many nodes, you may want to make sure that your instances are actually equally spread among the nodes. Or for example, when you create a new instance, we have a feature which is called IAllocator, which allows you to allocate an instance on whatever nodes the cluster thinks are appropriate. But the cluster doesn't have such information. So it actually asks an external script to tell it which nodes are appropriate. And HTools contains an implementation of this. This is currently not in Dabian because of some missing dependencies. But we're working on having it in hopefully soon. In the meantime, you can just download it from Git and compile it by hand or ignore it and it works anyway. GNT is a development testing environment. So this is the main topic of the talk. So this is how I use, I was using GNT on my laptop a few months ago in order to showcase some networking infrastructure which was kind of weird. And I wanted to have an example of it before actually acquiring real machines in such an environment and things like that. And this is how I use GNT. So at the same time, there was a call for papers for Debcon when I thought, well, why not? I can talk about this. So as I've written, don't use it at home. Or basically use it at home, but don't use it at work. In general, don't follow this document for a real GNT installation. This is just random things I did on my laptop. In general, you should use our install guide if you have a real cluster which is a lot more appropriate for a full operation. So how do you do it? First of all, you just add a bridge to your machine. Normally, in a cluster, you would add a bridge which is connected to your Ethernet interface. On your laptop, you don't really want that. You don't want your instances to be on the network or things you may want to nut them. So what I did is just created a dummy interface. This is to trick the Debian if-up-down scripts to actually have a bridge ports, a valid bridge ports to understand this was a bridge. And then just create a bridge interface with the same IP address. So it will just inherit it apparently, so it works. And basically, yeah, I just, I don't have an auto line. So when I do, when I want it to work, I just IF-up BR0. It will IF-up the dummy interface. And then it will start DNSmask, which will do DNSmask rating for the instances, and it will do the HCP in a way that will show later, which is very handy. And yeah, this is a restart just because basically on my system, I don't run DNSmask at all. I have changed the init script not to work unless it's called from here with a small trick. Securely bind your demons. You don't want your connected demons which happen to be running as root on the network. Usually, I mean, in a production system, you may want to do that, but then you will have firewalls and things, and they won't be exposed to the internet. So your laptop is usually connected to conference networks and things, so you don't really want that. So you're just going to bind a node and an API to the local address on the BR0, which is not connected to the internet network, and that kind of works. Of course, you'll need some IP tables rules later because you'll have to enable forwarding for the instances to actually work, unless you want to use a proxy for them, which also works. Another trick is to set in default, gannety-rappy equals bin-through, which actually kills rape. This is a feature that I discovered after we refused a patch to disable rape, so this is a way to disable it. But yeah, IP table rules. This is basically after we enable forwarding, we want to avoid that forwarding actually allows people to set her out to our laptop and talk to our machines. So basically we drop invalid packets, and then we just accept, so there's a default somewhere, which is drop, of course, but I haven't pasted it. And then we just accept traffic from the instance network, which is this is Lush24 in this case, and from one of the allowed interfaces, which are the tabs for KVM and BR0, this is different because it depends if you're using it in bridge mode or not. I was using it sometimes in non-bridge mode, so I added the tabs. And yeah, and then you also want to masquerade your traffic, and this way the instances can access the internet, but the internet cannot access them. But this is all normal stuff.  And then, of course, you would need DNS implementation and things, so you don't want that. You just add a few ATCOs and everything works. So you want one for your host. We gave it IP 254, so we added it there. Then we have one for the cluster. We would have one for each node, but we just have one laptop, so no nodes. And then we have one IP, per instance. That's it. Also, Ganeti doesn't like it. If your ETC host name contains only your local handle, like myhost, it probably wants your whole myhost.mobile.example.com, so just give it, and it will work happily. Then we just install Ganeti. This assumes CID right now. Backport.org should work. Otherwise, you can backport it. It doesn't have any particular changes because it's basically a source-all package in Python, so you just need the dependency, and you should be able to install the CID version, even on Lennie, I suppose. I haven't tried, but. And yeah, then you want to customize Ganeti, instance, the bootstrap, versus a configuration file. You need to see default for that. I'm not sure it's the right place, but whatever. Now it's too late to change it. And basically, if you want more than one distro, so you want, I don't know, CID, Lennie, and squeeze, all of the same system, you need more versions of the bootstrap, so you need to do some twiddling by basically copying the bootstrap to some local areas, and then calling a different config file or things like that. This is kind of unfortunate, we realize. So we will change this in Ganeti 2.1, but it's too early for now. And we don't have it even in Git implemented it, so it's just a design. You can't use it really. So for now, you will have one operating system for each version of the thing you want to install at the same time, or you can change the config file every time, but that's kind of handy sometimes. Using Ganeti, so you first of all, init your cluster. No LVM storage in case your laptop doesn't have LVM, or you don't want to use LVM, and you would just want to use a file-based storage directory for your nodes. You want KVM probably, because Xen will just fry your laptop, apparently it doesn't know much about CPU levels, and it doesn't play nicely with mobile machines, and KVM is so handy, you can just run it when you need it, and otherwise it's just your normal Linux, and you don't need to twiddle with your bootloader and things. And then, well, that comment is kind of tricky. It's not actually what it's going to do, but what you need to do. You have two options. Basically, either you use your normal Debian kernel for KVM hosts as well, or my option is usually to compile a non-modular kernel, so just monolithic, no models at all, and only the drivers which are needed for KVM used, so it's a lot more lightweight, and it's good for your virtual machines. But I mean, it's not mandatory. If you actually use the Debian kernel, then you may want to change a few parameters, enable the initRD, and install the modules or the kernel package also inside the instances. Then you can just add that instance. It's a very simple command. You can ping it. You can SSH into it. And if you use a couple of hooks, this can be made all automatic, like the instance getting its own IP from the host's file, and we'll see how. And for example, getting your public SSH key so you can SSH into it without giving any password, because by default, it doesn't, or putting a password inside, and so on, which brings us to these hooks. So basically, normally, you just have your operating systems very, very basic. You can change the source for the instance, the bootstrap in order to personalize them, but this is kind of inconvenient because this is a Debian package, so you either fork your own or you submit patches to us, and so on. So we just developed a hooks model. You can basically plug your own scripts inside many GANET operations and also OS operations. So for example, we have some example scripts, and you can write your own. It's very, very easy to write. They read environment variables and then change things in there, and they can do basically whatever. So if you are not careful with a hook, it runs as root on your node, so you can just delete your whole laptop or do bad things. So be careful, but apart from that, for example, the GANET eaters hook will create an ETC eaters file, which will plug the instance host name with the MAC address GANET has generated for it. This is a hook for GANET. And if you use it, DNS mask can read this eaters file and can provide the HCP addresses to instances, merging basically what hosts contain and what eaters contain. So an instance comes up with the MAC address GANET has decided, asks for the HCP, and verse an example, interfaces hook, which is actually an OS hook, which is used in order to automate the networking setup. So just create an interface which comes up with the HCP. It will ask, DNS mask will look up in its eaters, find that it's a known host, and so serve the known address from ETC host for it. And we don't need any big demos. DNS mask is very small and in this case. So how do I use this setup? If I want to play with new RC kernels and experiment features, for example, when Linux containers were just coming out and they wanted to try it, but it was just 269 RC something. I didn't really want my laptop with that. So I just created a bunch of KVM machines and started testing it there. You can do different networking setups. So on your bridge network, you have basically a network of machines. And there you can experiment with panels bridging. You can actually disconnect your instances from the bridge and put the routes between them. And then you have instances which are kind of in the same network but not really. So you can have lots of nice things to try before buying real hardware. And yeah, you can use them as auto builders or to port things like if you want to quickly make sure that both your AMD64 and I386 version of the package are built and work, you can quickly test build them and upload them from your development machines if you don't want to wait for the auto builders to do their job. Or I mean, just for testing or for example, for desktop application, you can install X and then connect via VNC to the instance and try your desktop application without changing your stable system. And yeah, you can test new network protocols, demos, new things and so on. So yeah, this is just a showcase. It's not basically what we use Gennady for, what we use Gennady for is actually to provide services and to loan virtual machines to people who provide services with them. But I thought it might have been interesting to talk about it. If you have any questions, okay. They suggest that I mentioned the cluster size for normal deployment. So normally we deploy with around 20 machine per clusters. Four, four, yeah, no, okay. Normally we use the deploy with 20, now we're moving to 40 and bigger. So we want to make sure Gennady scales on the big numbers. But we also have small installations. Luckily, we have one or two nodes, well, two nodes is the minimum to have the redundancy. So we also make sure that it works nicely on small clusters, we don't ignore this situation. Except when we do and we figure out that there is a bug and then we fix it though. Gennady two is a much more complicated structure than Gennady 1.2. Gennady 1.2 didn't have the master demo, didn't have a job queue and so on. So Giddo's talk I think very nicely highlights that, yes, it still works on small installation even Gennady 2, which is a heavy weight in that sense compared to 1.2. So it still manages to scale from one to 40 and we have the 2.1 will bring it even further. So when they will scale it more and I'll be a part of this, I will also make sure that it continues to work on my laptop because it's so handy. So don't worry about small installations. Wow, we also managed to have you do some sports in between. Last time I checked, which was before Debconf, I have to address, Gennady 2 wasn't in Debian. It is now. It is now, okay. It's just in seed, as I told before during the talk, we uploaded it during Debconf. And we had a very quick run thanks to FTP masters through the new queue, so we're now in seed. Yeah, they say that it's useful, it's simple to use from source as well, but on the other hand, why would you? I mean, we're Debian developers, right? Okay, there's someone on IRC, which asks how about storage migration? Storage migration, yes, Gennady supports that. You basically can live migrate an instance, as we said, between one node and its secondary, but you can also replace the secondary with another secondary or replace the disks locally on the primary or on the secondary. So if one disk breaks or one whole node breaks, you are still safe and you can failover your instance or migrate it away if it's still up. So if the node went down and the instance was running on it, of course, the instance is now down and you have to restart it on another node. If a node went down and it was a secondary, you can just replace the secondary with another one and the instance will continue to run transparently. So this is pretty nice. If you have a cluster, well, this is storage migration, right? Yes, you replace disks and you migrate your storage from one place to the other. Oh, yeah, very suggesting that it might be, can we migrate from one storage type to the other, like from DRBD to files or to LVM, but you can't do unless you twiddle manually with a config file.  Yes, go ahead. Okay, I think it's on, right? Okay, the saint also on IRC asks that what he was asking exactly was about the whole virtual machine configuration and disks from one physical disk to another? From one physical, so wait, repeat, please. So you have two machines, what's the case? That's... Okay, sorry. From what I understand of the question, is he wants or he or she wants to know if there is a, if it's possible to migrate the whole virtual machine config and disks, you know, the virtual machine disks, from one physical disk to another on the cluster? Yes, so basically what you can do is if you have on a machine more than one disk, you can just disable one of them for new allocation, new LVM allocations because you think it's broken, then you run and replace disks locally on the machine and your LVM would then allocate the new disk on another disk and then it will be created there. So the disk would automatically be replaced by gritty, so you can do that. In your pages, you mentioned that it wants to have a full qualified domain name in the EDC hostname file. Yes. But that's highly uncommon. Most tools require just the hostname in EDC hostname and that's what also the name of the file is. And they do a lookup get entry hosts for that name and gets the full qualified domain name from EDC hosts and services like that. So I think there are reasons for that. I don't know if you want to chime in why we exactly require the full qualified domain name in the EDC hostname. Because other systems might break because of that requirement. Sure, so before GANET 1.2 and GANET 1.1 we actually didn't have this requirement. However, most of the node identification functions, so what node I am, physical machine, what role, what is my role and so on, relies on the hostname. And we have seen that if you have mixed FQDNs and non-FQDNs machine in the cluster, it's much harder to debug problems. So just for consistency, we wanted to pick the same way on every node. So GANET needs one configuration. And we said, well, let's choose FQDN because that's the more clear. But hostname is the wrong file to store the full qualified domain name. It's meant to be only the hostname. As far as I know, the POSIX standard doesn't say this. The POSIX standard doesn't specify which. So there's a long running debate between FQDN versus non-FQDN. And we decided to side with FQDN. Most of it, I mean, what I figured is that this didn't break anything on my laptop, as far as I know.  You just want to run GANET and then run services on the virtual machines, because this is like the kind of thing that makes sense. Yes, but that requires, if you look at the source, for example, in Python, even a hostname, if you do S3's hostname dash F to get the full qualified domain name, you will see that this implies a heuristics. If the fully qualified hostname is not stored in the kernel, then it does heuristics. And that usually means querying DNS for nodes which usually run virtual machines on top of which the DNS server run. You don't want any dependency on an external infrastructure. So in our model, so just do S3's hostname and hostname dash F, and you will see that what hostname dash F does is do a lot more work. And for reliability, we don't want to depend on DNS on a GANET node because in our, not really sure, but we can try it later after the talk. And just to make it clear to the question about migrating instances, GANET tries and usually manages to abstract completely the physical machine from the virtual machine. So there's no one-to-one relation. Just right now, this VM run on this node. But GANET provides all the commands needed to move it completely away to take a physical machine out of the cluster, everything dealing with LVM configuration, the RBD configuration, everything. So you don't need to think in terms of, oh, I have the web server running on that physical machine. It's just a temporary association. And you just do a GANET instance migrate or failover and some other commands which are hopefully detailed in the admin guide. And it does everything related to the evacuation, move around and so on. Other questions, comments, remarks. It doesn't seem so, so thanks for participating. We are 15 minutes early, but I mean, you can have cookies.