Ond ymddir Ladynwyr sylwgr yn ymddiwol i gael o rhan 200 oes yn y sylwgr ar gyfer hwynghwyng ymddir. Yn ddoedd, mae'n dweud yn ymddir ymddir ymddir iawn i'r llei yn ymddir ymddir iawn. Lai fwy oedd ysgol, Roeddfa, yn ymddir ymddir ymddir ymddir i'r Gweithgwr nid yw. Ond rydyn ni'n mewn gwirioneddol oes rhywbeth o'r cyffredinol o'r cyffredinol i'r Gweithgwr i'r Gweithgrwyngau. gyda i ychydig o unigion i Ycranion, o ffordd y gweithio. Mae'w erbyn y rydyn ni wedi'u ddud o ffwrddau cymdeithio. Mae'r ychydigau i gyfleddau a'r ddrawer o'r ddrawer o'r sgwr, a'r sgwrs rhaid o'r fforddau yn y fwyntau. I gynnyddwch yma os yw yna'r ymwyngwyngwyr o'r cyfeithio ar y cyflawn. As food and energy prices started their rapid climb upwards. Of course, where are yet to see an end to that? We've provided more than £3.3 billion of targeted help to those who need it the most, through the programmes on the schemes which put money back in people's pockets since the start of this Centre term. That includes the fuel support scheme which helped more than 340,000 people over the last winter, angen i'r edrych yn ymlaen i 40 lŷd perthynasol, ac yn gweithio 38 miliwn perthynasol yn y ddysgrifennu Ysgrifennu, mewn ddysgrifennu 350,000 o'r amser gweithio yn ymlaen o'r angen. Yna fel yng Nghymru, roeddwn i'r gwaith ar y dyfodol Cymru sy'n cyfnod i'r peth, local communities and our public services. It is central to the ambition of this government that we want to create a Wales where young people feel they have a future. The new curriculum for Wales is at the heart of that. It was successfully launched last year. It's been rolled out to primary schools and nearly half of secondary schools already. Our young persons guarantee has supported more than 20,000 young people since it was launched. 11,000 people have started on an employability programme. At the same time, we've delivered 28,000 all-age apprenticeships starts since May of 2021. Those young people who are being helped with those schemes live in communities right across Wales. Places where we want people to know that their future is safeguarded. Already, we have brought 2,000 long-term empty properties back into use and delivered more than 2,500 social homes for rent. Our Renting Homes Act is helping to make renting fairer and it gives private sector tenants greater security of tenure than in any other part of the United Kingdom. The new default 20-mile-an-hour speed limits in residential areas will make our streets safer for children in particular. People in all our communities rely on the public services that are provided in Wales and we continue to invest in them. In the NHS, 90% of patient contacts take place outside hospitals. In the year covered by the annual report, there have been major reforms in dentistry, pharmacy and in GP contracts. Around 600,000 consultations were delivered in community pharmacies last year helping to increase capacity across the primary care sector. The new GP contract is the most significant reform in 20 years, reducing the administrative burden on GPs so they have more time to spend with their patients. Alongside the NHS, we remain committed to paying social care staff the real living wage and we remain in conversations with the sector to look at terms and conditions to make work in social care more attractive for staff as part of the work of the cooperation agreement. Alongside all of that, this government takes absolutely seriously the climate and nature emergencies. We have a real obligation to pass on this beautiful place we call Wales to our children and our grandchildren. In the period of time covered by the annual report, we passed landmark legislation. It will lead to a ban on some of the most commonly littered single-use plastics and the Senate is now considering a new bill which will improve air and noise quality both of which will improve the lives of the communities we live in. And of course, we've responded to the independent Roads Review report making sure that we consider both a climate emergency and economic development when we consider new road projects. So a significant amount has been achieved in 2022 but of course, as ever, there's a great new more to do. Over this next year, we'll be bringing forward bills to reform the way bus services are organised in Wales to reform our Senate and electoral systems to reform Welsh language education, to reform council tax and to reform cold tip safety law in Wales. We'll be doing all of this in one of the toughest financial climates that we have ever faced since the start of devolution. And just as families across Wales are having to make difficult decisions because of the cost of living crisis, so we too in government face the same dilemmas and the same tough choices. The challenges faced over the course of last year were unprecedented. A combination of economic and budgetary pressures produced by one of the most difficult financial situations the whole country has ever experienced. These are difficulties produced by the way the UK government has mismanaged the UK economy over the last 13 years. Giving us a decade of austerity, a botched Brexit and the disastrous Liz Truss mini-budget which is set to continue driving interest rates upwards right through into 2024. When we drew up our budget for the current financial year, we brought together all our resources to protect frontline services, provide targeted cost of living support and to support our economy. But even after doing all of that, our financial position after the spring budget in March is up to £900 million lower in real terms than the then Chancellor of the Exchequer Rishi Sunak said we needed at the time of the 2021 spending review. This means there is less funding available to do all the things we have to do, let alone all the things we want to do. And that ability goes on being eroded by inflation remaining so stubbornly high. So, while we have been able to make significant progress in the second year of our programme for government against these strong headwinds, I have to tell you that these pressures are becoming more intense with each year that passes. This year is already much more difficult than the last financial year and the next financial year is set to be more difficult still. These are very tough times indeed, but we will use all our experience and our creativity to go on looking after the whales of today while shaping the whales we want to see tomorrow. Diolch yn fawr i chi gyd. Looking forward now to taking some questions. I'm going first to Clare Baud from Bauer Media. Thank you, First Minister. In the statement released, you mentioned high quality health care, but in the last six months, we've heard countless stories showing that that's not really the case. Can you talk a little bit about why the NHS in Wales is delivering high quality health care? Well, first of all, I believe the NHS in Wales does deliver high quality care in every part of Wales, and that is the everyday experience of people who use our NHS. Of course, under the stresses and strains of dealing with the aftermath of COVID, a workforce exhausted themselves by going through all that experience and the budgetary pressures I set out, you see those stresses and strains in the NHS as well. Nevertheless, we are succeeding in bringing down the longest waits, fewer people waiting over two years for planned care. By the way, the standard time for someone receiving planned care in the Welsh NHS is 20 weeks, 20 weeks from the moment you are referred for it to the moment your treatment is completed. For most people, two years is nothing like that experience, but we're bringing down longer waits over 52 weeks for people in outpatients. The hill is a steep one, and it's been made steeper by the events of the last couple of years. But every single day, the over 100,000 people who work in the Welsh NHS do everything they can to go on providing a service. For most people, most of the time, the system continues to deliver strongly. We want to make sure that that is the experience of absolutely everybody. Thank you. Over the past few months, we've seen this ongoing saga internationally with the Straddipark Hotel expected to house asylum seekers. Local MPs have spoken out against it and locals are saying that their concerns are just not being heard. In the past few weeks, we've seen over 90 hotel staff members lose their jobs as well. Can you outline your position on the placement and do you know what's being done to support those workers who are now out of employment? Well, all of this is the experience of the home office. None of these are devolved matters. The sadness is that the home office never seems to learn from its own experiences. Had they simply reviewed the way in which they set about moving asylum seekers to Penali just outside Tenby, they would know there are ways in which you can make sure that the needs of asylum seekers are properly attended to and the needs of local communities are part of that as well. Or you can do it in the way they have internationally, which leads to confusion amongst the local population, different things being said to different people, lack of information to the local authority and to the health board who will need to provide services for children if there are to be children at Straddipark, for example, and which quite certainly failed to attend to the interests of those nearly 100 people who work at the hotel at the moment. What we want to see as a Welsh Government is we want to see Wales providing for our proper share of people who come legitimately to this country seeking asylum, and we've shown that we do that. But the home office has a real obligation to set about this in the right way, open about what it is planning, sharing information with those who need it, accurate in the information that they provide and attending to the needs of the local community in a way that gives that local community confidence that they are being heard. None of that, to my mind, has been very apparent in the Straddipark context. And what would always have been a development with its challenges has become far more difficult than it needed to be. We lobby the home office all the time to learn the lessons of their own experience and to work with public authorities in Wales to make what are, I know and accept, challenging circumstances that they face to make the best of that rather than the worst of it. Thank you. Telerri, fydda. Diolch yn fawr iawn, fydda os gawn i'r athafion y mae'n gymraeg hefyd os ffordd yma. We'll stick with the Straddipark Hotel to begin with, although you've covered a lot of the points already. What do you think now can be done to de-escalate the kind of rising tensions in the area? Well, the first thing and the most important thing is to be open with local public services and the local community about what is being planned. It seems to me there is still confusion about how events will unfold over the coming days. I hope that the home office will then take things slowly rather than at a rush. Confidants has been badly damaged infinitely and that confidence will have to be rebuilt if asylum seekers are to be successfully housed at the hotel. That certainly means, as I say, being prepared to sit down with people, to hear what they have to say, to give reassurances where those are possible and to do things at a speed which takes people with you rather than people feeling that their concerns are not being heard and the home office moves on regardless.  Agored gyda'r gwasanaethau, lleol agored gyda'r y cymuned lleol hefyd. Iroi am atebion i'r cwestiynau mae pobl wedi codi, mae pobl yn ar awdurdod lleol, ddim yn gwybod ar hyn o bryd er enghraifft. Faint o blant, sy'n mynd i ddod i'r gwestiynau. Dydyn nhw ddim yn gallu paratoi am ysgolion ac yn y blann. A pobl sy'n byw yn lleol mae cystanaeth gyda nhw hefyd.    A dwi'n meddwl y cysylltu o'r ffordd y bydd BBC yn ymgyrch o'r allogau i'r prydyn ni'n gweithio i'r hyn o'r cyfnod o'r cyfnod. Felly, dyna'n gwybod i'r ffordd o'i ddweud o'r ffordd y bydd BBC yn wych i ddatblygu ac mae'n mynd i ddim yn ymgyrch a fyddwn ni'n gwybod i ddim yn ymgyrch ac mae hynny'n gynghwm o'r ffordd o'r ffordd. Roedd y rhaid i'r gweithio i ddweud o'r bwysig y byddai'r cyffnod i ddim yn gweithio os yma o'r cyfnod o'r cyfnod o'r cyfnod ac o'r dyfnydd o'r dyfnyddol that the allegations merit. So, while I'm not privy to anything that's happened in the past, I do think there's an important future agenda for the BBC to discharge. Wel, cus dwi ddim yn wedi weld dim byd am beth sy'n wedi digwydd ar hyn o bryd, a siwr o fod bydd lot o mynylion dal i fod yn dod mas. I fi y peth pwysig ar nawr ew beth sy'n mynd i digwydd yn y dyfodol. Mae oblygiadau gyda'r BBC dwi'n meddwl i ddangos nawr, mae nhw'n mynd i ymateb i beth sy'n wedi digwydd, a gyflym ac yn ddifrifol hefyd. I roi digon o egni a digon o adnoddau i fewn i roi hadarnol i bobl, mae nhw'n ymateb, beth bynnag sy'n wedi digwydd, mae nhw'n ymateb mewn ffordd sydd avas i'r beth mae pobl wedi tenu sylw o BBC ati. Diolch. Rwy'n cael ei wneud y cwestiynau ar y yfodol, bod ni'n rhaid i'r rhai. Mae'r collidau yn ddod i adryu aeth. Roedd yn ddod y cwestiynau. Mae'r adnoddau anu'r adnoddau yn meddwl o'n mynd i bwysig ac y pethau'r adnoddau gyda'r rhaglen. Rydw i ddod â'r ddod y peol, a'r adnoddau yn ddod y cwestiynau, i ddod y cwestiynau a hynny'n siarad. Wel, y cyfnod y maen nhw'n gweithio, yn ymddangos, ytod y cyfnod o'r angen yn y maen nhw. Rydym yn ddod y cyfnod yma yn y blynedd ar gyfer y bai ffordd. I wedi gweithio bennewid yng Nghyrch yma, ond yma. On Thursday evening, I met the new chair of the health board. I met the interim chief executive, who's now agreed to remain in her post until the end of this financial year, right through to the end of March of next year. There are problems with the LHB, of course there are. That's why we've taken the action we have as a government. But they were a pains to remind me of the board's real strengths as well. More than 19,000 people from North Wales work for the Betsi Cadwaladr University Health Board. They come through the door every day wanting to do their very best to provide services to that 700,000 people. And there are some real strengths in the board as well amongst the best cancer services in the whole of Wales, excellent primary care services, the best vaccination rates in Wales. Just like any part of the health service, there are very good things that happen. And part of what the new board and the new chief executive want to do is to give some confidence back to the people who work in the board that all of that is properly recognised and give them a platform to address the real problems that are there. But the problems are being addressed. They're being addressed through the new board. We'll strengthen the board further over this summer. They're being helped by the new expert advisors that have been appointed, expert advisors to help them with the financial difficulties the board has encountered. Experts in the provision of planned care. Experts in the way in which the board can communicate with its local population to give them confidence that the things that have gone wrong are being put right and the services that they rely on every single day across that health board go on being there delivered by highly skilled, highly committed people who want to make that board a success. And in all of that, they will have the support of the Welsh Government. So Adrian's second question also goes on to Straddipark Hotel and other similar housing of asylum seekers that are being planned by the Home Office. I must remind people elsewhere in Wales. Do you accept that being a nation of sanctuary means taking large numbers of people in this way? When it comes to asylum seekers, Wales is committed to playing our fair part. We take our fair share of asylum seekers and we take them now in all parts of Wales. The Home Office has moved on from the days when it did it by agreement. It now does it by simply reaching in, looking by itself very often without reference either to the Welsh Government or to local authorities for properties that they think would be suitable. In many ways, that's where their problems begin, because they start not from that perspective of partnership, but from that perspective of being a unilateral actor able to use the powers that it has at its disposal. To make things happen in the way they think is right. We will go on making sure that we take our fair share of the numbers of people who come seeking sanctuary through the asylum system across the United Kingdom. There's no question about that. The question is not are we prepared to play our part. We are, we do. It's how we can do it with a Home Office that is prepared to recognise that if you're going to have asylum seekers coming to Wales, you can only do that successfully by working alongside the services that are there on the ground, the communities in which those people will be placed, and where the Welsh Government can play our part. In being a broker between what the Home Office has to do and its responsibilities and the way that those can be successfully, successfully discharged on the ground. Thank you, Adrian. Finally, to Thomas Rogers global. And again, Thomas's questions are on the screen. What support is planned for the cost of living crisis as we approach another winter with higher energy costs? Well, I have to be straightforward about this. It was there in what I said in my statement, our ability to go on doing some of the things that we were able to do over the last winter when they were funds available to us will not be possible this winter when those funds no longer exist. Does that mean that there's nothing we can do? Well, absolutely not. We will go on doing a long list of things which in Wales leaves money in people's pockets that otherwise would not be there. So just to give you maybe three examples of that is a much longer list. Our council tax benefit scheme, £240 million we invest in that it means in Wales, those people who are least able to afford the council tax don't pay the council tax at all, 220,000 families across Wales benefit from that. That scheme does not exist outside Wales. Secondly, we will go on with that suite of things that we do in schools to offer families the help with the cost of the school day. When the scheme started, we were able to offer it in one year, the first year that a child arrived in secondary school, you got extra help with the cost of uniform and so on. Then we doubled it to two years, then we doubled two to four, and now we offer that happen every single year. So if you are a family faced with those costs, knowing that the cost of living crisis makes it more difficult to meet those costs in Wales every single year, you get help through the system which the Welsh Government funds to help you to meet those costs. And then thirdly and finally, everything we do in the childcare field, the most generous childcare scheme anywhere in the United Kingdom expanded last year, so it's now available to people who are on the cusp of employment, not just people who are in employment already, and where we are already expanding childcare for two year olds, particular focus on provision through the Welsh language as part of our ambition to achieve a million Welsh speakers by 2050. All of those things will be there again this winter to help people because the cost of living crisis is quite certainly not going away. So a question from Thomas about progress in the Welsh NHS, waiting lists and asking what progress is being made to do more on that for people to access healthcare when they need it. Well, as I said in my answer to Adrian, despite the real challenges that are there, and I don't this morning want to sound at all that I'm under playing those challenges, the NHS in Wales is making progress month after month in recovering the ground that was lost during COVID and is made additionally difficult by current financial circumstances. Long waits are coming down in outpatients and inpatients. Contracts are being reformed, so in dentistry, which I know is a struggle in many parts of Wales, dental reform has meant that 174,000 new patients were offered NHS dental care in Wales last year. We thought the reforms would give us 112,000, they delivered 174,000. And there's more to follow. The changes we're making in optometry will mean that more people will be seen by that very skilled group of people who work in the high street in optometry without needing to go to hospital, everything we are doing to capture the learning that happened in COVID. Outpatient appointments carried out remotely. Consultations with consultants without you needing to leave your home. A huge effort is being made to make sure that despite the headwinds, which are real, and the fact that things are not as good as we would like them to be for some people who use the NHS, I want people in Wales to know that things are improving. We wish we could improve them faster. We wish we could get to that point of recovery more quickly than we will be able. But what I want people in Wales to be able to see for themselves is, is that despite the challenge of that journey, the NHS in Wales is succeeding in recovering that ground and getting back to where we were before coronavirus hit us. Diolch yn fawr. Thank you all very much indeed.


