the fans know this is it and he got an ovation now whether that affects how he's gonna make his decision he there's there's no place for him here okay I don't know if there's a place for him in the NFL I don't know what he's gonna decide to do maybe he will play somewhere next year maybe he'll be in Denver maybe he'll find a way to stick her in the NFL somewhere but you know he's never gonna wear a giant uniform again unless for some reason he ends up playing that last game of the season against Philadelphia but you can't take that chance is that you had that rare moment of the NFL where you get to say goodbye and think of all the champions from the 07 championship of the 2011 championship right Brandon Jacobs never got to say goodbye Brad Shaw never got to say goodbye you know he got released and we pulled up the show and he said goodbye you know Victor Cruz you know he's he's in Chicago trying to make the Bears right OC human Yorah you know bounce around Justin Tuck is everybody Oakland Raiders literally everybody they but you think about the great players from that era of Giants football pretty much all the Michael Strahan retired at the end of the Super Bowl but he didn't get a chance to say goodbye to the fans after a home game you know he won the Super Bowl the ultimate prize but his goodbye was like at the parade afterward but there was there wasn't that walking off the field where the fans can show you the love thank you Michael Strahan Tiki Barber was just goodbye one minute he's here the next minute he's gone one minute he's here next minute you know he's all he's in front of a camera Jason Sehorn one minute he's here the next minute he's gone so it was fitting it just doesn't happen that way you don't get those Derek Jeter moments you don't get the David Wright coming back to play a game and everybody gets to talk about how it's David Wright's goodbye right you saw it in your lifetime too with you know Mario's goodbye in Pittsburgh or you know Larry Bird in Boston you know you get that moment that happened football that doesn't happen football you get dragged off the field you get caught you get released you get traded to a team a thousand miles away that doesn't care about you interesting it's it's so typically what I was just looking cuz I thought I thought that there was one but I doubted it even like that the player of my youth as a Redskins fan you know Art Monk took his last snap for there was a jet I remember and then an eagle and yeah no member yet that this is a guy was with the Redskins for 13 14 years wins a few Super Bowls and then you know Johnny United's playing for the San Diego Chargers Joe Namath playing for the Los Angeles Rams Franco Harris playing for the Seattle Seahawks yeah that's the Michael Jordan playing in Washington right I mean that's it's crazy and sometimes you get the goodbye and sometimes you don't but a football you rarely ever do and so he got that so I thought that was pretty special I for a giant fan I don't know how it translates Peter you've been here for a while you got to know him a little bit and I know Andrew's an eagle fan but he got to know him a little bit that it's it's special to be able to have that moment and you can see how emotionally was he incorporated the fans into it here some of the comments he had after the game well he remember about Sunday think probably just the fan you know the fans and the chance and and the awkward feeling of standing there on the sideline kind of a circle around me everybody looking at me and staring at me and a camera on me and not feeling real comfortable in that in that circumstance but just you know walking you know kind of getting taken out and and they're in the fourth and just having all the all my teammates come up to me and say something a little hug so you know you appreciate all those guys and and and everything they've done to you know get this win today I'm out of the field to have the kids watching him play it's special I think it's special that you know my kids you get to come and watch you know watch some games I don't remember my dad playing at all he retired I was four years old so my brothers had memories that they always kind of talked about it you know in the locker room and around the games and and I don't remember it so I try to bring bring my bring my kids around as much as possible bring into some games I got my youngest son won't won't remember any of it but you know at least have a picture to show him one day picture video DVD a lot different than it was the infant yeah it's one maybe less than one is that the one who was being bopped feverishly in the background of the booth yeah there was one child that was being rocked so hard throughout the entire end of the game but yeah it was neat to see I mean we'll see now what happens how now knowing the Giants we won't get an answer about whether he's playing against the Redskins until you know Saturday afternoon but he could still be playing this weekend could be but but then it would be alright because it's in Washington so you still needed to get that goodbye the question is will Jones be ready for the last game of the season against the Eagles so how crazy would it be if he ends up having to start in that game and he does get the one more home game you know or do you just have tanny start not even bother cuz you don't want to ruin that moment oh and with the wind he's back to 500 yeah I don't know how much that played into it but I kind of felt better for him not that it matters he's not a pitcher it's not his record but it's kind of something that gets thrown out there and he came so close to beating Philadelphia right maybe things are different if they win the toss instead of lose the toss and give up the touchdown I talked about the ovation he got from the fans after the game I don't know what the future is I don't know what what you know lies next week let alone you know you know down the road but you know I think it's just obviously you know the support and in the fans and their ovation and their you know change my name from the you know first snap to the end I appreciate that and and you know appreciate them always and just all my teammates coming up to me so you know it's a special special day special win and you know one I'll remember how about the postgame speech to his team appreciate this is a special win man they're all special so all of them are tough doesn't matter what the feeling is what the season is going there's not a better feeling than a win in the locker room on a Sunday boy so I appreciate this one special and let's keep it rolling all right I'll see y'all Wednesday man I'll tell you what that love they have for Eli Manning and you got to hear about the speech that he gave before the game which sounds it a lot different maybe than the Eli that we're used to hearing from you know dropping f-bombs right before they walked out of the locker room you know he was in a different place it's it's the reason that we love pro football in my opinion more than any other of the four major sports every game matters even to absolutely irrelevant teams playing they only play 16 times a year you live and die on that field every week and every game we watch yesterday so many teams playing for nothing right now you can't tell when you watch the games and and this just another example yesterday's game against the Dolphins was important in spite of the fact that was completely meaningless and I think Jones will play and I wouldn't be surprised if we were to find out that Jones could have played yesterday or could have been a little bit more involved had it not been for that moment you know Tandy went out and took the last snap so clearly there still is an injury for Jones but who knows how it all play out over the next couple of weeks but still was nice and whether you're a giant fan or not you just think of New York sports you know it since this station started in 2001 for baseball it was Derek Cheeter or Mariana Rivera with the Yankees and they got their goodbyes and that was emotional and they were a big part of the landscape of New York sports and I guess you could say in this era was it Carmelo Anthony with the Knicks although maybe didn't have the same impact because there wasn't a lot of winning when Carmelo was here you know with the Rangers Henrik Lunkwist has been amazing and still has a little bit left so we're not saying goodbye to him just yet but from a football perspective a lot of good players have come we saw Curtis Martin come and Kevin Mawai with the Jets well how about this they're all Rivas with the Jets but this guy for 16 years two Super Bowl championships as you said a good guy an easy guy to root for it's it it's tough to say goodbye well is there has there ever been a better quarterback in New York I mean just the Giants I mean I think he's the greatest quarterback for the Giants and then the only jet would be Joe Namath but now career wise he lies better yeah just because Namath's career was cut short and his knee injuries and all that I mean no listen I think he's the best quarterback in history of this town why Charlie Connerley I mean there's a lot of good quarterbacks that have played Joe Namath guys that are in the Hall of Fame but and I know that to a certain age there's there's probably listeners out there that are 18 20 years old who who the majority of their life is seen in Eli that was compromised on a bad team and struggling to make the playoffs and and there's been a lot of bad certainly but you take a look if you've been around long enough to remember all of Eli's career there's a lot of great football and a lot of great moments and to be able to win a cup of Super Bowls the MVPs the circumstances in which they won those Super Bowls all right I know you can't forget Phil Sims won an MVP for his Super Bowl performance of Super Bowl 21 what was a foreign completions it was just an amazing performance and a blot against the Denver Broncos but you think of those two Super Bowls against the Patriots against Bill Belichick against Tom Brady that drives late in the game to beat the perfect Patriots and then to do it again with him going on the field and Bradshaw trying to stop from falling you know into the end zone it wasn't all Eli listen Justin Tuck OC Umanura there's a lot of great players on both sides of the ball for the Giants for those championships but there's something about a quarterback it's different he's he was he was the best player probably in those Super Bowls and so clutch in both of them and in both of them you beat this team you have to remember this Patriots team that we're currently watching come to a close is the greatest team probably let's we'll get to the cheating stuff later but from a dominant standpoint Don the most impressive team ever in pro sports they beat them twice yeah you just can't do it also Joe Namath you know you know how I feel about Joe Namath my favorite guest on the show I absolutely love him he threw 50 like 50 less touchdowns than interceptions his completion percentage 10 points lower than Eli it's it's not really the name it's got to play 16 years he probably would play 12 yeah but but a lot but look at the games played for those 12 but about doubt in front of you right hold on but real quick Eli is a completion percentage of 60 remember these and then touchdowns 366 over 244 remember that percentage I just gave you because Joe Namath's percentage is his completion percentage is 50 and his touchdowns to picks is 173 over 220 I mean he could have played a few more games his numbers aren't as good no that's but still I mean he's he's would be next up right you know why a tittle probably but why it'll also spend a lot of time in San Francisco before he came to the Giants so listen the fact that we're comparing him to Joe Namath that's a pretty good company to be in there's a big zero question about that so just I really thought it was a nice day you know and what has been a just a lousy football season really for both teams right


