Okay, so let's continue our discussion of ideal and non-ideal solutions, and in particular let's look a little closer at what happens on the limiting cases on this graph. Either when the mole fraction approaches one, we have something verging on pure A, or when the mole fraction approaches zero, and what we have here would be the pure solute. So this will be the case where mole fraction is approaching one, and down here mole fraction of A is approaching zero. So just as a reminder, this is a pressure composition diagram. The straight line is Raoult's law telling us that the pressure goes up linearly with the mole fraction. We might have systems that deviate positively or deviate negatively from Raoult's law for non-ideal solutions. But as I said, we're going to be interested for now in focusing a little more on what happens on the edges of this pressure composition diagram. So let's go back to a structural picture. So I'll draw a picture of the molecules in a beaker of solution in this limit where the mole fraction of A is approaching one. Not quite 100% A, but nearly pure A. So I've got molecules of A in this solution. I'll draw A as these open circles, got many, many molecules of A, and a relatively small number of a different type of molecule B. So there's a few molecules of B scattered throughout the solution, those I'm drawing as filled circles, so nearly pure A. So Raoult's law tells us, well first of all, for the pure solvent, if this molecule at the surface weren't here, molecules would be escaping from the surface at the same rate that they would in the pure solvent. The partial pressure would be the same as the vapor pressure. I've got a few of these B molecules lying around, some of which are going to be at the surface, so that's going to reduce the partial pressure a little bit. Raoult's law says it reduces in straight line proportion to the fraction of these molecules that are A or B molecules. Notice though that every one of these A molecules, not every one, but nearly all of these A molecules are surrounded completely by A molecules. In a nearly pure solvent, almost all the solvent molecules see nothing but solvent molecules, so they're going to behave just as the pure solvent would. They're going to behave like A molecules surrounded by A. Only a small number of the solvent molecules even have a B molecule anywhere nearby because we're nearly pure. So Raoult's law says the only molecules that don't escape into the solution as they would in the pure solvent are the ones that are B molecules. An ideal solution says, well that may or may not be true because the ones near the B molecules might be held into the solution more strongly or less strongly because of those non-idealities, but there's not very many of those molecules. So in that sense, as the mole fraction becomes one, relatively few molecules even have a chance to be perturbed by a B molecule. The overwhelming majority of the molecules are going to behave just like solvent. So in the limit as the mole fraction of A approaches one, the activity of A is going to be the same as the mole fraction, and likewise in the limit of that pure solution the activity coefficient of the solvent is going to approach one. The solvent is going to behave ideally in this limit of a pure solution, and that's why when we draw these curves or when we measure this data, regardless of whether we have a positive deviation or a negative deviation, as we approach a pure solvent, the system becomes more and more Raoult-like. The deviations from ideality begin to disappear as we reach pure solvent, and you can see from the way I've drawn this diagram that's not what happens at low concentration. In the case where the mole fraction of the solvent A is approaching zero, we can draw another picture to see what's happening in that system. So here I've got, let's see if I can use, I'll use filled circles for my B molecules, and there's a small number of these open circles that will be A molecules. So the A molecules, the open circles are the minority in this case. So mostly B molecules, a few of these A molecules. And again, we can ask ourselves, what will the partial pressure of A be above the solution, and how will that compare to what it would be in an ideal solution? Clearly the B molecules, whether they evaporate or not, don't affect the A pressure in the vapor phase. The only ones that can evaporate are the few A molecules that happen to be near the surface.  So it'll behave not very ideally at all if the solution is not an ideal. If the B molecules bind to A more tightly or less tightly than the A molecules do to themselves, then there's no reason to expect that the activity of this A molecule will be anything like the mole fraction of the A molecules. Likewise, there's no reason to expect that the activity coefficient will be anywhere near one. The solution won't be necessarily ideal in this limit of a dilute solution, because an A molecule surrounded by B molecules won't behave anything like an A molecule surrounded by A molecules. So the dilute solution limit down here is very different than concentrated, sorry, dilute A limit down here is very different than the concentrated pure solvent A limit down here, up here. And the system certainly has to approach vapor pressure or partial pressure of zero once the concentration gets to zero, but it doesn't have to approach it along the Ralph's Law slope. The activity coefficient doesn't have to approach one as we go down to small amounts of A in the solution. So that's on this diagram. The slope with which this negative deviation line, partial pressure is moving away from zero is a different slope than the Ralph's Law slope. Likewise, the positive deviation non-ideal solution is moving away from zero at a very different slope than the Ralph's Law slope. So in fact, high concentrations and low concentrations are both ideal in a certain way. They both look linear. The nearly pure solvent limit behaves like Ralph's Laws as it should. The very dilute amounts of A in the solution limit is behaving linearly, but not with a Ralph's Law straight line. And the straight line we use in that case is called Henry's Law, which says if I want to predict the partial pressure of component A, it is indeed a linear function of the mole fraction. Looks like a straight line when I'm at low concentrations, but that coefficient is no longer, though remember Ralph's Law says partial pressure is mole fraction times vapor pressure. The slope of this curve is the vapor pressure. The slope of this curve doesn't have to be the vapor pressure any longer. It's some different constant that we call k, k sub h for the Henry's Law constant. And this is one version of Henry's Law. It's a description of the straight line on this graph. This Henry's Law constant might be very different for a substance with negative deviations from Ralph's Law or with positive deviations from Ralph's Law or anywhere in between. There is unfortunately another version of Henry's Law, depending on whether you think, whether you're trying to predict the pressure as a function of the concentration or whether you're trying to predict the concentration in a solution as a function of the pressure above the solution. Both of these are relatively common things to do. And both of them just involve this proportionality constant. Unfortunately, they're both often called the Henry's Law constant. So oftentimes from context, you'll have to look at a Henry's Law constant. And say for example, in this case, Henry's Law, if I multiply a unit less mole fraction by a constant and get something with units of pressure, that means this Henry's Law constant is gonna have units of pressure. On the other hand here, I need to multiply a pressure by something with some units in order to get something unit less. So in this case, the Henry's Law constant is gonna have units of one over pressure, one over atmospheres, one over bar, something like that. So, it's unfortunate perhaps that there's two, actually more than two different versions of Henry's Law, depending on what type of concentration units we're interested in. But you can usually figure out from context from the units on the Henry's Law constant which version of this equation you're being provided with a constant for. So, in summary, we have two different types of ideal behavior. Henry's Law behavior at very low concentrations of the substance we're interested in, Raoult's Law behavior at very high concentrations of the substance we're interested in, nearly pure solutions. Those two limiting behaviors are both relatively simple. Things get more complicated and more interesting in the middle of this diagram. And that's also conditions where we often spend a great deal of time when we prepare solutions. So, what we'll do next is pay more attention to what happens away from the edges of the diagram toward the middle of the diagram.


