So, we generate here this code and the technique we are going to do this is the same which is the translation. And what we have to do now is that as I process a rule which is a grammar rule of this form I simultaneously want to generate code for this state. So, first let us understand how we are going to generate code for this and I will introduce now few more attributes for this and again I am going to use subscript which is like the relationship between e and e 1 and e 2 so that these are same inputs but we have different properties. So, one thing I would like to know now is that if you recall the way we were generating this code when I wrote something like this and suppose I say a is assigned x plus y plus z we want to write here this code for this we were generating some certain temporary. So, we said e 1 is doing the x plus y and e 2 is going to be e 1 plus z and then a is going to be assigned. So, as I am going through this process of parsing simultaneously I am going to write this code for the two things we need to understand here. One that if you look at these variables e 1 and e 2 these are temporary variables which have been generated by this file. So, that means I must have some function which can generate now a temporary name for me this is one thing you have to remember. Second thing that when I parse this particular string which is x plus y I am going to put it in a temporary name and then I am going to parse this and this together then I am going to put that value into another temporary name. That means I must remember where each of these expressions is being stored. So, that is the temporary name I must remember and therefore I must also have some attribute for otherwise I will not be able to get this code. And the next thing I have to do is that I must remember what are the code sequences I have generated so far. Because finally I am generating code and I am saying this is the code corresponding to this. So, I must remember what is the code sequence for this what is the code sequence for this and then what is the code sequence of this and what is the code sequence corresponding to this. So, I must also have some attribute for code anything else I need to have any other information I require for generating code other than these attributes and this point of time it is like that as far as script and code is concerned I do not require anything else. Now, assuming that I have all these attributes available to me then what are the type of code I will generate for this. So, let us with all these attributes and this example let us see that if I just have the grammar rule like this and I am reducing by the right hand side and I am reducing it to be what kind of rules I need any ideas. Let us look at what we have written here. Once again we are able to do it then we will be able to see that generalizing is going to be much easier. So, what are the code sequence for this. So, let us look at this code sequence. Now, as I said so first thing I must remember is that I have some attribute which is saying that I must remember where e1 is stored and where e2 is stored some place. So, that means I have some attribute which says e1 place and some attribute which says e2 place which will give me name of the variables which says that where expression corresponding to e1 has been stored and expression corresponding to e2 has been stored. Next thing I will have to do is once I know these places I will have to get a temporary name corresponding to this and say that these two variables are added and stored in that particular location. So, the way I can write my code is I can say that e place is a new term. So, suppose I make a function called without any argument which says that e place is going to be stored into the temporary name I have generated and then I will say that what is the code corresponding to e. So, if I look at the complete code sequence corresponding to this particular t. So, look at a parse tree like this that I have some nodes which are hanging like this this is how my parse tree is going to be. So, now if I say what is the code corresponding to e or will I write that attitude and so if I say it is e1 code very good compacted with e2 code anything else I need to do. So, I must generate now one instruction which will say that do this addition. So, that means the next instruction is going to be that I am going to now generate which will say that e place is e1 place plus e2 place. So, first thing I said was I am going to generate a temporary name and then I am going to say that I am going to have e code which is same as e1 code followed by e2 code followed by generating a new instruction it is saying that e place is assigned e1 place. Now, what happens here? So, look at this once again that now suppose I am parsing x and y. Then if I just parse this sub expression using this rule what will happen first thing I will say is a new temp corresponding to e. So, what will be the new temp it will generate t1 and then it will generate an instruction saying e1 code and e2 code. Now, what is e1 code and e2 code when I am just parsing this nothing it is just a variable. So, no code has been generated and then I will generate this instruction which will say t1 is assigned e1 place and where is e1 that is in x and what is e2 that is in y. So, I end up generating an instruction which will say that t1 is assigned x plus y and that value will be stored in e code. Now, when I parse this whole thing again I will say that I generated new temp. So, I generate t2 and then I will say e1 code now what is code corresponding to this that code is the instruction I just generated and what is the code corresponding to this null and then I will generate one more instruction that will say t2 is assigned t1 plus z. So, it will generate these two instructions in the right side. Similarly, if I want to write now rule for saying that I have a statement. So, if I say that my rule is something like this that it is assigned in expression then what is the kind of code sequence I will get here for this null. So, let us look at this and try to write rule for this particular grammar tool set. So, I am not trying to figure out what my s code is and do I need a place for s? Do I need a place attribute for s? I do not require any place because that is the statement that is the final thing. So, what is my s code in this case?  So, how will s code look? So, all I need to say is this is e code concreted with one more instruction I need to generate model that one more instruction I need to generate I need to generate which will say that id place is assigned. So, now if you see the third instruction which has been generated that will be passed by this particular rule e has already been passed value of that is already stored in p2. So, I will generate the last instruction to say that id places this and e code is already stored these two instructions which is even being assigned x plus y has to be assigned p1 plus z that is already available. Will I get all the information here? Yes? No. Now, suppose I write a new rule which says e goes to e star e. So, I am now changing my operator if I change the operator then what will I get? So, I am not telling you what of the rooms I will write for this. It is same as the first one except that operator will change from addition to addition. There is no other difference. So, is it making sense now? Or we are generating free address code? So, let us now go through once we have understood this part. Let us go through the generation of free address code. This is how the code will look that if I am saying. So, we are already familiar with what free address code is. So, I am not repeating that part. So, when I have grammar rule which says id is assigned e then I am saying s code is nothing but e code followed by this instruction. And if I have a rule which says e goes to e1 plus e2 that means I am taking two expressions and adding them. Then I will say that first I have to make it all to new tab to generate a temporary where this expression will be stored and then I will say e code is nothing but e1 code followed by e2 code followed by generating an instruction. And if I say I have multiplication then it will be repeated except that this plus will get replaced by multiplication. Clear? Are you confident now that given this straight line expressions or any kind of expressions with no control flow no loop nothing I can at least write systematically free address code. Now let us add few more rules. So, now suppose I have a rule like saying that e is a practical expression. What are the attribute expressions for this? So, e code is equal to. So, let us change this. So, what will I write? I have two attributes which I have to generate and four. So, what will be e code and what will be e place in terms of e1 attributes? So, e code will be just e1 code and e place will be e1 case. And what about this? So, I have to generate another instruction first or I just can carry all the instructions are generated so far and that will be sufficient. I need to generate one more instruction. That means if I need to generate one more instruction that means I need now a new tab. So, first thing I will say is that e place is a new tab and then I will say that e code is e1 code followed by a new instruction which will say that e place is minus e1 case. So, you will be negation. So, this is how my code will look. e place is new tab and e code is e1 code followed by generation of new instruction to say e case is minus e1. So, this is how we can just take on all the expressions now. So, you can see that I have taken care of all the assignments. I have taken care of all the arithmetic operators. You need to just elaborate it on all possible operators and then I can do it on negation. And then I can do it for bracketed expression and I can do it for id. And in case of id I am not taking any code but I am just taking the case value. So, all expressions are done. For all expressions now I can write here this code. Okay, expressions which involve arithmetic operators. So, here is an example and if we try to write it. Now, suppose I am just parsing it. I am not trying to use that but I am not trying to even optimize number of calories that we will get some other point of time. Maybe later. Okay, suppose I need to now code for this by parsing all the rules. What is the kind of code I will end up generating? First, you can see that if I am scanning my input from left to right, a assignment will be generated and then first this univc will have to be taken because this has a higher incidence. Okay, so this will have the highest incidence then the multiplication will come and this b star minus c will be evaluated. This b star minus c will be evaluated and then addition will happen and then assignment will happen.  So that gives me value of this sub expression. I need to do the same thing here. So as I said I am not optimizing calories here at this point of time. So I will now say p3 is minus c and p4 is b star p3 which gives me value of this sub expression. Then I need to add the two and put that in a new temporary to say p5 is p2 plus p4 and then I say a is assigned to p1. That is the kind of free address code I end up generating for this particular expression. Clear? Any questions on this? So this looks fairly straightforward as far as generation of free address code for expressions is concerned. Any complexity which is involved, something which is not clear, anything because this is something you are going to heavily used in all your colleagues. You need to do code generation and you need to understand all these things. Now let's come to flow of control. So if straight line expressions are clear then I need to worry about flow of control. Now what are the flow of control statements I have? I have if, I have if then else and then I will introduce hydration. But let's see first conditionals. Now to generate code for conditionals only thing I need to understand is that what is the semantics of each of the statements. So for example if I say a rule which is of this form. Suppose I have a statement which says if expression then statement. Say it is possible. So again I want to distinguish between this as on the left and that is on the right because they have different attributes. And E is a Boolean expression. And for this for the timing what I am going to assume is that I have some type of a basic code Boolean expression. I will not worry about how do I do that. I will take that as a black box for the timing. But only thing I need to remember is that when code for this has been generated. What is the place where this value has been stored? Because I need to go and compare. So when I say place what that means is there is some category in which value of Boolean expression has been stored. And then I need to compare that for true or false. So how is code for this look? Seventically what does it mean? Seventically what it means is that first I will give it code for E. Then I will check whether this is true or false. If this is true then I will go and execute this code. And if this is false then I will jump to some level which is beginning of the next statement. So now only way only thing I need to know is therefore not worry about code for can be systematically generated. If you know the semantics of this particular statement then very easily do that. So first you will say is that I have some E code that has to be generated. So let me write straight away S code. So this is what my S code is going to be that first I must have code for E. Now once I have code for E then what is the next thing I need to do? I must check it for true or false. Now where is the value of this E code stored? That is in E place. So now I need to generate one instruction which will say that if E place is equal to E place is equal to true then what will happen? Then code for S1. So can I do it other way round and say that if this is false then where do I go? After S1. After S1. And what is that after S1? I need to have a label where I can jump. That means now I need one more function. Earlier I was generating only 10 degrees now I also need to generate labels. So now let me say that I also generate labels so let me say that L1 is a new label and new label is some function I have introduced which will give me a full of labels we keep saying that there is a label. So now I will say that let's jump to L1 but if this value is true then what do I do? Then I go and execute S1 code. Now assuming that S1 is straight line code it has no control flow but even if it has control flow for this and all I need to say is that this is S1 code. And after that what do I need to do? I need to generate a label. After all that is where the control is going to be so I need to now generate one more instruction and I will say that generate now L1 this label. Does it semantically translate what I have captured here? So this is really what happens in control of code. I started actually with a different example so since I started with by example let's also work that out or let me skip that part and first go to so I started with identification bit. Let me skip this part. So here is if that is actually a more general case of if that is if that is. Now two statements here one is S1 and another is S2 and depending on whether this value is true or false I will either execute S1 or S2 now how this code which I have just shown and this code these two things are going to be different. Don't tell me the difference everything else will be that if I say that if this is true then depending on that I will either jump on this or jump on this now depending on whether you compare it to 0 or 1 one will be a false true statement another will be a jump. So you need to have one more level for either than or as part depending upon whether you compare this with 0 or 1 say that if this is false then I am going to a level which is corresponding to as part which is S2 and if otherwise it will just fall through and execute S1 I don't require a label for that and if S1 gets executed then where should I just fall through or jump somewhere then I jump to a label which is after S and then I will say I have a label which is corresponding to S else where I jump here and then I have for S2 and then what do I have I have one more instruction for jump no it will just fall through right so then I will have this only for S after then somebody for some reason this is not displaying colors as it should so this is how this schema will look and if I now say that this is how the schema is looking then there are two labels which are being generated and I need to make calls to these two labels so what are these labels these are I will say that S else is now a new label and S after is a new label so these are two new labels and then I will say S code is nothing but E code followed by this statement if you say that if E place is 0 then I jump to this label then I will have code corresponding to S1 then I generate now one more instruction say jump to S after then I generate this label and then I will generate code for S2 and then I will generate this label S after so this takes care of both so when we are generating code after so whatever statement will after that won't be repeating that in the first when we generate code for that statement so what will you repeat good question but what will you repeat I am only getting a label not a full state now you are still not completely your question or you are not actually it is an issue which you are sort of raised but you are not so what happens okay so let me rephrase the question now what happens if the statement immediately after this has a label in the beginning what will happen in that case so suppose so let me go back and just wait for one slide and then we will discuss this okay so let's go back to what we just skipped and which was okay and then I will address this issue which just states okay now how do I generate code for file statement now okay what is what is the schema what is the schema what is the schema what is the schema what is schema what is schema what is schema what is schema what is schema what is schema what is schema what is schema what is schema what is schema what is schema what is schema what is schema what is schema what is schema what is schema what is schema what is schema to this and then I will have a label SR and if I now write it in terms of code, how will it look? It will look something like saying that I must generate a new label corresponding to this and I must generate another label corresponding to this. So, two labels must be generated and then I will say that S code is now just this schema which is generating a label begin then it has code for E. So, I still do not know how to expand the code for E, but I am assuming that this part has already been processed. So, when we look at Boolean expressions this part will become clear and then I generate this instruction which says if E place is 0 then I jump to S after and then I have code corresponding to S 1 and then I have code which is corresponding to this jump and then I have generation of label itself. Now, suppose after if there is a statement next statement is why? So, I am generating one label in if there is a statement which says go to the beginning of the next statement and I am generating another label which is part of this while which is taking me to the beginning. So, what happens is if there is a followed by why? You have two labels of the beginning of a while statement actually yes we will have two labels right. So, if there is a statement will generate a label, but when control comes to this label there is no executable corresponding to that. So, it will fall to the next label that will work, but that is very inefficient we do not want to waste number of labels. Another issue is that when we are talking of labels suppose I need to generate machine code and not assembly code. See if you are generating assembly code then labels are nothing but symbolic labels you have done assembler you have read something about assembler yes no. So, how do I determine suppose I am assembling this program I am using machine code how do I find out address of the label. So, if I say here go to S after what is this address go to S after do I know this address at this point of time. If I am not using symbolic name, but suppose I am assembling this this is now assembly code and I say jump to S after what is the PC value of S after do I know it at this point of time yes no why do I not know it what prevents me from knowing it at this point of time. I do not know how much code is involved in S 1 by its recursive definition. So, when I am passing this I do not know how many instructions are going to be taken here. So, when I say I have to repeat in the beginning of every class please turn off your mobile phones and so on within that an industrial protocol when you enter a class So, if I do not know the address of this when do I fill in this address I will know this address only after I have generated all this code these are PC values. That means what will happen is that this place will have to be that actually blank that you will not fill in this and this will be filled in afterwards after I have determined value of this label and we are going to use a technique called back patching. So, if I am using back patching then you will find that this problem of multiple labels but in this key when I am not doing back patching it is a two pass assembly or two pass code generation then I will generate all kind of clearance. Is your question now answered. So, these are two flow of control statements we have that we can handle while now I am not going to do repeat until and so on because once you have understood schema for one iteration rest of the iterations are going to be the application of the same thing and once you have understood schema for if then else then all conditioners are going to be same except one which is case statement which I will handle slightly different because case statements are special and they are not just if then else. Now, what will happen is that in the simple table I am putting names now. So, two instructions earlier which I had generated I will now modify it and say that when I was so first when I wrote this and I said e quote is nothing but id place. How do I know what my id places I have already entered that in simple table. So, I will just I can do a look up and find out that what this id places. So, basically this is returning a pointer. So, if I am just saying return a pointer to this I do not have to have a name for this and a pointer will be sufficient and we say that if this is not null that means this value has already been entered in the simple table then I am going to emit this particular quote. If it is null that means variable does not exist in the simple table then I am going to give an error. Similarly, when I say e goes to id. So, these are the two places where I need to access my simple table e goes to id all I need to do is look up this id and if this id has not null then I say e places p otherwise this is an error. So, this is the only additional thing I need to do now need to check whether this value is already in the simple table because I do not know when I start parsing the value cannot be there at all. Now, next thing that comes is arrays. So, I have handled simple variables but what happens in arrays? Array have certain properties which are different than variables and one property is arrays have is that all array elements are going to be given consecutive locations. That means when I write something like. So, if I have a declaration like in grade 10 what this means is are two things one that I am going to now allocate 10 elements which are going to be indexed by 0 to 9 if I am talking of c and depending on language the index values may change but more importantly I will say that I am now reserving certain space in memory which will have 10 locations 3, 7 and 3. So, this is going to be a 0, a 1, 2, 3, 4, 5, 6, 7, 8, 9. These 10 locations are being reserved. So, I will not say that a 0 is. So, my map is not going to be something like saying if this is my memory that a 0 is here then a 1 comes here and then a 2 comes here. This is not what is used. I always have consecutive locations. Now, if I have consecutive locations for all array elements in memory then do I need to know the addresses of each of these variables? I do not have only thing I need to know is that what is my base address from where the storage starts and what is my index value? These two are sufficient to find out. So, in symbol table I am only going to store the base address and whenever I say that I am trying to access a i only thing I need to know is i and I need to know my base address and then I can do this computation. Now, this part of this computation has to be pre-computed and stored in the symbol table for code generation. So, what will happen is that arrays are going to be stored in a block of consecutive locations which are like this and assume that bit of each element is done. That means from the type information I know that how many bytes each of these elements is taken. So, if I say this is an integer array and each integer is given 4 bytes then I know that it is taken 40 bytes. That gives me the total address which is required. Now, when I say that I want to find ith element all this is saying is that I need to know my base address plus I need to know what is the lower index. Now, depending on the language it could be 0, it could be 1 or their languages which will say that which will permit me to have declarations which will say a is 10 to 90 that is also permit. So, giving you a more general expression and which is saying that I must know the lower index value. So, if I know I and I know the lower index value then ith element can be found by saying take the base address find out the difference and multiply it better. Now, you can see clearly that if it is 0 then the base address. So, for example, if I want to know the base address of I then I just need to have 9 here and this will just vanish. So, this will give me 36 base plus 36. So, that is what will happen that which is the relevant native address of A. So, depending on the language you will have to find what your low value is and if I now take this expression and sort of do some library and reorganize it. You can see that there is a constant part which is base minus low into W and there is a part which is dependent on I and I can write it in this form. Now, this constant base minus low into W this can be pre computed and can also be stored in this interface. I do not have to compute it every time. If I say that I want to find out A I or address of A I I do not have to compute this part and I can just access this because then only thing I need to compute is this particular multiplication and this addition. That is going to save me again time it is going to be getting more efficient. Now, if I go to two-dimension arrays problem becomes slightly more complex and then we generalize it for two-dimension arrays. So, if I go for two-dimension arrays and I say that I have now. So, let us not worry about languages like C where arrays are going to be handled by pointers. But let us take a situation like this and I say that there are two-dimension arrays which is going to be mapped out to memory. First question that comes is that if this is my array, how do I map it on to? What is the order in which I am going to pick up elements from this particular array? What is the order in which I will pick up? Can I randomly pick up these? Obviously, no. Then do I go in this direction or I go in this direction? And why in this direction? It is defined by the language. So, either you are going to have row major storage or you are going to have column major storage. Fortress has a column major storage. C has a row major. So, if you take a Fortin array, that is how it is going to be stored. So, this is called column major and row major is going to be that I will take elements in this direction and will keep the storage. Now, obviously, you can see that access patterns are going to be different because I am not assuming square arrays. These two dimensions could be different. So, access pattern depending upon whether this is row major or column major is going to be there. That means I will still start with my base address here and suppose I say that I want to access this particular element which is aij. Now, to find out aij, that means if this is giving me the row number and this is giving me the column number, I need to find out how many rows are before that and multiply that by number of elements and then that will take me to this base address. Then I say that how many columns are previous to that. Then that is the computation I need to do to find out the base address of aij. So, this is what happens. The storage can either be row major or column major depending upon the language you have. In case of 2D array stored in row major, for column major you can do this computation. The address of ai1, ai2 or aij can be calculated in this form. It says that base address of aij can be calculated in this form. So, this is what happens when I say that this is giving me the row number minus whatever is the low index of ai multiplied by number of elements in each row, which means number of columns are. So, you have to see very clearly that when I am saying I am computing this, I will say how many rows are before that and multiply that by number of columns. So, n2 gives me number of columns are and i2 minus low 2, which is giving me then this offset and multiply whole thing by w and what is the number of points each element is going to take and add that to the base address. State expression again I can reorganize this. So, n2 is just giving me column numbers and if I rewrite this expression, this is how this expression will look and you can see that this part of the expression is constant and this part is the only one which depends upon i1 and i2. So, after simplification you can see that this expression can be pre-computed and can also be stored in the symbol table. So, this is I will say that this is a constant part constant value which is part of the symbol table. So, to find out the address of ai1 i2, this is the expression I like to compute everything. This is the kind of code I like to generate. So, if I now say that and this you can now expand to all n dimensions and also you can expand it to that instead of row measure if I have column measure then you just need to change this particular expression. So, there is doable I mean there is simple 6, 7 class. So, as code generation what we will do that if I say that a some array which is 10 by 20 and I want to find out. So, n1 is 10 elements and 2 are 20 elements and I assume that w is 4 which means each element takes 4 bytes and I want to access a y z. So, y and z are 2 indices this is how my code will look. I will say that d1 is y star 20. So, this is basically this part is the one which corresponds to computation of y and z and this part is t3 when I say t3 this is really computing this constant. So, I do not know what this a is this a will be and then I know this a. So, when will I know this a at what point of time this a is computed or is known to me. So, whenever I say that array a is going to be stored in some memory then I will know the base address of a and that also is in the symbol table. So, I can then just compute this part and then I can add and generate code. So, you can see that expression is not being computed every time I am writing code for a y z then the only change. So, there is a 3 address code for computing arrays. So, only difference between a variable and array is going to be that arrays are going to have consecutive locations and therefore given an index value you will have to find address of each of the address for all other variables addresses in the symbol table. Any questions on this? So, now let us look at one more thing and if you recall at some point of time we started doing type checking and type coercion. And when we are doing type coercion at that point of time I wrote code in certain manner. So, if you recall I said that when we have code in this form and then I said if this is in and this is in then type of this is in and if this is float and this is float and type of this is float and if this is in and this is float then I wrote one expression by doing a kind of type internal type coercion. So, same thing now in terms of code generation what will happen there if I am now trying to generate code and I say mixing of types is allowed that means e 1 and e 2 could be of different types but they obviously need to be valid types as far as this expression is concerned. Then the way I have to generate code is now if e type is integer and e 2 type is integer then I am going to emit code which will say that e place is now assigned e 1 place plus integer addition and e 2 place and type is going to be integer. So, now you can see that I am mixing type checking along with the code generation. And this is the reason if you recall I said that rather than clubbing it in just two clauses we are saying if both are integer then this is integer else this is real. I am going to mix this into four separate cases. So, this is what happens here and similarly if both are real then the same thing can be done but if two are not the same one is integer and another is real then what will happen then I will have to do type casting which is internal coercion. So, what do I do now for type casting now you can see that if this is integer and this is real that means even has to be type casted to now real. So, for this I now need a new temporary variable and I say that I am going to emit now a code which will say that u is assigned into real which is the function to type cast e 1 place. So, this interior has now been type casted to real and then I will say that e place is nothing but u and real addition and e 2 place. So, one more instruction for type casting has to be now and then I will say e type is real or what will happen when this is real and this is integer I just need to flip the order here and say that it will be e 1 place and u will be into real of e 2 place. So, I just need to change the order and I will get similar source code from this. So, now you can see that when it comes to real type getting in code generation it is not sufficient to say that I will generate 2 clauses but I need to expand it in full 4 clauses and for each case I need to get in the code and this is also ensuring that I am generating the right kind of operation here. So, in this case I will generate integer addition and in this case I will generate real addition and in all other cases actually I will generate real addition. But in this case I am also generating now an implicit type casting instruction.  So, if I am only, as I said my language is assuming that e 1 and e 2 are only a 5 integer and real. Now, suppose you say that I can convert an integer to character and I need an expression. So, that is the restriction which is imposed by the language, not by the compiler. The compiler is just implementing whatever language is saying. So, if my language says I am only allowed to mix imp in real, then I am doing this. If you say that I am allowed to mix all these tantiles, then I just need to expand all these cases. That is the only thing I do. So, let us take a break there today and all those who did not collect their answers in the previous class. You can just start. I have my telephone here. Thank you.