Welcome to Access to Trader, the number one community for those who are committed to taking control of their trading in order to achieve success, profitability, and longevity. Thank you for joining us. Here's Dan Shapiro to help you find your edge, master your process, and own your future. Hey guys, give me Roddy. Welcome to another edition of the Access to Trader.com Network show. Hope everybody is doing well. Thursday, right? It's Thursday. Last week and the week before, again, you know, you started feeling the effects of staying at home, you know, burning yourself out. Again, like I said a little bit, let a little, you start to get used to these things. You really do. Although again, I'm naturally tired towards the end of the week. I think mentally I prepared myself for this week. I traded accordingly.  So that's been kind of the formula for me to stay sane, stay, you know, stay energized and kind of stay focused. And I think again, what we talked about a couple of weeks ago, what we thought was boredom, right? Boredom and the walls are closing in.  And what separates boredom from normalcy is just kind of a routine and kind of omitting the bad stuff, concentrating on the good stuff, trying to stay mentally positive. That's the key. You got to start, you know, you got to start looking at the good things. There's so many bad things that are happening right now in the world and, you know, they're just throwing out these ridiculous numbers, right? Of potential deaths and this, that, the other thing. And again, you just have to be, you have to smile as much as you can. You have to be as mentally tough as possible. And just don't read the news, man. Don't look at the news after the close. Again, the last thing you want to do is go to sleep at night with all these thoughts and worst case scenarios. Again, life is hard. As I say all the time, life is only hard for the first hundred years. I promise it gets easier than that. So stay sane, guys. Stay safe. Again, stay at home. So I think today's session was a pretty solid, pretty solid session. You had your morning scalps. You had your bigger continuation moves that we saw yesterday, for example, in stocks like Boeing and Tesla today. Again, we saw it with Tesla again. And I think today is the kind of day that if you look at the scoreboard, you can turn around and say, well, the bulls won, right? Bulls won. Not so fast. I do believe, and again, depending on what type of trader you are, again, I trade channels. For me, the scoreboard is kind of irrelevant. You can make a case today. We did make a case. All the value today was to the downside.  You had your last five, 10 minutes or so. Again, if you were just hanging on the last 10 minutes of the day, yeah, you saw this, right? You saw this big, big move, whatever, spiking to the close.  Again, if you're that aggressive and that active, boy, you have a lot more energy than I do. So I saw two things happen. Number one, big surge this morning on oil, right? You had crude oil moving, I think it was like 20, 25%. In the middle of the day, you had Trump. I guess it was meeting with these oil companies, whatever the case may be. And you saw these really, really big surges on all the oil names. You had XLM going nuts. You had Oxy going nuts. And you looked at the scoreboard, and the market literally went from being flat on the day to surging 3, 400 points.  And again, how much, you know, how much do you really need for the Dow to surge to 3, 400 points? You don't need a lot. It's only 30 stocks. And I kept on noticing that none of beta was rallying, nothing rallying. Okay. Tesla couldn't get out of its own way. Amazon couldn't rally. Roku couldn't rally. Beyond couldn't rally. NVIDIA, NVIDIA although was the strongest stock towards the end, towards the latter half of the morning, towards the end of the day. That was the only exception. If you look at all these other stocks, Netflix and Facebook and Apple and shop downgraded today, you know, everything was either flatlining or kind of drifting lower. And I said there's no value for me on the upside today. No value. I thought the day was going to give us good value to the downside. We'll talk about the pivots in a second. And the reason for that thinking was, and this is kind of when we've been talking about the tone of, you know, having the ability to have a position, right? Have a sentiment, have an opinion of the day, and let the market prove you wrong, right? Not kind of jump gun going through the side of the fence. Have the market prove you wrong. Yesterday, again, we talked about on the video, you could split hairs, you could have made a case that we closed below the 10-day moving average on the queues. We closed above it. You could split hairs. The key of today's session was, let the bears, at least let the bears, for the first part of the day, give them the benefit of that, right? Give them the benefit of that. And although they did not take out yesterday's low, right? Yesterday's low was that 186 that we talked about last night on the video, obviously, this morning as well, you know, we put in the low to 1897, although they did not, right? They did not pierce yesterday's session. The value clearly was on the short side. However, right? Here it is. If you believe in the theory, okay? If you believe in the theory that the scoreboard doesn't mean anything, okay? You have to take into full greatest salt of what the bulls did towards the end of the day, okay? Again, I personally think most traders, unless you were positioning for the next trading day, it's very hard to turn around and say that, you know, the bulls wanted it. Yes, they wanted the scoreboard, but it's very, very hard to say they won. Because again, if you look at the channels right now and you look at the macro picture, you'll see exactly what needs to happen next. Again, we all think we're smart, not me. I know I'm going to do it, but we all start out thinking we're smart and we're trying to guess what's going to happen next. Again, guys, these are the levels going forward. Again, you can't, there's no gray area in this. Either we start building above 190 on the Qs, or we start building below this 180-86. And as you can tell right here, this is kind of why we say it's very hard to proclaim bulls of victory today. We close right in the middle. Everybody see that? Not at the highs, not at the lows. We close right in the middle. So going into tomorrow's session, again, I want to give the bears the benefit of the doubt.  Again, you can see that's where the value is. If you go through charts today, it's very, very tough to turn around and say, wow, I love this stock. This stock is going to break out. There's nothing breaking out. We all know there's nothing breaking out. There's some stocks coming out of channels. Some names, for example, like an mRNA. mRNA is attempting to come out of a channel. A name that I found when I was charting TW.  If it confirms it goes higher. You know, you could find names like this for tomorrow that on a verge of maybe starting to break out of certain daily channels. But it's very, very hard to turn around and say, wow, Facebook is going to rip tomorrow. Why? Based on what? Is this show you it's going to rip? Do you have any faith in Amazon's going to rip tomorrow? Right. It's right in the middle of the channel. Netflix, although, again, it's a pure play, right? It's a pure play and it's sitting and held a 50-day moving average. Again, at least you could make a case. Well, if the market is storm tomorrow, if it starts taking out today's ranges, there is back room to the 380, 385. At least you can make those claims. But again, when you look at the direct breadth of the market, right, the direct, especially in the NASDAQ 100 members, it's very, very tough to turn around and say, gun to the head. We're going to rally tomorrow. Maybe we will. Maybe we won't. But again, the most important part of the technical aspect of what's going to happen going forward is understand the macro levels. 190 to the upside, 180, 80 to the downside, everything else. Again, you really need a process to kind of handle what happens. Because again, today was very, very, very, very whipy. A lot of people turn around and say it was choppy. I didn't think it was choppy. Again, I was waiting for the channels to confirm to the downside. So there wasn't anything choppy for me. Like I didn't want to buy stocks today. The whole day I've been saying, the whole day from the time, from morning strategy till afternoon, I said, there's nothing that I want to buy. There's absolutely zero value to the upside. And at some point we were up to 300 points. I said, listen, at a certain point, at a certain point, I wouldn't be surprised that they pulled the plug in the market. And the market went red. The Dow went red, the NASDAQ went red. And then you had that late search. I was already logged off. I was already logged off and I was trying to get some exercise. It's a wild day today. Again, the key to any type of structured balance going forward. And I'm talking about in the future. I'm not even talking about even tomorrow. Number one, the spread of the virus has to slow down. The deaths have to slow down. The overnight volatility in the future's cash market has to slow down. And by no means, again, if you're an intraday trader, yes, I understand up 400, down 400 is great. If you're an investor, that's the last thing you want to see. That's the barometer for uncertainty to its highest form. And again, remember, we're only one headline away from taking down this bottom channel here and testing gloves. Again, will we test the gloves? Again, if there was a gun to my head, I would say yes. I don't think for a second this was a generational bottom anywhere here. And based on what we're seeing, based on the fact that we still have seven more states to go into what they call, at least it was a stay-at-home, stay-cation, what the hell they're calling it these days, I think it's very, very important that this country definitely logs down. Again, if you look at kind of a micro-cosmic image, if you look at the NBA teams, just an example, for the teams that did test positive, you had a couple of players including like Durant test positive on the Nets. You had a couple of players on the Jazz that kind of started out the whole thing with Don LaNichol and Rudy Gobert. If you look at what happened when they all went into quarantine and knock on wood, all those players recovered very, very quickly. If you look at everything, the Lakers, the Denver Nuggets, again, they kind of stopped it, right? They kind of stopped the spread. And again, that's what we need to do as the entire country's entire world. Just stop it, man. Just stop it. The longer we are going forward in this whole, let's see what happens next. Okay, psychology, it's very counterproductive. So again, guys, stay at home. I saw all you guys who follow Larry David on Instagram, very funny. Go back to his couple of posts. He has a video that's showing, and again, I think Larry David is a genius, but he has a great two-minute video saying, you guys are having a one-time generational idea of sitting at home watching TV.  He knows something, guys. So again, stay safe, please. Stay safe. The longer we procrastinate and continue to go outside and mix and match with people, this thing is only going to spread and spread and spread. So please do the right thing. Do the right thing. So let's talk about the pivots today. Again, all the values to the downside. If you look at literally every pivot today was to the downside. I think I put in a pivot towards the latter part of the day on Netflix through 370. It spiked a little bit. Again, I was already long gone by then. So again, we talked about this one 80, 85 area, if it builds below can flush the 10-day confirmation. This is still a huge, huge number going forward. So again, every pivot was to the downside. Roku 181.30, 181, excuse me, 81 if it builds below can flush. So it gave the first flush, right? It gave the first flush. And this is kind of what we always talk about second entry. So if you look at the flush, right? If you look at the flush, it put in its initial low of 80, 75. So again, what we talk about, what we talk about second entries is you let it put in the low, let it rally back. And once it clears out the second entry, right? The low of the day, this is where you get short. Obviously never did so, but I still like it for tomorrow. Here's where everything really got aggressive. So again, Tesla after the close, going nuts, right? So here's Tesla after the close. Deliveries were 10,000, right? They were 10,000 more than anticipated, blah, blah, blah. Stock is surging. God bless, man. Stock is surging. For all you Tesla bulls, great job. For all you guys who trade Tesla, fantastic job. This stock has been an absolute monster trader, both long and short this week. If you guys remember a couple of days ago, caught this thing for the 10, 11 points on the upside. For the last couple of days, this has been downside, downside, downside, pivot's one after the other. So this was the big one today. Congratulations for all you guys who caught this trade. 475, the builds below can flush. Note, there's a little bit supply here at 470. That's where it stopped initially on support on the 60 minute. If it gets, it will get really aggressive below 469 and destroyed. The stock got absolutely destroyed. So here was the pivot right here. Here was the pivot and it just got annihilated, confirmed from the 475 and then the stock just got imploded. Completely imploded. Went all the way down to 446. We talked about this in the webinar. It could get to 442, 444. Went down to 446. Congratulations for all you guys who caught this thing. Again, this will be a crazy trader tomorrow. It really will. It will be a crazy trader tomorrow. We'll have plenty of ranges. So let's definitely keep an eye on obviously that. Beyond, you know, I shorted Beyond today. I made some money on Beyond today. And as soon as I put it on the position, I said 63, 63, if it starts building below, it could flush. And again, the stock went down to 57, right? The stock got destroyed. But again, I was watching a trader and as soon as I put on the short, it went down like, you know, it went down like 40, 50 cents. And then I looked at it, I go, why am I in this thing? Because when I looked at it, I'm like, wow. Because there was some size on the bid. The problem was once the stock started trading, it was trading like at a 40-cent spread. And I was like, oh boy, I have a problem.  Let me give this thing a dollar, a dollar risk. And you know, luckily enough, the futures came in and the stock started coming in. So I took some profits on the trade. And I was like, yeah, whatever. I'm happy with the trade. And then three hours later, the stock really imploded. I'm okay with that. I made a conscious decision. And I said this a long time ago. When you're uncomfortable in the trade, okay, you don't need to lose money in that trade to figure out you never should trade the stock again. It's what today is one of these days that I said to myself, as I was making money in the trade, I was like, you know what? I don't want any part of this thing. And I go, if I get stopped out on my runner, I'm good. I don't want any part of this thing going forward. It just doesn't trade well. If you believe in the story that's going to go lower, and I think it will, and I actually like it for all you guys who are trading on the option side, I actually do like it for tomorrow below today's low. It starts building. But for me, kind of washing my hands on this thing, literally 20 times a day of me washing my hands. But again, not a bad trade. Not a bad trade at all. Netflix, if it builds below, it can flush. Again, it gave its first move to about 360. Never gave a second entry. I still like it. I still like it if it goes there. Square, if it builds below, can flush $46. Again, you can see just one after another. Again, not a big move, right? Not a big move. But again, the stock second day in a row closed under, went to 45. Obviously, 45 will be the turn for tomorrow. Facebook got hit. For all you guys that took Facebook on that channel, got hit really hard. 158, if it builds below, can flush. The first candle got just smashed pretty aggressively. So here is the 158, right? So here is the 150, where's the 158? 158 went all the way down to like 156. Very, very quick move on Facebook. You pretty much get the theme. Everything got really hit here. Alibaba never got down to 85. Apple, 239, if it builds below, can flush. So here was Apple, right? Here was Apple. Here was the 239. 239 went to 237. 50s, right? 237. 50s on Apple on that first move. And again, here's next support coming in. Again, nice morning flushes. Now let's just stay patient. Everything's in the middle of the channel. And this is where everything, and these are my comments, as the market was going higher, everything was in the channel. I always say, whatever doesn't go up, buzz go. So it's just common sense. So that, and again, this is the pivot to the upside. 37 needs to build. I guess it triggered at the close, whatever the case may be. So 370 went to like 371. Doesn't make a difference. Again, here's the big pivot here. 379, 378 can test lows later, experienced traders only. You had a 30 point move on Tesla. So big move there as well. Take on the way down. New lows on deck, blah, blah, blah, blah, blah. And that's it. And that's it. So look, going into tomorrow, I'm going to give the bearers the benefit of the doubt. I will. Obviously Tesla's going to give us some ranges tomorrow, both the long side and the short side. Fridays have traditionally been a pretty good value day. The most important part is, again, wait for the channels to develop, wait for the confirmation, use second entry, and hopefully you'll get a pretty big move in your directional bias. Guys, God bless everybody. Please stay safe, stay at home. And with God's help, we'll pull through this together. Congratulations for putting in the time to take control of your trading. You're one step closer to owning your future and achieving the success you desire. Want daily trade ideas directly from Dan? Straight off his personal watch list? Unlock our free PS60 vault where you'll get nightly updates on pivot opportunities we're watching for the next day's session. Click the link in the description to get started today.