Hello and welcome to ToffeeTV this is the Sunday supplement Everton. Two little winners at Anfield for the first time in 22 years. The last time that happened I was nine years of age and I've taken a lot of abuse in that time. I've taken a lot of stick and now it's finally time after a long period to have my own laugh and our own laugh at their expense. Thanks to Carlo Ancelotti and his absolute master plan. What a manager. His game plan was just if anyone else had to be Liverpool at Stapman you know and you know I think the best thing about it was we still didn't have I suppose two of our main players starting the game as well and we kept one on the bench anyway. So I'll go through the low and up anyway. We had Pickford back and go for Olson which made sense and I thought Pickford had his probably his best game for Everton I've seen in about three years. I thought he was absolutely brilliant from his kick into his saves save from Henderson and a couple of other saves after that. I thought he was absolutely outstanding and justified and hopefully now he can kick on from this and go on to just I suppose stop making himself a headline for the wrong reasons you know making that odd mistake here and there and stuff like that. If you can get that out of this game we know there's a good keeper. I was going to say goalkeeper as a keeper. Yeah and look you know they've taken the piss out of him for having small arms for this and that and I've been critical of Pickford myself but look if he can produce moments like this going forward then you have to say we have a great goalkeeper on our hands which we all knew the potential was there but he needs to show these types of performances match winning performances on a regular basis to be Everton's number one so we can be where we want to be in terms of you know fighting for top four being back in Europe regularly. If he wants to be that keeper to help us get there he needs to produce moments like that time and time again so yeah Jordan Pickford absolutely excellent then he had Holgate at right back and that was just I think that was purely down to a kind of paced decision he had Holgate there you know genuinely when we're going against fast opposition he'll put Holgate there instead of James Coleman and not that James Coleman's slow but he is getting on in his years at the moment although you wouldn't know what the performance of him yesterday but yeah look he was amazing Holgate was in there to do a job and they thought he'd done it well and he was protected but there was a few moments of him as well which was to be expected because considering it's not his natural position it was to be expected but beside him then he had Ben Goffrey who I thought maybe Ben Goffrey would have been better placed at right back but look it didn't really matter he put him in centre back he had Michael Keane he was outstanding as well and I love Ben Goffrey by the way I think he's been our best sign and you know ahead of Hamers and ahead of Decorey and something like that just purely because you think of the games where we thought we were going into games and we thought we were going to struggle and we had him playing left back and he helped us get over the line in them games just from being absolutely solid and absolutely rapid fast and recovering and stuff like that so brilliant with him look at the left back you know you're going to get out of Lucas to be honest a fabulous player I think then with James Coleman kind of covering the right hand side Mark and Andy Robinson there were the game and I tell you do a brilliant job just kind of tracking him kept him very very quiet and there was a great battle between the two of them you know the Irish captain against the Scottish captain so I think Coleman more than held his own against him on that side and you know same as the game against where James came in to do a job and did it thoroughly and the way he spoke before the game and after the game that's exactly what we want from our captain and I feel lucky to have a captain like him who captains my country and my club I absolutely love the man I you know I struggle to think of someone who represents what we're all about so much and with such class you know he played in the last time we beat him at Goodison which was 2010 I think and um obviously set up the goal for Tim Cahill in the end and you know it's obviously been hard for him he's been in and out through injuries he missed a lot of games at Anfield as well but we felt probably like he could have been a help in that sense but look he played yesterday played his part and you know it was delighted for him and the scenes are full time with him but uh yeah really really happy with how James played and is playing at the moment Ireland have you know qualifying games next month now and I'm going to be looking at him to be the one leading them there so hopefully he can keep playing the way he is for Everton and obviously bring that club form into international form to help Ireland qualify for the World Cup in midfield then Tom Davis ah what a man absolutely buzzing with his performance a lot of people giving him stick and stuff like that I really want to see Tom kicking on and when he's playing like that genuinely I think that Alan will find it difficult to come in and play that position unless he's going to play just ahead of him alongside the Coral Raid because Andre Gomez isn't up too much and then Alan's obviously class but Tom Davis to come in there I think he found his position that deep low in playmaker and just kind of gets on the ball you know draws in fells wins us fells in our half to get us you know out take the pressure off us basically and that's what he did and he played the game not the occasion so I think you have to give him credit in that sense himself and Holgate and a couple of others have been guilty of kind of letting the occasion get to them in the past and flying into tackle stat just you don't need to be flying and things stuff like that and I just thought yesterday maybe Carl I must have said something to him but he just kept his composure the only real time I so I'm having a little bit of a nibble and it was a bit of a clever play was when Alexander Arnold or something was putting the ball out for a throw or something and he gave me a little push and you could see him laughing as he was going away because he knew he was in his head so yeah absolutely buzzing for Tom Davis and now people might get off his back and start getting behind him I know the lads pen bars have been pushing for people to get behind him rather than slating them I think in the last maybe five games he's been really really good and hopefully he could just keep building on this and building on this and the more minutes he's getting the better he's becoming I think and as I say he's found his position there as our deep player to core I thought actually had a poor game given the ball away and off a lot although he was good getting up and down in possession he was brutal and he kept putting us under under pressure it's a worse game I've probably seen him play maybe that sounded harsh because I love the core by the way I just think yesterday I just didn't think he had a good game but he obviously still has quality the fact that he still stayed on the pitch and was still able to help us get the win so I don't I'm not saying that in a negative way towards him in case you think I am I just think that was his worst game in an Everton shirt but hopefully he'll learn from it and doesn't do it again because I think he's been absolutely excellent and he's been carrying the team a little bit in midfield especially while the likes of Alan has been out. Andre Gomez he's walking a tight rope he made a couple of fells and looking to get yellow card earlier on I thought he'd actually be subbed a half time I was worried there was a one fell where he gave away just before half time and I thought he was going to be booked again and my heart was in my mouth but thankfully he didn't and not long after in the second half then you know Guilty came on for him because as I say I was worried he was going to get another yellow and he didn't really do anything anywhere while he was on the pitch of notes so it is what it is but then because of the way we were kind of forming it was like a I don't know a five three two almost but Hamas just kind of beside Richard Allison but he wasn't really playing as a striker he was kind of just dropping deep and look the guy Hamas he's just absolute quality like he might not do a whole lot in the whole game that he plays but what he will give you is maybe three or four moments of magic which can lead to a goal and that's why Carlo has him at the club and look at that pass that he did for Richard Allison for the first goal. I struggle to think of many others that you know in our squad actually no one in our squad would be able to pick that pass out and that just goes to show the quality of Hamas Rodriguez and to be honest with you we're very lucky to have someone like him and let's not forget we got him on a free transfer and look at the moments he's produced for us this season you know he'd have his own highlight really if you actually look back in the season and leave him over here in terms of assists and his goals and look he may not do the dirty work in terms of defending and stuff like that but I did think he did what he could yesterday I did think he was trying to drop back in the thing when we had to and look I love the guy I think he's absolutely fantastic and I just love the fact that we have our club someone like that who in my lifetime of sporting we haven't had too many world-class players come to the club I think they're too kind of the club quite late in his career and stuff like that and I know as many younger viewers that be watching this video and probably agree with me and they probably haven't seen ever beaten Liverpool in their lifetime they're really young ones and especially I am feel that was nine as I mentioned earlier in the show but and to have someone like that like I wasn't old enough to appreciate Gonzalez because so Samuel Etto who probably Lukaku two degree would probably be on that kind of level and I think Lukaku got better as he got older I add into my land now but I look around and I just don't think we've ever had someone close to the quality of Hamas Rodriguez in the kind of age frame that he's at and you've seen something in the paper about him being not happy not settled in England I think that I think that was wiped clean after the final whistle when he was celebrating with Duncan and stuff like that that's what we want to see Hamas Rodriguez embodied everything that everything is about Amber Charleston then he he obviously takes his goal really well and just led the line well you know he do what he can he chased everything down and he was pivotal to the results because the way he played and I know he's not been having the best of seasons I still don't think he's been as bad as people have been making him out to be he's looked frustrated at times I get that and I appreciate that but yesterday it was great to see him get his goal great to see him happy and uh oh his goal was fantastic and it was brilliant to see and they hate him so much which made it even better so the fact that he was the one that got the goal and you know although we got the goal quite early you know I think they mentioned that I think Seamus mentioned it after the game but like they would have probably tried to play a bit more out from the back but the the fact that we were holding onto a lead so early in the game but the weirdest thing was I have time I I actually felt like confident that we would win the game and that's only because we've beaten the likes of Leicester and Chelsea and stuff like that playing the way we played yesterday I just don't understand why we don't play that way against more teams let them come on to us defend and then hit them on the counter because it clearly works for us so I would like to see us maybe continue to play this way for the rest of the season I don't know whether that's Carlo trying to you know put off different managers by playing different ways because they might be expecting to play a certain way and they'd be preparing for that and that's what I thought was funny when Klopp said before the game that Cavalud and Alan were on the bench because he said something about Carlos poker face or something like that look Carlos knows what he's doing he's a world-class manager and I think he showed that again and I read Julian Laran's tweet saying that the Coray said after the game he was speaking to him that Carlo told him that they were going to go and win so I think that's the difference we've had managers who's just absolutely crumbled over the years when we went near there no I know there wasn't fans and stuff like that but look it's a mentality change that's slowly happening he's bringing in his own players I think in the summer you'll see a real influx of players that he wants at the club who I think will really kick us on next season but look Cavalud and came off the bench the second half guilty came off the bench as well and done really well Cavalud led the line and I think Dom is so pivotal to the way we play up front I think when he doesn't play we miss and lack a lot I think that showed even with Richard Alisson leading the line but when the two of them together played together I love it because teams are so fearful of them you think your man come back anytime any ball went over the top you could see he's clearly shit themselves and we were tagging and Pickford was hitting it long and Richard Alisson was getting in nearly every time it happened but then anyway they had a couple of chances and something like that my heart was in my mouth a couple of times Pickford made a brilliant save I think it's from Salah you kind of cut in a little bit of play with I think it was Alexander Arnold and Salah and Pickford makes two big saves in that moment and at that point I was thinking okay look we're under the cost here but then he brought on I think Dom he brought on Dom at that stage then and then that's when we we went down it and then Tom Davies would then absolutely sublime pass out to Richard Alisson then the foot race was on he gets a lovely ball in to Carvert Leone who then gets a shot off Alisson saves and then as he goes to hit it again he manages to kick Alexander Arnold but since watching replays Alexander Arnold sticks his leg in the air and trips him up anyway the referee went off to the monitor looked at the monitor and said now look penalty boom and guilty to his credit some set of balls on him stepped up and he took the penalty so cooling ice man absolutely brilliant penalty I was tuned in and at that stage I never get too too high a mighty until the game is over but I was thinking you know what we've won this game I know that when we're playing like this and when we have that solidity nobody really scores on us and I knew at that point then we were going we were going to win and it's just so nice to be able to say we bet them at Amfield and it's great because there's not a lot of noise out you know I tweeted earlier and I said you know why is like I have seen a couple of people being like oh they're celebrating like they won the league and stuff why are you not allowed to celebrate when you've beaten your rivals what is with this internet thing is oh you're not allowed to celebrate a victory it's just like that's what we support football teams is to enjoy these moments when you beat your rivals and stuff like that it doesn't mean it's the highlight of our season like some of them make it out to be it probably will be one of the highlights of the season but you know I like what Seamus Coleman says like yeah we've beaten them but now we need to focus on the targets of getting into Europe or you know winning a trophy maybe beating city and going on them to you know try beat them in the FA Cup this is what we should be aiming for and that's we shouldn't be dwelling on the fact oh we beat Liverpool uh uh Anfields now wow all right moving on that's done Carlo is drinking his coffee now cool as you like plotting things for the future but we need to stop losing to the likes of Fulham and Newcastle and these shy teams like that who are absolutely woeful and they look at us and we can pull up the performance against Liverpool and and Lester and Arsenal and Chelsea Spurs and then we go and crumble to the likes of Fulham and Newcastle now I appreciate we did look tired against Fulham after the game against Spurs but we do we need to start showing more consistency and this home form thing is is ridiculous so we need to change that but I'm not finishing this on a negative we're beating Liverpool at Anfield for the first time in 22 years I am buzzing you are definitely buzzing unless you're a couple but yeah let me know your thoughts in the comments if you want more videos from me follow me at Irish football fan tv on youtube or you can check me out on twitter apollonian2508 and instagram apollonian90 all the sweeties all soon guys thanks very much for watching come on you blues don't forget to like subscribe to toffee tv and our sweeties all soon have a great weekend


