Welcome everyone to this session about how to integrate open telemetry with APM2 by Zharan Shah. We are glad they can join us today. Without further delay, over to you Zharan. Hello everyone. So I'm Zharan. I just have a small bit of introduction before I get started with this particular talk. I work with BrowseStack and I'm a senior software developer over there. And yes, with this basically I'll stop with the introduction. I'll start with the actual talk that we have over here. Essentially, we all know that APM has now going to release APM2.0, which is going to be a platform in itself, rather than just a simple kind of library. So yeah, so this particular thing is relating to the 2.0 version of APM. And hence we have something to offer with the platform that APM is offering right now. So this is talk about observability. I wouldn't go into too much detail of what observability is, but I'll give you a little bit of an introduction of each and everything and then there is a demonstration there. So this is the agenda for the talk. Why do we require this first of all? What essentially is this particular talk? And then the APM2.0 introduction to a little bit of how APM2.0 works and why essentially this is where it helped us build it because of the platform itself. Yeah, and then these are the points that we're going to go through one by one. So I'll just start with why particular this talk. So first of all, like APM2.0.0. Sorry to interrupt, Haran. I believe there are people who are not able to hear you clearly. You may need to speak up a little. Sorry for that. Sure, sure. Not a problem. Can you hear me now? I'll be a little bit louder. Just let me know if it's all good on the chat. Much better, Haran. Please go ahead. Okay, okay. Awesome. So essentially I'll just go through again once again. This is essentially the agenda for the talk is the observability part of any microservices or services that we have in general and how APM<IP_ADDRESS> factors into that. APM has two point of platform right now, which is a new platform for developers, built for developers and we can modify, build new features around it so that those all things are what APM offers. And this is one of the libraries or plugins which we can integrate with APM and we'll have an observability feature, which essentially I'm going to talk about what exactly observability is. So this is what the talk is about. Moving on, APM2.0 essentially introduces a concept of plugins before even going to what observability or what our plugin that we have developed is. The plugin feature essentially is that we can extend APM features that we have already plus essentially new features that we want. Those features are something that not everyone wants, but there are few companies, few folks, few people, individual folks who would want to have that feature. So they can extend their feature set with a plugin, which is what APM2.0 as a platform offers. So for the same platform, we have built an open telemetry plugin, which essentially is a two app observability tooling system that we can use to trace down a request from wherever a user is and or wherever it is to the end of our service and we can trace it down to what exactly APM2.0 time it took, how many requests did we get for a particular endpoint, etc. So all these things are automatically available when you use this plugin and you'll have all those features available for you to visualize as well. So this is just a brief overview of how the open telemetry plugin is going to look like and there's a demo at the end. So I'll just show off the basic demo. Before that, again, what APM2.0 offers is like this is a basic introduction. It has a concept of distributed drivers now. You can have an independent decoupled driver and integrativeism, which is what I've been to point out first, but this talk is more to do with the plugin ecosystem that they're providing, which we can extend APIs. Not every automation you see is obviously required, all those kinds of commands that everyone uses. It's a very broad spectrum. So developers can or in general anyone who has some use case for a particular EPF example can develop their own plugins and integrate with the APM platform as you see over here. It's a very basic diagram of how it's going to look like. And you can install it during the runtime and use it as per requirements. It's more to do with a very generic ecosystem that APM is offering, which we are going to leverage with this particular plugin that we have. Now to the actual main topic of the talk is what exactly observability is, like why would we even require this particular plugin like. So basically it's to do with right now, as of now in terms of the increasing large systems and scalability systems and user bases, we don't have a whole picture of our system and internal space of the system. We do have logs and everything, but there is a limitation over there where it's human readable, but not very easily transferred to a particular way of showcasing how exactly and how much time it took and actually giving a very simple way of looking at the metrics of our system, end-to-end system. So observability, what it offers, logs is one part of it. Yes, but there are multiple things to it. It offers a way of us to identify the internal space of the system at a given point in time. But since there are multiple services, there are distributed services. There could be monolithic as well. It doesn't matter, but there are multiple parts of the monolithic services as well, which we need to identify and what is happening in each particular part of the service. So to do that, we have to transfer some data, some consistent data model. We have to define some matching data models and then use the data to visualize our system. So essentially, this is what observability is, is to give a particular consistent way of looking at the internal state of the system. And they are very commonly used cases, set up Microsoft in large companies who have multiple services. They are talked to by a messaging protocol or something. But we don't really have a picture of where exactly my request ended or where exactly it was an error. To get that picture, we can use observability as our way of mechanism to identify what is happening in the system. This is the tip of the observability. Any questions, obviously, you can ask me the chat. I'll go through this question later on. But this is just an introduction of observability to get more details about it. Obviously, you can check. There are multiple, multiple places where you can look for a lot of more information. Then over here, this is an introduction of what exactly you are providing. So these are the three pillars, essentially of what observability is, which number of requests or three, eight and everything. There is log, log-in information that we obviously do in a distributed system or in general, any kind of software that we have. Tracing is one of the key features that it provides is we can trace a particular request from end to end, where it went, how much time it took in particular one single part of a service. And all those things, it's configurable. All those things you can build. And that's how it's up to us to use how we want to use. It's a very generic tool mechanism that we have. So this particular talk is more towards the tracing part of it, where we request to Appium. But there could be multiple services before Appium that goes to Appium directly. And then we can trace down what exactly happened and if there's an error, something that we can track through as well. That's something that we can do via tracing because essentially that's what Appium is. It's a request-response kind of a mechanism. It's a client-servo model that they provide, which is very similar to obviously what Selenium does offer as well. So this is how our automation works in general. And that's why tracing is going to allow us to identify what exactly happened in Appium or if it did not even go to the Appium service itself, that is some other services that we have which failed, validation failed or something like that. So that's kind of a mechanism that we provide. And there are multiple use cases over it. I'll go through one demo as well so we can add it for what kind of use cases people have. This is kind of obviously an example of microservice architecture where there could be multiple microservices and there's a UI in them. There's a front-end as well. There's a backend database and everything. And there are parts of this where request flows where in one particular request flows while there are other requests that doesn't go to that particular service. So we can identify each particular request. We can trace down, we can filter those as well. So in general, these are the use case. There's a large use case because there is in kind of our system services that people have been offering nowadays and there are a lot of companies that are offering services for anyone, for business B2B or B2C. There are services that require us to identify in terms of a DevOps or SRE role. We need to identify what exactly happened and we need data to obviously track down. So this is where we use observability and we use facing abilities that we can provide internally via open telemetry, which is one of the standardized tool to build a consistent data model. So yeah, I mean, talking too much about it, I'll just showcase a demo and everything if there's any confusion, we'll be able to identify where exactly the question is. So this is the report, obviously that we have built and I'll start with a demo to showcase what exactly we are offering, right? In terms of the plugin itself, which is the open source, obviously you can go and check it out yourself as well. So before that, I'll just go through it quickly to the chat and ensure that there is anything that breaks or is breaking. Is it okay now? I mean, I haven't done anything, but yeah, it's just some form of internet breakage or something like that. Apologies for that. I'll share the slides with the team and there will be slides available for you to look into because all the information that I've said about and the audience are not listening or anything, it's already available in the slides, so you can go through it. It could be a problem Darren, with any of the participants also. They are fine right now. I'll focus on the demo now. So basically, now again, Apriam is offering a way to install plugins. This is the plugin that we have developed, which we can use. So essentially, there are readme's in the section, in the open source section of the repo. And then you can check it out how to install and everything. I'll just start with the plugin and then if any questions later on, I'll update in the readme as well to ensure that everyone understands so essentially this is how I started the plugin and I've started Apriam now. Apriam is currently working right now and so if I just call something, so I get a response back. So before that, if you see, my call is to localize 3000, whereas my Apriam started on 4723, which is my Apriam default server port. So this is where my proxy comes into play. This is just a very simple proxy to showcase the capability of having microservices and what Apriam does and we can use it Apriam as well. So over here, there is a call request that's gone through, which essentially is an exporter config and all those things, where all my traces that are being collated, I can export to certain servers, one of which is a service which provides a way for us to visualize the data in the trace data and so essentially right now, everything, all my traces, if you see over here, it's automatically generated. So before that, if I just showcase without a plugin, what would it look like? So yeah, I've started without the plugin. There is no plugin activated in anything you can see over here. I have available plugins to open telemetry, but if I do call request or anything, there is no route available for this because my plugin has not been activated. But now if I install my plugin and use it and then there's a added route, which obviously Accom 2.0 has offered for any plugin, they can add their own routes and now I can do kind of a call request and now my exporter config and all this. This is more of an API thing that I'll add in the readme stuff part of my repo. But apart from this, for example, if you see over here, I have a call request which goes through the config which is a get call and this is an active exporter config and all those things are available, which is more to do with how observability works. And now let's see how I can visualize this. Obviously, I can see the trace over here but there's no use to me because it's not very much readable. It's kind of a common genetic based on data. So let me... There's an API that I've exposed in the plugin which you can define your own exporters and pass all the configurations related to the exporter. For now I'm just using a default configuration for Yeager. So over here if I do this, I have successfully initialized the Yeager exporter. Essentially, there is a Yeager service running in the background that I've started with Docker. And if you see now, there is showing the Yeager exporter export successfully opened up and for one particular span. So now I have a call request which I do over here, for example, I do a call config call. So before that, let's visualize how it works. So if I go over here and to the Yeager UI, so that is my three services. If you see over here for Appium, which is the Appium service itself which we have our plugin. Over here it shows me one particular HTTP post call which is directly directed to the configuration page. But let's say I have Appium under a micro-service. So I can look into this and for example I can see there's an Appium proxy which has a middleware which is an express and it's middleware obviously stuff to do with Node.js express server. Then there is a rate limit, essentially another middleware and there is handle proxy which is another middleware and then essentially in the end it goes to HTTP get call which goes to Appium. Over here you can see there is some warning. Obviously you can ignore this one now. And for all the information around what the request was, you can see that there is all the request over here. You can phrase down to where exactly it went and from where it went to which particular service where was the endpoint and essentially all those things. What the endpoint was, how much time it took which is very important for us to phrase down any bottleneck into our system. All those things are available over here. So for example, let me see if I can change the rate limitation and let's based on that I'll showcase how the added part of it would just a second. So what the added part of it would give me. So I have my proxy running and for that I'll have to go through this particular repo. Sorry about that. So I'll just modify some of the rate limitation stuff so that I can showcase how in the end basically I can limit. So over here I have max 10 requests. Let me change it to one and then restart my proxy. So I have restarted my proxy now and it's running. So now I can make a call request with a normal debt call over here. My request has gone through and I can see it in the Yeager UI as well where my request is just a few seconds if you see over here. A few seconds ago this particular request now let me again request and I believe so there would be an error for me. So over here there are two requests I'll try again later. So this is where tracing would help me identify what exactly happened if I go through the trace page and I see there's another request and there's another request with an error. What's the error? I don't know. But over here it never went through Appume this is where we can see that my request never got through the Appume server itself and it was hauled by some other service that we have over which essentially gives me a non-200 response I would say which is essentially what I can see over here and track through. So this is where essentially integrating all the microservices that we have or even a monolithic independent parts of the system we can integrate together and showcase how observability would essentially help us identify bottlenecks in the system and we can filter out over here. This is how Yeager is a service which provides us to visualize and it has its own data store but there are multiple other exporters as well and it's available in the plugin as well if I open up my repo over here so there are multiple exporters available you can go through it like over here there are the readme pages there are multiple exporters available there is obviously Yeager we have one minute sure so we have Prometheus, Yeager and Zipkin so all those things are available you can go through the page I will share all the details on the page with folks over here and yeah any questions anything obviously there is readme over here and you can read issues over here open source or any queries you have anything we can talk over here as well on the data brilliant demonstration Dharan that was a great talk thanks Dharan for sharing your experience with us today