He's a literal cuck. And he was exposed for that for writing an article on it on his blog several years ago, I think 2018. And it's not just what he did that's been so bad. It's that the way he handled a response to it being questioned about on a public podcast and the blaze. Would you please clear up the cuck article you wrote? I am not going to talk about this. And basically, you know what?  Why are you doing this to me? I didn't know that. I didn't know what it was. Well, just use a little bit of common sense. Sorry, apologies.  Hard felt. So Jack Murphy is the author of Democrat to Deplorable. It's a book that came out self years ago about the Democrats, I think nine million that switched from voting for Obama to Donald Trump in 2016. He was a speaker in 2018 and 2019 at the 21 convention and then 21 convention patriarch edition. Those two events were about seven months apart because it was late 2018 and early 2019, the spring. Tell us a little bit about yourself. You have quite a story there that I think is going to wake a few people up and alert them to the realities of what's going on in society right now. He did not disclose before he spoke in the 2018 event or 2019 that he was into cucking, had a cuck fetish and had written about it publicly on his blog at the time. Back actually blocked me a few months ago on my Twitter when I brought up the cucking, what is now blowing up in his face and a much larger scale in political circles and stuff like that. I mean, this is someone I know in real life, you know, this is someone who spoke at 21 convention. I met him a couple of times. I was purchased on a cell phone. You know, we've spoken in my event. I mean, it is what it is, bottom flight, hotel, stuff like that. And to me, the minute anyone blocks you on social media that you know, in real life, this is like a major, major move. You have to have a really, really good reason to do that. And me bringing up the cucking, just not even too rudely or anything was kind of brought it up. He just lost his and immediately blocked me. He's now in a block rampage. He's been blocking like literally everyone he can find on Twitter. Anybody who mentions this gets instant block. It doesn't matter if you know him or not. I think he's basically trying to run cover for his fans and so that, you know, as few as possible of them find out about it.  Mr. Jack Murphy has been busy blocking everybody. He has since disabled all of the replies on his Twitter feed, which is, of course, the thing a man would do.  And Jack Murphy didn't apologize until I was endlessly railing him online. He then decided to block me and claim that I am a drama merchant. But how can you be this guy that says I'm masculine, I'm strong and also eff you for bringing up my past and I don't want to talk about that. And you're going to charge people money for this stuff. I'm sorry. I'm sorry. I'm just not feeling it. Shout out to the quartering and Better Bachelor for actually covering this. You know, the quartering in particular is a huge platform to do an expose video about this, so good on him. He's also been awesome on Twitter going after this. You know, Undead Chronix has been doing some great roast too. Shout out to him, Undead Chronix and maybe the party frog. And I'm happy to see Joker, Better Bachelor calling out a man who's here grifter now, like Jack Murphy, Cuck Murphy. I do wish Better Bachelor would be more aggressive in calling out the frauds.  We got the three Stooges. We got Simpson Hood, Shard Albert, Donovan Shart. We got, let's see, we got the fraud father here. I mean, there's a lot of frauds to call out Joker, but I appreciate you hopping in on this one and maybe we'll see more of that in the future, you know? I wrote a lot about dominance and submission in a totally sexual context. In that most women find, I think, and in my experience, but maybe I'm just like a magnet for it, that they enjoy being submissive to the right man. It's not about being submissive to men. This is the cucking article that's got him in so much trouble lately. Although I want to reiterate again that it's not only what he wrote and what he did, it's the way that he's handled it. That's really, it's called like a Streisand effect.     They're not masculine. They're not men. They're not alpha males.  It's sick. It's pathetic and it's a systemic problem. Not only the man is fear, but in conservative politics and even beyond that in the world, by the way, this has been removed from his blog, I guess for a while now. And this is a backup of it that I have. He also actually had to remove from the wayback machine. This recently somehow Jack, you know, paid or went into wayback machine to actually pull these articles from their historical presence on wayback machine. So right from the beginning, October 9th, 2015 by Jack Murphy. Today I sent my adoring, loyal, hot, young girlfriend of two years to have sex with a stranger from Tinder. She is currently at his apartment, checked in with me via text and is presumably sucking and f***ing her way to a good time. I'm alone writing. Couldn't be happier. It just gets worse in there, guys. I mean, this is like, look, it's a free country. You want to be a cuck? You want to have like weird kinks and s***? Okay, it's a free country. But to actually write this and then also pretend to promote positive masculinity being an alpha male or red pill mindset. So this is like, I think literally as far as you can get from being an alpha male, I can't think of anything more beta or gamma or whatever you want to call it, then literally sending your woman to be inseminated by another man. This is like, this is not even like swinger stuff or open relationship, right?  Don't be afraid if you don't bond with your kids right away. If as a father, that kid comes out and you look at it, if you don't be alarmed, if you're not met with overwhelming joy or a deep, immutable connection. You see, Murphy was just Goldstein, I should say. Jack was bragging about how he was teaching his son about sports, about politics, about game.  Did you teach your son about how it turns you on to watch his mother with different men?  I don't know what the f*** going on there. And that's some like super sketch. He needs to clear that up immediately, but I don't think he has the balls to do it or the maturity or the stability at this point emotionally and psychologically. So another part that's important to read here, we've done it together where we picked up a guy at a bar, took him home and I watched them have sex. Or we've brought a guy from Craigslist over and I took pictures as he banged her. So Craigslist has to be, this is f***ed in like 10 different ways. You have to get the f***ing sketchiest people on the planet off of Craigslist that like Tinder is bad enough that it's bad enough that he's doing this, right? It's bad enough how he's handled it like a little b***h to the extreme. But then he's like, you know, picking up random dudes with this trick at the bar and watching them. He's actually sitting there, it looks like in real life, watching them, his girlfriend. This isn't even like some where he sends her out, like at the beginning of the article, right? This is him sitting here at home, watching them f*** or taking pictures of her getting f***ed. The time she spends with the other guy isn't really hers alone. It's ours. It's mine. It's her acting out my ideas. No, it's not ours and it's not yours. It's definitely her just going to f*** random guy off Tinder. You're delusional. This is copium. This is copium times a million. Like this is unbelievable. You wrote this man. Jack goes on. It is not incongruent with our dominant submissive relationship as crazy as that may sound to some. Yeah, it actually does sound crazy, Jack. There's nothing submissive about her getting f***ed by another man, right? This is like the opposite of being an alpha male.  Like it's unbelievable. You wrote this man. Here's what he says next. Check this out. What I'm talking about is advanced stuff, guys. Apex level.  It's hard to imagine how much further from the mark you could get from the on this. This is insane. Totally f***ing insane. So now he goes into tips for actually how to be a cuck, tip one. It must always be your idea. Oh, great. Tip number two, have her f***ing young guy. Not an old guy, not a middle-aged guy, a young guy. It's got to be a young Chad Thundercock here, right? Tip number three, have fun. Check in with yourself. Make sure you're enjoying it.   Yeah, this sounds pretty gay, man. This is like straight up, maybe not gay, but sugar in the tank, like I'm a good friend of the war room would say, shout out to him, bisexual.   It is what it is.  But you seem to be a war with it if that's the case and totally in denial and in the closet.  Yeah. And, and that has been weaponized homophobia. That's what I call it. I don't believe that the real issue is like promotion of homosexuality.  I want to back that up. Deviant in a technical sense, right? It's out there. But the issue here is that the weaponized homophobia, like preying on everyone's fears of being called gay has been the way that they've destroyed male friendship, destroyed the sense of agape, right? Like true manly love. If you look at the liminal order, his main money maker, I hear he makes about 300 to 400,000 a year off this thing. I don't know for certain if that's accurate. That's what I hear. So this is the main money maker. This is one of the reasons he's freaking out right now. He's freaking out because he's going to lose a s*** on the money.  If you go on his Twitter, you'll see that.  But really it's because he wants to protect his relationships with people like Tim Pool, people who give him platforms. And it's a liminal order thing where he gets to steal money from guys for 100 bucks a month, 99 bucks a month, whatever it is. I interview guys every single day for the liminal order and every time in every session I ask the guy, so what is the most important value to you? And sometimes the guy will say personal accountability and I say, yeah, personal accountability, huh? And then I look at him and I'm like, bro, you say that's your value, but I'm looking at you and you're 80 pounds overweight. So like, how are you embodying your values? Right? Like, how is it manifesting itself in your life? How is it demonstrating to me that this is a value that you hold dear? In 2019, Jack started becoming a lot more hostile to the man's fear, even though he had been blogging in it for a long, long time. He actually declared in 2019 that the man's fear is dead. So that was about two and a half years ago at this point when he made that tweet. That's when he started making a lot more enemies in the man's fear on that time too. And it's basically his catnip for conservatives who don't like the man's fear of these tradcons. We're not open to talking about having real conversations about masculinity and what needs to change in America and about feminism and stuff. It's just pandering to conservatives basically to grift off them to get money from them. It's a common thing to try to leapfrog from the man's fear to conservative politics. And then once you get to conservative politics where he kind of networked his different relationships, Tim pool like that, he just throws everybody who ever knew him on the bus and anyone who's coming after him to expose him for being a charlatan, to being a poser and a fake and a phony. So look what he goes here. I get what people are jealous. I am free. I am uncancelable. I am supported. I do great work. I can do whatever I want, like sending girlfriend out to get by dudes off Tinder. Congratulations, dude.  This is a lot of aluminum stuff. He's trying to package deal and Tifa, right? Domestic terrorist organization with the man is fear and random YouTubers like the quartering and better bachelor, I guess, right? Good riddance, he says.  Here's where he goes off the rails. Those guys are school shooters waiting to happen.  Calling the whole man is fear. School shooters is like ridiculous, man. There are some problems in the man is fear. No doubt I'm doing my best to clean it up, clean up the filth. But this is really beyond absurd, beyond the pale. Right now, I want to make it really clear that I completely have nothing to do with Jack Murphy. This point, Jack Murphy has no current association with 21 studios, 21 studios, 21 convention, anything like that has not in a long time. I've lost all respect for you, Jack. It was a mistake to ever let you speak at 21 convention. You should have disclosed that you were in a cucking before you ever spoke in 2018. It was an ethical that you did not even bearish yourself. You've embarrassed the 21 convention. You've embarrassed 21 studios. You've embarrassed platforms like Tim Pool and Jack Passobia. I could give you and even Mike Cernovich would give you platforms to, you know, talk and speak and help promote your message.  And that's what I've that's what pisses me off the most as you've taken no responsibility, no accountability and you have no shame for what you've done.  And you've given new meaning to the term conservative cuck, I would say.  You've actually managed to combine these things in real life. And really, I think you're just like a Bernie bro, basically, your Bernie bro conservative grifter pretending to be this masculine alpha male, trying to leech off of basically this conservative beta males.  You know, there's my favorite philosopher and Ren said something great that I think it's a quote that needs to be said here. She said that you can evade reality, but you cannot evade the consequences of evading reality.