Jeffrey Jeffrey Jeffrey you got something explaining to do What is up everybody this is Chris from the rewired soul where we talk about the problem But focus on the solution if you're new to my channel What I like to do is take a look at the YouTube community all the drama that's going on and take this mess and turn it into a message and Today's message is don't be a hypocrite and throw stones in glass houses So if you're into that stuff make sure you subscribe and ring that notification bell So for all of you loyal rewired soldiers out there who have been subscribed to me You've been watching the videos I'm making like a question. You might have is why am I being so hard on Jeffrey star? All right, and I'm gonna circle back a little bit later in this video after we talk about these new tweets to just resurface And kind of explain this a little bit further But here's the things this actually came up on Twitter the other day and the issue that I'm having is Jeffrey star Constantly taking this moral high ground But it all started with this James Charles situation where he posted a tweet and deleted it which blows my mind Like for somebody with millions of followers, like there's no such thing as a deleted tweet. All right, like if Jeffrey wants to Not post things that he shouldn't post Dude needs to start practicing mindfulness and take a pause button, right? I've been practicing mindfulness for a while now. It's still difficult for me But just know if you get to that massive following, there's no such thing as a deleted tweet But in a tweet that he deleted he he talked about James Charles being a predator and saying that his boyfriend Nate Banned James Charles from the house. Okay That's why I take issue Because I was having a conversation with somebody on Twitter about this and this moral high ground and they brought up the fact that I have a Troubled past right and that's true. I'm a recovering drug addict and alcoholic I'll be having celebrating seven years sober next month on June 23rd, right? And I'll often talk about situations in the YouTube community and things like that and the difference is The difference is and I hope this is the message. I'm conveying to people is not taking this high ground But a place of empathy, right? Like I'll call out behaviors. I'll call out behaviors all day long and Talk about what I've learned why this is wrong the influence that is Having on all of the people watching these situations go down and everything like that, but I Never forget where I came from and that's what it seems like Jeffrey stars doing and he's erasing thousands of tweets To try to erase his own history. That's where I take issue. All right, so What what happened was? Basically some new tweets resurfaced. I'll put them up on the screen right here as well I may go over some of them, but I'll link the Twitter thread down below But basically here's what just resurfaced now before I get into this like Especially with the false allegations in the Photoshop tweets or DMs from people were making about James Charles I wanted to make sure so Jeffrey star as we all know he's deleted thousands of tweets So from this thread, I actually just did some research and here's the thing No matter how many tweets that you delete the replies are still going to be there So what I did do was I went through this thread and I verified the replies existed and based on the context of the replies You can see what happened or what transpired. Okay, so even though Jeffery star tried to delete this They're still there because the replies are there. All right, so I'm going to read the gist of this story So this comes from Twitter users saw us foot So it starts out with was Jeffrey star involved in grooming an underage boy a thread So dozens of tweets from 2012 have emerged between Jeffrey star and Jamie Ryan D a former teen model once known for their large tumbler following Jamie has since transitioned and I believe now uses they them pronouns according to their famous birthdays page Jamie was born January 21st 1995 about a month after they turned 17 Jeffrey who was 27 at the time began tweeting them regularly on February 19th 2012 Jeffrey tweeted. I have a crush with an accent a week later He tweeted um Jamie Ryan D has the cutest accent and Jamie Ryan D Well, I do like your accent leading one to assume Jamie may have been his aforementioned crush So it goes on and there's some tweets that I have up on the screen here And then it says Jamie has since deactivated their Twitter account Which makes it tricky to establish context the fans tweeted their reactions to the 17 and 27 year olds Exchange and it goes on to say Jeffery's friend Johnny boy exo a popular trans youtuber back then made several attempts to groom Jamie Showering them in praise and tweeting. I'm starting a countdown till you turn 18 While Jamie was 16 according to her model mayhem profile Johnny boy exo was 26 at the time So when Johnny boy exo tweeted Jamie Ryan D. I'm gonna come to London when you're 18 and we're gonna do illegal things Jeffrey responded am I invited to which Johnny boy exo told him to bring his rhinestone dildo So from one of their last exchanges after Jamie turned 18 One can piece together some context through fans quoting and retweeting and these are the ones that I looked up and verified So it says there are dozens more tweets suggesting the two regularly skyped and FaceTime Please spread this the story ought to be told and examined as one of predation With that said please also respect Jamie's privacy So yeah in those tweets in those tweets Jeffrey star who was 27 at the time was talking to Jamie Ryan Lee who was 17 at the time Okay, so this is where my issue comes in Now obviously that's wrong. Okay. Now Something that Jeffrey star told keemstar Which was talked about on one of the recent episodes of drama drama alert was when asked about his tweets that resurface Jeffrey star said he was just joking. All right. So is that okay? Is that okay to do like One of the problems is is that again? Jeffrey star keeps taking this moral high ground And I I legitimately felt sorry for Jeffrey star last year when the whole drama get-and-happened Because all the stuff for those of you who don't know Or don't remember what kicked off everything with Manny MUA and Laura Lee And Gabriel Zamora and the key to dragon was they were pretty much bullying Jeffrey star. Okay And it's it's really easy for a lot of people to play victim like oh my god. I didn't do anything like Like we all know like Jeffrey star talks trash and I don't care I really don't care that Jeffrey star is who Jeffrey star is but but he was just flourishing in the fact that Laura Lee and Manny MUA just started losing hundreds of thousands of subscribers And we're getting all this stuff and he was talking about karma and everything like that and just relishing in it The the phrase that we talked about the other day was shot in for that. All right taking pleasure in somebody else's pain Okay, but the problem is is that Jeffrey star Keeps acting like he's better than everybody and doesn't have a troubled past Now here's the thing a lot of people a lot of people um who are fans of Jeffrey star are going to say this They're gonna say this but Jeffrey star has grown and he's changed. Yes I absolutely agree, but Jeffrey star is a man in his 30s now And he's calling out a 19 year old kid Like he hasn't even given james charles the opportunity to learn and grow.  All right. I don't believe Jeffrey star should be either I don't think Jeffrey star should be canceled What I'm what I'm here to talk about is the hypocrisy and the lack of empathy and forgetting where you came from And then trying to cover it up by deleting a bunch of tweets And here's the thing like I think the other reason it bothers me so much is Jeffrey star was a mentor to james charles Like I have a 10 year old son. Okay a mentor is kind of like Apparent that you never had or a parent in the industry or the niche that you're trying to um grow in right But like my 10 year old son what helps me monitor like my temper and react when my kid screws up, which he inevitably does Right is whenever i'm about to blow up on him. I pause real quick. I'm like, okay What was I doing? What was my mindset when I was his age, right? And it helps me calm down. That doesn't mean I don't call him out on his behaviors But I don't freak out right and this is an ongoing pattern with Jeffrey star Where he's not thinking about where he came from. Jeffrey star is not thinking about the countless Countless times that people have forgiven him that people have cosigned his bs He has forgotten how many people have stood by his side and given him a second chance Hell shame Dawson did an entire docu series with Jeffrey star to let Jeffrey star talk about his troubled past And what he was going through and everything like that like Jeffrey star was given that platform So to see him do this is james charles is absolutely ridiculous And it's just I I feel like a lot of people Don't talk about this because they're afraid of Jeffrey star and or his fans Which is one of the reasons why tati westbrook was originally afraid to speak up about james charles So with that being said it's something that I will keep touching on is there is such a double standard There is such a double standard In this situation about who jeffrey star is allowed to be the the standard people are holding james charles to Again james charles screwed up right, but like It it blows my mind watching a community just tear down James charles, but then talk about jeffrey and say oh well jeffrey star has grown and learned from them Well, like are you even gonna give this kid a chance? Are you going to give him a chance like james charles has been radio silent for the most part since his apology video Okay, like and people aren't even sticking around to see if he grows if he changes if he learns from this thing Like I I work with drug addicts and alcoholics and I tell them all the time Do not get your expectations too high for people to forgive you it's going to take time You're gonna have to prove them with your actions rather than words All right, but on the other hand too when I talk to the parents I'm like listen, they're not gonna change overnight You need to give them a minute like give them one minute to even attempt to change but I can't help but empathize with james charles because He's got to feel so alone right now because of all the people who have turned their back on him But everybody is sitting over here like jeffrey star is this Amazing mother teresa of the beauty community and it just it doesn't make sense to me So if you're watching this if you stuck around this this long like please take a look at mob mentality Cancel culture Why we're giving other people what some people second chances other people not especially when you look at the Like the gravity of the situation and like what james charles actually did and what he's being accused of You know like I just talked about this in my logan paul video if logan paul a guy who filmed a dead body Can get redemption and still have his career like Can we give james charles another chance? Okay, anyways, let me know your thoughts on this subject down below in the comments below Um, but that's all I got for this video if you like this video Please give it a thumbs up if you're new make sure you subscribe and ring that notification bell And a huge huge thank you to everybody supporting the channel over on patreon You are all amazing and if you would like to become a patron get access to our monthly q&a your name in the credits Some other perks and benefits click or tap right there. All right. Thanks again. So so much for watching. I'll see you next time