You know, of course he's got like a nice tombstone that just says Jason Voorhees. You think they would have spent that much money on this mass murderer's tombstone? Like, those things are expensive. Green made him and be done with it.


Here is Vivek's 10 principles of truth. This is a tweet he put out. It's truth in all caps. 10 truths, I guess, that we should all abide by, that are just true, that there's no doubting, there's no questioning. One, God is real.  I mean, I don't know if this guy's religious or not. He doesn't look religious. He doesn't sound religious, but maybe, maybe, but God is real. His number one principle. All right, he's got the evangelical vote. He's got the Catholic vote. He's got the religious vote. He's nailed it. He's good. Second, in order to just make sure he's got that vote, number two is there are two genders. You know, some of us were confused. So that's good. So there are two genders. Three, human flourishing requires fossil fuel.  Two, Alex Epstein, fossil fuels. This is great. Supposedly Vivek, I didn't hear that from Alex, but if I've heard from other sources, Vivek is in regular contact with Alex Epstein. So on fossil fuels, Vivek is probably going to be the best you're going to find. Four, reverse racism is racism. Absolutely. Five, an open border is no border. Isn't it? Even if you put tanks there but allow immigrants in, is it not a border anymore? So fair days of logic here and there. What could you do? Six, parents determine the education of their kids, of their children. Certainly should and parents need to get more involved. They should take the reins of that education. Seven, the nuclear family is the greatest form of governance known to mankind. I mean, tell that to Genghis Khan. I don't know. I don't know what to do with that. Greatest form of governance known to mankind, governance for what purpose for it? I don't know.  I don't know. Anyway, eight, capitalism. Capitalism, we got the word in. We got the word in finally. Notice what he uses capitalism for. Capitalism lifts people out from poverty. That's why we have capitalism. I always wondered what the moral basis for capitalism is. It lifts people out of poverty. So we got, we nailed that one. At least they used the word capitalism, I guess. There are three, oh, nine. There are three branches of the US government, not four. Good one. This is against the regulatory state, the alphabet agencies. That's the fourth branch of government. Maybe you could even expand it to include the Federal Reserve. I wonder if he'd go there for, probably not. And 10, the US Constitution is the strongest guarantor of freedoms in history, only when it's interpreted based on what the actual Constitution meant. So it has to be interpreted correctly. But yes, to the extent that it is interpreted correctly, it's good. All right. What do you do about this?  God is real. Gender is okay. I mean, these are the number two, the one and two in your 10 principles, right? Flush in question, fossil fuel, we get to 10 on that one. Rosaries says investors, that's good. An open voter, snow voter, bam, fail. Parent determined education to children. Yeah, absolutely should. Anyway, should. Nuclear families are the greatest form of governance known to mankind. Really struggling with that one.  That's got to be a six at best. There are three branches of the US government, four, that's good, but it would be good if like they are two genders, that's pretty clear cut. Why not say the regulatory state, the alphabet agencies must be disbanded, they are unconstitutional. That would be clear. And okay, so anyway, a mishmash, I don't know what to make of Vivek, you know, he's getting support from some interesting characters. I spoke to somebody who is, okay, so this is the thing. Yeah, anyway, let's see Vivek in the debate. If Vivek, we'll see what he says, we'll see how he focuses the debate. I'm interested in this guy, because I think a lot of it is show. I think the bad stuff mostly is show. I think he's mostly good, as good as one could expect in the world today. But the bad stuff is they mainly because he has to appeal to the to the base. He actually gave a good explanation for why he would pardon Trump, which is reasonable, I think his explanation is reasonable. He'd pardon him because to unify the country, you need to unify the country. So that that that's reasonable.  But I'm still watching him, because I still want, I still want to see what actually how that actually works out.