Thank you all. Thank you very much. Completely unnecessary. All I did was walk from there to here. But, you know, it's nine o'clock on a Sunday. I'll take what I can get. So, as this part of the slide says, my name is Steve. As that part of the slide says, I am a geek. As you can probably tell from my accent, I am from England. I'm from London, England. And I'm a European, despite what my people keep saying. So, I'm going to be talking about building your own version of Skype in the browser. Because you can actually do it. How do you do it? Well, it's quite simple. It's called WebRTC. Talk over. See you later. All you need to do is... WebRTC is already built into the browser. It is real-time communication. And it just sort of occasionally works. It's an API which is the JavaScript component. And it's also used to describe the flow, the protocol between two machines. So, how does it work? Well, I'll talk in theory and then I'll actually show you a real-life demo, which I'll do at the end because I'm not going to trust it. Let's face it, it's a computer. And it's a demo and it's live. So, WebRTC, how does it work? Well, there's multiple steps. The first thing, you grab the local media. Get, use the media. That could be the webcam, it could be the microphone. Sometimes if you're doing this on your phone, you have the option of two cameras, the front camera and the back camera. You can specify all of this, the parameters.  Create this peer connection. The browsers agree on what it is they're going to communicate. So, are you communicating using a camera image? Are you doing a microphone? You can also say, I want the camera, but only if it's as big as this. So, if you're doing insurance, for example, and you want to use WebRTC to take a picture of the car that's been broken, then you need to have a high resolution image. Otherwise, it's probably not valid. So, you can say, I want a camera image, but only if it's 1024 or larger. You also say, how are you going to communicate? Are you on the same local network? Are you having to go via another server? You have to specify this. And then once you've done that, the streams just flow and it all works normally without a problem. So, the first thing, get, use the media. Very simple. These are called constraints. You say, I would like video, true. I would like audio, true. These are also the places where you can say, I would like video, but only if it's really small, because I'm on a phone and I'm a low bandwidth, so don't give me too much video. Or, I'm doing the insurance example, I would like video, but only if it's this large. You can specify an awful lot in there. I'll leave you to go away, look at the docs. Once you've done that, you need to give it the parameters on how it's going to be communicating. So, turn servers and stun servers. Turn servers, actually, there were just stun servers first. So, most of you will realize that when you connect to the Internet, you don't actually have your own IP. You're knatted and it's an IP which your ISP gives you. That's pretty useless if you've got another computer that wants to have a Skype-like conversation with you. So, what you need is the publicly accessible IP, which you can get via a stun server. If you go to sites like, what's my IP and that, it just says, well, I know you think you're 192.168, blah, blah, blah, but actually I see you as this global IP. And the stun server gives you that, which you can then pass on to the other side of the conversation to connect. The turn server is when you are behind a nice chunky firewall and no one wants to talk to you at all. The turn server says, right, well, I will take your media, your video or your microphone data. I will turn it around and send it back down to the other peer. That's what the turn service does. That's a lot of data and that's why there are generally no free ones around. You have to have that server yourself. Once you have this data, you just pass it into a JavaScript method called RTC peer connection and job's done. You add it, you add that media stream, that video or that audio to the peer connection. You create an offer to the other side. So, you've got these two units, the person that wants the conversation and the person that has to have the conversation with you. The first person creates an offer. I offer you the chance to have a web chat with me using this microphone with this video data. Do you accept that? The offer is then sent to the other user. They go, yes, I accept this conversation and they create an answer back to the first person. When both of those users have applied that information into their peer connection, traffic happens and that's it. How they communicate? As you said, there are three ways you can generally communicate between two peers. The first one is you're on the same local network. That's pretty simple. You can see the local addresses, you send the data through. The next one is you're behind a firewall but it's not a particularly well implemented firewall so you can just break through it. Job done. The other way is you're behind a really difficult firewall where you have to go through a turn server which is outside. WebRTC, they call it a peer-to-peer protocol. It isn't. There's no such thing as peer-to-peer. Never.  That's something you're going to have to build. It's not difficult but it's a thing they don't tell you in the brochure. Once you've done that, as we say, the streams flow and everything works fine. So, let me do the live demo bits. Get user media. This is the first part. I'm on mute so the URL should be available most of the time. There we go. So, we simply call get user media and there we go. And this is one line of JavaScript. It's so easy even I can do it. That one line, it creates the object, it opens, let me, I could give the talk from here. Actually, I could have given the talk from home. It's a tradition. I have to do it. So, get user media. It creates the object which opens up the camera. If you have multiple cameras on the device, that's where you can say I would like the front camera, the back camera. You're also able to say, you know, large video or small video, all of that kind of stuff. Each side of the conversation has to do this. So, let's go to the second window and do the same thing. There we go. Once you've created that object, you create that peer connection. Again, this is the same code that I showed you in the slides and it is genuinely the same code that's running on the machine. All the normal stuff set in the constraints for what you want to do, setting up the peer connection and these things, ICE candidates. Now, ICE is the connectivity. It says there are three ways you could connect. You know, I said it could either be the local network through a bad firewall or through a good firewall. The ICE candidates come along and saying, I think we could connect via this method. Oh, I also think we could connect via this method and basically it creates a series of possible candidates that it could work and this can vary. It can be anywhere between one, two, I've had about 50 different candidates and it says, I've got all these possible options to me. Let's try all of them. Both sides try all of the possibilities until they find one that works and when they do, that's how your data flows peer to peer. So, we've created our peer connection. We then add the media stream to that peer connection and that's all the code. There isn't any more than that and to prove it, you can go to the link and you can view source and you'll see that I'm not fibbing. This is when we come to the exchange, the offer and the answer. So, the person initiating the call says, I offer you the chance to have a conversation with me. It can, it creates this STP. It's a session description packet and it looks like this. This is the information that gets passed between each machine. Hope you're making a note of all of this. There will be questions at the end. Everyone got that? Good. So, once you have that session packet and this contains all the information about the offer, the type of video or the type of audio it wants to send, the size that it wants to do it, little bits about the network, the protocols that might get used. It is an absolute mess. The reason it looks like a mess is because it is a mess. The people that designed this wanted to have some kind of resemblance to the SIP protocols that came before it. Because there are millions of SIP phones in the world. They're not going away. So, the WebRTC people thought, let's be nice to the SIP people. We're taking over their business.  By the way, if this is being recorded, SIP people, I love you. You're lovely. So, this is the packet which the sender needs to send to the receiver. At the moment, it doesn't know where it is. It's going to be any machine in the world. So, you need to have a server that passes this information from one location to the next. And for the purpose of this demo, the way I shall be sending that is via the protocol of copy and paste. So, let's, on the second receiver, let's create another machine. Let's receive the offer and paste that in from here. Blah, blah, blah. Done. Now, this is a two-stage process. We create a session description from the thing that the other person sent us. We then have to set the remote description. That's two operations to do one thing. We've already said create an object with this packet of junk. We then have to say it again. Why? Because that packet of junk, you might want to change. That amount of stuff there, you might look at this as a programmer and think, you know what? I disagree with this 8,000. I want this to be 7,000. So, WebRTC does everything in two steps.  So, we set that description. We then reply and say, thank you. I accept this conversation. Thank you for your SDP packet. I will give you my answer of how I would like to this conversation to go and it gives you this. You might recognize this. This is the same hunk of junk you saw from the first example. Again, there will be questions at the end and it is pretty much exactly the same. It says this is the sort of data I want to send. You might be having a conversation with me via a webcam which is high resolution but the other person can say that's fine if you want to send me high resolution data but I'm only sending you low resolution data. This is my answer. And the only real difference is that very first word type answer. Everything else is exactly the same. So, the second person sends back their answer and say, yep. And again, two-stage process. First you create the object with that big text string of how it's going to work and then you set that remote description onto the local peer connection object. Both sides now both know what the other is going to be doing. And that's pretty much it. You've told each machine what it is you're going to be transferring. Is it video data? Is it audio data? You then have to pass in the ICE candidates. This is the way that the two machines are going to connect. Is it via the local network or not? So we send the ICE candidates from one machine. That's the signaling bit. Which, if you have a look here, these are the ICE candidates. These are the bits that I mentioned that it creates automatically. The browser looks at the interfaces on your machine and says, I've got two network cards. There are these IP addresses. I'm on this part of the network. I could probably access it remotely because the firewall is quite easy. The firewalls, I mean everyone says, oh yeah, firewalls, firewalls, you know, they protect us. What this actually does is it keeps firing packets in. The firewalls have got very simple logic. It just basically says, well if someone sent something out on this port, there's a reasonable chance it's legitimate traffic. So what the LRCC does, it sends loads of stuff out on loads of random ports hoping that the firewall has a look and goes, oh yeah, I've seen some traffic on this port before. It must be legitimate. So when the other person starts firing packets in, it gets through the firewall. Which is great because it solves all the problems that the IT people put there to stop us doing this thing. So you have a series of candidates, in this case what we've got, nine to ten, and you send that over the same signaling channel to the other person. Again, I'm using copy and paste, but you'd have your own little server that says, oh yeah, person A wants to talk to person B, send these nice candidates along. So we send them along, we receive them, add them in. Okay, so there are 11 candidates there and that is it. That's a working demo. All I've got to do is scroll up now and if there are two windows with my image on, this is a live demo that's actually worked. The suspense is killing me as well. There we go. There's my one, there's the other ones. We've got 11 candidates there. Yeah, so there we have a, there we, it's me again. So there we have a very simple example, because it is very simple, on how these two things are communicating. You don't really need that much code, but what you do need needs to work. Let me show you some other bits of that. So what I just showed you, that takes about 50 lines to write. There's nothing much there. The trick is everything else you need to do around it. You need to build that signaling thing that says, oh here's machine A, it wants to talk to machine B, and then actually have that communication. You've got stats in there. So if you want to know what's going on at any time, you can query the browser and saying, what are you doing now? Are you expecting an answer? Have you just sent an answer? You can say, what sort of throughput am I getting here? So if you use Chrome, and most people that do this stuff use Chrome, not because it's best, but because Google created WebRTC many years ago, and they really are trying to push it so they've got the best support in the browser for most things. You can go to your Chrome WebRTC internals, and you see stuff like this, which if you, you know, you can see it will say things like, oh I'm decoding this, this is the jitter buffer, this is how many packets I've lost, which you can then use from JavaScript. You can grab all this out using the getStats method to say, how many packets have I been losing? And then you can report that back to the user. You can say, is this jittering a bit? Should I tell the user, if you're doing something else on your machine right now, it's blocking the network, it's jittering, and you as a machine can work that out. The machine itself will automatically degrade the quality if it sees that the bandwidth is quite low. It will do that, you don't have to do that, but it's good to be able to grab this information so you can pass that information onto the user saying, by the way, it's going to go a bit slow now. And you get pretty graphs as well if you want to do that stuff. There is also a data channel as well. So Skype as well as supporting voice communication will also support text, and you can do it with the data channel object. That's very simple. You can create as many data channels as you like.  There, although there are theoretically an infinite number of data channels, they actually all go over the one channel, and it just has a little header at the top saying, this is channel user one, this is channel user two. And you can send anything across strings, blobs, array buffers, and as the bottom bit says, which is the important bit, it matches the WebSockets API because that's where they stole it from. And it works. So it conclusionally says, getting it roughly on time. The peer connection handles everything. You create, you use a media object, you add it to the peer connection. You create an offer for the other side to have that call. That goes into the peer connection. You get an answer from the other person that says, I'm happy to have this phone call. You add that answer to the peer connection. The order is very strict. Every single thing needs to be done in the order that's been given, otherwise it will not work. The states will go out of sync and you will never be able to recover. You'll have to refresh the page and go right back to the start if you get any of those bit steps wrong or in the wrong order. And there are other gems hiding, like the get stats thing for example. It's there, it's really great, but it's not something that when you get a video connection happening for the first time, you're jumping up and down so much you'd forget that there's all these other things that are hiding behind the scenes. So you can always take a look for them. They are there, they're quite amusing. And that's the end. I'll just update the scorecard. There we go, 11 talks given. So I might even have a couple of minutes for questions. So how much cross browser support? This works in theory on the majority of modern browsers. So Chrome, Firefox. I don't think Opera support is fantastic. Apple are only just beginning to stick it in Safari because Apple have had their own FaceTime stuff for years. They really don't want people using free stuff in the browser. There is a site on iswebRTCreadyyet.com.org or whatever that gives you a version by version breakdown of what methods are supported in what browser. Which is a problem. It does work and it works Chrome to Chrome and it works Firefox for Firefox and occasionally it works Firefox to Chrome. Occasionally it will work. And that is one of the bigger problems. So those of you that were here two years ago saw me give this same talk. Hopefully I've got it right this time. Those were here last year saw me gave a talk focused entirely around that point. There was a lot more and a lot of other things you need to consider when building WebRTC solutions. One of them is the cross browser support. Yes it is supported. But if you've got Chrome version X and Firefox version Y there will be certain issues that you as the programmer need to handle. Unless you happen to be in an environment in an environment where you can control what each end user has you will have to cater for at least 20 different versions of Chrome. Probably about 10 different versions of Firefox. And that is something that WebRTC doesn't do. It gives you that responsibility. So yeah excellent. Thank you.


