So the market gapped up as I as I thought that it would and we should rally today size of the rally I don't know. I'm not gonna be overly concerned about it. We do have two things to watch today and I I'm gonna have them both up. I think I'm gonna keep Cody up as a main one though It just doesn't have a super big target, but that's okay, and then I'll have Momo here in the middle I don't I'm not in crazy crazy crazy about any of these gaps They're okay. Okay, they rank good enough to do to watch, but I'm not like Super in love with any of them. So I think we just play them as one short move and out today The market should be bullish, but I don't know how bullish and I really wouldn't until we see how we trade out on the day We're gonna have some time I think we have a problem getting through this entire bar here if we get through half as far today Which should be up here 142 50 ish that even if we get to 143 today, that'd be huge turn around for the market to have in one single day So spy targets 245, which I think we could get to today Okay, so Again Not crazy about any of these symbols here today, but think we can get a trade And and just get a quick move a little bit of a spread in this Momo So I just so you know I have this in the middle the main watch. I'm gonna have up as the COT why The target's really 17 not a spreading Still rates good, I think we can get a decent entry in this I Looked at everything today longs and shorts I think we just continue to be very careful here all the rest of this week and next week And I have to figure out the holiday schedule, which I'll figure out by the weekend for the Labor Day, but you know It does feel a little bit like summer in here because I think we're gonna have maybe two Days this week we get some runners, but it's not yet. It's clearly not today And there were some things that were names that I was watching this morning They just didn't work in our favor and they're not good longs either So they gapped up and they're not good longs They may work today because of the market, but Because you know we prefer to short so let's just see what we can get any other picks our DFN I don't have enough information Data Barry CMCM, I don't like as much as these two things journey woman BZ zoo zoo and I didn't like and DSN is too thin You could watch Fran for continuation gap today if you feel inclined possibly even footlocker T do like one second here Again, all these look very very similar. I mean these all look very similar. It's just not enough data I mean don't have time to rate it. It doesn't it's that doesn't look any better than the two things we're watching There's nothing great today. I think we get a play. It's it Be great if we just get one set up in here and take it down to 17 This isn't open.  This is flipping and Momo was going Okay, I just flipped over to Momo man. Okay. There's nothing to do here. This is look at this. Okay Okay, I did not call this in here the stop is way too big so let's see if we can get a setup in that I don't know. I did that. They look like it was gonna do something and now it's just way too crazy All right, I'm back to COT why now 47 by 90 COT why 47 by 90 Momo's just selling off. Let's do 50 by 90 COT why Gosh, is this moving? What the heck? Momo's just going Is it just me or COT why not moving? Okay? We're gonna do 50 by 85 now 50 by 85 COT why It's open The price is not moving. It's stuck at this number now for the last two minutes. It's weird Well, this doesn't do anything. I'll flip back to Momo But I didn't I didn't do that on the break because it was just way too big of a stop 50 by 85 is valid if this moves And I would not jump the gun in this because it's weird that it's not moving Here take it right now get it in get in right now put the stop 85 1785 This better hold and I'm not giving this any more room. Nope 1785 and done for COT why that was really weird though. I think this goes I think this goes be in it if you want it Momo's just falling over. Yeah, let's just take it off I'm done with that thing. There's nothing to do Uh It's just annoying here COT why so the target 17 Crap wait what has happened here? Oh, that looked good. Damn it. No, make sure the stops in it 85 No, I think this was the open No, we're out we're out Be out of it. I just got stopped out. No, I think this was a late open. I think this was the open at the stock That's why it was trading that way gosh darn it. No, I don't think that was open Man, oh man, does that make me upset here?  We just took a stop on that I think that was the open. I think it opened at 935 man. Is that annoying me? Uh Here go to Momo. We're making money today. That really pisses me off. No, that was the open It doesn't matter the volume. We sat there. We watched it. It was weird that stock opened five minutes late I've been doing so good. We're seeing those two here Momo. We're gonna do a short and Momo I don't know where just move it over That that was just annoying If you did the momo mark I'd be out. It's gonna bounce back Nope, that's stock open five minutes late There should be rules and regulations and guidelines for that. It should not be allowed to do that That just really really really stinks All right, let's pay attention here Momo. It wasn't moving. It wasn't moving and it wasn't open Man, does that there should be regulations? It should not be allowed to open the stock whenever they feel like it Okay, we're gonna do 75 by 50 Momo and do not take this until it hits and this is kind of a big stop 75 by 50, but I think it's gonna hold us in and if it pushes back then all the better That's do 89 by 60 now 89 by 60 Here get it Momo put the stop in 60 60 60 60 we may not get anything else today So do this if you want it do it right in here. It's already gone It broke a little bit early. This really is so annoying Look, that was the open there Here be in it be in it be in it if you want it where we're gonna go 38 38 and see we can get something in this down past That if not them out Let's double-check the stop. I'm really trying to just find a way in here And we'll go over when we're done because the fact that I didn't I didn't want to do this I saw it I could have done it. I just didn't want to do it Okay, stop is 39 60 if you did this if you're in it you're in it We got to get it through the low stop is 38 and I gave it a wide stop in case just pushes back Cuz I'm just trying to find a way to get in it But this could just fall over now like the other one did the other day Footlocker like yesterday just fell right on over. Nope. That stock did not open till five minutes later. Gosh darn it It's like a waste Spread it here Just saw 11 cents All right, keep it at 60, but I might change I might get a little more room to spread all of a sudden It was just 11 12 cents in there. I size it for a 10 cents cushion. I don't know there. It is again Just widened up again. Now. Let's keep it at 60. I knew something was wrong with that I kept saying is it open is it open for a second. I thought it was halted Just hey the market's along look at this look at this We're almost at the target for the day in the spy Market is along so I could have called the market long If we could go on the market every feel like it I hope this works though be a lot easier I think this has a big target if it goes and I like the way it traded in the morning So we can do we can add if you want to here. It's gonna hit again 12 by 60 Momo here. It just hit through here. I didn't even get a chance to take more if you want it I'm already in it We would have pulled the price up though. Here it goes. Momo Momo Momo.  It's a waste All right, let's see what we're going here. 38 is realistic 38 3750 37 not wasting any time today We have to we I knew we had to get a trade early today because the market we actually could have gone along the market The market's holding extremely well Here we go. Momo Momo. Let's try to get a dollar out of Momo if we can It'll make up for the other one, but that's just I don't know what to do about that This isn't I mean, I just don't I've been really really good about seeing that all year. Here we go. Momo Seen when those things are right. There was something there about that But then I thought I thought it was actually gonna collapse because it was holding the price I thought it was gonna quick sell off and then when it broke here Momo I should have took more here. This is gonna go to 38 But this is I you just feel like why they shouldn't be allowed to do that No, they should not be allowed to do that and you can't even tell anymore with the volume.  This is it. This is all we're gonna get today markets already gone I can maybe put call along and in here for pulls back. You could have taken more of this I did not do it. It hit this this ad just hit too quickly journey woman did both good Mary did Momo and Cody yeah Cody this was my first watch today, but then well you guys were giving me ideas and then I thought you know what I I don't want to miss anything because But I didn't want to do this. This was way too big of a stop I should have just stuck with the one that I first liked this morning, which was this Glad this is working though. Okay, so you could have gotten out of some there. I'm not going to okay. This is broken mark is rallying and Target like I said for the spy was 245 Just a very swift lift very quick lift Baba had another rally today again. Here's her second day a chance to get out of this with profit for those of you that are the option This really is going to go to 180 though at the time I called it Okay, Momo Momo Momo gosh, I wish I would have taken more Too far away from the price here Momo here. It's just going 3750 think we get it down to 3750 Yeah, I'm sure Cody will work. It did not open at 930 or 931 or 932 it open at 934.  I just don't a big fudge.   Let's see if we can get this through 38 Gosh, I should have taken more Did anybody do the ad in there Trader and see to the ad big trade for you. All right 28 cents from the number Let's just look at this whole thing For some reason. I think this could really rock and roll though. So this is $3 today. We're at $2 Yeah, I did really like this. I asked you guys for ideas 37 Is that crazy? Charising her to the add to Here we go momo And all is right in the world again All right, let's just look here. Look at this non-stop market higher higher higher This could be the big turnaround day for lots and lots of things Exits 38 though if it hits it if you want to get out I'm gonna try to see if it breaks it here here here here momo. This is happening very fast 946 This is a nice trade 3811 3811 946 Rumi's on a moment. Thank you. You're welcome chinchillas out to not taking any chances Here momo the market looks like a couple back in here now But in the next 15 minutes we might get so a little bit of red in the market with the momo down But you could be out of Susanna got out of it too that stock opened four minutes late and that sucks They shouldn't be allowed to do that. I just they the stock should have to open by 930 That's when the market opens. I've done that. I've done a great job all year with not getting sucked into those those late opens And today we got creamed and you can't tell anymore with volume even 3810 3812 Dollar bills out made 800 bucks look for a second trade. That's okay. You could do that too Smooth traders out as well Chinchilla has profit with the two trades. Did you redo the what you call it? The Cody That's why you don't play in the opposite direction of something like For without a reason again, you could have shorted the market on Thursday. It was a gap down I actually don't think it would have rated well and it broke late So actually no, you know, you could have theoretically, but what I have no and I didn't call the market that way anyways and it was a late break but you know look at how the markets really gonna flip around and People are gonna get crushed because they really thought the market was turning and even after today's green day No matter how we trade people will still think we're lower, but I honestly think we're gonna hold Which I've said every day for the last three days and even said on Thursday and We we broke too late Thursday for that to be real You're up a thousand seven in good job. The market has just keep going which is fine, but I'm still in this thing this I Never trading this again All right, here we go Momo oh smooth trader here here Momo will talk about them both one more done here Momo Momo, I think it was 38 11 38 12. What's left? 12 38 12 7 strings is your first thousand dollar day. Congratulations. Good job 7 streams And you're so new 810 I'm waiting for one more push in this which I we're gonna go so one more Marcus just taking off like a rocket Like an absolute rocket Hey Momo here. We're gonna do it right now. Who's doing this with me? Here we go under 38. Let's see. We're 3750 That's not unrealistic 951 Okay, pay attention Here we go under 38 Momo. Come on. Come on. Come on. Come on three Mavericks out. Okay It got to the target you could be out That's what I wanted to see Yes Momo Maybe I shouldn't ask people what they like anymore and just go with what I like. I Feel bad for myself here. Momo Do-do-do-do-do good day. All right. Congratulations. I still think this could go to 3750 37 dollars great train Whoo mark will look at a dollar earlier That's okay That's okay. What do you up for the day mark mobile here? I still think this looks great But I couldn't hold it any longer seven minutes until 10 o'clock nice trade 3750 37 this could go It's gonna give you another dollar. I held it down one more push, which is what I wanted to do Good recovery for me today Maybe I just Write a letter report these people This sucks, I mean this absolutely was a waste of a thing Should we do one more trade today? What can we do? So this actually rallied over the high Immediately and this will be the low of the day in the market. We will not break to 43 55 in the spy It ain't gonna happen. Let's look at footlocker. I only was everything to do for the continuations Fran Nope, not even Fran today Here it goes look this broke again Momo is anyone still in it 3750s in sight. I'm all out I'm okay with that. I did a great job good recovering, but this this is continuing Yeah, nice recovery is right What is this club 31 made 770 good job? Yep. Here it is. Yeah, it went 3756 It went to the target people honestly honestly honestly. I would be out. Wow It's if you're not out you're bar by barring it, but I would be out I got out a little bit before that Man, this is a nice trade. What do you mean why the sell-off? Here it goes Here it goes here it goes here it goes here it goes here it goes Momo's gonna break 50 is anyone still in this at all? Wow Is anyone in the world still in Momo right in the room? Okay, Marco was asking a very good question They beat estimates. Okay, so what we don't look at that here Momo.  Is that even still in it? Mary is still in it. I would get out. I really would is this Mary's first trade Mark mobile you should know by now that the fact that it beat estimates has nothing to do with anything at all We don't even look at that when we rate the gap. So I don't look at those things I would never have known that you're telling me beat estimates Do you see why fundamentals don't tell you the whole story here as far as how to play the stock on the day to trade it? Or anything at all? So, you know, no one's mentioned anything like that in a while because I don't think people generally look at that stuff in the room I know that you do but but but no so that has nothing to do with anything There's plenty of times that stuff also gaps up on a negative report and rallies too Smooth trader says it's about expectations and sentiment You can tell what something's doing based on the price, which is live right now. And so that's what we know Let's see where this ended up going 37 32 37 29 Wow, what a move. All right, hold on. Let's go over the whole thing here