Okay, hi, I'm John. I'm doing JavaScript almost every day. I'm a JavaScript developer and I'm going to talk about AngularJS. Basically, if we look at the history of client-side development in JavaScript in 2005, jQuery was born and this was really a tool to change the dough and people, they continue to use it to build apps, but we can do better. In 2010, for example, Backbone and other frameworks, they tried to make us build apps in a more structured way and now there is a new kind of frameworks also like AngularJS which are more like the next steps and they think let's let's see what if today we try to do something completely new and we forgot about jQuery and everything else, what can we do? And this is what AngularJS is doing and I think it's really interesting to see what the future of client-side web development will be.


These all used up 50-year-old hags who were out there screwing are not what men are looking for. I see them. They come to my gym. They lose a little weight. They always gain it back. Yeah. I'm watching them right now. Yeah, my wife went out with a couple of them. All the girls in the gym, they'll go out together some time. She put a picture on Instagram from last night.  They started coming to my gym because they were having divorces. Right? They were... It's funny. They were getting into... They were having divorces. They started coming to my gym and started losing weight. All of a sudden, now they're getting laid out. They're getting laid out there. And a lot of them are like, that's it. They're getting pounded and they just gained a weight back.  As we all know, you're just going to do the same thing you did before in a different way. You didn't heal yourself. You didn't evolve. You didn't grow more mature as a result of your divorce. You didn't grow up and can do it better next time.


Welcome back to Kids Fun Science. My name is Ken. Today's experiment is Leonardo's Arch Bridge. What you need for this experiment is 18 paint stir sticks. You can get those at a local paint store and a hardware store. So starting this off, I'm going to show you how to do it through this little video, but at the end I have some still shots to show you step by step and taking you all the way through 11 steps on how to do it. So you can see you have to kind of very carefully lift up and you know kind of sort as you go and you can see a lot of the bridges are right there. You're going halfway. You go under and then halfway on to the next step. So there's no glue nails or anything holding it together. Only thing holding it together is friction itself and the pure weight of the bridge. So you can see everything's there. You lift it up gently and you can see it goes halfway in between and the bridge is complete. The science behind this is modern bridges are built with high strength materials and carefully selected fasteners. Design considerations include the weight of the bridge, the load it carries, as well as the stress caused by wind and earthquake. Bridge components are subject to tension, compression and other elements. Leonardo's Arch Bridge is amazing because the design is self-supporting requiring no fasteners. Leonardo's envisioned using nothing but large logs to build the bridge. The bridge own weight holds it together which is pretty cool. As the weight is added to the bridge its structural elements are forced more tightly together making it even stronger. Norway actually has the Vinci Bridge which is a pedestrian over crossing that opened in 2001. It's loosely based on the 15002 sketch that is used by steel and wood instead of mason-dury blocks. So cool about this is just a series of wood beams holding it together. There's no nails, no screws, no ropes, no glue, no notches, no fasteners holding the bridge in place, just friction and gravity. Okay so just to show you here if I push down on it that it's going to support the weight but when you pick up one piece it just all falls apart which is pretty cool. So there's nothing holding it together besides friction and gravity. Here are the next steps the set 11 steps if you want to go through step by step so you can see what you're doing and I hope you enjoy this video and remember to click thumbs up and subscribe and thanks for watching.