Tried to get it back out to mohammed could not now the Jays trying to pace is Watch as it hits from deep that's great basketball. They're gonna be relentless in their pursuit to push it I Think in terms of the coaching matchup the fact that a coltman has seen the Jays pace does matter Jefferson's been the pleasant surprise to start the season for great in the New Mexico transfer Limiting the two when Washington off the bench another freshman for Chris Holtman Alexander with a shot But we're going hits the three ties shot Alexander is second from the mistake from Luther Muhammad You have to have shot clock awareness and great with eight points off Buckeye turnovers in this first half But as it picked away Harassing the freshman Washington launching and hitting the three he hit six the last time out from deep against Purdue Fort Wayne Joseph Joseph short on shot rebound taken away by CJ Jackson He's been quiet so far has not scored five Washington three in transition. It falls in the Buckeyes with their first lead Sean experienced get a grab transfers going ahead the head there To go his spin on that person gets the floater up and down Moving Caleb Wesson to the bench. I mean sometimes the situation calls for adjustments and certainly Wesson a guy that's a super important to this team But at least the matchup right now the house date a little bit better defensively with him on the bed Just Wayne Washington the kick the woods open three woods hits it again 15 for woods and a timeout for Creighton Woods around the Western screen back out to Wesson big metal fire the three and he'll hit He could shoot that a little bit Kevin if it's wide open in rhythm just like that. He's got to take the right threes It's a tough game for him defensively with how Creighton plays But when you do have on the floor, you have to throw the ball into Martin For the Blue Jays That's what Greg McDermott wants with Martin crumple pick and roll and lob to the rim Flip over the mix got open for three Back to back you see the roll and how it can hurt you Was shook his head when Wesson was demanding in the pose there was backside help coming as Andre Wesson launched again This time off the mark midst the rebound for the Jays here's the stop They got but that means he didn't get over the time on almost a turnover That person will try the three They got the stop they got the three it's a six-point game. That's where it's where the game can change Good play from Zeke Rouser for the time Alexander Reigns it down from the corner and we've got a brand new ball game. There's Holman wants a time out. Oh, get it Skip ballack in the corner for three And that's the problem you start sinking in a little bit to help out the mismatch inside something for woods here a little ball screen There's woods on the drive the kick out to Jackson Jackson looking for the three and he hits his first bucket of the night Woods though when his team needed the most it wasn't him scoring. It's him passing Really big win for the Ohio State Buckeyes who hit the road and knock off the Creighton Blue Jays 69 to 60 closing the ball game on a 13 nothing wrong