Hi there! I'm Barry Corbin. When I'm not working on my ranch here, you'll usually find me on a television set or a movie studio. Heck, I even did a one-man play at the National Cowboy Hall of Fame in Oklahoma City. I was told by the director one time, he said, you've got to have a couple of stars on the show. But it's the supporting people that holds the whole thing together. They're the cement. They're the things that make it work. They're the texture. I understand that road safety audit teams are a lot like that. Sure, you've got the big guy or gal that designed the road or built it. They get a lot of the glory when the phrase is handed out, but just as it takes all the actors to make a good movie, it also takes all the discipline in the highway department to make a great section of roadway. And having a team of folks come in and add that extra dimension that a road safety audit provides is a double dosage of safety. And we need to do everything we can to be safe because we've got more traffic on the road and people are much more of a hurry today. But how do we do that? Well, we get people to stop drinking and driving. We get them to put on their seatbelts. We get them to slow down when they're in too much of a hurry. But we've got to do a lot more. We've got 42,000 people a year dying on the highway, and that's way too many. Now, when I was a kid growing up here in Texas about 200 miles west of here, it had these great big pecan trees. In the fall, you'd go around and they'd be pecans laying all over underneath them. Well, we'd pick those up and eat some of them, carry some home to our mothers to make pecan pie. But then when you'd run out of them, wanted more, you'd have to take a big old cane pole and knock them down out of the tree or shake the limb to make them fall. Well, that's kind of where we are with road safety right now. We've made things safer. We've designed better automobiles. We've got breakaway signs. We've got guardrails. We've got more people wearing their seatbelts now. But we've got to do more. Now is the time to shake those limbs. We've got to find more ways to make the roads safe, and that is going to require a new way of doing business. Road safety audits. A new way of doing business? Well, one might argue that highway agencies have been doing this for years. After all, they automatically build safety in when they're designing highways, don't they? True enough, but is that sufficient? Try telling that to someone who's lost someone in a car crash. The death rate on our highways is still too high. A road safety audit referred to as an RSA is a formal safety performance examination of an existing or future road or intersection by an independent multi-disciplinary team. Having a team of specialists in a variety of fields gives highways a fresh look from a different perspective and can reveal many potential areas for improvement. Also, situations change from the time a roadway was first constructed. The area around a highway can get built up in ways that weren't anticipated during its design and construction. An RSA can be conducted at any stage in the project development process, including on existing roads. Of course, it is easier to revise a plan than to make changes after you pour concrete. RSAs look at safety from the road user's perspective. Typical improvements include removal of sight distance obstructions, shoulder and lane modifications, adding or improving signs, pavement markings, delineators and barriers, consolidation of driveways, drainage improvements and pedestrian treatments. South Carolina DOT's RSA program has preliminarily had a positive impact on safety. Early results show reductions in crashes and fatalities between 12 and 60% for three of their sites. AAA Michigan conducted RSAs on 35 intersections in Detroit. Collectively, these intersections experienced a 39% decrease in total crashes and a 56% decrease in injury crashes. 22 of those intersections exceeded a benefit cost ratio of 2 to 1 in two years. So what exactly is involved with a road safety audit? Let's look at the process. First, identify the project or existing road to be audited. Next, select an interdisciplinary audit team. Third, conduct a pre-audit meeting to review project information and drawings. Fourth, perform field reviews under various conditions. Fifth, conduct audit analysis and prepare a report of findings. Then, present audit findings to the project owner or design team. Seventh, prepare your formal response. Lastly, incorporate your findings into the project as appropriate. Road safety audits don't take a lot of time. Using in-house independent staff, the average three to four person team takes two to three days to conduct an RSA. If you decide to hire an outside contractor, on average, outside expertise ranges from $5,000 to $15,000 per project. And several agencies have found that road safety audits provide them with an additional tool for reducing their auto fatality rates. Here in the Iowa Department of Transportation, we've implemented road safety audits on proposed resurfacing projects. What we're finding is our staff are now consistently looking for and implementing low-cost safety improvements in Iowa roadways. But they're not just for state-maintained highways. Road safety audits work well on local roadways too. Collier County, Florida has found a particular need for road safety audits if for no other reason than for the demographic makeup of their drivers. Many of our motorists are vacationers, seasonal residents, and elderly drivers. So their familiarity is not the same. And the response time is not the same as the younger, full-time resident. And that's the reason we've picked up on the idea of road safety audits. We've seen how these things can benefit us. And we're sold on that. We've got several corridors that are being audited and others coming up. And we're even hosting one of the RSA workshops in the near future. That's how much we are committed to this. If we can save one life in an intersection or improve safety through design revisions, the time and cost invested in road safety audit will be well justified. And I'm out here on the opposite corner of the country, Jean, in Clark County, Washington State. We're sold on them too. I know a lot of emphasis is put on state transportation agencies, but much of the traffic in this country is on the local roads. And we're finding out we can make a big difference in how we handle that traffic safely with road safety audits in city and county transportation agencies. While many agencies have embraced the road safety audit process, some are initially concerned that RSAs will increase their agency's liability for tort actions. Norrie Calvert at the Maryland State Highway Administration is a real proponent of the approach. The Maryland State Highway Administration believes RSAs are a valuable tool in building and maintaining a safer highway system. Maryland State Highway Administration has a policy of conducting roadway safety audits on our roadways. Courts are reluctant to second-guess the policy decisions of agencies. Roadway safety audits or RSAs are the right thing to do. Stephen Lamar, Senior Litigation Counsel for the Arizona Office of the Attorney General, recommends road safety audits as well. If folks keep to their mission, and that is to provide safe roads, then part of that would be having audits and checks to make sure that if we have problems, we can identify them and address them. I think the most important thing to do is to document what you're doing in a fairly concise, efficient way so that you can go back and explain if you end up taking action, why you took action, if you're exceeding the accepted standards and taking some action, that there's some memorialization that you thought about it, what the reasons were, what the standards were, and why you were taking the extra step if it is an extra step. It's always better to have a document that explains exactly what the situation is in a fair, logical, truthful, factual manner. The cases that we're defending now start out with the premise that the state of Arizona has exceeded the standard of care. One of a handful of states that, as we describe it, has stepped to the gold standard in protecting citizens against crossover accidents. And that's a great way to start the debate about whether we were negligent. So I believe, at least in that instance, seeing a problem, taking steps even though it wasn't required, has ended up putting us in a much better position in overall spending money on litigation costs in Arizona. But that doesn't mean we're not going to get sued. It just means we're better able to defend it. RSAs, a new way of doing business, making safe roads safer. Yep. Yeah, that's it. That's what we need. A new way of doing business.