So, welcome. I'm William. I work in Drupal and Aquia's Drupal Accelerations, not the other way around. And I submitted this talk pretty much immediately after Drupal called Pittsburgh, and I didn't know how much we would get done in the meantime. So it's almost the same description. And I was hoping it would be more concrete, and I'm happy to say that thanks to Boris at the front here as well, we've gotten way further. And so I'm going to talk to you for about five minutes, and then I'm going to do two live demos of about five minutes each. And my goal is basically to have you walk out of here, hopefully excited, definitely knowing, definitely having a feeling that you know how to get started with using conflict validation. It's not, like, not everything you're going to see is already available in Drupal 10.1, but many things are just the four bits and pieces in the demo are not going to be available just yet. So yes, you have to wait for Drupal 10.2, but everything else is. So let's dive right in. I want to give you a little bit of context for why we're even doing all of this. So a brief history of the conflict in Drupal. In 2004, in Drupal 7, we had a variable table with key value pairs. The values are, like, massive, massive arrays of doom that then are serialized. So, like, it's completely undecipherable. In 2012, during the Drupal 8 development cycle, we turned them into YAML files. And now YAML is diffable. It's diffable. So at least it's a diffable blob. In another year's time, we added schema support. And so that made things introspectable. We could kind of make sense, like, what is the actual stuff in there instead of, like, random blobs? So that was better. And we made things translatable thanks to that as well. But guess what? By moving to YAML files and having to read dozens or hundreds of YAML files on each page request, yeah, that's going to be slow, so we had to move it back into the database. But it's just, like, reading YAML files and storing the database once. So performance was fine again. Drupal 8 shipped. And then after Drupal 8 shipped, we added validation constraints. And so, in principle, we made things validatable. And so the trend, and that's kind of what the picture was that I was trying to paint, is that we're adding more structure over time. We removed the need for the equivalent of the Drupal 7 variable module, also the internationalization module, and also C tools exportables. Razor fans, if you are still familiar with those names? Oh, wow, yeah, okay. That's a lot. That's not what I expected, but cool. Welcome. So we added validation constraints to config. Cool. But what is actually then validatable? Well, this is the only one that was added back then, and was also the only one in Drupal Core up until December of last year, December 2022. And even though it was the only one, and yes, we have to ask coverage for it, unfortunately it was not being used anywhere. So it was just used in a test, like we knew it worked, but it wasn't used anywhere in Drupal at all. So, fine, that's where we were at. But why even do all of this work of config validation? Why would we care? Why should we care? Well, there's a bunch of things that are just not possible without config validation. I worked on JSON API and API first things long ago. And one of the frustrating things was that it wasn't possible to make it possible to write or change configuration via REST, via GraphQL, via JSON API. And that actually was a direct blocker to admin UI improvements, and specifically the JS admin UI initiative, which show of hands who remembers that still, yeah, fewer, but many do. Unfortunately, like all of the validation logic was tied into, was written into the existing PHP form. So of course, a admin JS initiative, they can't magically make the PHP code work in the JavaScript code. So we really need that configuration to be validatable in a more structured approach. Another thing is advanced configuration management. Show of hands of who's using config splits. Whoa, okay, pretty much everyone. Cool. So I don't know how many of you, some of you have run into problems with re-merging split configuration. I see at least one person nodding over there. I see somebody nodding strongly. No, okay, a little bit all over the place. Some of you have run into it. Some of you haven't. Those of you who haven't have been lucky. Because this is not a fault of the config filter module at all, nor of the config split module. It's just a limitation of what the information is that is available to that module to do the right thing. So that's another thing, that config validation aims to make better and actually aims to make a thing of the past that you ever run into those problems. The recipes initiative is all about configuration. So you can imagine that if you were to apply a recipe, you kind of want to make sure that it actually is going to work. It's going to result in a valid whole. And that's what config validation would also make possible. So recipes would become richer in experience, trial experience could be possible in theory and so on. Automatic updates. You can imagine that quite a bit of update hooks are about updating configuration. And what if you get something suddenly wrong? Then your configuration has been updated incorrectly and good luck digging through that to figure out when it went wrong, in which update hook and so on. But if we had config validation for the things that we're updating, then you would know right away when writing the update hook that it's not going to work correctly. And then finally, ambitious side builder experiences like the recent field UI improvements that unified all of those different screens into a single screen. There was so much work and so much pain there. And quite a bit of that pain was due to the absence of config validation because again, all of that validation logic was in the forums. So I don't know, but I have the impression that all of you have at least one of these things because pretty much all of you raised your hand at config split and config filter. So these are things that it aims to improve. So okay, the concepts that come into play and I'm not going to go into detail in any of these. That's not the point of this session. The session is about making you aware of these concepts and how they connect with each other so that when you encounter them, it's going to be hopefully really easy and fast to dig through them and observe them in detail in your concrete use case. So as I mentioned, TypeUUID is the one thing that existed in Drupal Core.  So you've seen plenty of UIDs in your life. Those UIDs actually are coming from or are defined by the schema by this TypeUUID thing. Now, what does that actually mean? Like what does that string UUID after type colon actually mean? Well, it refers to a config type and a config type is a top level key in one of the schema YAML files in a module or in Drupal Core. But that's just the type that's a name. We also need to be able to store it somehow when we're saying that a UUID is going to be stored as a string. We don't want to label, but we don't want to just store any string as a UUID. We want to make sure it's the correct shape of string so that it actually is a UUID. So we need to specify constraints. And that's where things become more interesting. So now you see uppercase U, lowercase U, ID. So that's a different string. And that's referring to an ID of a constraint plugin. So this kind of thing. A plugin annotation. So you can see that this UUID matches that exactly. So we went from a schema YAML file. We are defining types. And now we're saying that the types need to be validated by constraints. The constraints are defined by a plugin ID. That's this thing. So what does a validation constraint actually look like? It looks sort of like this. You have a class name of arbitrary naming choice that you would like to do. And it must always extend the symphony abstract base class called constraint. But this is just defining, okay, what is this thing that is about to be validated? There is no real logic usually in a constrained class. The actual logic lives in the validator. And the validator is following a very similar pattern. So you use the exact same name as you had before and just append the suffix validator. Then the two are connected. Symphony knows that these things belong together. And it extends, again, an abstract base class called constraint validator. And now the actual logic of validation begins. You implement a validate method. It receives the value to be validated. For example, something that kind of looks like a UID, but maybe isn't, or maybe it is. So you receive the value. You receive the constraints. Constraints can have options as well. Meaning you can configure them sort of in a way. For example, you can imagine if you're saying that integers have to be in the range of 0 to 20, then there would be a min option and a max option 0 and 20. That sort of thing. So you feed in that information into the validator. And then the validation logic begins. But before we really begin validating, we first make sure that the things we received make sense at a very basic level. So this is a UID constraint validator. We make sure that we actually received a UID constraint. Otherwise we bail out, we say, nope, can't deal with this. And we verified that the value is at least of the very basic shape that we need, meaning string. If it's not a string, we don't know what to do with it. That's it. This is all of the moving pieces. So congrats. You know all of the concepts that are important in config schemas, config validation, and so on. So quick recap going the other way around. There's a constraint validator. It's connected to a constraint, which has a plugin ID. The plugin ID is mentioned in the constraints key inside of a type in a config schema. So that string again. And then there is a name for the type. That's a top level key in a schema YAML file. And that is something that we can use everywhere in our config schemas. So those are the moving parts. Time for live demo. So I'm going to show you, and this is the one thing I forgot to check ahead of time. Is this legible or does it need to be bigger? Is it good? Okay, cool. So I'm going to do a fresh install of Drupal 11, but it's the same as Drupal 10 too. So you can see I'm just doing a fresh install with very safe passwords and so on, as well as installing a config inspector module. That's it. Nothing else is going on. So back in Pittsburgh, this is what config inspector module was able to give you. You could analyze a particular thing, for example here, media settings, and you could ask it to list more detail and give constraints. But there's not that much there, and there's a lot of things that are clearly not yet validatable. So if you would do the same thing today, it would be a much more typical experience to have something like this, where at least the common patterns, like core default config hash, is fully validatable. That's part of the progress we made, and you get a lot more precision and a lot more help in order to make your things validatable. So you can see here these yellow warning signs with an attitude, and it tells you where exactly to add the validation constraint. In this case, it's here, but it could also be somewhere else if you're reusing some other time. So that's enough about that. Let's actually just dive right in, and let's take a look. So I know that my drush is installed in vendor bin, so I'm just prefixing it with that. And there we go. So I've just analyzed all of Drupal Core after a fresh install of the standard install profile. If you were in the keynote, you saw that I said that 6% was fully validatable, and that's just me doing this command effectively, wrapping for which ones reach 100%, dividing by the total, and that's it. So this is interesting, but it doesn't tell me that much. This is just for kind of an overview, and eventually, hopefully, everything is going to show at 100%, of course. So let's figure out what things remain to do, and I need to resize slightly to make this fit. I hope this is still legible. Okay, cool. So that was too much. Let's limit it to 5 to 2, so that hopefully it's going to fit on screen. I'll skip to 3. That's kind of okay. Okay, so we analyze it, and we find low-hanging fruit. If you were in the keynote, you saw this too, but now you can see it live, and how fast it is, how easy it is to do this kind of thing. So we can see that no-type article, no-type page are both at 93%, no coincidence, because they're both like the same thing. They're both no-types. High-hanging fruit, unexpectedly, no, not really. Very expectedly. Views, field, fields. A views thing, which is super complex, super advanced, is in a lot of places. So that would really help. If we could make that one validatable, we would get 8% of the total remaining things that we need to make validable still. If we fix that one thing, if we make that validatable, we get like a massive increase in overall validability. But let's look at one concrete thing. This no-type article seems kind of interesting, because it's almost there. So what would it take to get it to 100%? Okay, that's a little bit cramped here, so I'm gonna select a few columns. I'm gonna look at key, this data column, and constraints. So I'm gonna say, and this is not something specific to this command. It's something that's built into Drush and anything that provides stable. So key, data, constraints. So then I'm gonna get all those three columns. That's better. Okay, so we can see there's a lot of double green check marks, meaning it's fully validatable and valid. The question mark is at the top, is not everything is validatable yet? We know that, because it was at 93%. And there is one thing here with it to do. And it's telling me to add validation constraints to node.type.star. Okay, one thing I didn't say before is that every config type, it always starts with the name of the module. So node.type.star, doesn't matter how many dot whatever there are, it's always the first thing. So node, I know I need to look at node schema. Okay, so let's open node schema. I'm gonna zoom in. And let's see what was the name of the thing. Preview mode, okay. I'm gonna search for preview mode. Preview mode, type integer, okay. Interesting. Well, let's take a step back and go look at the UI. And I think I need to turn on my tabs. Even though I open the new tab, it's refusing to show it. All right, so logging in with my super safe password and going to reports, configuration inspector. Yes, okay. So I'm not gonna show you this UI. It's existed for a long time. It's showing a similar view but then through the UI instead of through the command line interface. It's the same 93%. Let's look at the data in there. So we should know, we know already actually that preview mode is not validatable. That's the case. The current value is one. But I have no idea what that one means. Like is it one? Could it be a million? Could it be minus seven? I don't know. But I'm just gonna wing it. And I'm gonna add a constraint. I'm gonna say a constraint. I'm gonna say the choice constraint. This is one that's gonna be super useful.  So this means like of the choices that I'm providing, it must be one of them. Anything else is not allowed. So I'm gonna pick our favorite number, 42. And I'm gonna rerun this. Okay, cool. There it is. Choice 42. It's fully validatable. It's claiming to be validatable. It's telling me one error. Well, that makes sense. I just restricted it to 42. I already know that it was actually one. So of course I wanna make sure that it works here too. Yes, it's validatable and it's complaining. Okay. So I need to actually properly understand this before I can add validation constraints, which makes sense. You need to understand what the data is that you're storing, what the domain of value is. So let's go look at no type. I don't know what this is about, this preview mode thing. So opening no type, starting at the top, searching for preview mode. Yeah, that's not gonna help me. Ah, var integer preview mode Drupal optional. I don't know what 2014, that's a long time ago. Okay, let's take a look, zoom in. Okay, so this is the one. Probably the one, so probably it's a default value. I see Drupal require Drupal. These seem to belong together. That's something completely different. I'm gonna, like I should investigate more closely, but for now we're gonna go with zero one and two. Zero, one, two. And hopefully that means that now, yep, it's valid. And yep, it's fully valid. So if I refresh this now and go to no type article, that's it, it works. So that was number one. This you can do in Drupal 10.1. This you can do even in older versions if you will. That config inspector module works for all of those versions. So you can start using this today in your deployment workflows to validate things on a deeper level if you like. So, second live demo. It's cool that we can do this in the command line and we can see it in the config inspector, but it wouldn't be better to actually bring it into the UI and into the forms. So this is the other thing I mentioned in the keynote. There are new optional methods in config form base in Drupal 10.2, so you're not gonna find them today. And the install that you're working on, unless you're working on Drupal 10.2, it might be brave. So, let's go look at the change records. And if I scroll down, it's telling me here, what does it look like? It's telling me to overwrite this one method. Okay, let's go take a look. I can close this art. So config form base. Let's find that method. Okay, what is in there? That's weird. It's telling me this allows submit form and validate form to know that this config form is not yet using constraint base validation. Huh. Okay, so this is a thing to retain backwards compatibility, but something must be using this in Drupal Core. So let's, okay, there is only one, because PHP storm didn't give me a choice. So there's this one example. Okay, let's see how we can use it. Let's go back to our freshly installed site. I'll go to configuration. This is the first thing. Let's go there. And, okay, this string I'm going to do something to, I think. We're in France. Maybe we can restrict this to something more French. So let's find out, okay, I'm going to take this description because that's probably going to be unique. I'm going to search the entire code base. It's two matches. Interesting. This is in migrate Drupal account settings form. That's got to be it. So zoom in again. Yeah, that's the thing. The name, the sub-match. Yeah, okay, so I'm in the right place. So I'm retrieving the anonymous key or property path to be more precise from this dollar config object, and that's going to be the default values. That must be what's currently stored. So if I try to find where dollar config is, oh, there it is. And it's apparently user.settings. Okay, so user.settings, if I were to open that, it should tell me that, yeah, okay, that is the same anonymous. So we know already user.something means that it's the user module, so we can open user schema. And we can search for this key there, anonymous. Oh, yeah, it's right at the top, makes sense. It's already got a type that is a little bit more specific than it was in the past, but I want to make it more specific. I want to constrain it more. So I'm going to add a constraint again. And I'm going to say, and I want to do the same thing with looking at it in the command line again, but of course I want to look at user.settings now. And if I look at that, yeah, cool. It is there, and it inherits it because that's what this error thing means. It inherits it primitive side because it's a string. It inherited this kind of crazy looking regex because it's a label and we don't want control characters in labels. That sounds good. And it's a required label, so that's why there's also the not blank constraint. So all of those are inherited. They're still there. I'm just adding to it in this particular case. So you don't have to define new types all the time. You can reuse and be more specific. Okay, so it's in there. I'm just going to go and try to save this. Maybe it works? Yeah, no, it doesn't. Because I haven't done that other thing yet. The copying of that, yeah, this thing, this copy form values to config. So it's a pattern I have to apply, so I might as well copy paste it. So I'm going to do that. Okay, I know it's on update settings here. It's user settings, so changing that. Yeah, these things don't exist. These are for update settings, so I'm going to remove that. But hey, look at that. The submit form is dealing with something very similar. And yeah, this is something I can just copy paste. This is not a coincidence. This is something that's going to be true all the time. So I can move this around. And actually in the future, that means I will be able to just delete this. And most forms will not just be able to delete all of this. But for sake of demo, I just want to show you that this is all it takes to connect the two things. So assuming it's now connected, I should be able to just hit save and it should work. Let's see. Cool, that worked. But I was going to show you that you can easily tweak this validation message, but I'm over time, so I'm not going to do that. But you can see that it didn't take me much time at all to get this working in the UI. So a few steps, a few minutes. It's a repeatable pattern that you can apply, and you're going to be able to benefit from this. If you have a contract module that you maintain, you can also optionally implement the config events, save events subscriber to always make this validation run so that even when it's being imported through Drush, for example, that it's still going to be validated, that you can be very confident it's correct, it's going to be even better for you. Thank you to these fine people to have helped us get this far. And if you're interested, follow the meta and come find us tomorrow at Contribution Day. Thank you.