What are you rebelling again? What do you got? Canada's Freedom Convoy started three weeks ago, with truckers from the east and west coasts of that country converging on Ottawa to protest a law requiring that they be vaccinated to come back into their own country. Given that well over 80% of the truckers are vaccinated, what exactly are they protesting? As one reporter who talked to dozens of demonstrators put it, it's less about vaccine mandates and more about a sense that things will never go back to normal. A sense that they're being ganged up on by the government, the media, big tech, big pharma.  They feel underappreciated by elites who tell them what to do without giving them any say in their own lives. One protester gave eloquent voice to populist resentment, saying, there's a group in power that always manages to create panic among the masses and siphon off public funds. The trucker protests remind me of the Tea Party in 2009, Occupy Wall Street in 2011, The Women's March in 2017 and Black Lives Matter protests after the police killing of Michael Brown in 2014 and George Floyd in 2020. Whatever specific event ignited each of those movements, they all quickly took on greater proportions and expressed a vast generalized anger, not simply at overspending bailouts, income inequality, sexism and police brutality, but at governments and cultural elites that seem at best indifferent to ordinary people's lives and at worst, downright malevolent. These movements typify what former CIA analyst Martin Gurry wrote about in the revolt of the public and the crisis of authority in the new millennium. Governments and elites have lost the trust and confidence of the people they supposedly serve. Social media and other forms of communications empower protest movements that are authentic, decentralized and leaderless, at least at the beginning. They're much better at articulating rage and anger at the status quo than they are at proposing anything like concrete proposals for reform. That was certainly the case with the Tea Party, which started out as a revolt against wild spending and bank bailouts during the financial crisis. The movement brought hundreds of thousands of protesters to the streets all over the country. It captured the libertarian imagination with its simple message of controlling government spending and holding businesses and people accountable for bad decisions because capitalism is supposed to be a system of profit and loss. The Tea Party wave got a handful of people elected to Congress in 2010 and 2012, including Senator Rand Paul, who's cheering the Canadian truckers on and even calling for an American version of the freedom convoy. Clock things up, make people think about the mandates. But the Tea Party ultimately faded into insignificance and impotence, in large part because it could only articulate frustration and negativity. It was quickly absorbed into a Republican Party that failed at every step to reduce the size, scope, and spending of government. The Canadian Freedom Convoy will likely suffer a similar fate. Some of the other recent protest movements have been much more successful in pushing an agenda, but all have lost urgency and effectiveness as they became more centralized and enmeshed with partisan politics. Their leaders, just like the heads of the governments they're protesting, abuse their power and thus lose their moral authority. But that doesn't mean new protest movements don't matter, far from it. Even if they don't succeed at achieving their stated goals, their blows against the status quo whose cumulative force will make governments and elites become more accountable to the very people they ultimately rely on, as with the collapse of communism. Eventually there comes a tipping point where the seemingly impossible becomes the inevitable. In a country where arbitrary COVID policies still run rampant, trust and confidence in government business and organized religion continues to fall, inflation is at a 40 year high and just 17% of us are satisfied with the way things are going. Expect many new movements to rise up soon. As a society, we're like Marlon Brando in the wild one. We may not know the best way forward exactly, but that's not gonna stop us from pushing into the future.