Welcome, traders, to another Tick-Mill-Ellington Report, preview with me, Patrick Munnerly. Before we jump into today's report, as always, we want to adhere to the risk disclaimer, material providers for information purposes only, and should not be considered as investment advice. The views, information, and opinions expressed by me are solely mine, and they're not indicative or representative of those held by Tick-Mill UK or Tick-Mill Europe Limited. Okay, let's jump into today's report we are looking at. Salesforce, earnings per share of 94 cents. Noteworthy, that represents, say, 22% fall from the prior 12 months. We're looking at revenue of 7.4 billion. Salesforce reportedly has slowed hiring as it looks to curb expenses. It's particularly noteworthy given CRM's recent focus on margin expansion as the firm guided to a 20% operating margin in the fiscal 2023 versus 18.7% in the 2022 period. The enterprise software maker has dropped the dot-com from its legal name, the name change from Salesforce.com to Salesforce Inc. took effect April 4th. Company continues to trade as CRM stock. Salesforce said it expects fiscal 2023 revenue in a range of 31.65 billion to 31.8 billion versus estimates of 31.52 billion. In addition, Chief Financial Officer Amy Weaver committed to higher margins. Including recently acquired Slack technology, Salesforce fourth quarter earnings fell 19% to 84 cents on an adjusted basis. Revenue climbed 26% to 7.33 billion including 312 million from Slack. The enterprise software maker said current remaining performance obligations or CRPO bookings rose 22% to 22 billion. That top down assessments of 21.42 billion. Meanwhile, CRPO bookings are an aggregate of deferred revenue and other ordered backlog. For the current quarter ending in April, Salesforce revenue out in the top tech expectations. The software maker expect revenue in the range of 7.37 billion to 7.38 billion versus the estimate of 7.4 billion. There is actually a whisper number on the street that the EPS print could be as high as 97 cents a share. Let's take a look at some of the statistical trading patterns around Salesforce earnings releases. CRM shares have moved higher than the immediate aftermath of earnings six out of 12 previous reports. On average, the stock moved up to 0.6% in the first day of trading after its earnings release. Based upon the previous 12 earnings releases, CRM is more likely to trade higher one day after earnings where an average gain of 0.3%. On average, the stock has moved lower by 0.3% one week after earnings. In terms of implied volatility and what the options market is pricing, options traders see an 8.6% move on earnings. However, the stock has only averaged a 5.9% move in recent quarters. Looking at flow and sentiment here, there's been a notable buyer of 1,653 contracts with a $170 call expiring this Friday. Options order flow of sentiment in general, though, has been bearish. Investor sentiment going into the company's earnings release has a 64% expectancy of an earnings beat. CRM share prices drifted down 21.5% post its last earnings announcement. Using the last 12 quarters of data, the average drift between earnings announcements is actually 2.8%. Let's pull up a chart here and we can take a look at the technicals and see where there may be a near-term opportunity from a trading perspective. We have put in a base here around the $154 level. Notable bullish momentum divergence has occurred. And this is broadly in line with the markets which have been experiencing a relief rally, corrective upside move currently. So for me at this stage, if we can take out the 1,68 level on the upside, then I would be targeting a move up into the trend channel resistance at the 182.45 level. As pullbacks remain supported back into the 1,69, then we could look for a similar bounce, corrective move that we saw during the beginning, sorry, late February to mid-March. So that would take us up into the $190 level. So that would be my upside target if we can get through that 170 level. And that's when that call would obviously come into play as well. So that's the upside setup if we can get that move. However, if we do see a miss and disappointments, then any closing breach of this 154 level should see us down targeting 143, 142. And then whilst that 154 then acts as resistance on the upside, I'd actually have a downside target into the 1,21 level and the projected trend channel support coming in just below there at the 116 handle. As always traders, plan the trade, trade the plan, and most importantly, manage your risks. Until next time, thanks very much.