I bet you've looked at another musician who are like, I make better music than them. And yet they're growing way faster than you and it probably makes you feel terrible. But in my experience, there's so many of you who are making great music, who are also good at making TikToks or Reels, and yet you're still in algorithmic jail. This is probably because you're playing a game that you don't understand. Since how are you supposed to win a game you don't get the rules of. And those rules are how algorithms work. But you don't need to be some neolike matrix seeing nerd to get that is actually shockingly easy to see how it all works. Hell, even a musician who makes country rap could understand it. So in this video, I'm gonna show you how to make connections to other artists so algorithms start to recommend you on Spotify, TikTok, Instagram, and all the other platforms so you can figure out what you're messing up and let the algorithm grow your music. So let's start off here. Algorithms are actually shockingly easy to understand. There's two ways they figure out how to recommend you. The first is user modeling. This is really simple. What these algorithms do is they make profiles of users of the platform and their interests. So let's say you follow 10 artists. They find people who also follow those 10 artists and then they suggest the other artists, those people follow to you and vice versa. It's a hair more complicated and smart than that but I'll get into all that a little later. The second is music genomes. This is where the algorithm analyzes your song for sound and then rates it on a variety of different markers. This is helpful since it can match it to people's moods and it helps to discriminate recommendations. Since think of it this way, let's say you're having a dance party. You wouldn't want to be listening to say, LCD sound systems, upbeat bops and then have that song, someone great come on, you know, where he's talking about deaths and funerals and all these things and all of a sudden the party is fighting to get in the bathroom to end it all from the miserable depression from putting on one of the most depressing songs of all time. Or if you're listening to some classic outcast to set the mood and you're like, hey, Yada, your date and then all of a sudden Andre 3000's new ambient flute album comes on and suddenly your date is asleep like me when I listen to that record. Music genomes basically allow the algo to be a bit more smart and not bring down the mood solely based on artist connections since after all, artists have multitudes of moods but what so many of you don't get is oftentimes when you're in algorithmic jail, it's because the algorithm has absolutely no clue who to serve you to because you haven't given any hints and yet you're blaming the algorithm. Ever think about pointing that finger inwards? I mean, really, you're not even like giving it any good hashtags. You only follow your cousin Paulie who posts about his pickleball league all day and not music and your friend Norman who just creeps on barely of age girls all day and uses the word princess way more than any man who isn't playing legend of Zelda all day should or just as bad you're using ridiculous hashtags like best new music and hashtag music video that tell the algorithm nothing about the people who are most likely to be your fans. So let's talk about making connections so you can win this game. So because these companies mostly model behavior off of other users, a lot of what they do is keep a running score of how many connections that user has to that artist. So if you listen to say Playboy Cardi, you probably already listened to these five other artists, everyone else like you does too, but if you are not listening to one of those five artists, that artist is gonna get recommended to you since it seems like you will be likely to like them. To measure this, the platforms are always keeping a score of your connections to other artists and when people engage with the content of those other artists as a marker to know who they should be recommending. This is why I constantly tell you you need to find smaller artists in your community so you could build connections with them since your score is never gonna be able to get high enough to be connected to Playboy Cardi unless you really pop off, but a small artist that's building up and growing you can get connected to. So let's say you're tagging other growing artists who are around your size on TikTok. You found one to three hashtags on TikTok where if you do a search, you see artists who have fans who would love you of a similar size and monthly listeners on Spotify and now you are interacting in that hashtag following the artists and creators who post in it regularly, you post comments and even video replies. Well, as long as your videos aren't trash, you should start making your way into this algorithm and if you're making videos with your songs you're warm, you should then be getting into the feet of people who like your music and getting connected to those artists and then the listeners will head to Spotify and listen to you and connect you to the best possible music fans, the ones who are listening to Spotify who already jumped over from TikTok, which is gonna really give you a lot of algorithmic connections and now you have connections on two platforms with the people who in this genre enough are scouring TikTok and jumping to Spotify who really are the most passionate music fans which is really gonna get you off on a good foot.  This is so effective because people when they see a bunch of their faves in one pic it often inspires them to share it, make fun of it, make some snide remarks about it but they tag all those people and starts to deepen the algorithmic connection with all of them and kind of create a critical mass. And this often ramps up a bunch of new followers for everyone involved in the cloud bomb as people wanna understand their favorite artist community. I've typed this on the morning after the Grammys, you know, that cursed award show where I am faced with a doom scroll of enough cloud bombs to supply a whole war if cloud was a weapon. Wow, that joke on the bomb. But really, as the platforms analyze when they see a spike of activity of new connections they will often suggest users to follow whoever is spiking in those connections to the followers of the other people connected there. But it's also important to understand that recency matters. Oftentimes this is about who you're connecting with in the present day and on a regular basis since a lot of the biggest artists have a lot of connections since they've been making them over the years and they've been building up their algorithms. So you have to continually be doing content that gets you connected to these artists. Since over time new artists will come around and build connections to these artists and you won't get a recommended unless you're continuing to make new connections and continuing to grow. But one of the reasons this is so effective is that when the artists you're connected to grow, well, if you're connected to them you get recommended continually while they grow and vice versa. Which is why you hear so many artists with millions of streams say so much of it is algorithmic playlists like Discover Weekly and Release Radar as well as those interest-based algorithmically programmed ones. But I also should say whether you get on user playlists that fans make or editorial playlists, one of the main benefits you get from these is that listeners are listening to you alongside of a bunch of other artists and building algorithmic ties to you which is often what does the best building for all the algorithmic playlists. So everything here in the ecosystem matters. Since when you have ties to these artists their growth is often your growth. We should probably talk about the strongest bonds you can build. So it's obvious to see why one of the biggest music marketing opportunities today are doing features, collaborations, remixes and split releases. Since when you do these you live on the artist page and you go into the algorithm with them and endlessly convert fans over as you're getting their fans to listen to you and vice versa as you spread around the internet and your song goes and gets new listeners throughout the lifespan of this artist. But also when fans share that artist you get tagged with that artist continually racking up even more connections. And when people are loving that song they could have an easy hint to go deeper on you and you're already part of a song they like and in the community with an artist they enjoy. And if you missed my full video on that I highly suggest you watch it as it's in the description below. But truly the ties you get to the artist you collaborate with help you grow algorithmically whether it's on the YouTube browse page, Spotify radio, Discover Weekly, recommendations on Instagram and TikTok for years to come which is why they are so huge and why everyone is investing in them with budgets. But let's go over to those genomes we talked about before and talk about how they figure in. Most of the platforms don't use genomes but the ones who deal with sound and recommendations often do. And since this is how some of the streaming audio sites get more sophisticated in their recommendations. Seeing as the algorithmically programmed playlists like Furry Love or Skiing Orgy or whatever obscure thing Spotify makes you well those are a huge part of what you see in big artist streams these days. These genomes need to know why people skip some songs from artists that they usually like the song of and this is where the genome comes in. If you go to musicstacks.com that's a website that aggregates Spotify's data you can see some of Spotify's data on your song or any song for that matter and what we'll often see is Spotify is playing songs with similar scores and dance ability or say instrumentalness since that'll be really high in an algorithmic playlist like ambient music for dirty dorm rooms. You know you rock that one on the reg. But these algorithmic playlists are often playing similar things for people and keeping a similar mood. Basically genomes are a check on that the artist isn't working in a different mood to make sure that the algorithm itself doesn't mess up the vibe. But there's some small complications to all of this as the algorithms pick up so much today with AI detections. The songs in the backgrounds of your video are like hashtags and they regularly serve people who use the same song to make videos to users who watch the video with that song. The same goes for the words in your video that are in the title or even what you put in captions is they'll often try out similar subjects to people who've engaged with the subject a lot. But let's get into the compounding effect of all of this. You've set up all these good algorithmic connections. Let's say you're doing a tour and have a collab with another artist or you two just constantly talk about each other and go live together. If fans start to tag you two together the algorithm on each platform starts to recommend you more and more. And as you get new fans those fans have pre-established connections to listening to and discovering other artists which you then start to get recommended with. And when each of these artists gets bigger if you're still connected to them you will get recommended of their success and continue to grow. This is why the artists who do what I recommend and continue to stress consistent sustained promotion as well as collaborating really are the ones who grow fast. This also brings you to listeners' attention on short form. Since if you're regularly getting tagged with them the chances you come into a potential span algorithm grows more and more and gets you connected to other artists and the algorithm learns what to do with you. But the way this compounds is when people are tweeting, Instagramming and doing at tags about your collaboration or the shared show you have or whatever you did together that spreads from platform to platform. Just think about it this way.  But one of the things to keep in mind and why I love this so much is these are the most adamant music fans who are often the ones who listen to the most music and that's why they help you grow so much more than buying ads. So to do this work effectively you need to continually be finding artists that are of a similar size or just a little bit bigger and connect to yourself to them. If you do your community research and people enjoy what you do and are constantly working to tie yourself to your community and actually pay attention to doing this at scale meaning you don't try to do this with artists with hundreds of thousands of monthly listeners when you only have hundreds well this is gonna get you a great algorithm that will hopefully love you. But you wanna know more specific on what you do each day to get this to happen. So let's get this out of the way. The first thing you need to do is figure out your micro genre and niche and for Crisik for those of you who make fun of how I say that word both pronunciations are correct. So turn in your grammar police badge to the local nerd station and take notes instead of coming for me in the comments you dorks. Okay but first you need to know that micro genre and what you sound like and if you don't know that I have a video on how to figure that out in the description. After that you need to watch my video on how to find community and grab my free spreadsheet to collect some information which is also in the description. Let's assume you've done that so now you have a list of tons of artists who are similar to you in sound and your niche micro genre. And let's also remember it's not just about sound sometimes you can even add niche identities. This can be queer or if you're Asian or if you sing songs about hockey or other artists who don't necessarily sound like you but you have something in common all of this can get put into an algorithm and get recommended upon in this day and age. So let's say you got a hundred of those on a list now because you really believe in your music and are hardworking and really wanna make your dreams come true. Now we wanna follow all those artists on TikTok, Instagram and YouTube as well as any of the short form text sites like Threads, Blue Sky or whatever we're calling Twitter right now. You wanna start engaging with these profiles and commenting and doing video replies to teach the algorithm that you are in this community. Now watch the hashtags these artists use and click on them and search for them. When you see ones where artists are similar to you that's the ones that you should be using in your own videos but also regularly look at this search and comment and video reply to videos in this and interact with the artists who are part of this community and really teach the algorithm that these are the people you should be being shown to the fans of. But most of all, reach out to the artists you find, collaborate, do shows together, do things online together like going live and chatting. I don't know, get creative but continue to get fans to have conversations about you and with you and the other artists you're fans like who are on the way up and most likely you'll all build together and all will work out and you'll get out of algorithmic jail and everyone will hold hands and everything will be great and won't that be wonderful? Okay, so here's the thing while you just learned all about how algorithms work if you really want to grow your fan base you need to understand how to blow up on YouTube which is on the video that's linked in the screen right now. So make sure you watch that next if you really want to level up. Thanks for watching.


Equivalent fractions are not too hard to find. All you have to do is multiply the top and the bottom by the same number each time. So come on, remember these steps. It's time to put your multiplication skills to the test. The word equivalent means equal to. In other words, the same as. In this case, finding fractions that share the same value. In order to find the equivalent fraction, you need to dust off your multiplication and division skills. Visually, it could be represented like this. How are they the same you ask? Well, once you multiply or divide the top and the bottom parts of the fraction by the same number, the value stays the same. Remember, whatever you do to the top part of the fraction, you must do to the bottom. Here's a note. You must only multiply or divide. Never use addition or subtraction to get an equivalent fraction. Let's try it with these. How did you do? Remember, the key to success is practice. That's what makes it perfect. Now let's try with these. Pause the video and work it out. Did you get them all correct? So now you know, you can make equivalent fractions by multiplying or dividing the top and the bottom parts of the fraction with the same number.