Entire onion everything including distribution you remove distribution you end up with revision control Now forget about revisions forget about the idea of versioning itself Okay, forget about history pretend that every project has only one comment. This makes things much easier once you remove that layer from the onion what you are left with is As git calls itself a stupid content tracker you give it files and directories it Stores the files and directories away Still too big to swallow forget about files and direct Let's go right to the core of the onion what you are left with I Would argue it is a persistent hash map Weird but allow me to show you how You give git a piece of content for example in this case the string something and It gives you back a hash a 20 bytes hash, okay, and this functionality like so many functionalities in git It's a low-level functionality, but you can actually access it from the command line There is actually a command which you can use if you do scripting for example that is called the git hash object Let me use it actually. I have a command line here git hash Object is this visible to everybody in the room now? Still small, okay, okay Now everybody Okay, okay Okay, now it's expecting something on a file actually I don't have a file So I will say read from standard input instead and I will pipe something into it with echo, okay? Something literally something For people who don't use the Unix like stuff I essentially streaming this string into this command and What you are left with is this hash DEBA which is the same that I wrote here because it's the same content same content same hash every time This is usually important in it get to uses these SH one Hashes everywhere all of your files get hashed like this, so Call it sha one or shown for friends Okay, so some people were new to git say but of course there are not as many shown as there are possible files What if I have two files in my project that have the same shown that would be tragic and yes It would be tragic that would totally break it. It's probably not going to happen Let's do a quick calculation just because it's fun Let's look for example at this guy. He won the American The jackpot at the American lottery plenty of money Your chances of winning the jackpot at the American lottery with a random combination of numbers are Slim one in one hundred seventy five million these number is hard to visualize and let me visualize it for you Let's say that I come up with one hundred seventy five million fortune cookies And I put a different number in each fortune cookie including of course the jackpot because it's all of them Let's say that the fortune cookies five centimeters long So you start here in this room and you track a line of fortune cookies towards Europe I think it's in that direction. Okay You end up with a very long line and believe it or not. I googled for it You end up very close to where I live. Okay, you end up around Venice So now say that you walk the entire line Okay, it's a long walk.  You are only allowed to one fortune cookie in the entire trip you open it and Hey, you want the jackpot? So these are your chances of winning the jackpot. So you think I won't I will win again This is that gambler a gambler mindset, right? I'm on a lucky strike. Let me do it again So you come back all the way through With the brand new cookies and once again, probably somewhere in Turkey you get hungry and You eat a cookie and you win again Twice in a row so your friends now are calling you a lucky bastard and asking you to pay for rounds and stuff Okay, the chances of two random shones Colliding are not the chances of winning the jackpot once or twice in a row They are the same chances of winning the jackpot 10,000 billions of billions of billions of billion times in a row Just saying it's probably not going to happen Okay, so this is important for what comes later. Shones are not unique in your project They are unique in the universe. You can take every single software project on nurse put them all into the same get to Ripple you get a lot of performance issues still no clashes So that's the hash map part. I said the persistent hash map This one is not persistent yet to make it persistent. You can actually do it with the minus w switch in In hash object and let me do that Minus w this gonna break. It's complaining that it doesn't have anywhere to put the object It lacks its own place, which is the dot get Directory you know that one probably Well, any get project has a dot get directory in the route That's where the get stuff goes configuration and the object database. So let's let me create the directory. How do I do that? Yep, get in it. That's what getting it does. It creates the get folder the dot get folder is here, okay Mmm, let me do it in another folder. Sorry my project. Let me remove it from here just in case and Then let me move to my project just to avoid the other files in the demo, which would probably pollute the demo Okay Initialize fine. Now. Let me open it and if you look inside it You will see that amongst other things it has an objects directory and inside the objects directory There are a couple of folders info and pack ignore these ones for now, okay? There is no object now. Actually. I can ask get how many object It has in its database. I think it's this command yet zero objects You don't have to remember these commands, of course The point is just understanding how it works not remembering every step so now I can once again generate the hash and Save it There if you look again into the object directory here You will see a directory called D. E Which is not coincidentally the very beginning of this hash It follows up with BA and so on and so on and this is the name of the filing here It generated a file By splitting the name. This is just a way not to put all files into one directory But essentially the file you can say Approximately that the file is named like the hash and what's in that file? The content the string is something it's been zipped. It's it's been wrapped into a small header But that's what it is There is another command that I will use that is called the git cat file and I can pass it This hash or just the first few Digits in the hash and if I run it with minus t it will tell me the type of this thing It calls it a blob content your files are called blob blobs inside git and if I run it with minus p It's gonna show the content Okay So so far so good. So it's a persistent hash map This is the core Now let's work towards the next layer This one is gonna require a lot of goofing around With the command line and a lot of looking at hashes So please don't even try to follow it every single step. That's not the point. The point is the structure. Okay Let's say that I start Adding files to my project. I have a shell script here that I prepare to to add a few files so that I don't have to do it by hand and if I Look at the project now. There is a read me file I will zoom in a bit for people who are far away. Okay, and the read me has Contains the string is something and then there is an src Directory which contains two files the the first one contains the string something else Second one is once again something. Okay, and now I will quickly add these files To the I will stage these files in git speak. I will add them to the index.  It's gonna be called first There it goes and if you ask once again How many objects are in the database this time around it's gonna come up with five objects And now the problem is why five? Let's see. I will be using git cut file again Okay, if I say git log it shows me the comment and the comment has a hash Now what happens if I say git cut file minus T It's gonna say it's a comment. Sure. What happens if I say git cut file minus P What's in a comment what I'm talking about the implementation of a comment in it? What do you expect to find it there? hmm okay Metadata the commit message the the user the date of the commit There they must be in there, okay and If I ask for it, I'm sorry that it's on multiple lines a bit hard to read but this makes it bigger You will see that exactly this text is the comment. I mean Literally git takes this text hashes it zips it wraps it in a block in a header blah blah And it becomes an object in the database and most of these is obvious. Okay. This is me. The that's the date This is the the commit message The first line is not as obvious. What's a tree? a tree quickly is the equivalent in git of a directory a Blob you can see it as a file a Tree is like a directory in this case. It's the root of your project. Okay So now let's let me do this again with the tree So git cut file minus P Hatch of the tree. This is a tree Remember, this is the root of your project. Okay. What's in the root of your project? Another three the SRC directory and the blob read me Okay, let me do this one last time with the read me Do you happen to remember this hash? something So let's look at this graphically to make it easy to follow hopefully You have a comment. It's called first. It references a tree. It's called E7 blah blah and it's actually the root of your project. These stories are referencing two things Another three source And the file read me which contains the string something Source is the reference in two files. You remember there were two files inside source, right? One of these is File one which contains the string something else. That's another object Where does the last arrow go? The last file contains the string something again So the last arrow can go straight there Look at what is happening. It is re-using the objects The name of the file is not in the blob. The name of the file is in the tree that contains the blob So if you have two files that are identical, they will only be one object in it These helps make it efficient. We'll see how Well, a couple of observations first. There is more than this going on under the hood I'm saying that it is creating one object for every file. Actually every now and then it will look into the files and say Hey, these files are almost identical Let's put everything that is common into another Section of memory of a file. It will as they say pack your objects. That's what the pack Directory under objects is for but this is not useful. This is a really an implementation detail You're probably never gonna see that This is more important because it gives you a hint at how to get things Another thing that is interesting is that look at this thing You have blobs that have content. You have trees that contain more trees and the content and the names of the things are in the trees What do you call a thing like that? huh a five system This is a damn file system Which is totally unsurprising because the other of this thing is a specialist in file systems. He's a kernel guy, right? So this is a good way to look at git It's not a Version system yet. It's a file system. Okay. It's not what you think about when you think of file systems You're thinking about something that is more low level Kernel related kernel level. It's talking directly to mass storage Almost directly, but if you abstract it a bit remember abstraction is your friend. This is kind of like a file system So it's not just a persistent hash map. It's a stupid content tracker file system for friends now one more layer in the onion version This is going to be brutal But it starts simple enough Let's say that I edit the read me file and I write in here my git project there so now we have a New file to add and we can't commit and we commit with the message second And if we say git log We get a hash for this comment And if we say get cut file minus P and the hash What's gonna be different in this comment compared to the previous comment conceptually different In this case the comment is not the first comment anymore. It's not a root comment. Let's see So you have something more you have a parent Which is the first comment, of course now I could go on and use cut file to painstakingly look at each Single object in the database, but I will spare you the pain. I will just to show you the result here so Second comment it has a parent and it's pointed to a tree is this gonna be the same tree that we have here No If you if you are questioning why you will see in a second It's another three This story is pointing to a tree and the blob the blob is clearly different Okay, because it's new content my git project That's why this story has to be different because git is Calculating the shown of the tree and the content of the three is different because the blob is different What about SRC is this the same SRC or another one This one is the same one So look at the way that git builds his story into the mix If you look at this entire thing, let me move back and forth because I'm sorry guys. I love you, too Forget about that stuff forget about that stuff because it if you look at the These entire thing from here from the point of view of the second comment You can't reach this thing Unless you go to the parent and then go over you don't see this stuff What you see is the stuff that you can reach from here Which means this and if you look at this this is a snapshot of your file system in time So gittys are using whatever it can reuse but what you end up with is each comment is the whole snapshot of the whole project Okay, forget about trees and forget about blobs mainly because you know it all now You're experts when it comes to the githubject model trees Blobs Commits and then there is another kind of object that is called the annotated tag, which is very easy By the way, you can look it up yourself This is all there is to know about the githubject model. There is quite simply nothing else in there You know it all Now let's move up a level and look at the comments instead focus on the comments One thing that we don't know yet. You know that githubject is famous for branching We don't know what a branch is What's a branch I mean, let me go back to the command line Let me see what we have here if I say get branch it will list all the branches And we only have one branch because we are at the very beginning. It's called master. Okay And if I create another branch Fix me There now we have two branches, but what are these concretely? Let's look inside the dot git folder. This is instructive So I think I have something here There let's forget about the object database There is a folder here that's called refs For references and if you look inside it You will see that it has a couple of subfolders forget about tags There is one that is called hats and if you look inside that one You will see two files that are fix me and master What do you expect to find inside those two files if I print them on the screen? ashes So let me double check for the non-believers cat dot git um hats master A hash and by the way The hash Of the latest commit what if I ask for fix me instead same hash So branches are just the references in general references to a hash Hmm Now we are still missing something when I say git branch Uh These two branches are not the same one is all happy and green and the other one is all white and sad Because one is the current branch, right? How does git know what the current branch is? Yeah I wanted to to get there in two questions, but you guys sure to circuit me Um There is there must be another reference Right, there must be a reference to a branch which is a reference to a commit and this reference is saying These is the current branch. What's the name of this reference? A file named head just by coincidence Is here right in the root of the git folder In here you won't generally find a shown Because it's references as referencing a branch, which is not an object in git's database It's a file in the refs folder So git is using these other syntax here to say this is the reference But this is it, okay From an implementation point of view you just became the experts. This is all there is to know about branches The consequences, however can be Can take some time To be understood, let's see I'm going to change my style and not use the command line anymore because this would Force me to switch back and forth a lot and it would get annoying for you I would instead show you the commands on the screen And I will show you what happens inside the git there We said that we have a branch named master, which is a reference And we have a reference to the reference, which is head and then we have another reference Once once we say git branch fixes that is called Fixes, okay So what happens now if I change some stuff in the command line? For example, I edit a file and then I say git commit minus a which stands for add everything new So I can skip the git add part Minus a third what is happening here? Well, I'm creating a new commit So the new commit will be let's say here I'm bending it sideways because of what counts later This brand new and it's a commit that has as a parent the previous Current commit the one pointed at by head which is pointing at master which is pointing at it Uh, what happens to head actually not nothing happens to head Why should it change? It was pointing at master. It's the current branch. It's still the current branch. What is changing is master Which is now pointing here Head is just following along for the right So now what happens if I say git checkout fixes, what does git checkout do concretely? That's all it does it moves head to the fixes branch like this And yes, thank you smartass Almost as a side effect when you change head and you are pointing at a different thing Git says hey the contents of this working directory don't match what I see here in the object database You know what the object database is worth everything. You know what your panifiles are worth nothing Let me delete everything that is in here and replace it Well, maybe if I see stuff that hasn't been committed will warn you But otherwise I don't care about your working directory Git really considers that very transient So it will just say let me walk this commit just like we did earlier on And check all the trees and all the blobs and turn them into folders and files and dump everything into the working directory Actually good You have a career in front of you sound Okay, now what happens if I change stuff Now and I I create another commit now, you know what happens first the new commit Let's put it here because the parent of the new commit is always the current commit And of course master is going to stay there Head is going to stay there, but fix this is going to move What happens now if I say git merge? Think about what git is trying to achieve What we are trying to achieve is I want to have a point in time a commit Where everything that is available in master Is also available there and everything that is available in fix me is also available there So if there are no conflicts The easiest way to get to that point is to just create another commit which has two parents like this I want to bore you with the details But you can probably draw a pretty picture yourself of how this commit is pointing to a brand new tree the root Which is new, but this root is pointing to stuff that was already there And if there are conflicts it's pointing to stuff that is new because it solves the conflicts Is this clear Probably no need for more details What is important here is that fixes the current branch is going to move to the merge. Okay Now let's Check out master again What happens now if I say git merge fixes Okay, again, what are we trying to achieve? We are trying to get a point in time where everything is available That is also available in both master and fixes But we already have this point in time, right? It's there. It's the top most commit So we don't need to create new commits with parents or stuff like that Git is smart enough to say hey, I'm going to use what I have So what it does is that it just takes master and it moves it to the top of the chain This is called by the way a fast forward If you're just learning it and bang your head against the wall trying to understand what the fast forward is Nothing magic. This is it Pretty now. Let's look at another situation quickly and then we are done with this version in silliness. Okay This is the other situation. Imagine we have this situation in our In our project. We have a first commit and then we branched somebody branched the fixes probably and This person committed fix and more fixed While another person committed second and third or maybe the same person while switching branches Okay, and we are left like this and right now. We're on fixes What happens if I say git rebase master? What's our rebase? This is what you want to do. What you would like to do is to Take This connection the connection between fix and first cut it off break it And move it to third Re-basing, right?  Why? You get a different shown As soon as you change one single byte you get a completely different shown That's why everything in git is immutable everything in the object database is immutable So what can you do instead? If you can't do this and you want to get something like this What you can do instead is to copy over stuff to new commits Which pretend that they are the old commits So what you do is to take fix and create a new commit which is Exactly like fix it's pointing to the same tree It has the same ozo and blah blah blah But it has a different parent But it needs to be a different object because it has different shown Is this point clear? Because this point is the point that might drive you crazy the moment that you mix re-basing with distribution That's when pain happens if you don't understand this thing that this is not the same commit. It's a copy Do you ever find yourself with multiple commits with the same messages in your git tree? And you were wondering where these where do these come from? That's where they come from I'm not going into the mechanics by which this can happen, but unfortunately it does happen Also, you need to copy more fix And you need to move fixes to the top One last question about versioning and then we're done with versioning What happens to those commits to the original ones? Like in object oriented programming languages if something is there, but are reachable There is no way to get there by a branch or a tag Eventually git will say this stuff is old and it will garbage collect it So they're gonna die sooner or later Maybe they will take a long time, but What if you want to save them For whatever reason I don't have a slide for that, but if you want to make something reachable so that it's never garbage collected Just stick a branch on it It will be there forever because now it's always reachable And that and a lot of special cases is all there is to know about versioning it And we are done with the next layer of the onion All we're left with now Distribution if we had more time I would go into the details of how distribution is implemented But we don't have much time. So forgive me. I will skip the internals I will just show you the basic idea because now the basic idea Comes on very smoothly Imagine that you have a local Repo and the remote repo. I know that computers don't look like these anymore, but I'm an old man, okay And imagine that you want to clone the remote on the local Those pretty colorful things are objects I just color them differently instead of putting different shrooms on them. It's more readable for humans You will notice that there is no magenta ball because magenta is not a damn color What happens physically when you get clone?  I didn't draw the graph But of course these objects are all connected. Okay Then sometime passes Sometime passes and the two databases evolve people are working on the two on the two repos So now in the local we have these Pink ball and this last line. Okay That the remote doesn't have and the remote has things that we don't have But remember what we said in the beginning These things are unique in the universe They have a shown So how do I align with the remote? How do I get the stuff in the remote? What happens when I do a git fetch in other words? Oh, essentially you ask the remote May you please send me all the stuff that you have and I don't All those objects and bang Perfect Usually don't do a git fetch you do a git Pull which means git fetch and then merge because things are just a little bit more complicated in that There are local branches and remote branches So after fetching the new stuff you want to get them in your history and that you do by merging essentially Local branches or remote branches, whatever they are branches. Okay There is a simple system to tell git how to track which branch with this with which branch But essentially it's the same mechanics mechanism you seen before What happens then when I do a git push? Same thing in the other direction Take this stuff. It's new. You don't have it And that's distribution May it be so simple Yes, it's really so simple That's it We have the onion now You might wonder after rebuilding the entire onion. So why are you telling me this stuff? Why am I supposed to care about this stuff? Usually in a presentation you tell the why beforehand because I'm supposed to motivate you But I thought come on and we are all geeks Git internals You don't need any more motivation and indeed you'll be following But in the end I feel I need to motivate that and the basic thing is that when you learn git Like pretty much anything else you go so You can abstract it as three stages Okay The first stage you are inexperienced. Okay, this is me being inexperienced. So I'm starting to play with git Hey, it's not as hard as I thought. Okay. I don't know rebase of that. That wasn't his subversion Okay, I will merge. I know what that is and so and so on. Okay, and I was feeling all happy Then you get to a point where you are experienced but compared to other Technologies where experienced means that you get more and more command In git experience experience looks more like this. Okay Oh, I broke the personal record. What do I do now?  Now I can make sense of this And now I can actually work with git fluently. Okay And to get from the second step The second stage of experienced but often in trouble to the stage where okay I know what I'm doing. Give me some time and I will sort it out You need to know the internals. You need to know the basics like a ruby meta programming In a git what is important is the model if you own the model You can make sense of any special case if you don't understand the model then each special case is going to be Its own particular target And your life is going to be miserable. I know because mine was So this takes care of the very latest layer now we're done. Okay. Thank you