I welcome you all to this lecture in the course, Samasa in Paninian Grammar. And this is the first course on Samasa. We begin our lecture with the recitation of the Mangala Charada. Vishvesham Satchitanandam Vandeham Yokhilan Jagat Charikarthi Bari Bharati Sanjari Harthi Leelaya. Vishvesham Satchitanandam Vandeham Yokhilan Jagat Charikarthi Bari Bharati Sanjari Harthi Leelaya. In this course, we are concentrated on Tattpurusha Samasa. We have studied so many aspects of the Tattpurusha Samasa so far. In fact, Tattpurusha Samasa is the one which has biggest productivity amongst all the four types of major samasas in Sanskrit, namely Avyaibhava, Tattpurusha, Bahuvrihi and Dhvandhva in that order stated in the Ashtadhyay of Panini. We also said that there are so many varieties of Tattpurusha Samasa which are not there in all the other types of samasas. Panini in his Ashtadhyay has also composed many sutras in order to explain the Tattpurusha Samasa which is not the case with other types of samasas. Be it Samasa Vidhyayaka Sutra or be it Samasanta Pratyaya Vidhyayaka Sutra or be it Samasa Swara Vidhyayaka Sutra. Panini has composed a number of sutras in comparison with the other samasas. The derivation of the Tattpurusha Samasa can be shown in brief in the following manner. We have two entities X and Y, they are independent of each other in terms of their meaning as well as their word form and also their accent. They are however interrelated semantically. Now the speaker of Sanskrit decides that these two elements need to be merged and so these two elements undergo some process primarily at the cognitive level and they are merged together and one output is generated in the form of one unit. So XY is that output which is one unit in terms of one meaning and one word form and also one accent. Now the feature of the Tattpurusha Samasa is that Y which is the second member of the Samasa or the Uttarapada in XY. This assumes the head shape as far as the meaning is concerned. What it implies is that when this XY is used as part of the sentence, XY will be interrelated with any other word in the sentence only through Y. XY will not be interrelated with any other word through X without going through Y. When there are instances where X is interrelated to any other external word in the sentence without going through Y, such words are treated as exceptions and are noted down as a samartha samasa which we have already studied before. We also studied the many varieties of Tattpurusha Samasa namely the Vibhakti Tattpurusha. We studied Dvitiya, Tritiya, Chaturthi, Panchami, Sapthami and Shastri Vibhakti Tattpurushas in this particular order as is stated by the grammar of Panini. In this study we highlighted the fact that the Karaka theory is the base of the samartha theory. We then studied Karmadharaya, another important type of Tattpurusha Samasa and we studied a number of sutras in 2.1 which explains the Karmadharaya Samasa. We also referred to the Pumbhadbhava technique stated by the sutra. Surya Pumbhatu, Bhashita Pumska Danoong, Samanadhi Karane, Surya Purni Priyadishu and so on. We then studied the Ekadeshi Samasa and also the Naya Tattpurusha Samasa. Then we started studying the Pradi Samasa and now we are studying the Gatti Samasa. Pradi Samasa and Gatti Samasa is stated by one and the same sutra namely Kogati Pradayaha. The unique feature of Pradi Samasa and Gatti Samasa from the earlier samasas is that the Vibhakti Tattpurusha as well as the Karmadharaya Tattpurusha they are stated in the Adhikara Vibhashah 2111 which means that there is an optionality. The same meaning can be conveyed with the same constituent elements in the compound as well as in the sentence. Whereas Gatti Samasa and Pradi Samasa and now Upapada Samasa also is of a different kind because there is an Adhikara Nityam which governs them. So Pradi Samasa as well as Gatti Samasa as well as Upapada Samasa they are Nitya Samasa. Either a Vigraha or a Swapada Vigraha is the way to explain these samasas. So Kogati Pradayaha is the sutra which states the Gatti Samasa and we have studied this before. Let us quickly go through the meaning of this sutra. Kogati Pradayaha has got one word Kogati Pradayaha which is in Prathama Bahubhachana and what it consists of the word Ku, the words Gatti and the words grouped as Pradis. Words continued are Swap and Sahasupa also Samarthapada Vibhihi is continued and also Nityam is continued because Kogati Pradayaha is stated in Prathama they will be termed as Upasarjanam because of Prathama Nirdishtam Samasa Upasarjanam and then these words will have the Purva Nipata they will occupy the initial position of the Samasa because of Upasarjanam Purvam. So now the meaning of the sutra is any Subanta whose Pratipadikas are Ku as well as the words termed Gatti and the words grouped as Pradis is always compounded with any other interrelated Subanta. I repeat any Subanta whose Pratipadikas are Ku as well as the words termed Gatti and the words grouped as Pradis is always compounded with any other interrelated Subanta. This is a Nityasamasa of Asvapada Vigraha type. We also saw that the term Gatti is stated by the sutra Gatishtha and primarily it is applied to the Pradis when they get related to the action denoted by the verbal root. The Pradis are then termed as Upasarga and also Gatti. The purpose of the term Gatti is to fold Swara as well as Shatva Natva Abhava. The Swara is stated by the sutra Gatiranantraha as well as Gatirgatau as well as Gatti, Karakopapadanaam, Kruthu etc. and Shatva Natva Abhava. So Shatva and Natva are the retroflex operations substituting Sh and N in place of Sir and N where in the sutras we find references of Upasarga. Upasarga Tsunoti Suvati is the sutra which states the Shatva in place of Sir and Upasarga Asamasepinopadesas here. This is the sutra which states the Dhanatva in place of N. Now the purpose of the Gatti Saudnya is that there is no Shatva nor Natva. So Upasarga is the condition for Shatva and Natva. Gatti is not. And the other purpose of the term Gatti is the compound stated by Kugati Pradayaha. The term Gatti is primarily assigned to Pradis when linked to action denoted by the verbal root and then also to some other words stated in the section 1460 onwards up to 1479. And we have already seen the sutra Uriyadich Vedachastra where we have seen that the word Uri etc. they are termed Gatti and the Chvipratayandha words they are also termed Gatti and Dach Pratayandha words they are also termed Gatti and Gatti Samasa then takes place. This is Anitya Samasa. Let us continue studying the Gatti Saudnya and also the Gatti Samasa. Now the next sutra is Anukaranamcha Anitiparam. This is what states the Gatti Saudnya. This is 1462. What it means is an imitation word when not immediately followed by the word Iti when in connection with an action denoted by the verbal root is termed Gatti. I repeat and an imitation word so Anukaranam is an imitation word when not immediately followed by the word Iti when in connection with an action denoted by the verbal root is termed Gatti. So now Khat is an Anukaranam. There is some sound in nature which resembles the sound Khat and somebody imitates this sound. So now this is an Anukaranam and when you are not quoting it using the word Iti you could say Khat Iti. But when you are not doing Khat Iti you can give it Gatti Saudnya and then Kugati Pradayaha can apply and one can have the Gatti Samasa. So after having made the Khat sound one can get the word Khat Krathya which is a finally derived compound output. By undergoing the same procedure as is shown before namely Khat plus Su plus Kru plus Tva plus Su and then Samasa Saudnya takes place. So the Prathipadika Saudnya also takes place and then Supodhatup Prathipadika Yoho applies and deletes the Su Prathya here and then Tva is changed to Lep and then you have Khat Krathya as the finally derived compound output. Similarly when the meaning intended is the imitation of the sound Khat just the action of imitation is intended to be conveyed and then the compound output generated is Khat Kratham. This is a compound, this is a Gatti compound and Khat becomes Gatti Saudnya because of this Sutra Anukaranam Chha Anithiparam where Khat is the Anukaranam or imitation. Then we have the next Sutra stating the Gatti Saudnya one four sixty three namely Adara Nadara Yoho Sadasati, Adara Nadara Yoho Sadasati. Adara Nadara Yoho is the seventh case meaning Adara and another are the senses. Sadasati is one two meaning Sat and Asat the words and now this is Prathama Vibhakti. So this will occupy the initial position in the compound because they will be termed as Upasar Janam by the Sutra Prathama Nirjitam Samasopasar Janam and they will occupy the initial position because of the Sutra Kugatit Pradayaha. Now the meaning of the Sutra is the words Sat and Asat when denoting the sense of respect Adara and Anadara. Adara is explained as Prityatishaya and non-respect is explained as Paribhava Audasiniyam respectively then these two words are termed Gatti, Adara Nadara Yoho Sadasati. So when you have the meaning having done respectful work or having done non-respectful work when you say having done respectful work it means that it generates some kind of happiness and when you say non-respectful work it generates some kind of resistance. So Sat is the word and it gets Gatti Saudnya and then there is Gatti Samasa and so we have Sat and Kru and Tva. So Sat-Su, Kru, Tva plus Su and then there is Samasa Saudnya followed by Pratipadika Saudnya followed by the Sub-Look by Supodhatu Pratipadika Yoho and then Tva is substituted by Lyappu and then there is Augmenta that is added to Kru and so finally we get the form Sat Kritya as well as Asat Kritya as the finally derived compound output. Similarly when we have respectful work or non-respectful work as the meaning intended to be expressed we have the compound Sat Kritya as well as Asat Kritya. Sat and Asat become Gatti Saudnya because of this particular sutra Adara Nadara Yoho Sadasati and then they get compounded because of Kogatip Pradayaha. Then we have the word Bhushane Alam. Then we have the sutra Bhushane Alam. This is 1464. The word Alam in the sense of decoration is termed Gatti. So the meaning is after having decorated and here we have Alam plus Su plus Kru plus Tva plus Su and then Samasa Saudnya happens because of Kogatip Pradayaha. Alam becomes Gatti because of Bhushane Alam and then Samasa Saudnya happens. Then Pratipadika Saudnya happens. Then we have Supodhatup Pratipadika Yoho which deletes the Supratkeyas which are part of the Samasa and then finally Tva is substituted by Lyappu and then Kru gets the Augmenta at the end. And so we have the form Alankritya after having decorated. This is a Gatti Samasa. Similarly Alankrita is an example of Gatti Samasa. Alankrita means decorated where the word Alam is used in the sense of decoration Bhushane. The word Alam also has three other meanings Pratishedha, Negation, Samarthya, Strength and Paryapti which is capability. So in these three senses when the word Alam is used it is not term Gatti. It is term Gatti only in the sense of Bhushane or Alankara and only then you have the compounds Alankrita and Alankritya taking place. Now the next Sutra stating the Gatti Saudnya is Antar Aparigrahe. Antar Aparigrahe. In this Sutra Antar is in Prathama. Aparigrahe is in the Saptami. Now in the sense of Aparigrahe the word Antar becomes Gatti Saudnya that is the meaning of the Sutra. We read the meaning the word Antar in the sense of other than acceptance. Aparigrahe is acceptance and Aparigrahe is other than acceptance namely middle. So it is termed as Gatti Saudnya. So now the word Antar has got several meanings and one of the meanings is middle. So this is not the meaning of acceptance and so in the sense of middle the word Antar gets the term Gatti. So if we have the meaning to be expressed namely after having hit in the middle Antar Hatva. So we have Antar plus Su and Hana plus Tva plus Su. Now there is Gatti Saudnya and by this Sutra Antar Aparigrahe and so Kugati Pradayaha states the compound and once the compound happens then the Pratipadika Saudnya applies. Then Supodhatu Pratipadika Yoho applies and deletes the Supratayas. Then Tvai is substituted by Leap and then you have Antar, Hana and Leap. Now before that Na in Hana is deleted and so now you have Antar, Hana and Ye and then there is Agmenta that takes place. So you have Antar Hathya as the derived output. This is a Gatti Samasa. Similarly when you have something that is struck in the middle as the meaning to be expressed you have the compound Antar Hatham. This is the Gatti Samasa Antar Hatham. The next Sutra is Kane Manasi Shraddha Pratighate. This is 1466 and the meaning of the Sutra is the words Kane which means extreme desire and Manas which means desire in the sense of striking the belief. Shraddha Pratighate which means unbelievable. They are termed as Gatti. Repeat the words Kane which means extreme desire and Manas which means desire in the sense of striking the belief which means that unbelievable they are termed Gatti. So the meaning intended over here is having drunk the milk till the extreme desire gets finished or is over or doesn't remain or is unbelievable. So we have Kane Hathya Payapipati. Kane Hathya is the Gatti Samasa where Kane is the Purvapada and we have Hana plus Tua as the Tua suffix and then there is Su and finally after undergoing the same process we get Kane Hathya as well as Manohathya. Kane Hathya Payapipati or Manohathya Payapipati having drunk the milk till the extreme desire is fulfilled till the mind is satisfied. Tavat Pipati Yavadasya Abhilashah Nivrattah. Atisha Yena Abhilashya the Nivratti Paryantam Pipati. This is how the commentaries explain Kane Hathya and Manohathya. The next sutra is Puraha Avyayam. This is 1467. This means the word Puras when an indeclinable is termed Gatti. Now the word Puraha is derived by the sutra Purva Dharavarana Masi Puradavash Chai Shyam 5339 where Puras means in the eastern direction. So now if the meaning is having done in the eastern direction, having done something in the eastern direction. The word Puras becomes Katti Saudnyaka and then because of Kugatip Pradayaha the compound takes place and we apply the Samasa Saudnya etc. And then the finally derived compound form is Puras Kritya. So Tva is substituted by Lep and so on and we get the form Puras Kritya. Similarly when we have the meaning something done in the eastern direction and we get the Samasa Puras Krita. This is a Gatti Samasa where the word Puras which is an indeclinable is the first member of the compound. Similarly the word Astha stated in the sutra, Asthancha is Gatti Saudnyaka. The sutra 1468 means and the word Astham in the sense of non-availability or Anupalabdhi is termed Gatti. And then Kugatip Pradayaha states the Gatti Samasa and so when the meaning is having turned non-available or having disappeared. We have the following Samasa Astha Gatti Savita Punarudeti. The sun having set rises again. Astha Gatti is the form of the Gatti Samasa. So here we have Astham plus Am and Gama plus Tva plus Su and Supodhatup Pratapadika Yoho happens twice substituted by Lep. That in Gama is deleted and so we get the form Astangatya. Similarly when the meaning is one which disappears so we have Astangatani Dhanani. So Astangatya is the Gatti Samasa output. Finally we have Achchagatya Rtha Vadeshu 1469. Meaning the word Achchha in the sense of two words is termed Gatti when immediately followed by verbal roots meaning motion as well as speaking. So the meaning is having gone or spoken two words means is expressed by the Samasa Achchagatya or Achchodya which is an example of Gatti Samasa. When we have the meaning having gone then the compound output is Achchagatam or Achchoditam. These are the examples of Gatti Samasa. To summarize the term Gatti is assigned to many specific words which denote specific meanings when they undergo operations like compounding as well as accent. By the Sutra Gatikara Kapapadat Krithu 62139 the accent will be determined on the Uttarapada in many of these cases. Also important to remember that the words which get the term Gatti do not denote meanings by themselves. They are considered to be Teotakas. They function to bring to the fore the meaning of the associated verbal root. This is extremely important. We continue studying the Gatti Saudna further and explain the Gatti Samasa further in the coming lecture. These are the texts referred to. Thank you very much.