Welcome to Toffy TV, it's the Everton News Daily. Everton have received an apology from the PGMOL chief Mike Riley following the awful decision in Saturday's 1-0 defeat against Manchester City. Rodri's, blatant handball, which was seen by everybody, it shouldn't have needed VAR, but Chris Havannet on VAR decided not to give the penalty. The Premier League had told Everton before the game had finished, it was a mistake. It's now come out, Mike Riley's ended up having to apologise to Bill Kenwright, the story says, Denise Barabax and the Hell of Frank Lampard. It doesn't really mean anything, does it? The fact we all know it was the wrong decision, we all know it was a pathetic decision, the whole world knows it. It doesn't change a thing, it doesn't mean everything can get a point. It doesn't mean, you know, they'll start favouring us because, quite frankly, we had a decision that was probably worse than this the week before against Southampton and no one said a word. Rymauu's handball at 0-0 in that Southampton game in the first five minutes was clearer than the Rodri one and no one said a word because it was Southampton if you ever knew case. But this was obviously a big gain because it affects Liverpool at the top. People have made the fuss over it. But it's nonsense, it's the kind of awful, awful decisions we see as Evertonians. We see a lot of weeks, to be honest with you. They can name a handful of them already, just off the top of my head this season. The LaRice penalty that we got at Goddison, it was overturned. And when it was a penalty and the Shelby challenge from behind, which was there being a red card and, you know, we had Rymauu last week, we've got it. There's just loads of them. But what can you do? We've always, everything can do is continue to highlight it and not shy away from it. And I think a lot of people, even not Evertonians and supporters of other clubs other than the ones that are favoured in the Premier League are getting a little bit fed up with it now, is that it's almost cheating and blatant site, really. And I've seen the word corruption mentioned many times. Whatever it is, it's ruining the game and it needs to be sorted out. VaR isn't the problem, the people using it are the problem. And there's got to be reasons. If you look at that as a referee and you can't see that to penalty within three seconds, then something else is going on. So it needs to be got to the bottom of quite frankly, but Everton have had the apology, doesn't make me feel any better. I'm sure it won't make you feel any better if you're never tone in. What can we do? We've got to get on with it. Labour MP Chris Bryant has recommended that Everton should cut their ties with Alasher Uzmanov. Obviously Uzmanov is part owner of USM, who are heavily sponsors of Everton. He's had a lot of his assets frozen by the EU and the UK are expected to follow suit and freeze his assets there. And Labour MP Chris Bryant saying Everton need to get ahead of it, cut the ties with them now and step away from the situation. It'll be interesting to see what Everton do, obviously, over the course of the next few days. With the tension, obviously the war ongoing with Russia invading the Ukraine. So we need something needs to be done. Vitaly Michalenko has actually spoken out on the war via the social media posts today. He said that the truth will defeat propaganda. On February 24th, the Russian Federation attacked the territory of the Ukraine, a sovereign European state. They did it treacherously while everyone was sleeping. The aggressor has launched a powerful and false propaganda that we must fight by telling the truth to the whole world. Today is the sixth day of the war. Civil people are dying, houses and squares are disappearing, but our faith in victory is not. We are Ukrainians. We are one defending our land. We ask for your support, obviously. Remain to be seen whether Michalenko was available for selection for Everton and Borymwood on Thursday. Obviously, events taking place in his own country are weighing heavily on his mind, as you would expect. So, you know, we hope that this war comes to a swift end because there's no there shouldn't be any place in this world for war in 2020, quite frankly. Hamas Rodriguez, as again, said he is open to returning to Everton again via this Twitch stream. I was asked about it and said, why not? I have no problem with anyone there. I really enjoyed it. The fans are great and I'd be open to go back. I didn't want to leave, kind of thing. I can't see anything in this. This is just him answering questions and he might be answering them perfectly, honestly, by saying, yeah, I wouldn't mind going back, but this isn't something that's going to happen. That's for sure. And finally, Everton have been linked with a move for Montreal Impact midfielder, Jordi Michalovic. The 23-year-old USA International has got six international caps, scored four goals and had 14 assists for Montreal Impact last season. MLS season starts again later this month. A lot of clubs monitor them, but reports today saying that Everton's relationship, sorry, Kevin Thelwell relationship with MLS and understanding that is Everton's new director of football is interested in this player and knows how good he is. And a favour and 8 million euros has been mentioned, like I say, he's been capped six times by the United States. So already the MLS links are beginning. Kevin Thelwell, who officially started Everton today, but rarely starts tomorrow, he gets his DOF job on the way and hopefully he can start putting in the structures, get a recruitment team in place and we can move towards the recruitment for the summer while staying up. Obviously that's the first priority. That is it for the news. Make sure you give the video a thumbs up. Subscribe if you haven't. If you want more videos, join us on Patreon. Link is in the description. See you later.


Hey, it's Missy! Thank you for watching! Today's tutorial is a headband hairstyle with two fringe braids, so I really hope you enjoy the video. If you're new to my channel or you haven't subscribed yet, make sure to subscribe down below and let's get started! With my part on the right side, I'm going to divide out a section of hair from the part down to the left ear, then I'm going to divide this forward section into two sections, clipping away the forward hair. With the back section of hair, I'm going to start a fringe braid, so I'm picking up a section near the part dividing into three smaller pieces, and I'm going to start by crossing the right strand over the middle, then cross the left strand over the middle. Now I'm going to cross the right strand over the middle, pick up a new section and cross it into the middle strand, then I'm crossing the left strand over the middle, picking up a new section and crossing it over and into the middle strand, and I'm just going to repeat those steps, continuing the fringe braid, crossing the side strands over the middle strand while bringing new sections into the braid until it reaches my left temple. Now I'm going to stop adding new sections into the braid and just continue braiding the section down to the ends, and then slide a bobby pin over the bottom. Now I'm going to let down the front section of hair and braid this into a second fringe braid so I'm picking up a piece near the part and dividing it into three smaller sections and I'm just going to cross the side strands over the middle strand while bringing new sections into the braid until I've brought in all of the hair from this section. Now I'm just going to continue the braid down to the ends and slide a bobby pin over the bottom. Now I'm going to clip away the hair from the crown on my head and tie the two braids to a small section of hair at the back of my head with a clear elastic band and then I'm just going to let down the top hair to hide the ends of the braids. Thank you for watching. If you enjoyed the tutorial, make sure to click the thumbs up and be sure to subscribe to my channel. If you haven't yet, you can click my little picture right up here to subscribe. That way you won't miss out on any future videos and I will see you next time.


This paper quantifies the aggregate contributions of collective action in pursuit of the sustainable energy transition in Europe. It estimates the number of initiatives, 10,540 projects, 22,830 people involved, 2,010,600 installed renewable capacities, 7.2 to 9.9 gigawatts for 30 European countries. This article was authored by Valeria Janosvanets, August Whirling, Heather Argenda-Pordler and others.