The 185th E-Cab coordinated with Unison in Mississippi to get a UH-60 Black Hawk that's retired out of military service sent to Fort Hood, Texas. This trainer will afford the brigade the opportunity to train junior service members in maintenance tasks that they will perform overseas. First time that I know of a retired airframe has been used in such a manner. This is a good opportunity that this is here because we can't create maintenance so there might never be a chance the whole time we're out here to hang blades and install blades and do a fold because they're not going to down the aircraft to train on it. So this is the benefit of having this non-flywheel aircraft is that we could do whatever we need to do for training rather than waiting for the maintenance to occur organically. We feel that this is a good practice that is carried on for future mobilizations.


Hi everybody, so I'm doing a hop this month with the people from Inspiration Conspiracy and we're doing something to celebrate Women's History Month. I'm going to do an art journal page based on Billie Holiday, the singer, and I painted a painting of her, I think it's a couple of years now, remember if I dated this or not. I might be dated on the back, but I did a painting of her. I think this is from 2014. This is for sale in my Etsy shop, this is the original. And I also at the time did a small postcard and that sold a while ago and is off to its forever home. Anyway, I took a copy of the larger painting and I printed out a couple of copies of it and we're going to use that on our page. I've taken one of those copies and I've put a few coats of Omni Gel, which is an acrylic polymer resin. I got this idea from Shannon Green, I'll try to remember to link her video in the description below. I painted the portrait of Billie Holiday in a class I took with Pauline Agnew. I'll also link her website in the description below, she's a fabulous teacher if you're so inclined to look her up, an artist. So anyway, while this is drying, we're going to do something with the background here. So we're going to let this dry and we're going to turn this into an image transfer and it should be a little bit at least translucent when it's done in theory. I did print two copies in case I mess up the first one. So I'm going to speed forward through my process and I'll be right back. Our page for Women's History Month, Billie Holiday, now I was going to write the quote on the page and as I was creating the page that just didn't feel right.  It's fabulous. I am glad that it's not dry yet, so it's still a little bit moving around. I'm glad I did two of them because now I have another one I can play with later. But I hope this gave you some ideas of what you can do to create an interesting, our journal page with any theme using Shannon's image transfer technique and just layering a bunch of elements, watercolor, acrylic paint, collage, washi tape, all kinds of stuff on top of each other to create an interesting page. Don't forget the most important thing. Go out and have a great day and do something nice for yourself because you deserve it and I'll see you later. Don't forget to go to the next video in the description below for the hop and by the time you get back to my name you'll have seen them all. Alright, I'll see you later. Bye.