So this is checking on Drupal 8's rapid innovation promises and it's maybe both an educational session for those who may not be involved in Drupal core development and maybe hopefully a good discussion for those who are. So the question, the first question is who's, who considered themselves not involved in core development? Great, great. So let's start with a quiz. How many months, months elapsed from the previous version for the following Drupal core versions? Any guesses for Drupal 5? And the other guess? Two? No? Eight is good. You win. So I don't have prices, sorry. Drupal 6? Any guesses for Drupal 6? How long it took between Drupal 5 release and Drupal 6 release? Thirteen? Any guesses for Drupal 7? Months? That's a bit too much. Thirty? Thirty? Twenty-five? Well you can see the pattern. This is real data. So how many months did Drupal 8 take to deliver from the Drupal 7 release? It's forty-nine. So it's not a good trend. So if you draw the trend, we are like skyrocketing to the Mars and we don't need Elon Musk to solve it for us. So we've been slower and slower releasing the new versions and it's been getting ridiculous. I mean, no, that's not good. So the question is why is it wrong to take our time? Because some things require a lot of time to work on, so why is it even wrong to do that? So the problem is that a lot of time allows us to do a lot of change. So we can do a whole lot of changes that then makes it very hard to adapt to. And what's even worse is all of those changes result in even more changes because we now started rewriting this API and then we need to adapt everything else that's been going on to that new API and we just built this feature but then we have this new API and now we need to rewrite that feature for the new API that we just built a year ago. So we did a lot of duplicate work because we just worked on a feature and then later on we needed to adapt to the new API and we write the whole thing all over again. So that resulted in even more change, so it's just like added on and it just became a snowball effect and towards the end of Drupal 8 we were just like, just release this, whatever, because we can do this however long we want. If we don't set a limit for ourselves then we can go on with this for however long. And then this becomes very costly to upgrade. We change all the data models, we change all the APIs, so people who need to upgrade to these new versions they need to rewrite their code as well. There's the version pressure that if you want to get a change in Drupal Core you know that you need to get it in this version because it will only get released four years later if you don't get in this version. So everybody tries to push in their stuff, they are very anxious to get their change into Core in this version because otherwise it's going to be four years and that again results in even more change and even more change that others need to adapt to. And the worst thing for all of these changes is that we are doing this in our own bubble because it's our development version that nobody uses, it's our own playground that we are working on for four years and nobody is using it. So we are making assumptions and we are working towards a dream client that hopefully wants these features and by the time it's released in four years it may or may not be relevant anymore, it may or may not be applicable to the date that the four years later when it actually gets out. So maybe we developed a brand new exciting API at the first year and then three years the web moved on and now there's an entirely new approach to something and we are still working with the old system. And then all of this work and redoing the work and doing it in our own corner results in burnout with developers because they don't know if their change ends up in this version, they work very hard to get it in with this version pressure. They don't get any feedback on whether it's good or not, only four years later. Sometimes their change just gets rejected later on when they already worked it out and it looks good now and then they say oh no, now we are in API free so you're not allowed anymore. So it's very hard to convince people to take on this kind of pressure and to work on the system and it only then down to the very dedicated core contributors who can sustain this kind of thing. So it's very low incentive for core contributors to get involved in this cycle tucked away in a corner. So that's a lot of problems that we've had and that resulted in this graph because we always wanted to build in these nice new things and then that just resulted in more change and then we've had this pressure that is never going to be released if we don't get it in this version. So we just added up because we were also trying to be nice people to our contributors because we love our contributors so we don't like to say no. So we were saying yes to a lot of things and yes to even more and more things and that just resulted in a snowballing effect of change. So what we had in mind to solve this is to try to turn back this tide and just say that now we want to get back to even pre-Drupal 5 levels and release stuff much sooner and much more often. I just named these Drupal X, Y and Z for theoretical reasons so we can talk about the exact details. So basically the idea was to break this down to release as much more often so we can relieve the version pressure. We can get stuff out to actual people and get feedback about them and that we can actually follow the market. We can work on things that the market actually values at the time instead of things that they value now but will not value for years later. So to do this we decided to set schedules ahead of time. We say we need to release this at that date and then adhere to that. So what we decided is to do roughly, release is roughly every six months. We already released Drupal 8.1 and we are in the process of releasing 8.2 next week. Everything is in row to release that so I don't think we have any blockers to do that next week. And that helps us to set a deadline for everything to work on. So the model looks like this, so every six months we are coming out with a new release and then we can work on delivering features in that release. So that means that we get out our stuff much more often, way more often than we did before. We hopefully clear the version pressure so that people who don't get their feature in this version can very soon get a new version where their feature may be released and then we get the market feedback sooner. We also wanted to keep quality assurance in this. So each of these releases gets their own quality assurance time. So we have a beta period and an RC period at the end of these releases. So in fact the effective development period is more like four months and then we go into beta and then we go into RC for ensuring quality of that release. So that's a very short time compared to four years, 49 months, four months against 49 months is kind of a difference. And then we wanted to attack this problem that if we have all of these releases then we will have a support nightmare of supporting a lot of things, a lot of branches going forward. So what we decided is we also want to get people always on the latest releases and we kind of force them into that because what we do now is when we get out with a new release we stop security support for the previous one. So this stops here and then we start supporting this one and this stops here and then we start supporting the next one when it's released. So if you're running Drupal 8.0 something right now on some site then you may have security issues that are not fixed because we only support security fixes on 8.1 currently and once 8.2 is released we drop 8.1 then 8.2 is going to be the one that has security support. So this means that we want people to always use the latest versions so they would update within these small chunks and they would always get all the stuff in their hands that we wanted to deliver to them and we get more feedback on all of these things. And that with the current version yes the current stable version gets the security support and that also reduces the support burden on us so we don't need to support multiple branches that may have different code and some different APIs. But this would still be pretty bad if we would be making all kinds of arbitrary changes right? So if we would remove the form API in this version and then we release a new one then all the contributing modules that use forms would be up in the air and he wouldn't be able to use it. So this in itself doesn't solve the problem that people are able to upgrade soon enough. So what we decided to adopt additionally to short releases that are scheduled is semantic versioning. And semantic versioning is basically a major or minor patch version number which allows us more granularity in expressing what we change compared to what we had before two numbers in Drupal 7, 7.1, 7.2, 7.3. And so what we can do here is if we just fix a bug then we can increment the patch version number. If we want to do backwards compatibility affecting changes that are not backwards compatible anymore then we increase the first version number so that would be Drupal 9. And if we want to add features without backwards compatibility changes we would increase the minor version number. So the exciting new thing that we got now is we can release new things with new exciting additions as long as we don't break backwards compatibility we can include new APIs, we can include changes to APIs in a backwards compatible way, we can include new features in a backwards compatible way in minor releases. So this allows us to drop support every six months for the previous release because it's very easy for you to upgrade to the new release because it will still work with all the modules that you have and all the APIs you have. And it also allows us to put in all of these new nice shiny things. So the version numbers for x, y, z and up 8.0, 8.1, 8.2, 8.3, etc. So these are the ones that we release every six months. And then we can put in new features and new APIs and change APIs in a backwards compatible way. And so we've been quite successful in that I think because we got several new stable features in 8.1 like the admin help page is now more flexible so modules and themes can add new help sections and it lists all the tours that are there. It still did not make tours any more popular or successful but we tried. We've added language button to secure editor and spell checking. The installation profiles can preselect languages in 8.1 and views provides rendered entity field handlers so that you can render entity fields in views. So we've delivered several exciting new features I think and we've also delivered several new exciting APIs, maybe even more than features. Entity types can specify translatable plural labels so they can say articles and article as a separate text. We have a revision log interface in 8.1. We have content entity base for key fields defined by default. We have automated testing support for JavaScript. So we can add all of these new things and things like automated testing for JavaScript is something that we probably should have done for some time. We are catching up with modern age of development but we now can do this and we now can release this in major versions and it's as a new stable API that people can use. And these do not disrupt anything that's already there in core for them to be included. And then next week, these things will be stable features. So we now have relative URLs automatically converted to absolute ones in RSS feeds. We have revisions by default on new node types. We have a redirect option that you can configure in site-wide contact forms. You can redirect people to other forms. We have feedback for administrators when you create something new on the site, then you get a link to that. We made it possible to select the view mode in the formatter form so you can configure how comments are displayed. So that's coming out next week, all new stable features. And we made a lot of new APIs available. So we added support for reading configuration and these as REST resources. We've added dedicated resources for user login registration and logouts. You can now choose the authentication mechanism in REST export views displays. There's simplified REST configuration and we've added support for specifying the field item delta in entity query conditions. So there's a lot of new API possibilities in 8.2. So we are going forward and we can make all of these changes now in the new system. And what's even better is we're working on Drupal 8.3. So even though we haven't even released 8.2 yet, what happens is each time we are going into a beta phase for a previous release, we open the development of the next version. So all the things that did not manage to get to the previous version are now possible to get to the next one. So 8.3 that's gonna be released next April something already has a simplified and unified views listing interface that's similar to what other listing interfaces are for administration pages. It's easier to find what views you have and scan them and search in them and it's easier to use. So this also allowed us to say that development is always open for our core. So when something goes into beta then the next version, development version already opens and allows us to put in even more things. And then the question is, did we succeed in adding new stable modules in core? No. No, we did not add any new stable modules in core. Why? We did not have enough time, I think, to do that yet. So Drupal 8 was released a year ago and we did not have anything that met the criteria quite yet. We want to implement the right things based on feedback. So we are working on things that we want to make right. Drupal core just has a huge list of requirements for a module. It needs to be performant, it needs to not break anything else, it needs to provide a stable API that you're not gonna change, it needs to have a sort of stable user interface that you're not gonna drastically upset and all kinds of other things. And as I said, we don't want to work in our own bubble on our own things, we want to get feedback. So we did not want to go right into adding modules without having that kind of feedback. So the question is, how can we work on new things for core and get that feedback? So one of the options is to start a contributed module or a sandbox and then work on something there. But that does not have enough visibility, so you would not get to try out those modules with downloading Drupal core, you would need to know that the module is there and you would need to manually download the module and try it out. So what we decided to do instead is to introduce a way to sneak in modules in core that are not yet stable. So we introduced the concept of experimental modules. Who's aware of what an experimental module is? So half of the audience, that's good, so that makes sense that I have this section on what is an experimental module. So experimental modules basically are not yet stable. They don't need to meet all the requirements of a Drupal core stable module that is supported. And they have their own cycles of stability. So they start in Drupal core as alpha modules that are much like when a Drupal core version is alpha. So it may have all kinds of bugs and it may have unstable APIs that we are still working out. It may have a prototype of a user interface that we still want to work out how it's going to work. And then it goes through to beta and RC and stable. And so these have their own statuses, but we put them right in core. Because putting them right in core allows us to put it in your faces. And so for you to provide us feedback on whether they work or not. And this allows us to experiment with things and get feedback much sooner than trying to work on the module in our own bubble and work for an imaginary client and figure out what the imaginary client may want. And then put in something stable and then figure out that's not what the imaginary client wanted. And needing to fix all that stuff with a stable module. So this allows us to move much more freely and change a lot more things before we agree that it's good and it implements something that's valuable for people to use. What it should not have is it should not have known security issues and it should not have known data integrity issues. So if you download an alpha module from Drupal.org randomly a contributed module, it may or may not have security issues. It may or may it may it will not get security support from the security team because it does not have a stable release. In core, however, we cannot really have that luxury to put in something that we know has has a security problem. So we do review these modules for possible security problems so that they are going to break your site. And there's also a requirement that they are ideally be uninstallable if at all possible. Maybe you're losing some metadata, but you should not lose the most important data on your site. So the policy says that they should be removable without lasting disruption. It's the codified way of saying that. But the most important thing, though, about these modules is that they have a plan of path to stability with a timeline. So the idea is we put them in core and we want to ideally have them stable. We don't want to keep them there alpha. So we want to have a plan of how we want to complete this. So when we put these in core, we have a plan of what it needs to happen for it to be stable and for those issues to be open. And so we can work on those things to get them stable. And that obviously could change on feedback. So the reason we put it in core is because we want to hear that feedback on whether it works for you, whether it solves your problem, whether it needs to have a different user interface. There's a typical timeline of two major releases. So we also don't want to put stuff in core and then leave it as alpha, beta, something that will never mature into stable state. So it has a timeline of possible removal if it's never stable. So the process looks probably more like this. So if it does not work out, there's maybe no movement on that going forward from alpha or beta, or it turns out to be not suitable to solve the problem or the problem that we wanted to solve turned out to be not worthy to solve in core or it was a duplicate of some solution that we thought is better than we can remove the experimental modules. So they may or may not stay forever in core. It's also good to know. They also should not be used on production sites, ideally. So they are very easy to enable. But we have them as a separate section and we have a warning when you enable them is these are experimental modules. You may not want to use them on production sites. But the only way we get feedback is if you use it at least in your development environments and tell us if it works for you if it solves your problem or not. So as a status check on our experimental modules, we have a lot of experimental modules in core now. We have inline form errors, which was edited in 8.0.0 and is alpha. So now that we're gonna release 8.2 and our two major releases passed. So now inline form errors will be in danger of being removed in 8.3 if we don't succeed moving it forward. We have the migrate module that we added in 8.1 and is still alpha, but it's close to having a beta. Close to moving to beta. We've added big pipe in 8.1, which is now in beta in 8.2. So it matured into beta. That's an example of a module that had some problems and resolved their problems and moved forward. We have the place block and the settings tray modules, brand new in 8.2 that are alpha. They have a lot of user interaction issues that they wanna work out to make them better work together better. We have daytime range module, which is alpha. It has also some user interface issues and some other problems. And we have content moderation also in 8.2. So there's a whole lot of things that we put in and all of these will be in Drupal 8 releases by next Wednesday and none of them are stable. So we are looking for feedback on these and we want to improve these things. And then finally the question is how does someone get in this process? So okay, we now have a way to release often. We now have a way to do these releases in a backwards compatible way. We also force people to upgrade to these or we stop supporting their site. And we also have a way to put in things that are not fully baked yet. So we not just release often, we can also release things often that are not yet done and put it in people's faces and get the kind of feedback that we need to make it work for you. So the final thing that we just started, we just launched a week or two ago, it's very new, is the ideas process. Who heard about the ideas process? Okay, even less, it's like five people in the room. So let's talk about that. So the ideas process basically tries to solve the problem that you have an idea for core and the traditional solution to that is you write a patch but then you post it on the issue queue and then you perfect the patch and people come in and they tear the patch apart and you have this white space problem and your columns are not in the right place and the interface names are not good and your JavaScript coding styles are not nice and anyway, you should put this file there and that file there and it should be a plugin and whatever and then you work on it for five months and then a core committer comes in and he says, we don't need this for core. And then you're banging your head on your desk because you worked five months and you solved every problem but all the problems that came in were stylistic or where they were like about the patch that you were working on, they were not really about the idea that you want to get in core. So what we want to have instead is first, define the idea, what do you wanna do? Very high level, maybe one sentence, maybe I want a new theme in core because of this and this. So you define your idea that you want feedback on and you can put this somewhere and then you get feedback on your idea and you don't start working on a prototype or you're not plan out how it's gonna work, you don't write any code, you're not gonna have any white space problems because you only have this idea and you wait for feedback on how's that gonna work. So this point, your feedback is, is it core worthy or not? And whether it affects subsystems in core or not. And if people tell you it's worthy or not, we'll talk about who's those people are gonna tell you, then you can work on a prototype and see if you can actually solve this problem in a rough way and this can be paper prototypes or this can be very simple solutions that you can see if it solves the problem or not and that helps you plan out what actually needs to be done in core, okay? And that may inform if you're working on the right idea or not. So this is a very high level process to even figure out what you wanna work on and to generate a plan and figure out if your idea can even be done in a feasible way. And you may not need to write even a line of code to do this, you can do paper prototypes or you can do clicky prototypes that are nice and user testable. But basically the idea is to figure out the plan and the feasibility of this idea starting with if this idea is even worth for inclusion in core. So the system that we set up to use for this is its own project on www.truple.org www.truple.org slash project slash ideas. And we just decided an hour ago that there are gonna be meetings with core committers and they're gonna look at this queue and they're gonna tell you if your idea makes sense for core or not and they're gonna tell you encouraging words about your ideas or maybe discouraging words about your ideas. So you can tell upfront not to spend five months on this thing because it has no chance to get in core or you can tell upfront that you can move forward to prototype this idea because it's a good idea for core and then you can plan out what needs to be done and you still didn't spend five months on it you just spend like a few days or a week to figure out the feasibility in the plan and then talk about it again. So the ideas queue is preceded now with a few pre-existing ideas that are ideal candidates for this. So like create a design for a media library or a contact module roadmap for 80% use case of web forms in core or SMTP supporting core or introduce outside in quick edit pattern to core sample content, project browser, those kinds of things. So the idea of the ideas queue is to discuss high level proposals and then if there's and then have some agreement on whether they fit core or whether they are better done in contrib. So you can get very early feedback on your plans, your ideas and then you can work your idea to a prototype and then work a prototype to a plan and then move forward from there. So all this work is theoretically happening in the ideas queue. As I said, we just launched this a week ago so we'll work out how this exactly works. And then if this is approved for core, then you're gonna move on to the core queue and you're gonna do the implementation. If it's not approved for core, it does not mean that it's a bad idea at all. It may not be an idea for core, right? It may be a very good idea for contrib that you wanna work on, but this basically feedback that it's not not the core committers believe that it's not suitable for core. And so if it's approved for core, then you would work on building it out and that may involve stable APIs and stable features or it may involve experimental modules, depending on your idea and the implementation plan. So this may use either tools, tool sets that we have in core. So if it's a huge thing that requires multiple steps and a lot of user feedback, it may be more suitable for experimental modules. If it's a simpler idea, maybe SMTP in core is simple, I don't know, from one line you can never tell, then it may be a stable improvement right away. And then if it's stable enough, then you get happily ever after and then it's there and then everybody's happy with where it's at. So as we've said, this is the SD experimental module structure goes. This may still go out of core if it fails or if it's not suitable or if we find a better solution. But if it happens to prove itself, then it will make sure and be stable in core. Okay, so this was the informational part of the session. And then I have a few trigger questions, but before I have trigger questions, then any feedback or anything I missed or any particular things that people came here to discuss? Do you think that a Drupal 8 to Drupal 9 will potentially take longer than Drupal 7 to Drupal 8 because we don't really need Drupal 9? We're just gonna add features in point releases and iterate on that. And it's always gonna be non API breaking and everyone's always gonna be happy. And potentially we don't need Drupal 9 until we need to drop things. And I know with a lot of other things like some of the symphony components, for example, they change the major release number and drop all of the deprecated stuff, but it's still pretty much the same release. It's all just works. So do you think the Drupal 9 process will be very different to the Drupal 8 process? I think so, yeah. So basically I think there's two different triggers. By the way, that was one of my trigger questions, so thank you. So basically there's two reasons for doing Drupal 9. Either we have too much crap that we wanna get rid of or we have changes that we need to make that we cannot make in a backwards compatible way. So those are the two things. And I don't think we are there yet that we have too much stuff that we wanna remove. We are still deprecating things and we'll still have more to deprecate before it's becoming too much. As for backwards incompatible changes required, I just talked to Theodore, a JavaScript maintainer, and he says that they had a meeting where they figured out that it's very hard to do testable, unit testable JavaScript and make some of the changes that they need to make to modernize the JavaScript system without substantially breaking backwards compatibility. So there may be some things like that that make it impossible to do in eight or maybe we need to scale back our ambitions in those areas for it to happen. So that may make Drupal 9 sooner than we expect, but I don't expect Drupal 9 to be very soon. Hi, thanks for the talk. I was wondering if you have like a suggestion for an architectural change in core, would that go into the issues project like a suggestion? Yeah, so the ideas queue is for major changes in core that may affect the product, that may involve the product manager or the framework manager. So there's like nice definitions on Drupal.org and what the product manager and the framework managers do that are basic changes that are basically affecting the major systems in Drupal. So if you have proposals like that, then that would involve the ideas queue. It also gets more attention from core committers, I guess, because that's a higher level thing that they are looking at. So if you believe that would affect or would require the framework manager, then I suggest you post it there. And the worst thing that happens is you get a quick move of the issue to the core queue. So this is kind of a follow up to the previous question. Are we recording when things get deprecated? So we could ideally start, sorry, dropping support for deprecated stuff. It got deprecated like a long time ago and people have more chances to not be using and they then keep doing that instead of doing a major release that drops support for everything at once. Yes, we are. If I find the right, not drupal.ex.org. So we have a change list on drupal.org that we keep updated for new releases. So change records for Drupal core and you say you are interested in 8.2 changes. 8. Well, unfortunately they are not consistently named. But if you're looking at 8.2.0 changes, then you gotta tell you about a bunch of things that changed and some of them involve deprecation of things like select interface write join deprecated or file cache can be disabled completely now, et cetera, et cetera. Migrate map, migrate ID map interface, lookup destination ID deprecated, et cetera. So we are posting change entries for these. We may not be posting change entries for everything, but we are always updating the API documentation as well with the app deprecated. So if you look on api.drupal.org for that or just search the code base for deprecated things. That also tells you if you use an ID like PHP storm or some other IDs, they're gonna cross over the code that you are trying to invoke if it's deprecated. So like if you look at the code, it would be visually evident that you're using something that's deprecated. Right, that's my point. So if you've been seeing this scratched thing in PHP storm for long enough, chances are that after maybe a year and a half, you stopped using that. So that one is safer to remove. Something like maybe after 8.9, we start dropping support for things that got deprecated in 8.0. That would not be semantic versioning. Well, maybe after 8.9, we can call it 9.00. And then 9.00, if you do that, yes. We could start deprecating things quicker without high chances of requiring multiple updates inside. Yeah, in other words, I think your point is the sooner we release 9.9, the less APIs we change. So the easier for people to update their code to 9.9, in other words. So then if we are not releasing 9.9 so soon, then there's gonna be a lot of changes that people may not have updated in their contributed models and there's gonna be a lot of change. Yes, that's true. That's still a danger of that. We don't have a mechanism to force anyone to not use deprecated things. So, yeah. And the other thing that I've had a trigger question for, I'm interested in people's opinions is whether we are stabilizing experimental modules enough because that's the other problem of, we have all those experimental modules and we now have this danger sign that we're gonna remove your experimental modules if they're not stable soon enough, but is that enough to incentivize people to work on them? I don't know. Or if you wanna talk about something else, that's fine. There was no direct answer to this one. Well, I was just gonna go back to the thing about 9.9 and other versions and should we create the major versions quicker? Should we look at scheduling that so every sort of three years, four years, put a time on it that we do a major version and make sure there's an upgrade path? And if we make sure there's an upgrade path between these major releases, do we still need to support the previous releases? Will we still need to support Drupal 8 when Drupal 9 is out? Do we do it like we do the minor releases now as soon as the next minor release is out, we stop supporting the previous minor release? Should we start doing that with major releases as long as there's an upgrade path? Well, if we do them very, very soon, then we maybe not need to, but the current plan is that we would because there's still a requirement for all the modules to be updated, right? And all the data to be migrated. So there is the Drupal core release cycle thing overview that has a nice picture of this. So the plan, the version numbers should not be taken indicative of actual plans, ignored the numbers. So the plan is once Drupal 9 is started, then we have a long-term support release of the last Drupal 8 version before that. And the reason for that is because we make all of these API changes between these two, then people will need time, they don't have time if we immediately drop support for Drupal 8 previous to update to the latest version. So we need to give them some time, maybe not so much time, maybe not until Drupal 10, but we need to give them some time to be able to do those code and data updates for Drupal 9 and then the same later on. So I don't think that we can immediately drop the support, but it may not need to be this long. I agree with that. First of all, I actually have a module for usability that has been moved to Drupal 9 already. So obviously I would be happy if we can move to 9 faster than later. But I'm also wondering about as site builders who don't do coding, we still come up with ideas that would be useful to have. And I'm wondering whether in this ideas process there's also space for that, because otherwise I need to come with my idea and also lobby around to find a developer to actually put that into practice. And I wonder whether there is some way of encouraging people who can't actually do the coding to still come forward with their ideas. Yes, I think we should promote this far and wide and get people submit their ideas and have a lot of ideas. Not everybody agrees with that. Some people agree that we, some people say that we already work on a lot of things. But I think the more ideas, the better we can figure out, we can then figure out the best ideas and then maybe find people to solve them. There's no, we don't have a pool of developers ready to deploy on an idea. So we don't have a solution for that. But I think as much as there is a value in submitting a bug report, even if you have no idea how to fix it, there's even more value in submitting an idea of improvement so that we can, we have input on things that we may have never thought about because we just don't have that perspective. So yes. I just want to add for, supporting older versions, we're only talking about security patches for those. So that is a difference to what? That's not what this says, bug fixes up until this time in security. Oh, okay, I'm sorry. I mean, yeah, not forever. It's not for the entire, you know, lifetime. Yeah. So this says LTS is including bug fixes and then security is coming on later. But this figure was made a long time ago. And as I said, there's like, the versions are not indicative. So like, do not expect that Drupal 9 is starting next January or something because that's when this would be now. No, I would be surprised. So just to note about Drupal 7 support, the idea would be to drop that a few months after 9.0 access released. So that also means we probably won't get to, as someone said, 8.9.0x. Or you reckon we might? Because, I mean, we can go however long we want with them. With the money. You're doing it so good, you can stop working. Yeah. But then I got the impression also from, well, let's say, Tim Plunkett. He said, no, we're not gonna get to 8.9.0x. We'll get to Drupal 9 before that. But then that's just an anecdote. I guess we just don't know. We don't know. No one knows. I don't think we know. I don't think we know. So my personal opinion, which is not official, is that we did not accumulate enough crap yet that we want to remove. And we did encounter things that we need API changes for, which is a very, very different thing because it requires us to make changes to 9.0 that we're never gonna make to 8.0. So it will require some window in 9.0 that we work on things that never gonna get into 8.0. And that may take some time, depending on the extent of API changes we want to do. With an hopefully the upgrade path from 8.0 to 9.0 will be a lot easier. Yes, because for the modules that kept updating their code to the latest 8.0 version because they see things that are replicated and they adapt, they will mostly work with Drupal 9.0 except those API changes that we needed to make because they were not possible in 8.0. Maybe an unrelated point of discussion, but I was wondering if at some point we could do like harder deprecation than merely putting a deprecated in there. Just to push people to get rid of those deprecated. What do you mean? Calls, such as something that makes test fail if they use deprecated functions after the LTS? Yeah, that's... He needed warnings. Yeah, I think symphony, they do some kind of notice if you use deprecated functions. Mm-hmm, yeah, that sounds good, yeah. That would be nice. Or we could put like a shameful message in the project page. Sorry. So... I don't know. That was a joke, obviously. Yeah, yeah. So my question is, it seems that the whole idea of the experimental modules is to the goal of adding visibility in these promoted modules. Is that a correct statement? Yes, because we could work on the same things in contrib theoretically, but we want to set these up as things that will be baseline Drupal like if content moderation is baseline Drupal, then people will need to work with a possibility that is there instead of, may or may not be aware that there may be a contrib content moderation solution. So it's more visibility, but we eventually want them to be baseline Drupal, so that's why we put them there. So I would add that I think that one of the other reasons why we decided to put the experimental modules in core instead of just in contrib is because in order for things to get committed to an experimental module, core committers have to commit them. So it's a way of having that core committer view continually involved in the process versus if it was a contrib project, the committers don't necessarily have to be core committers. So I guess we could decide to make a special kind of contrib thing where the committers are core committers, but the idea was is that these incremental differences that you're doing through the developmental process of the experimental modules are getting frequent feedback from the core committers. So as you're investing all this time, you're doing it in a way which is helping you prepare for getting included into core with less surprises that you're going to get pushed back when you actually try and ask to get in. Yes, very good point. Thank you. You're very right. So you get a core committer feedback in the idea phase. You get core committer feedback in the prototype phase. You get core committer feedback for your plan. They approve your plan and then they review every single patch that you do. So instead of you building it out up until this point, spending it all the time, all the research and everything, and then core committers looking at your whole big blob of thing, they get to provide you feedback in much smaller chunks, much earlier. So you get to know if it makes sense to build this. You get to know what's important to build in here, what they're going to consider as a minimum viable implementation of this. So you can get to build that and then you get that feedback and you get it in core. That seems to be like a beginner question to have something else. Yeah, so my point is can we have some other method of helping discoverability of outstanding modules that may not necessarily be fit for baseline Drupal without having to put them in core so people will try them with discover issues. So we maybe supply something in core that helps find these modules that we think are outstanding but not really for every core installation. So one of the ideas in the Ideas queue, once I get there in my fancy animation, is add project browser, which is a way to expose projects on your Drupal site that you may want to install and that could highlight new modules or modules by whatever criteria to use. So that was idea three years ago or something that four years ago almost that we wanted to have and now it's in the Ideas queue and we can discuss it on that level whether we even won this or not because some people worked on some patch and then some people didn't agree that it's worthy for a core and so we can discuss it on the level now where we can figure out if we want to do more work on that or not. I just want to add to the sort of weird and wrong thing I said earlier is that I think that what I would like is that if we could make the transition to nine so much less painful that it makes the notion of an LTS not needed or not, I don't want to say not needed, but perhaps it would only go for as long as the next feature release or something because it would be so trivial to sort of upgrade implementations of everything that the whole community can move on because I think it's very draining to support two entire versions of Drupal. Yeah, absolutely. So the way to there is if we can make every change backwards compatible somehow if we can figure somehow crack that code that would be amazing because then all the Drupal nine would be the same as the previous Drupal eight version and the number would just remove the backwards compatible layers. If we can figure that out, I don't know. There's a whole lot of things going on for me to state that in any way. But as long as we need backwards compatible breaking changes in line, the danger is also there that we may want to do other things and then it may drag for some time. So I think based on our previous history, it may cause us problems if we go in there and just start working on nine in that bubble again and do that. So if we can limit the scope of those changes at least or even better if we can eliminate entirely the need for backwards incompatible changes that are unique to Drupal nine, that would be nice. So speaking of upgrading from eight to nine. So to get from six to seven and six to eight and seven to eight, right now that's migration. So are people thinking that we do eight to nine with migration? Because people have been talking about upgrading, not migrating. Are we not thinking about that? Or have people thought about that? I don't know. So I think it depends because we drop security support for every previous eight version. So theoretically in an ideal world, everybody is in the latest eight version because that's the only version we support. So theoretically, ideally, we only need to support the latest eight version to nine, which should be the same data structure in this ideal scenario. They should use the same database and everything and same configuration structures. Only the APIs would change. So only the module code would need to change. None of the data structure would need to change. That's the ideal scenario for a pain less upgrade path. So you don't need the upgrade path or the migrate path. I guess it depends on how API breaking, the API breaking changes are. And mainly schema breaking changes. For example, we're looking already at making other entity types for a visionable and that requires a huge schema change. And that's not considered an API breaking change. So it's possible in a minor release now, but we need to provide an upgrade path. The upgrade path is currently hundreds of lines of code in an update hook. But we are doing this in Contrib already using the migrate module. So we're using migrate to do an upgrade path. So we're using migrate to migrate everything to a temporary store, change the schema and then migrate everything back into core. So we could potentially use migrate to do the upgrade path. But yeah, it depends. Yeah, but I mean, if once we have that in core in eight something, then if we only drop API changes from the last eight to nine, we don't introduce new API changes, then we'll not need to run into things like that. So what if in nine we provide big schema changes, big API changes, then it will be possible to do an upgrade path, but it might be an ugly upgrade path that might make migrate easier to do than upgrade. And not just easier, but more stable. I was talking earlier today that if we do hundreds of lines in an upgrade path, is that hundreds of lines of new code more stable than using an experimental module which migrate still is or not? Yeah, what's more stable new code or an alpha experimental module? I don't have the answer for that. Okay, so that was it. So if you want to work on some of these changes, then there's going to be amazing teams working on these at the general sprints. And I'm sure that there's going to be issues that the mentored core sprints and the first time sprint workshops will also get involved with in a lot of these areas that we're working on. And if you have feedback, positive, negative, something about this session, then I would love to hear that from you. Thank you. I'm going to go back to the evaluation submission form. And if there's no other discussion item, then thank you for coming. Just one small thing. You can leave if you want. 777 we recently changed to not exactly semantic versioning, but we do plan to do some kind of major release every six to nine months. And then we're going to do some new features that might already be in Drupal 8 or Drupal 8 in another form. So just wanted to quickly mention that. Good.