Okay, head around who watches this video. Today we are doing a knowledge transfer about custom work package. It's a special tool which allows to package ready to fly Jenkins images as work files, as docket images, or as Jenkins for the runner images. And we have four contributors on the call, me, Rik, Sladin, and Christian. So just to provide some context, I forgot to share my screen, right? Okay, and just to provide some context, we have a number of cool summer of cool projects this week. Yeah, and one of the projects is related to a custom Jenkins distribution build service. So basically a way to build Jenkins custom distributions and to share these definitions. And at the moment this project he wants to be based on a custom work package. So this is a tool I'm presenting today so that the project team can get more information about how it's organized, because most likely we will need some patches on this tool. Just a second, I haven't remained myself. Okay, just to provide you some history, a custom work package has actually started as a test tool. So we have a number of test frameworks in Jenkins like Jenkins Test Harness. It's a unit and a functional testing framework, also acceptance test harness, which is another integration testing framework, which is based on various technologies, including Selenium, Docket, and big test frameworks for Jenkins as a work file. So they are designed to basically start a work file, do some configuration and get running. And there was a long program for us when we're developing fluggable storage and other components. We do a modification inside Jenkins. For example, we changed the configuration of the system, but we still want to run a standard test suite. So one of the ways was to just write a lot of code but other way was to actually supply Jenkins for files and blackboards, so that to embed all the configuration, all the plugins we needed right inside the distribution. And this is the way we have chosen because it provides a lot of additional benefits for users. There was a blog post, which is currently screen sharing, built your own Jenkins, introducing custom work docker packages. So it has been published in 2018 right before Jenkins fold and this blog post basically summarizes how we could build it. So custom work package is a tool which is driven by a single configuration file. This configuration file allows you to specify a work file you would like, a set of plugins, also additional piece and properties you would like to define in the Rubyhooks or Jcast, it's Jenkins configuration as code plugin. And now there are more features. For example, for plugins, you can not only use released versions, you can also take versions from incremental repositories like from pull request, you can just build the component on your own using commit specification and the custom work package will produce a component for you. Same for work file. So here it's not documented, but actually you can also write components. Well, it's documented somewhere here, maybe in the demo. Actually, let's open the repository and I will show it there. Okay, so we have custom work package repository and here we have a number of demos, which can also help. And one of the demos is for example, all latest core, which shows how you can of the right particular components in Jenkins. So it uses maybe, so let's take this one. So here you can see that I use non-standard Jenkins core, where for example, I write a remote in library, I write a step by recent versions. So I can just build everything from master branches and have a kind of boilerplate for the entire Jenkins setup. And obviously I could test this boilerplate setup. So it's one of the purposes of this repository. What I have been referring, yeah, we have Jenkins as harness, we have acceptance as harness, and also we have plugin compatibility tester. So plugin compatibility tester is also a tool, which basically allows to take a set of plugins and run the test against each other and against the Jenkins core test units. So again, you can add consumer work files at the end. And that's why there is a lot of options for integration testing because we actually use that in Jenkins test pipelines at the moment. So this is how it looks like from the interface part. Yes, you just define a single configuration. You can also define, some of this is a demo for configuration as core. So here you have a number of plugins you install. All of these demos are a bit obsolete. It would be great to update them, but they should work. And here, for example, we inject the configuration as code YAML. So you can inject the test text, but here you just take the directory with pass. And here, for example, he's cost YAML, which basically uses Jenkins configuration as code plugin to do some configuration. So here it's authorization strategy, it's security realm, it's used to users and other configurations. And we can add more using the J-Cask engine. Same for Groovyhooks, you just provide the pass and everything gets packaged directly into the Word file or in Docker image. So it can be redistributed as a part of the package. Okay, any questions before we start having to enter the code? Okay, that's good. No, no, yep. Okay, so one disclaimer which I should make, right now there is customer package the one to text page. And there is a 2.0 alpha where you plan to do a lot of breaking changes in order to provide better configuration, et cetera. And I do plan to release the final version of 2.0 until this summer is over. So if you need to change something in custom Word packages during your J-Sock project, you're not restricted by binary compatibility, by configuration compatibility and we can apply more drastic changes. So I deliberately do not change that. And if you need to contribute something, this option is open. Okay, just a second, yep. So let's go to the code then. How it's implemented. It's actually a multi-model Maven repository. We have just a few models here. So this model is main library, also CLI because customer packages was initially designed to be used as library as a CLI tool. And also it provides a Maven plugin. So you can put it into your Maven builds. We have Jenkins-FailerRunnerTest. It's basically a part of the Jenkins-FailerRunnerTest framework which allows to do additional verification of the stability and to ensure that Jenkins-FailerRunner packaging is still operational because it's a lot more challenging than the standard packages because of many moving parts. Custom Word packages will basically rebuild Jenkins-FailerRunner repository for every custom distribution. Okay, I will open my IDE. Just a second. Why does it show Jenkins-FailerRunner? Because I opened the run repository and there's tools, customer packages. So we may need some time. Is the screen big enough for you? Yes, it's big enough. Okay. So it's full-casual, so there might be some issues but we can proceed. First, I'll start from CLI2 just to show you how the interface work. So in CLI2, basically it's just two files. So first file defines a lot of CLI arguments. So for example, you can supply configuration, you can supply Maven settings. For example, if you want to use a mirror, like we do it on CI Jenkins Ion, then various temporary directories, versions to be set, et cetera, et cetera. Results support for build of materials. It's a JEP 3.0.9, I believe. So it's another YAML configuration format for defining plugins. Builds support environment, mostly for Bones structure as well. And then you can install artifacts if you want to build an appeal and use custom update center if you want to download custom plugins. You will talk about some of these options later, but it's just a configuration interface. The most of the configuration still comes from the config file which I've shown you in the beginning. And the main file is actually pretty straightforward. It just processes all these options, creates a configuration for custom work package and then triggers that. If you take a look at a Maven plugin, it's basically the same. It just provides Maven plugin flavor, but basically it has two modules, one for packaging, another one for build, and basically all of them just pass configurations. So yeah, it's different code, but the logic is the same as the AOC like. Now let's go to our main repository. It's custom work package library. So this library, it's basically the tool itself. This library is pretty big compared to other components. So what it has? It has configuration and your configuration, you can see that there is a lot of files. Why is it done that way? We use a snake YAML in order to do configuration mapping. So basically we find a number of these config classes and then everything gets converted automatically to our objects. So that's why there is a structure. Okay, so here is our root element for example. Here we define that we want some build settings. We want to define a package like version, et cetera. We want to specify a work config. We want to specify plugins, assistant properties, groovy hooks, configuration as code. So basically what you have seen on the top level. And all of that expands to different YAML files. So you can see a lot of them here. There is also essentials YAML file which has a bit different format. It's being used on CI Jenkins IO. It was started for Jenkins Evergreen testing. We still have some components which we use this YAML format, but in principle it's just a bunch of configurations. So what else do we have here? I think that we should start from the builder class. So builder class is actually a heart of Jenkins Cloud Runner and this class isn't pretty. So this class, I mean this project, sorry, I have to answer. Sorry again. Okay, so here what you can see that, so builder, it just takes conflict how many lines we have? Just 300, so it's not that big. What it does, actually build, it's the main method. So what it does, it just takes configuration. We will need temporary directory because some of our packages creates a lot of files during the build and we use this repository. They will create build route. They will load some configuration files. So there are multiple ways to supply configurations. So the first way is to just package a conflict YAML. There is also build of materials and there is POMX ML. For example, what I do in my instances, I will open, for example, yep. The second is the record's Jenkins Server. It should be good reference implementation. So here, if you take a look at the package of conflict, you can see that there is no plugin definitions. Why? Because I actually supplied it through POMX ML and POMX ML is managed by a dependent board and other tools. So here you can see that there are dependencies supplied by a Jenkins plugin bomb. So yeah, I don't really manage dependencies. Here as well, except a few ones. And yeah, this file fits the configuration in my keys. But the default way is to actually use package of conflict. And right now in the custom work package of 1.0.x, you can actually stuff on the one way of supplying plugins. You can supply them from both YAML files and POMX MLs, you can do overrides and other things. So it's something in the scope for the next session. So after reading all of the stuff and after reading of default configuration, we verify this configuration. We mostly check that we have a way to retrieve. Let me just show it to you. So yeah, basically we check whether a Jenkins plugin is installed if a Jenkins section is supplied and we could have more verification configurations, but right now we don't check that. So the logic is quite straightforward. And as developer tool, if you misconfigure something, most likely your instance wants to start up with some awkward exceptions. So here what we do, we then we build current plugins. Again, if no configuration, we just fail. Say for here, I'm not sure why it's not in verify config. And then we start preparing our environment. As I said, we can build components on demand or we can retrieve components, for example, from pass instead of update centers. So here there is a logic which basically goes from these dependencies and builds them if needed or copies them if needed with configurations. So it just prepares the environment. If you're curious how it happens internally, yes, there is a lot of Maven magic, but basically customer package under the hood it involves a lot of Maven things. So same for library patches. So here we just prepare all the built environment. And same for resources. For example, if you have groovy scripts, if you have JCask files, et cetera, again, we extract this resources technically we can build this resources or check out them from external repositories. Not all of the source options are supported right now, but it works. And what it produces, let me find the demo. And this, I'm just trying to find something where we have produced built parts. Yeah, okay. So basically we get, so this code also doesn't build anything. Okay, so what happens if on these stages we just create all the start blocks, we cache them in Maven. And after that, the next stage begins where we actually generate a poem. So it's a pre-built poem. A pre-built poem means that it will actually define how we build the work file for an instance because we need to package everything inside. And here you can see that basically it's just another Maven for XML. We could generate that. And here, for example, we put work files, we put plugins, which we want to inject. And after that, we just invoke a Maven HPI plugin, which produces a custom work. So it's a first stage of the build. That produces a work file, but this work file isn't ready for final consumption because we still need to update some patches. For example, we need to inject system properties. We need to inject everything in the function. So basically you can see what happens here. So we take this pre-built work file, we explode that. So here, and after that, we start replacing resources. So for example, we add system properties in the configure. How we do that, we just modify a WebXML file inside the configuration. So here, if you go to web-info, you can see that there is WebXML file. And here, we just do some modifications. So you cannot see them because likely we didn't do it for this demo, but if needed, we will just inject additional entries in this file so that our configuration is applied. Just a second. Yeah, there is no example right now, but it just happens through the standard system properties engine. Do we have it? Yeah. So yeah, I should have built at least one demo before. The repository, okay, let's try to build that. Meanwhile, do you have any questions or are you completely lost? You know, so far so good, I guess. So for example, let's try to build the demo. Okay. So here, just make clean build. Clean. So yeah, here's the work package in practice. So it's a CLI tool with a lot of main things. Hopefully we won't need to build anything for this demo. So here we just started this package and work right away. So we can just go to this repository and we can follow the built ideas. So yeah, here we took this package config so we packaged everything in the pre-built, still builds everything. So yeah, it will take a while. So nothing is really fast here when you run on Windows and CentroVirus. When you run on Linux system or when you run in Docker, it's quite fast. But yeah, by default, it just produces insane amount of temporary files. So if everything needs to be checked with Antivirus, it's quite long. Okay. So let's go back. We have our file is produced. So this is a file which was produced for this demo. We share, we use for pre-packaging but here's our exploded work file. And in this exploded work file, let's take a look what the conclusion was in the region. Yeah. So in the bottom, you can see context param param Jenkins install wizard. Obviously, when I was writing tool, I didn't bother to pre-tify XML. So it's something like that, but it works. So we just inject parameters and these parameters will be consumed by Jenkins engine. So that on startup, it will consume them and the right system properties. Right now, this engine is available only to plugins but in the recent weekly, we made it genuinely pay for plugins. So we can configure the plugins in the same way now. Okay. So we built our work files and we can also take what else changed there. So for example, if you go to web inf, you can see that we injected Jenkins YAML-D directly inside the web inf. So it's a resource within a work file. If we had Groovy hooks, I guess we don't have a Groovy hooks for this configuration. Yeah, we don't. We would have injected them into a web inf as well. So this basically produces our work file which is alternate for execution. And after that, we will still need to build this file again because we need to package this work file into a single distribution. So let's go back to our builder code. So yeah, there is a lot of logic here but basically we hit something like that. So you may also see that we also produce a bomb file. Right now it's not really needed like this. Where did we put it? Okay. So yeah, here's our bomb YAML file. So basically it's a JEP format which includes configurations and plugins we would like to include. You can see that this bomb format is a bit messy. So for example, the plugin installation manager tool has a better definition. So in the future we'd rather prefer to generate formats which are close to plugin installation manager tool. But still it kind of works. So what else happened in this phase? Actually nothing specific. Then we built Docker if needed. Docker is also a default functionality. And for Docker, yeah, there is a lot of magic but basically we could generate a Docker file. So here's a Docker file. Again, nothing pretty here right now because in this Docker file, we just need to write a work file by our produced test example. So it's easy and it's quite straightforward. And after that you have options to even keep these files as is. For example, if you run inside Docker you cannot just build Docker inside Docker. But if you want, you can actually build it locally. So for example, this demo actually runs the build. So if you open my build log you can see that actually the script also invoked Docker build and produced the final image for me. So yeah, right now there is nothing truly complicated there. So if you open the code you can see that there is Docker file where it just passes the work file and actually that's it. So and it takes the work file and checks it inside. It's not that good for performance. It would be better to unpack everything. We do it for Jenkins file runner but right now we do not do it for Jenkins work because we follow the standards format. In the future we could do much better here. Okay, so let's try to launch this demo if you want. Wish, so do we have something? Okay, so basically if you take a look at the Docker file it's just transit. So nothing really interesting I won't even spend time. But yeah, this is the idea. We can inject code directly into a work file so that work file is redistributable and then for Docker images we keep updating that so that again you get a Docker image with everything embedded. It's a bit more complicated for Jenkins file runner. So for Jenkins file runner it's not enough to just add components because Jenkins file runner manages extension points. It also has some caches and it will have more caches to feed up the startup. So long story short, the depository needs fully built. So when you build with Jenkins file runner just then you have a demo for Jenkins file runner I want to launch it. So here you can see that we actually specify not only Docker base we also specify Jenkins file runner base but again it will rebuild the repository and by overriding properties, et cetera. So if you're familiar with Paginton the test code is approximately the same. So here it just creates settings it injects the configurations it sets additional options for main build it generates the image and then it generates Docker file and again it builds it. Just a second, actually I can show it. No, I cannot because file son of oopsies that here. But here you can see some examples for example this is checked out repository for that and for output target. Yeah, there is basically Jenkins file runner produced as a build. So if you want I can launch it later but yeah, right now it's out of the context let's say it will just produce a binary or a Docker image. And this flow is actually updated significantly because right now there is ongoing work on Jenkins file runner. So for example, last time I modified the flow it was around one year ago and after that we introduced a number of features including Docker packaging, including back layout including vanilla images and dependency management. So most likely customer packages needs a significant update to be effective for Jenkins file runner but it's technically available. If you wish to try, you're welcome to do that. I know that Rick uses both customer packages and Jenkins file runner in his CLI. So maybe you have already hit some issues and if you want to contribute something more than welcome I spent a significant part of the last months on recovering the Jenkins file runner build flow which was a bit abundant. Okay, let's go back to customer packages. Any questions, any additional information I could provide to simplify your project? So I'm guessing that this would be included as a library right inside the customer distribution service because we don't just the YAML file and we can just do configuration dot builder and then provide the YAML file. Yeah, so it means it would be used as CLI. In addition to CLI, we have a Docker packaging for Jenkins file runner. So here just the package in the Docker builder. So basically it packages Jenkins file runner, sorry, customer packages in Docker. It also offers some additional configurations. This image can build your work files and source docket files. It doesn't really build anything inside in addition to that, just if this docket file. So here you can see that you basically inject a customer package, we have entry point which is it's CLI. So the usage is quite straightforward. You just pass it as a volume. Just a second, should be in documentation like this. Oh, maybe not. I was pretty sure that it's actually in the documentation. Just a second. Now actually the usage in Docker is not documented right now, but it's pretty much the same. You just need to pass volumes to write place. And then the tool will build the image for you. So if it helps in your environment instead of using customer packages as CLI tool, you could use it as docket image. But in principle, it's your choice. It doesn't have too many advantages on its own. So what else could I do for you? Oh, one more question I would ask was that would we be making any, I think we raised this question in the previous meeting which we had. So once I download the Wi-Fi, I cannot make any changes to the versions or the plugins and they cannot be upgraded. So I think if you could elaborate more than that or is that enough? So is there any work around for that? Yeah, I want to bring a solution to my business. So my team, but we want to have a solution we hope for that the bundle of the plugins can be upgraded. Yeah, maybe we can support this bridge future feature of, maybe we can put those plugins not as a bundle of the plugins. So do you have any thoughts about this, Oregon? Yeah, so let me just show you one of the, let's just go to the repository of what we've shown today So here we use dependent bot. So dependent bot is used to update these dependencies. But first of all, number of dependencies is going to shrink because we move everything to build off materials. So hopefully I won't need to manage the conflict too much. And another thing that in the future, we may not need dependent bot for that at all. So why use dependent bot? Because I just cheat and I use existing tool. If plugin installation manager supports updates on its own then you just won't need that. You can create your flow without dependent bot without similar tools. So just by using plugin installation manager tool which can show updates right now. But it's quite trivial to create a code which would submit patches. And for example, I already did maybe in plugin for incremental versions. So for incremental versions right now you can just use invoke, sorry. You can just invoke maybe in plugin and it will update versions in your plugins TXT. And well, it's not a rocket science. We can create something like that for YAML files and to use it efficiently. So you don't really have to use Pomex ML in order to implement plugin updates. It was just a bit convenient for me. And it's useful for example, in this particular case because I use this Pomex ML not only for customer package. I also use it for development and because this repository is largely configured with Groovy hooks. So for example, you can see scripts, et cetera. And the magic here that in scripts is actually a maybe in submodel. So when I open this project in IDEA I get automatic syntax highlighting, auto completion, et cetera for Ruby hook development in Jenkins. And moreover, I can even debug these hooks. So that's why in this repository I will like to stay with Pomex ML approach. But in general, it's your turn. It's your choice. Okay, so once we have the YAML file we can say that we can develop it and maybe do just update the YAML file of whatever plugin versions are there as in when the plugin updates become longer. Okay. Yeah, there's a lot of tools which allow patching YAML files. For example, already created a tool for Jenkins infrastructure. So now if you go to CLA or for example, Jenkins, for Jenkins, for repositories. Yeah, there is a lot of YAMLs there and these YAMLs automatically update it using the tool. It's by Olivia, so it's just a matter of coding. Okay, sounds good. So do you foresee any patches being made to customer packages for this project or is it pre-used as it? I don't know. So it really depends on what you need because for example, if you want to add theme management then we will likely need to support something like that in customer packages. For example, we can check whether a simple theme plugin exists and if yes, put a file to proper locations. Same we could do for pipeline libraries. So pipeline libraries could be also integrated into bundle. So that you will get configuration as code. Right now I do it one another on my instances, but it would be cool if it was a part of customer packages. So for example, if in your custom Jenkins distribution service you support managing pipeline libraries, then again it could be a good option for you. Okay. Yeah, those were my questions on my end. I'm good. Rik, Risenan? Another from me? Yep, neither. Yeah, so if you want to see more examples how customer packages manages repositories. So for example, there is Jenkins Iorunner. It's a repository for Jenkins Iorunner packaged by customer packages. And most likely right now it needs a serious update because you haven't touched it for a while and the plan to update it, but in principle, each of the work and you can see how it's used in practice. So for example, there is pipeline libraries, there are Groovy hooks and this instance basically try to emulate Jenkins Iorunner and then it also uses Pomex ML. So it's not really aligned to if you asked me about plugin versions. Just close the latest versions and this repository hasn't been immigrated to bill of materials yet. I guess it's my next stop. This is an up-of-bounds disaster. Okay, it's pretty much like that. So yeah, if you need to make any purchase in customer package again, I leave all options for completely breaking changes open. I'm not sure how much time will I have to work on customer package on my own, but yeah, maybe I will be doing something mostly in the scope of a Jenkins Iorunner because I want to improve the flow in order to improve performance of Jenkins Iorunner. Okay, anything else for today? Okay, so hopefully it provides you enough information. If not, I will try to periodically join the meetings and I'm available in the charts. Then I will just stop the recording and I will publish this video maybe tonight. Then, Sladyn, if you did notes, you're welcome to contribute some patches to the repository's documentation. We can keep it up to date. Okay, that's it. Thank you, Oligo. Yeah, thanks everyone. Thanks everyone. Thanks. Bye. Bye.