What's going on folks this is Jacob filling in for Tom O'Brien today an honor of his show We're gonna read through some of the cards he has here So this one says you are never responsible for the actions of others, but you are responsible for you If someone is not treating you with love and respect it is a gift if they walk away from you You may hurt for a while, but your heart will eventually heal and we all got to know our worth everyone so today as They were saying low volume. We're kind of trading sideways and a lot of the indices Cues down point seven nine Gold is down just a little bit the dollars up a bit One of the big things that I saw is lift just taking the absolute L today. They had bad earnings yesterday Massive massive volume dumping down here Lift shares fell 24% during after hours trading after issuing week guidance in its earnings report on Thursday It's interesting too because uber kind of knocked it out of the park But uber is down a little bit as well. Obviously not down 35 percent 36 percent almost So some of the key numbers here has a loss per share of 74 cents revenue was 1.18 versus 1.16 billion Um lift said it expects to make roughly 975 million in revenue in the fiscal first quarter of 2023 Lower than the 1.09 billion analysts anticipated according to some analysts so Yeah, bad bad time to be a lift investor The the uber downturn this had a pretty big Run up on You know reports that they were going to beat earnings a lot of the chat On a bunch of forums online was like you got to get into this right now because they're about to beat it and they did all right Um You can see here some high volume. This is they're in a kind of a better situation Obviously then lift In other important news the waiting for the cpi is going to be altered. So, um The through this today the u.s. Monthly consumer prices Rose in december instead of falling as previously estimated and data for the prior two months was also revised Which some economists said raised the risk of higher inflation readings in the month ahead. So What's going on here with this? Um Basically according to bloomberg They they are shifting weight. So one of the things that they're reducing is going to be some of these deflationary pressures And that's mainly going to be um used car sales, which the prices are going down. Remember, you know last year And I even remember like in march of 2022 when I was in the market Um, it didn't it didn't make any sense not to buy a new car Used car prices were so high. This has been uh dropping and this is kind of dragging Inflation a little bit So they're reducing that and they are increasing the component Of owners equivalent rent With a large weighting of 3.4 0.4 percent and that's up from about three 32.8 percent So at the moment the housing components are some of the largest drivers of inflation Owners equivalent rent rose 0.8 percent In december. So, you know, what does this say for the market? Obviously with like higher cpi Um, excuse me increasing cpi Um, this kind of suggests that we're going to have longer rates on the horizon Excuse me, um Greater rate increases for a longer period of time That can be a little bit deflationary on prices in the market itself Certainly in the short term, but I think what their idea is with this Is it gets a better idea of the really heavy players, right? So yes, car prices are deflating And lowering inflation But focusing on these main drivers Of inflation is massive and so maybe gets a better idea of analysts On the fed side to see to see what's going on to get down Something like equivalent rent They do suggest that on the long term, however, we're going to see these kind of prices decrease And that will that will lower inflation and so maybe targeting something that's like the heaviest Kind of driver of inflation Is super important We'll see what goes on with that, but obviously for the short term, you know, um, that's this is not great for the market And it also makes you think, you know, you had so many You had so many moves in the past, you know, few months of last year Depending on this good cpi And uh, it turns out actually that there was a, you know, minor increase, you know, albeit minor, but um an increase nonetheless um On the inflation note China's factory, um, china's factories prices fall as manufacturing struggles to recover. This is from rooters Producer price index falls more than expected in january consumer price increases slightly below forecast and monetary easing more likely than tightening Um, china's january factory gate prices fell more than economists expected Suggesting that flashes of domestic demand that had stowed consumer prices after the zero covet policy ended are not yet strong enough To rekindle upstream sectors The ppi was down 0.8 on a year earlier extending to 0.7 drop the prior month and faster Then the 0.5 fall tipped in a rooters pool Mergers pool, uh, even though manufacturing activity returned to growth in january So this is interesting a little bit. Um A little later in the show I'll uh, you know, the chinese are huge on on this kind of fabrication. Um, a little bit later in the show I'll touch a bit on biden's, um Speech the other day talking about any kind of new federal programs regarding infrastructure will have to be made Um with uh american materials essentially um Obviously again with cpi here, you know, this depresses, um bond prices because they went higher years All fixed income investments tend to lose value during this inflation. Um, so You know in the in the short term. I think we'll we'll see a little bit of issues, but um, We'll see if the the fed was right. Um, excuse me. We'll see if the other government was right in doing this I spoke on this a little bit the other day when I was filling in for tommy Um, but this trafagora fraud, uh continued to really Interest me. So if you're not familiar, uh, this is a swiss commodity trader. I think they're based out of singapore Um, but they're facing a 577 million dollar loss through systemic fraud regarding, uh, nickel trading Um, this nickel is widely used for batteries and trafagora has established themselves As a pretty big trader of this, uh, metal in the recent years of really all commodities But especially, uh, going into the the battery sector And they have just dominated with billions in revenue over the past few years So they found out that the shipments that they were purchasing did not contain nickel at all. Um The reason this is interesting and what got me thinking about this is I was reading some other frauds as well and big examples of people Laxing on due diligence and it's impressive too. And you consider that this due diligence Should have been completed and the fact that wasn't resulted in hundreds of millions of dollars of loss Capital guys, we will be right back. Stay tuned