I believe that Thursday's Slate in Daily Fantasy Baseball may be one of the tougher ones we have had this entire year because you look at the names on this slate and they're pretty good. You got to show here Tani there. You've got Nathanie Evaldi and a handful of other guys who we can typically turn to in DFS and feel pretty good about it. The problem is every single guy on that list has some sort of, I would say, pretty major red flag and it does impact what we view them and there's really nobody on this slate who comes without those red flags. So our job today is to decide who stands out if you're considering all those downsides, whether the downside is salary, matchup, current form, whatever it may be, there's a downside somewhere. So how do we handle that? Who stands out after that and where do we go for MLB DFS for tonight? Welcome on into the solo shop that's right here on the FanDuel Podcast Network and NumberFire.com. My name is Jim Saunas. I am a senior writer and analyst for NumberFire here to break down this seven game main slate with lock set for 7, 10 p.m. Eastern for today. Two big weather notes on this slate. The first one is in Atlanta for the Braves and the Rockies. Rain is in the forecast there. Looks like scattered thunderstorms. So they may be able to work it out and play around those storms, but there is a pretty legitimate question of whether they'll be able to play that game. So Braves and Rockies, a focal point here not just because of the weather, but also because if they do play, it's gonna be pretty sweet for some stacking, at least on one side. So it's risky, it's scary, and I will wanna keep an eye on that one later on. Other note is at Wrigley Field for the Pirates and the Cubs. Winds are in from center at 14 miles per hour. Temperature there is just 61 degrees. That is a big upgrade to pitchers there, big downgrade to batters. So honestly, if there were no weather, I would consider the Cubs, but with the weather being what it is, they're a cross off to me. That's how drastic the weather is at Wrigley for today. So downgrade Bats at Wrigley and make sure you check back on weather for the Braves and Rockies out in Atlanta. We'll dive in into the weird pitching slate for tonight in just one second, but first a reminder to make sure you're subscribed to the Number Fire Daily Fantasy podcast feed, wherever you get your podcasts, you can find us, of course, on Apple Podcasts, Spotify, Stitcher, Google Podcasts, wherever you get your podcasts, you can find us. We're also up over on the Fandall YouTube page. If you like what you hear, leave us a thumbs up on YouTube or a five star rating on Apple Podcasts or over on Spotify. Baseball season is in full swing and there's no better place to get in on the MLB action than Fandall America's number one sports book because right now new customers get a no sweat first bet up to $2,500. That's up to $2,500 back in bonus bets if your first bet doesn't win. So don't miss your chance to snag a no sweat first bet up to $2,500 when you join Fandall today. Fandall official partner of Major League Baseball. Major League Baseball trademarks used with permission must be 21 plus and present in select states. First online real money wager only $10 deposit required. Reef fund issued is not with trouble bonus bets that expire in 14 days. Restrictions apply, see full terms at fandall.com slash sportsbook. Fandall is offering online sports wagering in Kansas under an agreement with Kansas Star Casino LLC. Gambling problem called 1-800-Gambler or visit fandall.com slash RG in Arizona. 1-800-NEXT-STEP or text NEXT-STEP to 533-42 in Connecticut, 1-888-789-7777 or visit ccpg.org slash chat. In Indiana, 1-800-NINE with it. In Wyoming and Kansas, 1-800-522-4700 or in KansasKSGamblerHealth.com. Louisiana is 1-877-770-STOP. In Massachusetts, gamblinghelplinema.org or call<PHONE_NUMBER> for 24-7 support. In Maryland, mdgamblinghealth.org in New York, 1-877-8-HOPEN-Y or text OPEN-Y. And in West Virginia, go to 1-800-gambler.net. Pitching preview for this Thursday main slate. Nathan Eavaldi checks in with the highest salary on Fandall. He is $11,000, followed by Shohio Tani in that exact same game at 10-7. Marcus Strohman in that Wrigley weather is at 10-5 with Christian Javier at 10-3. Sunny Gray against Tigers at 10-1. Logan Allen, 91 with Mackenzie Gore, Dylan Seats and Johan Oviedo and AJ Smith-Schauber as the other guys at $8,000 or higher. Now, let's dig into why this slate is so muddy because Nathan Eavaldi's salary is pretty high. Don't mind it, but the salary is high. Shohio Tani in a bit of a slump right now hasn't looked like full Ohtani recently. Marcus Strohman, not a big strikeout guy so that that Wrigley field bump more so in terms of floor than upside. Sunny Gray and Christian Javier have good matchups and are at home, but both have dipped recently, especially in the strikeout department. So we're gonna have to make some sort of consolation here, we just have to decide which consolation that will be. I'm gonna make a consolation on Shohio Tani's recent few starts and rank him first at 10-7, but typically when we have Ohtani, he is first of the bullet. Here he's first, I guess, you know, that's kind of the way I'm doing it for tonight. So the ability to deviate is a lot higher here than usual. Ohtani is facing the Rangers and it plays a big role in why I'm wishy-washy on him because they have a 119 WRC plus against Reides with a 23% strikeout, which isn't low, but it's also not super high. And Ohtani has fallen off of it recently and you look at the data, he has been throwing fewer sliders his past six starts. And I think that the reason there is he threw that pitch a ton from July on last year and teens eventually caught on and he had to adjust. I think he'll get there eventually, but it hasn't fully clicked yet with the more diversified offering. In those six starts, Ohtani's ERA is 4.14, his swing strike rate is down to 12.2% and it's been especially low his past two starts. The velocity was also down last time out and I tend to be pretty sensitive to that with Ohtani given how much load he carries for this team.  The upside is that he's showing Ohtani and it still had spike showings even in this stretch. He had a 10 to strikeout game, he had nine in another and he's failed to go six innings just once. So it's not as if everything has collapsed, it's kind of just not what he was before. Plus in using Ohtani, I'm betting on a generational talent and I can say that with confidence, generational talent is actually applied correctly here. I'm betting on that generational talent or verity to his true skill level. And I'm okay making that kind of bet. So Ohtani is not as locked in as usual, but it is still Ohtani. So he will be the top guy for me tonight. I think you have a lot more to deviate than usual, but he will still be number one, all things considered. I'm gonna put Javier second. I considered Nathan Ivaldi here, the salary kind of scared me off there. I considered Sonny Gray. I'm more concerned about Gray's recent form than I am about Javier's. So that's why we wind up on Javier in the two hole. He is again, not pitching great right now. He's not getting nearly as many strikeouts now as he was before. And he's facing a low strikeout team in the national sorts night, but I do feel good about Javier's ability to keep runs off the board. He's facing the nationals as mentioned, and they don't strike out a whole lot. They have a 19% strikeout rate against righties, but they have a lower walk rate. Their WRC plus is 84 with a 124 ISO. So you can have good productive long outings against them even if there aren't a ton of strikeouts there. Javier, in a bit of a funk, he's been throwing more force e-mers and fewer curves his past six darts.  So that's not like a massive red flag, but it has led to just a 23% strikeout rate in this six darts sample. His skill interactive ERA there is 4.59. Now that number is too high because he is keeping hard contact and check. So his ERA is good at 2.65. I think that's probably closer to what he's done than his skill interactive ERA. But just for us, not enough strikeouts right now. I would not expect those strikeouts to return tonight. I'm just not sure that we'll need them too on this slate. So Javier, not inspiring to me. I think that he sits second regardless. I was very close to putting Evaldi second. So to me, it's kind of a 2A, 2B. I feel better about Otani at the top spot. So it's Otani one. I would say Javier is 2A and Evaldi is 2B. And then Sunny Gray is probably fourth. We'll talk about him and things to watch later on. As far as the value, I think it actually comes from the same game as Javier. That's McKenzie Gore facing an Astros team that never strikes out against lefties. So that really hurts his value, but Gore goes deep in games and can get a lot of strikeouts. So I think we should give him a spin here. The pitch count for Gore, very much in his favor. He has gone 100 plus pitches six total times this year, including three of his pass for. So as a result, I have only Otani with a higher pitch count projection than Gore for tonight. And Gore is getting lots of strikeouts while bringing his walks down. If you remember earlier on this year, he was walking like at a 14% clip. It's at a 10% now for the full season, including what he did earlier on this year while keeping a 28% strikeout rate. So Gore is still letting up too much hard contact and the Astros numbers against lefties are trending back up, but there just aren't a lot of guys on the slate who can get strikeouts and Gore is one of those guys. I've got him projected for 5.52 strikeouts. That ranks third behind Otani and Ivaldi. Gore's salary here is 86. I wouldn't consider this on a slate with much less rockiness a pitcher. Like if it were just kind of basic Thursday, I probably wouldn't be on Gore, but this one does wind up being a little bit dicey than usual. So I think Gore is in the consideration set just by default. So to me, he's the top valued 86, not feeling great about it, but I also don't feel great about anybody else. So maybe the pitch is, you don't feel great about anyone, spend the least salary possible. I'll still get some upside and that might be Gore for tonight. So top guys to me, Shohei Otani, Christian Javier with eighth and the Ivaldi right there. Top value McKenzie Gore will circle back to sunny gray and things to watch. First, so let's dig into the stacks. And as mentioned earlier, the weather in Atlanta, not perfect, pretty bad. We need to dodge some thunderstorms here, but because they're scattered thunderstorms, I think that does increase the chance they give it a try. And I like the Braves if they're able to do so. The Braves facing Kyle Freeland who has had good results recently. He's using more change ups his past eight starts and it's like to a 3.5 90 array. And that's with four of those eight starts coming in a course field. So that's really good for Freeland, but he's actually had some pretty bumpy starts on the road, especially when he's faced tougher teams in Atlanta, very much qualifies. And that's not a huge surprise because Freeland still has far from perfect peripherals. He has a 4.83 skill interactive array in this time with a 16% strike outright and a 42% hard hit rate. Typically when a guy outperforms his peripherals, he's limiting hard contact and Freeland is not doing that right now. And I think that means we can be more confident in betting on regression for Freeland. And it's a lot easier to do when the opposing team has a 148 WRC plus against lefties and a 267 ISO. Yes, 267, not 167. It's the ISO for the Braves against lefties. There are a lot of spots where you would not seconds Freeland, but I think when it's Atlanta, we should be here. So Atlanta is going to be a key focal point for tonight. Again, assuming the rain allows us to do so. One guy who is enticing in this lineup, if we're going to highlight anyone, let's highlight the number nine batter, Orlando Arcia. I think that's kind of what makes the Braves so fun is that they've got depth. Their potential number nine batter in Orlando Arcia smokes lefties. He already has four homers against lefties this year in 35 plate appearances. And he hasn't always hit lefties super well and it is a small sample. But if you look at Arcia's overall numbers this year, they're better than what they have been in the past as well. So you give him the platoon advantage, give him better overall form. I think he's a good player 29, even if he gets lower in the order, if you need him to make a Braves stack work while getting to Otani and stuff like that. So honestly, dipping down, totally okay. Kevin Pilar, is it lefties well this year? Travis Darv, no, if he's in there. Austin Riley saw his 3000. We talked a lot about Ozzie Albee's and how well he does against lefties. He's 32. You can stack the Braves pretty easily. Might be tough to get Otani and Acunia in there at the same time, but I'd give it a try at least. I think the Braves, very much the fun option. Let's do a little, keep the rain away dance in Atlanta. The second stack is gonna be the twins against Matthew Boyd and Boyd has had stretches where he has pitched really well this year. He was really limiting hard contact, but he's also had some rough starts, especially more recently, which has pushed his ERA up to 5.55. He's facing the twins tonight. I think that they are a quality stack here on this slate.  And Boyd does a decent job of keeping the hard contact in check. But when they do make hard contact, they are tattooing it. And Boyd has let up five or more earned runs four separate times this year. He's done so three times in his past six starts. He's facing the twins. They're not the most threatening team right now with Byron Buxton on the IL, Jorge Polanco hits lefty as well. He's out as well, but not a super deep slate for stacking. And I think that means we can go with the twins here and feel pretty okay about them across the board. It also does help a lot that Carlos Correa is finally coming on. He had to walk off home or Tuesday. He had a triple off the wall, laser triple off the wall Wednesday. His ISO for the full season now to 205, which is up quite a bit from where it was before. He's hit the ball really well since he came back from missing time due to plantar fasciitis. So other parts of the stack may be a lot tougher. But when you have Correa here, finally living up to what he's done in the past with a salary of $2,900, I think that's pretty enticing. So Carlos Correa, a guy willing to buy into thanks to what he's been doing at the play recently. Hopefully we get enough guys we can actually use within this twin stack for tonight. Finally, this one probably gonna be a pretty tough sell potentially if you look at implied totals. Because implied totals tell you what the bookmakers are saying is the expected number one score for that team. Bookmakers are very good at what they do. Betters are very good at what they do. So we're betting against the market here by checking out the Chicago White Sox. They are facing Michael Grove on the road, which means they're pretty big underdogs in this game. And the results for Grove have been rough so far. The peripherals are better, but still not elite. I think we should give the White Sox a look tonight, especially once we add in that they're probably not gonna be super popular. Grove's DRA is 8.28, his expected DRA much better at 4.60, but that's still not a great number for this slate. And that number is there due to a lack of strikeouts. Grove's at 20% there this year. And I think that should probably stick around there because his swing and strike rate is 9.3%. Strikeout rate last year for Grove across seven outings was 18%. So basically we have not seen him get strikeouts in the big leagues yet. And he's a fly ball pitcher who is not restrictive with hard contact, which means we get a lot of balls that are dangerous in the air. Grove may turn things around eventually, but he's not quite there yet. The White Sox just a 90 WRC plus against righties, but I like a lot of the individuals here to be on them. So the White Sox, despite the fact, bookmakers pretty low on them justifiably, I get it. They're facing the Dodgers, not a super high total game. I think the White Sox are an interesting team for tonight. With you on one call that being banged up, it's allowed Jake Berger to play more consistently. And Berger, even if the sample has gotten larger, still has a 306 iso against righties. He is striking out a lot, which is not ideal, but it's great that he's getting a real shot. So assuming he's in there once again, I would say Berger is one of the key focal points here behind Luis Robert and the way it looked. And that is Berger's salary on this slate $3,100. And I'd expect him to be in there for tonight. If you look at the expected batting order over on Fandley, he's not in it, but I think with Moncada being banged up, potentially going on the IL, I think there's enough wiggle room to get to Berger there, assuming he does wind up playing. Let's dig into things to watch the Dodgers in that same game have a much higher implied total. And it's because they're the much better offense. Just be frank about this. And I just seen some slight gains from Dylan Cease recently, which may be because he faced the Marlins and the Tigers, but the fact that he proved against them could mean that when he faces a team like the Dodgers, he could have her back to his early season form here. But we know there is a very good pitcher in there somewhere in Cease. So maybe it's a mistake to not be higher on the Dodgers, but I do believe in Cease broadly. And that's why I might be a little bit lower on the Dodgers. I'd only to go at Jose Ramirez as a one offer tonight. He's facing Ryan Weathers. The Padres given to you Darvish next to day of rest. Ramirez is kind of the one guy you feel great about on that roster against lefties. So I'm fine going there as a one-off. I'm just not sure I can get there as a full stack. I feel better getting to four batters on the twins of the White Sox than I do about the Guardians given the current state of the roster. So Jose Ramirez is a good one-off, just not sure I'll stack that roster. Finally, I did want to talk about Sonny Gray here facing Detroit at home, which is an elite matchup. And Gray did pitch well earlier on this year, but he's been throwing a lot more sinkers recently and his pitch count has been a lot lower as well. So I'm not sure if there's something up there given that pitch count has been really muted and kind of weird. So that's why I'm a bit lower. Maybe he can spike back up, but I think Gray due to the matchup will be a bit more popular than he should tonight. So that's why I couldn't quite get to Sonny Gray. If you want to go there, you've seen something more in him recently than he wanted to buy back in. I get it, totally okay, but not for me personally. I just can't quite talk myself into it. Dinger calls for the Thursday slate. Mentioned him before Jose Ramirez facing off against Ryan Weathers. Not the best park for home runs by any means in San Diego, but Ramirez fantastic batter, facing guy who lets up some fly balls and has struggled so far. So make Jose Ramirez the boring home run call for today. The fun one, let's go to Orlando Arcia. As mentioned, hitting left, he's really well so far, batting lower in the order, which means it can't be a boring one. This is pretty fun. Getting a match against Freeland. I think that's enough to make him enticing. If that game gets kind of dicey, I didn't really have a backup called, backup Dinger call in place. So let's try to find one here quickly on the fly to give you just in case things get hairy there. Not seeing a whole lot. I guess we go Royce Lewis hasn't done a lot since he came up for the twins. He had that hot start and it's been kind of up and down since then. So I guess we'll go Royce Lewis as the backup, but I feel a lot better about Arcia. So official home run calls, Jose Ramirez or Orlando Arcia. And if we get really bad weather in Atlanta, I guess we'll go Royce Lewis just because why not? As the Dinger calls for today. That's all we got for this solo shot for this Thursday. We'll be back with you once again tomorrow, breaking down a Friday site that hopefully has a lot more key answers and easy answers at pitcher when we have for tonight. Do you not forget to subscribe to the Number Fire Daily Fantasy podcast wherever you get your podcasts or check us out over on the Fandal YouTube page. Make sure you subscribe to the Fandal YouTube page also for covering the spread and lots of other good shows here on the feed as well. If you've got any questions for me, I am on Twitter at Jim Sonnis, J-I-M-S-A-N-N-E-S. Want to thank you all for tuning in for today. Good luck to you with your MLB DFS lineups. We'll talk to you once again tomorrow to break down Friday's slates. This has been the solo shot right here on the Fandal podcast network.