I thought I'd demonstrate for you the bead lock loose tenon joinery system that's a poor man's Festool Domino system so let me show you how it works it comes with four simple five simple pieces a little machine blue device here two toggle screws a little block with guide holes in it for the screws and a drill bit so to set it up for three-quarter inch that's what I'm going to demonstrate here I set this block up in a way that when I put these screws in one's going to go into a and then I want the B the one that's going to go into B the B in the middle slot that's for the three-quarter inch so let's get those in what you do here is you secure this on your workpiece and yet we're going to draw a line first and then what we do is we make sure it's in the A position and then we drill drill drill then we loosen it move it over to the B position and then what that does is that drills in between two of those three holes and then that creates the pattern so let me demonstrate my first step here and speaking of poor man's things this is my poor man's bench vise simply one of these wooden vices held with some DeWalt clamps here and then I can work on my table that's good if you need to do something you don't have dog holes and you don't have your vices built on yet so let's get this lined up so now I know where these are going to go let's get the stuff put into one and I want this to be the face there's a there's a place where you can see inside of here so when you line it up that gives you the ability to line up to your line line up to your line it's not going to redundant but so if you can see that you allow it to be very precise got a nice clean edge and get right on that line that way your two pieces are gonna connect properly if you get everything lined up later in the middle of that line get this in position a and lock down so it doesn't move again if you can afford the thousand dollars for the Festool Domino and the three hundred dollars for the supplies go for it that's a lot faster than this is but if you just an occasional weekend woodworker and you just need to do some joinery often and you feel is one of those situations where you want a little extra strength and so you want to add some loose tenons then the bead lock system is an option for you one two three loosen my thumb screws what we're going to do now is slide this over to where two of these holes are bridging two of the earlier holes so you push that all the way over it stops it's designed that way you need to lock it down tight so that it doesn't move and with everything locked in place if I look down in there I would see I'm right on the wall between two holes and so make sure I'm deep enough I've now got my mortise of a certain design I take that out of this shape and if it's everything went right then the pre-thing that I bought are going to fit in there and that cut off at the right level with the mortise in the receiving at the other end that will be my poor man's Festool Domino joinery set so anyway that's the that's the bead lock be ad lock LO are they spelling it with a C LOCK so they didn't do anything fancy loose tenon joinery system I think that's all I need to show you you got the idea small workshop guy signing off