Good day, fellow investors. There is one article that holds more investing wisdom than most of the content put around on investing all over the world in one year. And that content is Buffett's 1984 article, The Super Investors of Graham and Doddsville. Buffett wrote an article presented at Columbia Business School, where he depicted the investing returns from 1953 to 1983 from the best value investors that came out of the Graham value investing school. And that's the best Buffett we can listen to, because it was not yet the political, the hypocrite Buffett that's telling people to buy the SAP 500 constantly over time, while he never bought it. And while he's sitting now on $100 billion in cash, why doesn't he buy the SAP 500? Ask yourself. Nevertheless, let's dig into the article, let's summarize it and give the most important investing points to take out in order to learn as much as possible. So the main point of the article is that in the 30-year time span, all those investors use different techniques, but audited track records show that they all had beaten the market in a 30-year time span, even if they use different techniques related to value investing. Walter Schloss, he was looking at a lot of businesses enormously diversified, but he just looked, okay, am I paying less than what the business would be valued to a private owner? So would the private owner buy out the business at a higher price? As long as he found businesses that were trading at a discount to a buyout price or to what a private owner would pay, he bought them. Huge diversification over the long term he outperformed the market. Don Knapp, the founder of Tweedy Brown, he also was very diversified, but here and there he would take over a complete business and then unlock the value. Again, different strategy, but always based on a margin of safety. He'll ruin the founder of Sequoia, he worked with huge amounts of money, and therefore he focused only in looking for value in large companies. Charlie Munger focused on just a few companies extremely concentrated, extremely volatile, so high risk we would call it from academia, but when Munger does something there was no risk with huge upside. Other investors like Rick Guerin and Sten Parameter were focusing on buying stocks where they were getting more value for what they focused on buying stocks where they were getting more value than what they are paying for. Very simple. So since Buffett made this article public in 1984, Berkshire has outperformed the SAP 500 by a huge margin. So even if it's public, we all know what beats the market, what leads to investment returns, high investment returns, nobody followed Buffett, nobody listened in 1984, nobody is doing it still because perhaps we have something twisted in ourselves that doesn't allow us to follow the simple things, we want to complicate life, we want drama, and we look for such investments then that are not the best risk reward situations. The main points from the article are extremely simple. There are two factors you have to look at. One is value and the second one is price and the discrepancies between value and price. That's it. When the value is much higher than the price you buy. When it gets bigger you buy more. When it's the other way around you sell and that's it. But the most important thing is focus on the value on the margin of safety and then compare it to the price. Look at the risks of course and that's it. That's the whole investment philosophy from Buffett from all the other value investors applied anywhere in different sectors as we have discussed prior to this. Factors like the beta coefficient, covariances, technical analysis, efficient markets, 200-day moving averages and all that kind of things are completely irrelevant to a value investor. Those things probably work only for a small number of people that really know what they're doing. A part-time investor should focus on a margin of safety and value investing because over 40 years he will do well. Also what Buffett discussed a very important concept. We will reiterate the concept constantly on this channel, the concept of risk. Risk is not a function of volatility as many see it. Many ask, oh will the stock price go lower or lower? Nobody knows that. Risk is a function of price. The lower is the price in relation to the intrinsic value, the lower is the risk. The higher is the price, the higher is the risk. Thus the SAP 500 now is three times more risky than it was in 2009. However, if you look back at what was going on in 2009 up to March we can see huge outflows from the SAP 500 ETF measured in billions. However, the inflows later were measured just in millions when the situation was starting to recover. Now, inflows are again measured in billions. Now, when the prices are high, thus according to Buffett the risk is high. But of course nobody wants to listen. Better for Buffett, there will be more things to buy when the stock market crashes. And remember he has 100 billion waiting. Just a quick look at the book values. The book values are just going higher and higher. Thus means the margin of safety is lower and lower. The intrinsic value is going lower. The book values are staggering from companies like Apple, Microsoft, Facebook. Just look at what are the book values and what's the margin of safety there. Of course, nobody watches, nobody cares because value investing is old-fashioned. We'll see. So the conclusion is very simple. The risk of an investment is a function of the discrepancy between the stock price and the intrinsic value. Stock price below, no risk. Stock price above, higher risk. Look at your portfolio, look at what you own, look what's the intrinsic value. Look at what would be the price to give you a 10% earnings return over the long term. And then compare it to what you are paying and what you are now. Perhaps you will rethink your positions. Remember Buffett has 100 billion in cash now. Sitting and waiting.  He knows why he has so much money sitting. So also value investing is totally uncool now. Nobody likes value investing. It's not hot, it's not Snapchat, it's not Facebook, it's not Nvidia, it's not Alibaba, it's not Amazon. It's totally uncool. Of course, being a value investor hurts because you see other people getting richer. But do you still remember the ones that got rich in the 2000.com bust? No. So think about it. But we remember Buffett. We talk about Munger. We talk about all the value investors because they are still rich. So think about when allocating proportions to your portfolio and looking at the risk reward and of course sleep well at night. Thank you for watching. Looking forward to your comments about Graham and Doddsville. Read it online. It's free for everybody. So it would be a great read if you haven't read it already. If you have, then it's a great reminder. I'll see you in the next video.