Maintaining combat fitness with limited time, resources, and space is always a challenge for the military. So a former Navy SEAL developed a cardiovascular suspension workout system that looks simple, but it's very difficult. It caught on wildly and has evolved into a competition. This is the TRX Mission Readiness Challenge, basically the military championship of TRX. It's four exercises for a minute each, with 30 seconds rest in between. My mind's going through my mind trying to get those reps, the control, just breathing in and trying not to critique too early. Keeping a consistent pace is critical, and this system plays no favorites to gender. Lance Corporal Lee Kay finished third, while the competition's lone female, Sergeant First Class Veridiana Levaye, took first. From Camp Pendleton, California, I'm Sergeant Todd Hunter.


Hi everyone, Joe for jashby'scasebreaks.com coming at you with a hit parade dual case break featuring a case of hit parade baseball sapphire edition Hit parade baseball platinum edition and Featuring a hit list promo so we'll keep track of Who gets hits who goes hit list and then we'll take all the list of hit list names Rerandomize them in a different dice roll and the top two on that randomizer will win a box of 2021 Diamond Kings baseball sealed. It's not bad little consolation prize for not hitting So there they are right there. There's there's an example of what we can what we can potentially get big Thanks everybody here for getting in on the action. Congrats again to the winners of spots here and all 30 baseball teams are in Let's roll it. Let's randomize it Six and a four ten times for names and teams one two three four five six seven eight nine and 10th and final time after ten times You got Robert down to Chris six and a four ten times For the teams one two three four five six seven eight nine and 10th and final time after ten Got the Yankees all the way down to the Mets Alright, so Robert with the Yankees Daniel with the Blue Jays Corey with the Royals Jose with the White Sox Robert with the Pirate Steve Right with the Giants Brandon with the Tigers Jason with the Nationals even with the Phillies Corey with the Rangers Ofer with the Reds Jose with the Indians Tyler with the twins Jose with the Rays and the Braves Robert with the A's Gale with the Rockies Fred with the Astros Gale with the Padres Gordon with the Orioles Robert with the M Zach with the Marlins Brandon you have the Angels Ryan You have official last spot mojo right there with the Diamondbacks Gale with the brew crew Brandon with the Dodgers Stephen K You got my Dodgers Brandon with the Cardinals that is and Daniel with the Cubs Travis with the Red Sox and Chris with the New York Mets Let's sort by column B here and And he trades we've got the sounds of the Eastern Conference semi-finals game 7 Milwaukee in Brooklyn and Brooklyn's only down by 2 there's still a lot of game left 4 minutes and 20 seconds left It's a pretty good game Durant has 40 points. Yannis has 36 points. They played almost every minute of this of this game here crazy Harden hits a buzzer beating 3 Healthy Harden might be might be the difference Cleveland looks like Up for trade if anybody wants that right you can get a Cleveland. This is for you if you get a hit That a three or two Logan what's going Logan saying hard being a jazz and Packers fan getting real tired of losing That both teams though they're on the cusp. It's not it's not like they're Not like they're the worst teams in the league of no shot It's just a couple pieces here and there a little bit of luck and it'll happen. All right trade window going once Trade window going twice and TWC trade window close. So I'm gonna do is I'm actually gonna copy your names again Put them into column C. So now I'll delete names for people who hit so I can keep track of the hit list folks All right, so we're gonna start off with Platinum Edition Series 18 Good luck one card per box. Good luck with a clutch three. All right. Here we go. Oh Nice Reggie Jackson two out of five from dynasty Nice patch excellent penmanship and a train whistle to start things off out of fives and under get the train whistle Angels that'll be Brandon all aboard the big hit express Brandon won that spot in a filler pack too Better all right great start thick card a book Wow, what a start looks like that's from triple threads baseball. No five star baseball dual signature patch book Wow, Craig Vigio George Springer nice You know what if that tape wasn't over it? I Pop it open. I'd show everybody but I just want to leave the tape intact right there But I'm sure it looks nice Craig Vigio George Springer two Astros going to Fred. Oh and the straws. All right next one This is just the hit parade Little advertisement there that I'm tossing All right one box 100 out of 100 It is Wow That's a hundred Fernando to tease junior rookie auto from clearly authentic. That's pretty sweet Padres That'll be for gale with the friars. Oh a graded card Thinking in this I guess platinum edition we would see some graded cards in here All right PSA just saw the PSA label PSA 9 2020 tops chrome baseball It's Kyle Lewis rookie auto nice For the Mariners that's gonna be for Robert Flores with the m's nice. Oh I see a triple relic triple auto I think you can tell by the colors that it's gonna be Mets Wow What are you now four out of nine is a number Ahmed Rosario brand and Nemo and Peter Lonzo Can't wait for triple threads baseball this fall Nice triple for the Mets and that's gonna be for who has the Mets Chris Chris Cataloni with The Mets. Yeah, so far so good halfway through this first of two cases Drew Holly just hit a clutch three now. Milwaukee's up by three Exciting game seven action in the background. All right This is exciting rookie Chris Bryant 61 out of 75 from that old top strata baseball and he's having an excellent season Cubbies That's gonna be for Daniel Katz he won that spot, too Another thick card here it's another book and It's 77 out of 99 signature material book with Glaver day Glaver Torres again I just want to leave that hip-rate sticker right there Just so I'm not the one messing with it so We won't be able to see the inside of it, but congrats to Robert and the Yankees over here. We got a gold frame Gold frame autograph. It's wow from gold labeled baseball 10 out of 50 Randy Arzareña rookie Otto for Tampa Bay Jose with the spot that he won It's FSU with the Arzareña. Let's go. He says he's fired up. Wow stolen by Milwaukee Milwaukee's up by two. They just stole the ball from Durant. Now there's a minute and five left. What a game All right, this case has been great, too. There's a lot of things going on here We got Luis Robert and rookie Otto. That's awesome archival autographs. This must be from museum collection Very nice. It is 229 out of 299 Nice bit of ink for the white socks. That's another one for Jose That's one for FSU with the spot that he won There's no paper on the top. The last one out of a hip parade baseball Platinum Edition is Gonna be Gavin Lux rated rookie Otto Gavin Lux for my Dodgers two out of 50 and That's Stephen Kay with a spot that he won gets my Dodgers Gavin Lux has been hitting pretty well Since coming back from the IL a couple weeks ago Or so But wait, there's more Now Platinum Edition is pretty solid According to hit parade I think sapphire is like the next level of quality up the next tier up in all six boxes here in this sapphire So we did the ten box Platinum case and here's the six box sapphire case Series 10. Let me just double check. It's the right series. Yeah Think it's the latest series series 10. Good luck. We've got a fit card here And it's it's tribute Tandems autographed card Both blue jays Vlad Guerrero Jr. And Roberto Almar. This doesn't have a sticker over it So let's take a look. Oh, that's nice. I like the finish. I like the autographs 18 out of 25 and that's gonna be Blue jays Daniel Katz with a spot that he won next up is Oh Orioles future star Heston Kirkstad Five out of 25 bowman chrome orange. Yeah, your second overall pick Orioles That will be for Gordon with a spot that he won. There you go Gordon Yeah, this case has been pretty both of these cases have been pretty strong. All right This one's a graded card. It feels like it is PS a nine mint nine 2018 tops heritage baseball It's Glaver Torah's real one autograph. Nice this autograph The signing of this autograph witnessed by dot dot dot Yankees, that's the I think that's a team that's hit before. Yeah Yankees Robert Flores with the Bronx bombers Next box halfway through this case Durant has 46 points Bucks up by two less than 30 seconds left. Wow Middleton deep three. No rebound Bucks 15 seconds left. We got another Gavin Luxe 46 out of 99 green Green parallel from Bowman Chrome Baseball Rookie Auto Gavin Luxe another Dodger for Stephen K. Got a couple Luxes now another graded card 2016 Bowman draft Chrome refractor PS a 10 It's Peter Lanzo and That's for the Mets Mets hit before Chris With the Mets, that's a nice hit. All right, and the last box 8.1 seconds left 2.1 on the shot clock. I think it is it is Bucks a ball. We wait to see what happens in this video Jaspy's crazy reaction video to game seven of the Eastern Conference semi-finals Hit like and subscribe and Be that guy. All right, last one's gonna be a graded card and it's gonna be a 9 5 10 From 2011 Bowman sterling baseball prospect autographs It's Francisco Lindor Edges corner surface all a 9 5 in the auto at 10 and the Bucks inbounding the ball This is tried to trade couldn't trade mojo Bucks with the inbound and Shot clock expires This was tried to trade couldn't trade mojo Jose had offered the Cleveland Indians for trade He would have traded away this 9 5 10 Francisco Lindor Cleveland, this is for you There you go, Jose. There you go everybody well We're gonna see what happens in this game 5.2 seconds left Thing that's with the ball now All right, well, hey, I'm Joe for Jaspy's case breaks calm. Thank you for the dual case break I guess you have to look up on on ESPN comm or another site to see who won this game. Thanks for watching Thanks for breaking with us. Bye. Bye