What's going on everyone? Sam here with Leighton Sports Cards and I am ripping two boxes of 2021 Panini Obsidian Football for Josh D. So good luck Josh. See what we got in here for you man. Let's pull something huge. I got to record the or upload that video after this too. I gotta remember to do that. Empty box. Here we go. Good luck. See a color blast. That would be sick. So starting off we've got Joey Bosa Orange 275 for the Chargers. There you go. Bolts. Got Daniel Jones to 100 on the base and Tramacitty rookie not numbered. First hit we've got to nice four of ten Obsidian Galaxy Gear AJ Brown for the Titans. Wow this is a good box. That's four of ten. Next up also to ten. How about for the Saints? We've got Atomic Patch of Drew Brees. Nice hit there. Josh that's so sick. What a hit right there. That's awesome man. See what number of ten that is. Three of ten. Nice one man. 47 of 50. How about a lightning strike? John Randall. Heck yeah. Hall of Famer for the Vikings. That's sweet. It's been a fun box. And to end it off we've got Matrix Materials of Aaron Jones for the Packers. That is to 75. That is 12 of 75. Player Warn on the Aaron Jones. Nice AJ right there. All right box two Josh. Good luck man. Come on color blast. I'm like so stressed out opening Obsidian boxes now. After that one empty box from last night I'm like terrified of opening these. It's bad. Empty. All right we've got Felipe Franks to 100 rookie for the Falcons. There you go. Felipe. Got Josh Jacobs. Yellow to 25 for the Raiders. There's like some low numbered offensive guys. Got Kirk Cousins. That is base. First hit of this box is going to be Ramandre Stevenson. That is 18 of 100. Rookie eruption. Oh here we go everybody. My guy to 75. The Scridge Auto. Nice Dwayne S. Scridge. Nice one there Josh my boy. Given him his nickname that he's officially going by. Scridge baby. We've got to 25. This is sick. Vince Young on the Aurora autograph. Nice one there. That's again to 50. 20 of 25. Excuse me. I'm sorry. And last car to the break we've got to 150. RPA of Michael Carter for the Jets. Nice hit there. Going to be in competition with Breesie Hall to be running back one in New York. Nice one there. Grats on that one Josh. That will do it for your break there Josh. Grats on all the hits. Get those right out to you. Thanks. Yeah man.