Welcome to Liquor Licensing in British Columbia. This video is presented by the Liquor Control and Licensing Branch and talks about minors and checking identification. In BC, a minor is anyone under 19. Minors can enter some liquor establishments and not others. However, it is always against the law to provide liquor to a minor. Studies show that alcohol use by minors can cause serious negative consequences. That's why there are strict rules to prevent minors from accessing liquor. You must understand the rules around minors and your establishment and you are expected to have house policies in place to ensure you meet this legal obligation. Selling or serving liquor to a minor is a serious offence. If you and your staff provide liquor to a minor, you could face a penalty of up to $10,000 or a 15-day license suspension for a first offence. If there is any doubt, you and your employees should verify age by asking for two pieces of identification. The purpose of the second piece of ID is to help prove that the first piece is real. Check ID in a well-lit area so you can verify that it belongs to the person presenting it and that they are of legal drinking age. The first piece must be government-issued ID containing the first person's name, picture, and date of birth. Examples include a driver's license, passport, citizenship card, or First Nation status card. The second piece must include the person's name and either a signature or picture. Examples include a student card, credit card, most bank cards, or a healthcare card. Remember the purpose of the second piece is to help prove the first piece is real. Two pieces of government-issued ID is also acceptable. The new BC services card combines the BC driver's license and healthcare card into one identification card. For liquor ID purposes, this card is considered one piece of government-issued ID. You may accept expired ID and foreign ID as long as it's readable and you can recognize the customer from the picture. You and your staff must decide on a case-by-case basis. If the ID presented proves that the person is not a minor. If the person cannot produce two pieces of acceptable identification, you should refuse service. The branch follows up on all complaints received regarding the service of liquor to minors. You must cooperate if a liquor inspector asks you to assist in determining whether a person is a minor. The branch hires minors between the ages of 16 and 18 to test licensees and their staff. If a minor has served liquor, a contravention notice will be issued and enforcement action may be recommended. Remember, when the legal age is in doubt, you have the right to refuse liquor service. We want you to succeed and we are here to help. Talk to your local liquor inspector or contact the liquor control and licensing branch if you have any questions.