We've got 13 games tonight in daily fantasy baseball, which means in theory we should have a lot of good pitchers at our disposal. Twenty six total guys in the slate. You would think that like five or so will grade out pretty well. We're going to have an entire section of things to watch about guys. I am avoiding due to pitch count. It's a lot of the guys with high salaries we would normally want to turn to. So it is actually a tough slate. There is one guy I want to build around for today, but it's still pretty thin. That means we've got to try to find ways to make that picture fit in, see if there are any alternatives, decide how hard we go with that guy. It's a 13 game slate, but it is still a pretty tough one. So let's dive on in and get you set. Welcome on into the solo shop. That's right here on the Fan Dual Podcast Network in Numberfire.com. My name is Jim Sonnis. I am a senior writer and analyst for Numberfire.com. Here to break down that 13 game slate with locks ever 705 for tonight. There is just one weather note for today. And thankfully it's not rain. It's not wind. We have wind in New York. That's the Mets and the Yankees. Those winds are in from left at 10 miles per hour. So I would downgrade the two offense there. Obviously not the best park for hitting to begin with, but now the wind's blowing in downgrade the Mets and the Yankees a bit as a result of that. We'll talk about the pitching here in just one second. But first, a quick reminder. We are live once again later on today. Our snake draft. The first one of the year by myself, Brandon Godula and JJ Zacharyson. We're going to do a three person snake draft for week one of the NFL season. If you watched that last year, we're running it back this year once again. Doing that snake draft every Friday at 4pm. If you tune in for the MLB show, do not worry. That'll still be at 4.30 for today. We'll take some questions after the snake draft about the NFL slate as well. So if you got questions about NFL, MLB, whatever it may be, just want to watch this draft. Tune in 4pm today and check out that. We also do have our heat check week one DFS preview podcast posted with myself and Brandon Godula breaking down the week one main slate. You can find that by searching for the Number Fire Daily Fantasy podcast feed wherever you get your podcasts while you're there. Leave a rating review, hit subscribe. Make sure you swing back on Monday for our recap podcast as well. Our betting podcast covering the spread already up as well for week number one. Broke down Cowboys Bucks, but also talked about a couple other games this week and some college games with Dr. Eric Eager, Pro Football Focus. Finally, NASCAR podcast coming up later on today, 10.30 on YouTube and up on the Number Fire Daily Fantasy podcast feed after that. Hey soccer fans, this season, FanDuel and Captain Morgan are teaming up to give you a one-of-a-kind soccer contest. Introducing Captain Morgan's Soccer Pick'em, a weekly fantasy contest that is entirely free to play. The contest is simple, all you have to do is make quick predictions for Saturday games this soccer season. You will earn points for each correct pick and compete for a chance to win up to $3,000 in prizes every single week. Head over to FanDuel and enter the Captain Morgan Soccer Pick'em today. It must be 21 plus to participate for more details with FanDuel.com or download the FanDuel Fantasy app, eligibility restrictions apply, and don't forget to make your game day more delicious and sub in the captain. Pitching preview for this Friday main slate. Robbie Ray is $11,200. Think you know who my top pitcher will be based on that? Not a big surprise there. Carlos Rodan is 10-8 if he starts. Not confirmed yet that he will go. Romero Valdez is 10-5. Shohei Otani is 10,000. Tyler Malley, not a bad matchup. He's $9,900. Julio Arias is 96. Facing Joe Musgrove and Joe Musgrove checks in at $9,400. Trevor Rodgers is 92. Herman Marquez is $9,100. Then Tanner Hough, Jordan Montgomery, Michael Wacca, Adrian Hauser, Madison Bumgarner, and Marco Gonzalez are the others at $8,000 or higher. And again, I think Robbie Ray is the top guy for tonight. And whoever is number two, whatever you decide the number two option is, they're probably not going to be close to Ray. He's facing the Orioles, and it's not about the matchup. I think the Orioles are a good team, and they're not a team I actively want to target. I like the Orioles weirdly. They're not a team I really want to go at. They have a 107 WRC plus against lefties, and they've got enough power to make you nervous if you are Robbie Ray. They also just saw him two starts ago. So it's not an ideal spot.  And he's been good all year. But if the past sticks start specifically, we'd have seen velocity go down for Robbie Ray, which could be a concern. And usually it often is, but it hasn't been. In fact, Ray's been weirdly better with the velocity being down. He has a 38% strikeout rate in those six starts, 2.49, skill-interactive ERA, 5% walk rate. He used to have issues with walks and hard contact. The walks are gone. Those have been gone all year. The hard contact has been a bit more in check recently, too. His hard hit rate in these starts with Les Velo is 32%. So I'm not saying he's fixed it. That I definitely don't think that's a case. But if we're going to look at a small sample, I'd rather he be good in the small sample than bad. At least there is that. In that game against the Orioles, Ray had 10 strikeouts, more seven innings, allowed two earn runs. I'm not sure anybody else in this lake can get you 10 strikeouts. I don't know if that's the case. Like if I could bet, will anyone other than Robbie Ray get 10 strikeouts tonight, I'd be pretty intrigued by that. Number, I think that Ray is confidently the top option of the night. So to me, Robbie Ray needs to be number one by a significant margin. If you're going single entry, you will be butting the bullet on a high roster with Robbie Ray, but I don't really care. I think he's still the top guy for tonight. Single entry, go Ray, cash games, go Ray, and then just figure it out from there. For number two, I'm not a big fan of Julio Arias' matchup. Pretty similar to Ray, where don't really want to go at the matchup, just like the situation. Arias is facing the Padres. I'm not scared of them in terms of like, oh, they're going to put up like 30 runs. They just don't strike out a ton. I still think that Arias is number two behind Ray. Most of that's just based on talent. Arias has been featuring his curve ball more over his past eight starts, and it has worked out pretty well. The play discipline numbers are very good. He has a 27% strikeout rate with a 5% walk rate, which means he's letting up minimal base runners, but his bad at ball numbers are sick. He is specifically letting up a hard hit or a hard hit ball, 95 plus miles per hour on the exit velocity, just 24% of the time. League average is about 40%. He's at almost half that. Eight starts is not a small sample to look at bad at ball data. That's a pretty good sample, and Arias has been sick. If you combine the bad at ball data with his strikeouts, it's going to lead to awesome results, and it has, because his ERA this time is 1.42%. Arias has not let up more than 200 runs in any start in that time. When he faced the Padres three starts ago, he held them to one hit over five innings. They also struck out just four times, so again, that's why it's not perfect, but he's good, and honestly, where we can't find a lot of guys to strike out upside, I'll take that at a certain point. I am going to rank him a decent amount below Ray, but he's definitely second on this list. So to me, it's tears. It's Robbie Ray, gap, gap, gap, Arias, gap, to down to the rest of the options for today. I do think that Tyler Malley is interesting. Mark has a worry about pitch count a little bit, just because there's nothing to play for there. I think that Malley would probably be number three for me. Question mark? I don't know. Either way, I think that it's pretty clear to me. Ray is one, Arias is two, for tonight. And my player pool will be exclusively guys in a separate range. Guys $9,000 or higher, because nobody below $9,000 really stands out to me as being a great option. If you were to force me to recommend a value play, I would go with Eli Morgan. Again, in the interest of full disclosure, I am not going to use Morgan tonight. I want to make that very clear, but I realize some of you really want value plays. And he's the best one to me. Try not to let you down here. So again, I'm not going to use him. He would be my recommendation. I stacked against Morgan a lot when he first came up, but he's a different pitcher now. His loss, he has been up for his past eight starts. And in those eight starts, his strike at rate is 24%. That's not a bad number. He's had some individual good games. He held the Red Sox scoreless for five and two-thirds last week. He had seven strikeouts there. He had six shutout innings against the twins with eight strikeouts. He had nine strikeouts against the Jays. And the Jays and the Red Sox are both really good teams. So he's doing it there is pretty impressive. He's facing the Brewers tonight and they gain a DH, which I do think matters for them. They have a 24% strike area versus righties though, which is an above average mark. It's not as high as it was for them previously, but it's still above average. And it is a bump up for opposing pitchers. So again, I'm not going to use him. I want to make that fully clear. But I think there is a path to him doing well. If you insist on rolling out of value, like if you just want to load up on the Jays and go crazy there, Morgan would be the guy. But again, I just doesn't really feel what I want for tonight. I think the Rias is probably the lowest I might go. Maybe Marquez can be a guy at $9 to $100, but like I meant to talk myself into it is the way I'm thinking about things for tonight. And we'll talk about why I'm not on some of the other guys in things to watch, specifically revolving around a lot of low pitch counts. Now, it may be tough to stack the Toronto Blue Jays while using Ray at Pitcher. And that's tough, but I do think it's at least worth looking into. Even if it means you settle for a three-player stack and have to use a couple of value plays in there. But the Jays are facing Chris Ellis. Ellis is said to make his third start with Baltimore and his second start against the Jays. And he did really well in the first one. He allowed just one run over four and two-thirds innings. So he's already held them in check once. And his other start recently, which was against the Yankees, was also solid. But the AAA numbers for Ellis left plenty to be desired.  And based on those numbers in AAA, you would expect him to struggle in the majors. His peripherals aren't super strong either. He's led up a 47% hard hit rates with a 50% fly ball rates. Those numbers have not bit him yet, but they very well could soon. And they very well could have because his expected ERA per baseball is 5.38. So I think it's wise to at least try to get the Jays here. Even if it doesn't mean you're settling for their non-elite guys. Corey Dickerson, I think is a key to this, $2,600. George Springer might be able to get back in there today, but if he isn't, Dickerson can bet lead off for $2,600. His 142 ISO against Rayides is underwhelming, but he's low-sourced access to a great lineup with a tremendous matchup.  Why not? He's not that mold. So I can use Dickerson. Alejandro Kirk could be in there once again. I will go to him as well. I think that the Jays, you take the value you can get and then see who you can get to for the studs. And the other route for stacking the Jays is Ray is having a lower-sourced second stack. And I do think that there are three options that grade out pretty well there. We'll go through all three, two right here, and then one more things to watch. With Ray's salary being super high in the Jays so far, I think that we do need to try to do this. And one of those lower-sourced teams can be the twins. That does make me nervous, because they have been pretty bad against lefties recently. And they're facing one in Daniel Lynch today, so it's risky, but I think it's worth the risk. Lynch has struggled all year long. He is trying to combat those struggles by adding in a sinker, which makes sense, because the bad of ball data was a good reason why Lynch was struggling. We're up to seven starts since he's made this change. The sinker hasn't cut down the hard contact. He's letting up a 43% hard hit rate with a 43% fly ball rate in that time. That's pretty rough. The strikeout rate is 20%. The walk rate is 13%. I do prefer to stack against guys who walk fewer batters and let in more balls and play. But at least here, a walk can lead to a multi-run inning in a hurry. I guess it's like a consolation. And we did see that happen his most recent time out. He walked three guys and let up two home runs against the White Sox, and that combo led to six earn runs against him. He did have a cut on his finger in that start, which may have contributed, but we saw that before too, against the Blue Jays and the Yankees. So I don't think it was a one-off fluke due to the finger. Those teams are better than twins against lefties. So we just need to keep that in mind for sure. But the twins have the salary savers we need in this spot. I will take a risk on them because I do want to try to find ways to get the Jays. The value play here, we got like Brent Rooker, Rob Roth-Sneider, Ryan Jeffers. One I'd like the most is Ryan Jeffers.  If you look at him, he looks like a guy who can hit some dingers. He's got some built forearms. He's got a good bat at ball profile. Doesn't strike out too much. Sorry, he does strike out a lot, which could be an issue versus Lynch, but he's got Dinger upside. He's $2,300. I hope he plays so he can use him here. So I would say Jeffers is one, probably Rooker too. He's had a lot of issues this year, but like, again, power is there. Rob Schneider is three. He's probably the best overall hitter of the three, but not the highest upside of the three. So all three of those guys are options, but Jeffers to me, the number one of that group. For the third stack, I'm going to go with the Reds. They're also like the Twins, not good against lefties. So it does annoy me, but they have some individuals who work, and I'm hoping that's enough against John Lester. Lester seems to have given up on trying to get strikeouts. Like a lot of guys will make tweaks to try to increase strikeout rate. Lester, don't care. He is going all in on a sinker. He threw that pitch 42% of the time in his most recent start. Not shockingly, his strikeout rate that's joined the Cardinals is just 12%. He is letting up some hard contact as well. The one downside of stacking against him is that Lester is getting a healthy number of ground balls. He's let up just a 26% fly ball rate in this time, and that can be a bummer. The one exception, the one game where he did not get a lot of ground balls was against the Reds, a team he will face tonight again. He faced them two starts ago. They actually had a 53% fly ball rate against Lester in that game. Now they didn't make it to hard contact, and fly balls that are not struck well are out. So Lester pitched well there, but they were lofting it. Now they get to see him again for the second time in 12 days. That may boost the hard contact stuff. So it's not a situation I like all that much, but I think it's fine enough to justify on this slate. They, so I think the Reds are number three for me. They do have three guys who are value plays who have shown at least some pop against lefties. Those guys are Kyle Farmer, Ari Sades Aquino, and Tara Stevenson. With Aquino, I worry he'll leave for a pinch hitter or a defensive replacement because that does happen pretty often, but Stevenson and Farmer should play the whole game. They are $2,600 and $2,900 respectively. I'll rank both of them above Aquino. I will take some swipes at Aquino, but it's kind of like Albert Pujols last week where you're kind of hoping for an early dinger. He did get that Pujols did, and Aquino can get that too, but it does limit upside if a guy is going to leave the game after two or three played appearances. So Aquino third among the values for the Reds for today. Let's go to things to watch and talk about some of the pitchers. I was not on before, largely due to pitch counts. The guys with specifically pitch count concerns are Michael Walker, Trevor Rogers, Tanner Howe, and Carlos Rodan. Again, if Rodan starts, Walker is expected to piggyback with Chris Archer. He's looked pretty good recently, but the piggybacking is enough for me to jump out. Rogers just came back from a pretty extended leave. He went 83 pitches in his first game back. They have no reason to stretch him out. He didn't go long earlier in the year, so I'm expecting Rogers probably around 80 to 85 again. Howe hasn't gone longer than 90 all year. He's looked good recently, just hasn't gone longer than 90. And Rodan, again, not even confirmed as a starter yet. His velocity was pretty bad last time out. He's gone 67 and 77 pitches in his two starts since returning. So they're all interesting. I think they all pitch pretty well, but I can't get there with their expected workloads. And that's why I am building around Ray Unurias for tonight. It's really tough to get excited about the Marlins because they're pretty bad. They're facing Ian Anderson for tonight. And Anderson has struggled quite a bit since he came off the IL. So maybe if you need another value stack, you could take some swipes at the Miami Marlins. And Anderson's been brutal since he came off the IL. And he's a good pitcher. He just doesn't seem healthy right now. So specifically with the Marlins, I think it's the younger guys who are interesting. Lewin Diaz is $2,200. Jesus Sanchez is $2,500. Louis Brinson, if you got to get there is $2,300. And then Jazz Chisholm, I know it hasn't been as super star-ish recently as it was before he had his injuries. But he had a Dinger last night, got a stolen bass as well. So the upside is still there. So I would say that you can get a four-player stack from the Marlins. But if you want a lower-sourced young guy with some upside, I think that they do great enough pretty well there as well. If you want some more hitters on bad offenses, because why not? We got the Twins, the Reds versus the Lefties, and then the Marlins. And let's add the Mariners to the list too. They're facing Madison Bumgarner for the second straight start. Bumgarner got beat up last time out against the Mariners. And he said he couldn't grip the ball due to, he said they were too slippery. But he's probably been dealing with slippery balls for a while now. That came out weird. But he hasn't been pitching well for a bit. He has just a 17% strikeout rate. In his past day, it starts with more change-ups. His fly ball rate is 44%. So I think we can use guys against him. Mitch Hanniger is sick. I like Luis Torrens. Ty France works. Not as into Abraham Torro against Lefties as Righties. So he's the one guy who's batting as a Rightie. I'm okay being low-ron. But the Mariners work as a mini-stack or a one-off, I think, for today. Same thing with the Marlins. Marlins maybe can get a full stack in there. I'd probably be okay with that. But hopefully that's enough value to get you to Robbie Ray's or Pitcher and the Blue Jays along with him. Let's finish up with some Dinger calls for today. I know things have not been that great for Byron Buck since he came back. But he's been getting more hard contact recently. Facing Daniel Lynch, who lets up a lot of fly balls, a lot of hard contact. I got to go with the heart for today. Byron Buxton going yard tonight for the Boring Home Run Call. But the fun one, we will go to the Jays and talk about Corey Dickerson again. Not the biggest power guy, but great matchup. Love the situation here versus Ellis. Probably going to get a lot of played appearances because of the way this game sets up. So the Boring Home Run Call for today. Byron Buxton, let's go, baby. And then Corey Dickerson, the fun one to round things out. That is all that we have here for today on the Sola Shop. But once again, we have the NASCAR podcast coming up at 10.30. NFL heat check already posted, breaking down week one with myself and Brandon Gadoula. Snake Draft is at 4.00 p.m. on the Fandal YouTube, Twitch, Facebook, and Twitter pages. NLB, Q&A at 4.30. So a lot of stuff here on the Fandal YouTube page and up on the Number Fire Daily Fantasy podcast feed. Make sure you hit subscribe. Make sure you check out all the good stuff and leave a rating or review. If you're watching YouTube, hit that like button as well because all those help us out a ton and we truly do appreciate it so much. If you've got more questions for me, I am on Twitter at Jim Sonnis, J-I-M-S-A-N-N-E-S. You can also follow the Fandal Podcast Network at Fandal Podcast. Big thank you to everyone for tuning in. Good luck to you tonight. We'll talk to you once again on Monday for some more baseball. This has been the solo shot right here on the Fandal Podcast Network.


Because by eating rotting corpses, they prevent epidemics. Hm. Did he know they eat the living as well? No. Really upset him too. His theory collapsed. Of course, not exactly going our way. Rottavitz realms, don't you mean? Rottavitz pledged to restore the old borders. Soon as he wins the war. Gotta believe something. It's what keeps us going. Corpse as they prevent epidemics. Hm. Did he know they eat the living as well? No. Really upset him too. His theory collapsed. Of course, not exactly going our way. We have a side. The northern realms. Rottavitz realms, don't you mean? Rottavitz pledged to restore the old borders. Soon as he wins the war. Gotta believe something. It's what keeps us going. Did he know they eat the living as well? Really upset him too. His theory collapsed. Of course, not exactly going our way. We have a side. Rottavitz realms, don't you mean? Rottavitz pledged to restore the old borders. Soon as he wins the war. Gotta believe something. It's what keeps us going. Faster. Potions from their blood. Did he know they eat the living as well? No. Really upset him too. His theory collapsed. Of course, not exactly going our way. We have a side. The northern realms. Rottavitz realms, don't you mean? Rottavitz pledged to restore the old borders. Soon as he wins the war. Soon as he wins the war. Gotta believe something. It's what keeps us going.