If anybody does that to the video, I support that. OK. So some announcements. So final Wednesday, I've posted a practice homework assignment on Blackboard. So this is not for credit. I don't want you to turn it in. I mean, you can't turn it in. But these are example lambda calculus questions that we haven't covered yet that I've used previously on homework assignments. So you've got this homework assignment. We were a little bit ahead. And also some lambda calculus questions from last year's final. So I think they would be definitely worth your time to do study. Questions on that? We have a large amount of people in here for a project being due today. But a good sign or a bad sign? All right. Be a solution set posted for that practice homework at some point before the sign? I don't know. I don't think so. I mean, I could probably do it. But I'd rather you guys, by working with each other and comparing answers and knowing what's right and what's wrong. See, the knowing what's right and what's wrong is the hard part. Except that, finally, there's no guarantee that we have the same time wrong for the people we use. I see. Yeah, I'll probably do it. Let's say next Monday, let's shoot for that. I'll be able to post at least a solution. OK. Thank you. Cool. All right. So we're talking about lambda calculus. We're right at the tail end here. There's actually just one concept that I discussed a little bit on Wednesday that we absolutely have to get to. If only because if you take lambda calculus and you don't learn about the y-combinator, then you really haven't learned or taken lambda calculus. It's one of the fundamental concepts. But first, before we get there, I want to talk about Boolean logic. So we're going to do logic, maybe touch on addition slightly, but we're going to definitely get to recursion. So we saw that the way we're going to handle Boolean logic is we're going to define a truth value and a false value. These are incredibly arbitrary. I mean, not incredibly arbitrary. By defining true and false like this, we actually get n correctly defining and or and not. We get the proper behavior. But true does not have to be in this way and false does not have to be this way either. Just like in a programming language, right? Some languages, one is true and zero is false. Like in C, there is no Boolean. Or actually, it's more like zero is false than anything that's not zero is true. Whereas in other languages, sometimes an empty list or an empty string can be false. Whereas anything else is true that's not zero or false or an empty list or an empty string. So it really depends on the language. So we saw that we have an and. We can define and like this. So and, just like our normal and function, it takes in two parameters, a and b. And what it does is it applies a to b to f. So let's think about exactly what this does. So we talked about, okay, and should only return true when both a and b are true. It should return true, right? So let's think about this. Let's just look at this here, right? So it's gonna be a, b, f. So the first parameter applies to the second parameter and then f following it. So if you think about what happens if a is false? But remember what did true return? It takes in two parameters, what does true return? Second parameter, so that's the way to think about that. You can mechanically do the beta reduction here and you'll get the correct answer. But trying to develop some intuition for why these things actually work. So if a is false, then what's this going to return? False, it's gonna return a second parameter. Does it matter what b is? No, just like in an and condition, if the first parameter is false, it does not matter what the second parameter is. Okay, so then what's the other case? So a can be false and we know that it's gonna return false, what's the other case? a is gonna be true, so what's it gonna return? a, b, f, if a is true, what's it gonna return? F applied to b. Not quite. So you can think of it like functions, right? If a is true, it takes in two parameters and what does true return? The first parameter, just the first parameter. So it's gonna return b and so now does it matter what the return of and is if what b is? So in that case, if a is true and b is false, then what's the return of the and function? False because it's b and if b is true, then what's the return of the and function? True. Yeah, so we have the case and true true, we call this function, right? And here we're using mathematical definitions here, right? We can completely fill out the, we can write this entire lambda expression without any of these names. So this is gonna expand to lambda b dot ab applied to lambda x dot y. All right, let's look at it here. So we can actually step through this. So yeah, on the left we have the and function. Yes, this is false. Okay, yeah, that makes sense. Where did this come from? Yes, this is the false inside the and function, right? So this is the whole written out and function, right? With no names, no anything. So think about this, can we beta reduce this and function? How do we tell? Yes, expression, expression, and specifically what about, what has to be true about those expressions? Where the left expression is lambda. Where the left expression is a lambda, exactly. So we have function applications here and we know from the precedence rules this technically is gonna happen first and then this is gonna happen. But are any of these rules where the left is a lambda abstraction? Like this ab, is there a lambda there? On the left, no. And if we take ab applied to this, is ab like this, a lambda on the left? No, so this is, we can't beta reduce this function anymore, right? It's just a function definition. Okay, now let's do the whole thing and walk through it. So here we're trying to add true and true. So what should be the results? True, that's where we wanna go. So here, right? I have, first I'm gonna do, we know based on the precedence rules, right? Now here we have application, application, expression, space expression. Where the left side is an abstraction. So now we can do beta reduction step here by applying essentially calling this function with this parameter lambda x dot lambda y dot x. So we're gonna use the exact same techniques we already learned about. We're going to change this. We're going to, inside the body of this abstraction, we're going to substitute a for lambda x dot y x. So this is, replace every free a with lambda x dot lambda y dot x. And so, the thing we have to think about, are there any free variables in this, in what we're replacing? No, no free variables. So we don't have to worry about doing any renaming, right? We only have to worry about renaming if what we're substituting has some free variable. So you can think about what we're substituting in here is completely self-contained, right? It has no global references. So it doesn't matter where we put it because any variable that it refers to is contained within that lambda expression. So we replace this a with lambda x dot lambda y dot x. So now at this point, we actually do have a choice between what kind of application we want to do, right? So there's the outer application. Is the left-hand side of this outer application a lambda? With the two expressions. But then what about this application here? B applied to lambda x dot lambda y dot x. Space B, right? That's another place we could evoke a function. So we can actually do either one, but we'll continue in the way that we were doing it by doing the outer one first. So here, once again, I'm the body of this abstraction. I'm substituting in B for whatever was on the right. And once again, any free variables here? No, so it makes things very easy. I just replaced every free B in here with that exact expression. So I do that. Now I have this lambda x dot lambda y dot x, lambda x dot lambda y dot x, lambda x dot y dot x. So we, just if we look at the behavior, what we think this function should do, right? We know this is a function that takes in two parameters and returns which one? The first one. So it's gonna take in two parameters and return which of these guys? The first one. And what is this value? What do we define this as? True. It's gonna eventually return true. We can actually see this mechanically how this works. So we're gonna do this application. We're going to, inside the body of this abstraction, we're gonna set every x equal to this parameter, right? So we're gonna use our substitution operator. We're gonna substitute every free x in here with this expression. Once again, there's no free variables here, so we don't have to worry about renaming. Why is that? Because we have a lambda y here and a lambda y here. Is this gonna cause problems? So that functions y, not global y. Yes, a, they're lambda, they're meta variables, so it doesn't affect anything anyways. But even if there was a y in here, that y inside the substitution always refers to this lambda y here, right? This meta variable. It doesn't matter where we put that because wherever we put that, this lambda y is gonna be outside, right? So the scoping rules mean that we're not gonna accidentally refer to that. This is kinda what I mean when that expression is self-contained, right? No free variables. So every relationship between a variable here, x, and a meta variable, that binding is constant, right? We know exactly what that is. And it's not gonna change when we do this substitution. So we substitute x for this. So we have lambda y dot lambda x dot lambda y dot x. So we have one more application. So we're gonna substitute in here y for lambda x dot lambda y dot y. So what's gonna be the result of this? This here, are there any free y's in here? No, so the substitution operator doesn't do anything. Essentially we've gotten rid of this parameter, right? It goes away. And now we're left with this, which is true. So the idea here is it makes sense kind of when you look at the function, right? When you look at the definition of and, it was ab true or ab false, right? By kind of reasoning through the ways we defined true and false, we saw that okay, yeah, that makes sense. But if you apply, you know, mechanically like this, and just do the derivations, you should get for true and true true. And then just like when you build truth tables, right? In architecture class, you could do this for every combination. You try false false, make sure do this, it returns false. Try true false, make sure it returns false. And try false true, make sure it returns false. Let's look at one other different case of true and false. Right, so essentially here, we kind of already saw what's gonna happen, right? Just like before, if the first parameter is true, we will return b. So whatever b is is going to be the return of our and function, which in this case is gonna be false. So we can do it at a little bit of a high level here, where we don't actually fill out all of the names, right? We actually know, okay, we can replace a with t, right? And we know that t is a combinator, it's completely closed. So we know we can do this without having to worry about any names, right? So we can replace a in here with t, we can replace b then with f, and we can say, well, what does true false false do? Well, let's expand out true, because we know it's a lambda. So we know we can do something here. So now here we replace x with f inside here, and then we replace y inside here with f. And we know here that this f, once again, is fully contained. So there is no free y. There are no free variables in f, right? So we know that this does not, and then we get back f. Is this a lot easier to think about than the detailed one? But it is the same, right? At the end of the day, right? These are the exact same diagram, but replacing all of these with either false or true, depending on what their value is. Questions on this? And then we can look very quickly at, we can kind of already see where this is going, right? We can see and false true, right? So because this first parameter a is going to be false, we will always return the second value here, and that second value is that constant false that we put here in this function. And so we know just by looking at this, right, that a will be replaced with f, and b will be replaced with t. So this is going to be equivalent to f. False true false. And so we said false always returns what? Second parameter. And so it's going to return false. And similarly, right? So it's just being thorough. We're going through all of these. We have and applied with false false. We get triple false. This first false always returns the second argument, which is false, which means we're good. So do you believe that this is a Boolean, what we just defined an and operator and at least part of Boolean logic? I guess we technically have to do, think, what is it? NAND is complete. You can do every Boolean operation using combinations of NANDs, right? But not just NAND. I think you need something else, right? Wouldn't you also need for an exclusive old? I think you can build up all of those from NAND. Like if you just had NAND gates, you can build any arbitrary logic. But I don't think of the same holds for just NAND. You have to do crazy combinations. So let's do a NAND operator, right? So what should our NAND operator look like? What do we want? So let's think about, we're defining functions, right? What do we want this function to have? What's the signature of this function? If something's true, return false. And then if something's false, return true. So how many parameters does it take in? One parameter and it returns one parameter, right? So we want something like this. Not true returns false, and not false returns true. This is our desired input. This is not the definition. So how can we write this? There is no magic. That's going to be the theme in a sense of wonder. All right. Do we have to do it in one definition, or can we use two different ones? What do you mean? Do you want to have an if statement? Like if t, then return false. It's essentially what we want, but we kind of already have that. I mean, so we want to find some nots, right? We know that not when we give it true should return false, and we know that if we use not and we pass it false, it should return true, right? So how many parameters do we say needs to take in? One, one, one. So let's say we know already that it's going to be something lambda a dot, we know it's only going to take in one parameter. So what is it going to take in? So what was the trick that we used in defining and? When we continue if it resulted in true, then it would check the next one. Yes, we knew the behavior of the true and false functions. We used the fact that thinking about an if statement, true means takes in two expressions, arbitrary expressions, and returns the first one if it's true, but if it's false, it returns the second one. So almost implicitly here we have kind of branching built into our Boolean functions, right? So if we do a here, so a is either going to be true or false. So if it's true, then what's going to be returned? What do we want to be returned? False. So for a, which parameter is going to be returned when we call a truth value? If it's true, which of the two parameters is going to be returned first? First one, so should we put right here after it? False. Then what after it? It's in true. In true. So here, if a is true, it will return the first parameter, which is false. And if a is false, it will return the second parameter, which is true. And so we've basically built this if a, yeah, so if a false else true is essentially what we're doing here. And by creating the true and false values, I mean this is where the, why I say you can't just define them arbitrarily, right? But we get this ifs behavior, right? We get this choosing or deciding between two branches in some sense, right? Because these values that are here, right? Here we're using false and true, but they could be any expression, right? And any expression can be essentially any program, right? This expression here, trying to argue that these expressions can be arbitrary landed expressions. And true will choose the first one and false will choose the second one. So you have implicit branching there inside the way we define true and false, which is super cool. So yeah, we can see that not true is gonna do true false true, which will return false. And not false will return false false true, which will return true. It's exactly the behavior that we wanted, right? And we actually, as I alluded to, right? If we wanna do like an if condition, of if some condition do a, otherwise do b. So we want if true then a, otherwise if false then b. We already have that, true and false already do that, so we actually don't even really need an if function, right? I mean, we can define an if function that looks something like we're used to if condition a or b. But this just returns whatever the first parameter is, c, right? So if it's true, then it will return a, otherwise if it's false, it will return b. It'll do any pay or deduction that needs to be there. So we have basic branching operations. So we have if true a, b, we have our if, we're defining as essentially the identity function, so it returns its first parameter and only parameter. So when we return this, we're gonna get tab and that's gonna return a. And if the condition is false, it's gonna turn fab, which is b. We have a super basic if condition, but we don't actually, if condition's not really doing anything, right? It's the Boolean logic here, the way we define true and false that's doing this. Okay, questions on logic? So you convinced logic is possible? No. No? Which graph? Which graph? You're probably the wrong major then. Do you think logic is which graph in general? What about specifically this logic? Yeah, so you could do any arbitrary logic here, right? Anything, so we did and not, so we know it's complete. Very similarly, you can define x or functions, you can define or any logical operator you want, you can define using lambda calculus and using these true and false values. You can change how you define the true and false values and define a whole different system of logic, but it can still work the same way. I'm gonna skip ahead. I really wanna cover numbers. All right, how important are numbers anyways? I'm pretty sure they're pretty important. I don't know if there's a point in this one. Logic, I don't know. Okay, let's do this. We'll go over numbers very quickly. No, no, no, we're gonna do, okay, because we just did logic, right? We did logic and we can do true false branches, right? So already, if we can do logic, we can do true false branches. We pretty much have most of our language, right? Just like a Turing machine has a program, depending on what symbol it reads, it can move to a different state, right? So that's essentially a branch, right? Just like here, we have a branch, we define an is statement, which will choose between two different expressions. Okay, we will have arithmetic where we can do numbers, we can compute on numbers, but just like a Turing machine doesn't have any intuitive concept of numbers, right? It only writes out ones or zeros. Very similar thing here, arithmetic, right? No. Okay, weird, it looks weird. All right, just like that, right? We're gonna do it in a different way, just like we did with true or false with using functions to define the numbers, which is very similar to using ones and zeros to define numbers, right? Just different ways of encoding that information. But are we actually Turing complete with this? We have branches and we have arithmetic. Are we Turing complete? Can we do everything that a Turing machine can do? Yes?  Yes. Yes. Are you just repeating the same answer again? I was just talking last day. I'm sorry. Well, think about it. I mean, this actually gets to something very big. This is why you are computer scientists and not getting a degree in programming, right? Because you're thinking about computation, right? What does it actually mean to be able to compute something, right? Can you write a program with just branches and if branches and arithmetic? Don't you need go-tos? Why do you need go-tos? What specific fleet do you need? Well, just looking back at the project definition that you need go-tos to go back on today. I mean, you can make everything with ifs and go-tos. But what did go-tos allow you to do? Go-tos allow you to repeat parts of code. Yeah, it's a loop, right? And to loop an undefined number of times, right? Exactly. So that's what we're missing here, right? We have no loops. Loops, we have no way to execute something again, like to do an instruction against here, right? Think about a program, writing a program that just does branches and has no way to go back is actually not a turn-and-complete program. I mean, that program is fine, but that language is not turn-and-complete, right? You can't write a program in that language to do something like, how do you calculate a factorial, right? Because you write a program that takes in a number and calculates a factorial with only branches and arithmetic. Yeah, for a finite size, yes. Exactly, you can only write it for a finite. You could have all these huge if conditions of if n is less than 10 or whatever. I mean, you could write out all the cases, but you can't handle the general case if I give you a number n and you give me factorial of n, right? So factorial of n, we have our base cases, right? We have factorial of zero is one. Factorial of n is n times factorial of n minus one, right? And so if we're writing this in C, like we've been studying this whole semester, right? We define a factorial function, we check. If the factorial is zero, we handle the base case, right? We always have a base case. If it's zero, we return one. Otherwise, we return n times factorial of n minus one, right? And this follows very similarly to the mathematical definition of what a factorial is. What kind of a definition is this mathematical definition here? Recursive. Recursive, why is it recursive? What does that mean? It includes its own definition and its definition. Yeah, it calls itself, right? It's terrible in a dictionary. You don't want to define a word with itself, right? But here, it's one of our basic primitives that we use in programming. We want to be able to call the same function with itself. So, assuming that we can do addition, we can do multiplication, we have a way to do those. And assuming that we have an is zero function, so some function that tests if it's zero, and we have some way to do n minus one. So in this case, we're going to call that the pre-assessor or the pre-function, right? So every number has a pre-assessor and a successor, right? So it's that number minus one. So if we want to follow this definition that we have here, we want something that looks like this, right? We want to say factorial, and it takes in one parameter n. So we have lambda n. Then we have our if, right? So what's the condition of our if? Well, if n is zero, if that's true return one, if it falls for multiply n with factorial of n minus one. n minus one. Great that this is the straightforward application of that program we just wrote in C. But what's the problem here? Expand. Yeah, I've been using, we've been using equality, right? By saying true is this. We're using the mathematical definition where that we're saying true is defined as this. Which means everywhere we see true, we can replace it with this, right? So we can always get rid of every name that we've ever seen. We can get rid of if, we can get rid of is zero, we can get rid of mult, we can get rid of predicate, right? And write out their exact lambda expressions with no names. But how do we do that with factorial if it's used inside of its own definition? It would expand forever just like the type system, right? And it would never actually be able to build a concrete type. We'd never be able to have an actual function here. So we cannot write this function in this way. But the crazy thing is this does not mean we can't do recursion in lambda calculus. This is actually an idea that's pretty insane. So you want to be able to call a function, but you don't actually have a name of that function, right? This is an anonymous function, right? Factorial has no name. We cannot refer to it by name. But we can still get recursion here. And so it comes back. So I mentioned about combinators, right? No lambda expressions with no free variables, right?  One of them is the Y Combinator. Anybody notice that term from another context? No Y Combinator, that specific expression. Nope. No? No startup people or entrepreneurs in the audience? Yeah, they're a startup incubator in Silicon Valley. They were started by some people who founded an original company called Bioweb in the early dot com in like 98, where they created, they built a website. Like people could create automatically their own online stores. It was called Bioweb and they got bought by Yahoo for a bunch of money. And that became Yahoo stores. Then they decided that they wanted to get into startup investing. And so they did a, but they didn't want to go to VC, the venture capital model. So they did this kind of, they were the first ones to do this incubator model of you come from the summer, we'll give you, I don't know, 10 or $20,000 for X percentage of your company. You'll work fully on your startup. We'll give you access to our network, everything.  So it's like trying to fill the gap in between yourself funding your startup and when you get the like multi-million dollar venture capital. Anyways, they're incredibly successful Airbnb. Anybody know about them? Dropbox. Those are all Y Combinator companies. There's actually a huge list of Y Combinator companies. So they named, that's what they named their startup incubator is Y Combinator. And it is directly from Lambda Calculus. So if you are ever going to get, try to get money from these people, you should definitely be aware and know what this is and how it relates to programming. So we're gonna find this Combinator kind of crazy. So the Y Combinator is lambda X dot lambda Y dot Y applied to X, X, Y. And on the right we have lambda X dot Y dot Y, X, X, Y. Yeah, so it's the same thing repeated, right? The question is what does it do? So let's say we're applying this to something foo. So we have the huge, we have the huge lambda Combinator, the Y Combinator, we have foo. And so let's do this first application because we actually have an inner application inside the Y Combinator, right? So we have that patient of this to this. So how many parameters is this one gonna take? Two parameters. So what's it gonna do with the first parameter? Replace X's. Replace the X's with this. The X's are twice, right? Notice how the Y Combinator has two. So this is essentially propagating the Y Combinator here. These X's are gonna replace with two of this parameter which is the Y Combinator. So this will be the Y Combinator again. And so foo is the second example. So what's gonna happen with foo? It's gonna be replaced with Y. It's gonna be replaced with Y. So we're gonna have foo here. But what is this X, X, Y in here? It's the Y Combinator in here. It's not exactly, it is the Y, the X's are the Y Combinator, but what's the Y here? Foo. Foo, which is this, what we started with. And then what happens if we expand that again? The X, X, Y. The exact same thing again. So we're gonna do the replacement, replace all the X's in here that we saw. So these X's are all replaced with this guy. We have foo. Then we replace all of the Y's with foo. And so we end up with foo applied to Y foo. But is this foo a name? No, it's not a name, it's a lambda expression, right? That lambda expression gets copied there. And then what happens when you expand this out? What? You get Y, you get foo, Y foo. And then inside there you get foo, Y foo. And then inside there, foo, Y foo. Does it ever stop? No. No, so we get. It stops when foo has some kind of base case. Y foo's. Yeah, so we have to code it correctly so that it has a base case so it doesn't continue forever like this. But here we're getting a function to basically keep calling it out, calling itself, right? We've essentially done recursion here. Using this crazy Y combinator. So what we can do is we can actually define our factorial function. So instead of like this, right, where here we can't actually write this definition even though this is what we want, right? This is our goal state, this is what we want the factorial function to be. But what we can do is if we set the factorial function first to return Y, the Y combinator applied to that function that we want. But what changed about the function? Right, but how many parameters does this new thing have in here? Two, right? So what are we passing it as the first parameter here? Itself, exactly, yes. The function that we want to call is gonna get passed in as a parameter and the Y combinator will make sure that what gets passed in is going to be this function again. And then if we call f on predicate of n, we'll do predicate of n and then we will do this again and we'll expand again until we hit the base case where is zero and move return one. So by changing this, by saying, okay, we cannot name factorial, but we can accept it as a parameter, we can call a parameter f and we can put it as part of an application here. So let's see what this looks like with factorial of one. So we have the Y combinator applied to this guy which is the one we originally want with another parameter applied to n, or sorry, applied to one. So we do the Y combinator step which first gives us lambda f dot lambda n so that the expression that we passed in applied to Y of lambda f dot lambda n is size zero one, multiply n by f predicate of n to one. Expanding that out again, so replacing now the f with the new function including the Y, right, the Y combinator, we can reduce f, we can replace all the f's in here. So now we have something that we can reduce, we have an n and we can replace it with one. And so we say if one is zero, return one, otherwise multiply one by Y of the same thing again, right? One with that Y applied to the same thing again. So we do this again, we say is, is one zero? No, it's false. So it's gonna return the second argument here, so it's gonna get rid of this first one. So we have multiply one by whatever Y of f of n applied to the predicate of one. So we go through the same steps again. That's going to go out, give us here where we now have our Y combinator inside here. Now we have the predicate of one, so we replace n with the predicate of one. Predicate of one is zero, so we replace n with zero. Now we have is it zero? Yes, it's gonna be true. So we will, this whole thing, now we don't, are not going to evaluate the false branch. So we don't care that this is going to repeat infinitely, right, because it goes away. It's like an if statement. Here the statement is true, so we take the true branch, which is one. And so this whole thing reduces to one, you multiply one by one, you get one. So now we have Boolean logic, we have arithmetic, we have loops, we have hit, turn completeness. But do we actually have numbers? Well, it's just like to you. So what we're gonna do, we have to define, just like we did true and false, right? We're gonna try and define each of the numerals to define zero as, well, actually, how many parameters is zero taken? Two. Two, which parameter does it return? The second one. The second one, which is similar to what? False. False, yeah. We're gonna define it the same as false, which is kinda cool. We define one as lambda f dot x of f applied to x. And so we'll define the numbers based on, whatever number you give me, I will apply f that many times in the body. So two will be dot f, f, x, three will be f, f, f, x. Can we do that? Sure, is there any, I mean, is there any difference between encoding numbers like this versus ones and zeros? You can actually, well, you can do numbers with all ones, right? I mean, you don't actually have to have a zero makes it more efficient. We need to have a way to distinguish between a one and they're not being a one, but you don't actually need a zero character, right? And four would be four fs. And so the way to parse this is we first apply f to x, we apply the result of that, to f to f to f, repeated infinitely. So the idea is if I have four a b, this is going to result in a a a a b, right? First parameter being done four times. So I have numbers, right? So I have some concept of numbers that I can say if, can I look at, if I do some calculation, can I look and can I see what does this, is what does that result functionally equivalent to? If it's functionally equivalent to any of my numbers, then I know that that is definitely a number. Everybody agree? But the question is how do I move from one number to the next number, right? That's actually one of the key properties of numbers. You give me any number, I can always give you the next number. It's pretty trivial, right? Maybe you never thought about it too deeply, but you, every number has a successor, right? The successor of one is two, the successor of two is three. But we can actually define this using lambda calculus. So this looks kind of tricky, but it looks like it takes in three parameters, but it actually takes in one parameter. We want the successor. So let's say I give you some, a successor function. What's the type there? What should it take in? What should it return? A number and a number. A number and a number. Should it take in one thing and return one thing, right? So it takes in one thing and, and it returns something of the form what? Lambda f dot lambda x, which is a function that takes in two parameters, which is the same type as the numbers we're talking about. So you'd think if it takes in some number and it returns arbitrary numbers here. So the question is, okay, does this actually work and what does it do, right? So what is this function doing in here? So what's n here? The initial number, right? The number that we pass in. So if we pass in, what was our numbers kind of, what did they do? They take in two parameters and what did they return? So they take in two, an f and an x, and what is the body? Not quite recursive, right? It's a fixed number of times. But it takes the first argument applied that many times to the second argument, right? f of f of f of f of f of x, right? However many times. So if n is one here, it takes the first argument and applies it to the second argument once. So it's gonna return f of x. Which is a static one.  And then we can do the successor of that. Two f's would be f of f of x and f of f of f of x gives us three. And similarly with zero, the successor of zero. So here we pass in zero for n. Zero returns its second argument, which is just x, okay? So it's gonna be lambda f dot x dot f of x, which is one. And we can do this with one. So we have the successor of zero as one. And based on how we define the numbers, we can do this. We can do one, we can say what's the successor of one. We substitute in one here. And then f is going to be applied to x that many number of times. And this time it's gonna be one. So now this is the same thing as f of f of x, which is two. So the successor of n is always gonna return n plus one. Based on the way we define the numerals here. And we can generalize this to, you can actually do this for addition. So there we were taking in one number and returning the next number. Here we're taking in an n and an m and we are adding them together. I'm not gonna go into the details here. I'll briefly go over it in case you're interested, that you can show that you can actually do addition like this. You can even do multiplication. So we can multiply two numbers together using our add function, right? So multiplication is just add something to something else that many number of times, right? So we can use multiplication here. And so here you can do subtraction and all kinds of crazy stuff with numbers. So you can completely do it representing everything just as functions, right? We have loops, right? We have logic, we have arithmetic, we have loops, everything you need for a super cool, fun programming language. I see you all agreeing with me. And now, saddens me. We've reached the end of the course. Yeah, so I'm gonna touch down a little bit. Really the purpose of this course, and honestly the purpose of your computer science degree, is to dispel any notion in your mind of magic, right? Computers are not magic. Trust me, I'm a huge Harry Potter fan. But magic is for Hogwarts. Computers are not magic. There's absolutely nothing magical going on, right? It's all systems, it's all, we've studied compilers and how compilers work and how languages work, right? The magic is understanding them. No, it's not magic, it's just hard work. Just like anything. So what you should take from this is that you have the faculties and the tools to understand these systems, right? It may take time, it may take effort, but you studied all about how a compiler works, right? You know all the steps that are involved in a compiler. Now you know if GCC is throwing some weird syntax error, you're like, oh, it's probably because it's expecting some token here and it got a token that it didn't expect and that's why it's throwing this error so I should figure out maybe what's going wrong, what's going wrong, right? And just like you take operating systems so that you understand operating systems, there's no, we built these things, right? Humans, we built these. You need to be able to understand them and to know that there is no mysteries, there's no magic, it's all computing all the way down to the silicon, so. Go for them, do awesome stuff. Go for them, do some stuff. There it goes. We will miss you.


With Marine Week Cleveland still months away, senior Marine Corps leaders continue to make plans with local government officials, who say they have nothing to worry about. It's a great organization and good people who really know what they want to do and how to get it done. Major General Walter Miller of the 2nd Marine Division stopped by some local colleges to spread the word about the current state of the Corps and to get locals ready for the Marines. I look forward to all of what will happen during Marine Week and particularly on the day when you come into Cleveland 800 or 900 strong. Marine Week Cleveland goes June 11th through 17th and marks the 4th event of its kind after successful visits in Chicago, Boston and St. Louis. From Cleveland, I'm Sergeant Todd Hunter.


I remember it to this day. I made the decision to study physics after listening to a class on Copernicus. His experience as well as many other examples in history demonstrate the power of science to change not only what we know but how we think about ourselves and life itself. NASA is doing civilization level science but it adds with our research and science programs or our human exploration program and that science has not only changed how we think but also has provided a surprising number of practical applications that are affecting all of our lives every day. Civilization level science is truly a characteristic of explorers and that's also a deeply human characteristic just how I want to remind you of your own memory now. I am sure you remember the first time you felt it that sense of universal wonder. As a child you looked up and you saw the night sky and all its silent glory. It covered everything around you and it was ever present. It was straight out beautiful and you knew deep in your heart that it was important too. You can look at the sky again the next night and went on travel to the beach or the mountains and it is still there and it is still beautiful and it's still important and it changes. New things become visible. The heavens are shifting even as they seem constant to us. Their reward repeated investigation as we grow up and keep looking at the sky. To many of us there are two overarching thoughts that are emerge and both of them related to exploration. First and foremost there is a sense of unity with all humankind because even though people around the world will look at different parts of the sky at different times it is the same sky for all of us and the same importance. The stars and the sun shine on all of us and we live under the same firmament like one huge tent and in that tent we have united in our most fundamental experience of science and united in our human condition and the second thought that emerges is about questions about the why the what and even the who related to these observations. Science and philosophy are tied together as we gaze skyward and if you share that experience with a child there is an honor inevitable consequence of this very human experience those very important questions. These questions reflect an innate curiosity we all have in us about our experience of the universe. They may not always have answers but they point towards possibilities. We who never stop looking at the stars we wonder both the scientists and those filled with fascination of the great unknowns all around us which everyone could see what we see. If we start answering the child's question we think about them for ourselves the sense of awe and the vastness of the sky and the amazing phenomena going on all at the time throughout our cosmos that sense of the importance of our observation and how they unify all of us all become bigger always bigger always more important. It has always been so since humanity first started to pierce the veil of the sky above us and piece together what we could. Socrates himself said man must rise above the earth to the top of the atmosphere and beyond for only thus will he fully understand the world in which he lives. The insights we get from science and telescopes and robotic explorers enrich our view of the world in ways that we could not have predicted and by world I mean that in the broadest sense of our home planet and the cosmic sea in which we float we learn for example that the sky is not at all calm as the vast cloak of silent darkness at night might seem to indicate this appearance is merely because of the timescale of change out there time periods incomprehensibly long when compared to our human life stars are constantly being born they go through an evolutionary history enormously larger than a human lifespan and often find violent and explosive events ancient rocks collide with one another and even with the earth the surface of many planets and bodies rage with storms larger than continents or push water into space with explosive force or nurture the building blocks of life that might once have existed in similar form here and this violence and chaos which nonetheless follows rules if we can just understand them this it seems throughout the universe many philosophers have thought about this key insight but I'm going to use the words of a child here to talk about that very feeling which is applied to our science and exploration programs and especially the exploration of Mars curiosity insight spirit opportunity if you think about it all of these names and past Mars rovers are qualities we possess as humans we are always curious and seek opportunity we have the spirit and insight to explore the moon Mars and beyond those as I said are the words of an inspirational young man who came up with the name perseverance for a rover that launched to the red planet this summer it was inspiring to hear this young person who is truly of a new generation of explorers growing up now the Artemis generation as we call that reflecting that the motivation for much of science is reflected in qualities we have as humans these are qualities that our children often understand better than we do as grown-ups and qualities that motivate us to go forward it is the childlike why question that is at the heart of all of what we do it's a beautiful and motivating message and it pulses forward and not only changes what we know but how we think about ourselves and our lives on earth and in the universe it is the why paired with the actions and determination to find answers it is also continually renewed as the why keeps growing we have spent over 20 years in low earth orbit on the international space station a global partnership that is unprecedented if you're younger than 20 years like both of my children there has never been any time in their lifetimes when humans beings were not off the planet Americans were not living and working in space as well as their international partners we have learned much about routinely leaving earth and living in space and though it remains an extraordinary feat each and every time we have seen the many stunning images looking back at earth with the beauty of the aurora and the night sky the sheer power of natural forces and storms but they all show how earth is united and unified whether that's an aurora dancing across the arc of the magnetosphere or disturbances forming in one part of the ocean and impacting land half a world apart it is all one planet with borders of geography and oceans but nonetheless one big place for humanity's borders pale when seen from above our fleet of earth observation satellites has grown tremendously in the last three decades enabling us to have eyes in the sky looking at every aspect of our planet it is essential that we do this because our planet is made up of an interconnected system of systems and so we have satellites to look at precipitation the atmosphere the oceans the ice the land and many other subsets of these systems we learn about the slow changes of our earth caused both by natural processes and also by humans we are learning about the connectedness between us here on earth we all breathe the same air we are surrounded by oceans that are rising in the atmosphere that is warming globally every day these critical satellites also warn us of disasters and help us recover their data help give farmers more information to help them with critical job of being more effective in their work and they help us all see how our planet is changing because of rover's life curiosity spirit and opportunity we have received insights insights into our universe and ourselves we followed the water and learned that Mars might indeed have once been habitable exploration and research have continued to unite us from those first real pictures of the surface of Mars taken by Viking to the bated breath of everyone on the planet as Apollo 13 struggled to the celebrations as Hubble's glasses gave it the piercing vision back in time and across the cosmos that it has had ever since we have one sky one sun one earth and we explore it together to the benefit of all of us we have the gift of questions and those questions are a legacy on which we continue to build those qualities continue to be renewed in each generation as they make their own giant leaps and pursue the questions most meaningful to them but as we plan for the bright future of science and exploration there is one additional element one equal human behavior that has been just as important as curiosity in fact the only way we got these amazing pictures of the universe from our telescopes from our orbiters and landers at other worlds and the only way we got people into space in the first place is through perseverance curiosity and perseverance are two sides of exploration that have always been with us and are always linked this year we celebrated the anniversaries of both the Hubble Space Telescope and Apollo 13 I believe that the Hubble Space Telescope is the most magnificent telescope ever built by humans conceived by leaders like Lyman Spitzer and Nancy Grace Roman this telescope was built with very tough challenges both technically and programmatically and when it was finally launched Hubble was short sighted and a huge disappointment its mirrors were not correct but through perseverance Hubble not only became the most successful astrophysics mission to date but also the best demonstration of the confluence and mutual importance of science and human exploration bold astronauts flew to the telescope multiple times over the years to make Hubble better than ever and extend its life and now with over 150 terabytes of data on the ground and the international community of more than 12,000 active researchers worldwide have written over 15,000 publications on its amazing astronomy and the number is increasing now by about thousand publications each year there has never been a space mission with this magnitude of scientific impact remember that this was enabled by the perseverance of those before us and telescopes like Webb and Roman will build on the ingenuity and require perseverance to overcome the challenges that will surely come we can look at the Apollo 13 mission in the same way it will certainly the same optimism of a country on a roll and I'm sure that the entire team wish that Apollo 13 would have been as smooth as Apollo 11 and 12 but immediately after the accident that dramatically altered mission and the famous quote Houston we've had a problem the Apollo spirit and sheer excellence of the integrated team on the ground and in space came together and brought the astronauts back safely their trip of nearly six days was filled with innovation ambiguity and fear as Jim Lovell and his crew members dependent on Gene Kranz and his ground crew what initially looked like one of the most deadly disasters in the history of space travel turned into a story of leadership of teamwork of unquestioned strength and success and we persevered it was perseverance not giving up on the pressure and when challenged that got Apollo 13 astronauts back home safely and that helped us be safer and accomplished a mission the next time perseverance has always been part of exploration and it will forever be using our Artemis program we are moving astronauts out of low earth orbit and forward to the moon we want to go back and land with the first woman and the next man as we want to have a sustained presence on the moon and we seek to reach our next goal the goal we have never reached before bringing humans to Mars where they can explore the same terrain as all those missions with the intriguing and inspiring names we'll be able to bring scientists first to the lunar surface and later to mars as well and just like other milestones achieved by those who came before us we too must recognize that reaching big goals is not just about spirit and opportunity and about values that pull us forward it is also about perseverance do not give up when things are tough make no mistake getting to mars will be tough it always is our next rover is aptly named because it will take perseverance to survive to go the distance in the rugged environment of mars and all of our human explorers face incredible challenges as well i believe we were meant to explore but doing so makes us first face some incredible obstacles which we can face with science and with perseverance let me talk about two elements that are critical in this realm managing the dangers of space weather and sending science to lead the way for humans the biological and physical sciences divisions as joint nasa science mission directorate coming from the human exploration side of nasa we look forward to working with them and their intriguing projects to use aspects of the spaceflight environment and study biological and physical systems and study how these system respond to gravity and radiation among other factors which can lead to scientific discoveries that might one day help enable prolonged space exploration and also benefit life on earth our sun is an active and variable star and besides its radiation adds hazards to our journey in space this variability can be manifested by major emissions of high energy flares and ejections of solar material we have been studying those magnificent events using space assets and are making progress and understanding their physical processes that shape them what is not visible in these pictures is one important side effect of these violent eruptions the acceleration of very small number of particles up to nearly the speed of light the vast majority of them do not make it to earth because of both the earth's magnetic field and the very thick atmosphere between us and the sky humans who will travel from earth on the way to the moon and to mars away from that earthly protection just like weather forecasts on the seafarer space weather forecasts and situational awareness are important ingredients for all of them and to persevere through the challenges of space travel and the fury of space sweater this is why explorers that venture to the moon and beyond will have to be prepared for both those often unpredictable eruption coming from the sun and the other high energy particles that come from the outside of the solar system galactic cosmic rays unlike the predictable solar ejections there are far fewer galactic cosmic rays and they enter the solar system at a fairly constant rate with a maximum flux during solar minimum conditions which is just about now understanding the radiation effects of both solar and galactic radiation on the crew and the plants and microbes they bring with them in exploration is a major focus of our research program for example the damaging effects of radiation on dna on the resulting higher risk of cancer has been known for decades that research has shown that space radiation causes more of the dna damage that is difficult or impossible for cells to repair moreover cells that have been hit by space radiation can damage nearby cells including their dna through processes that are not yet understood besides the biologic impact of these particles we are also interested in how those effects are modulated by microgravity and other aspects of spaceflight thankfully we are entering a new phase of research focused on this environment of space nasa's parka solar probe is breaking new records going ever closer to the sun than we've ever been before while measuring the plasmas fields and those particles in this never explored environment where they originate we are learning that this is a violent pit there with a structure that has escaped many of our models which were built before and were able to study the environment so closely we are excited because we will also learn more about the sun from isa's recently launched solar orbiter which will bring cameras into the inner system of the sun and also to higher latitudes of the sun promising to shed new light on the connections of the solar activity local to the sun and the radiation beyond we are so committed to this that we are putting a weather station and with our isa colleagues a radiation focused suite onto the gateway that will orbit the moon and eventually serve as a base for astronauts these measurements near the moon are interesting by themselves and our scientists want to learn more about the lunar environment but they're also part of a system of tools we will need to travel ever deeper into the solar system to keep astronauts safe from the onslaught of radiation from the sun and beyond in all cases whether to the moon or to mars science leads the way we are able to take more risks with robotic explorers than with humans and we can learn about environments and resources to be encountered once humans arrive we still uncover things years after data are collected and we are trained to analyze and correlate and synthesize this training is essential for us to realize our aspirational goals to go to mars with humans which will be one of the most difficult objectives ever attempted in the history of spaceflight mars as we have learned is both a stunning and a challenging target in fact nearly 50% of all mars missions have ended in failure and landing on its surface is one of the most difficult goals ever attempted just with Apollo 13 and many moments in our history we will keep the cameras on even though we know of the risks we seek to achieve this goal again as the perseverance rover now speeds towards mars for a february 2021 landing the instruments that are part of this mission are laid out to give us the information to collect the most valuable set of samples ever samples of mars that we will later bring back to earth samples that are dressing a very simple question has there ever been life on mars that has never been possible before and we're making it possible this mars mission is a true astrobiology mission focused on the origins of life away from earth it was very hard to get this mission ready even before the challenges of covid but the team persevered in perfect alignment with their namesake mission and it is perseverance that will ultimately achieve the big goals that yet again change the history books and to answer that child like why the rover is also equipped with more cameras than ever a microphone a first and many other sensors that will enable all of us to experience the martian environment as never before all missions face their own obstacles but we keep them going to the best of our ability to chart the new story of humanity on another planet and in space in ways we cannot even comprehend yet that is the story of exploration and the seed of perseverance on which we all rely a seed that grows from necessary question how does that work how can we learn more and maybe can we visit a faraway place we are hopeful because the next generation will come and complete this journey and that is inspiring to all of us i've been using the words from one of these students to frame this presentation i'm going to let alex madder the 13-year-old student who named the perseverance rover end this talk with his wise words about how humanity will persevere into the future curiosity insight spirit opportunity if you think about it all of these names of past Mars rovers are qualities we possess as humans we are always curious and seek opportunity we have the spirit and insight to explore the moon bars and beyond but if rovers are to be the qualities of us as a race we miss the most important thing perseverance we as humans evolved as creatures who could learn to adapt to any situation no matter how harsh we are a species of explorers and we will meet many setbacks on the way to mars however we can persevere we not as a nation but as humans will not give up the human race will always persevere into the future


From an early age I've always been interested in technology, whether that was tinkering ground with computers to gaming. I work in the technology area and I had seen a limited path of opportunities that were going to be offered there. I had come to the point where I felt like I was plateauing and that if I didn't do something else I would get bored. A postgraduate degree would allow me to open up and explore a few different areas. One of my core beliefs is that finance unlocks the way the world works. So one of the leading reasons for me going into finance was to know more about money, how money works, how it moves around the world. With the Masters program there are real specific core deep learnings that can not only be applied to work but make my work shine. Prior to undertaking these studies when trying to secure finance for new projects was a very daunting experience but I'm going into that a lot more confidently now. I would highly recommend Griffith due to the convenience and flexibility of the online courses and how they're structured. For me the ultimate goal in my career is to be in a place where I can connect new ideas with new technology.


The wet out there today. Been wet for a few weeks. Well, it's for like the third week in a row, we got a quarterback that can run. The guy's a good athlete. The guy's got a really, really strong arm. Really makes plays out of the pocket very, very well. It makes things difficult in the rush. When he gets out of the pocket, he's extremely dangerous. I asked Tennessee, they gave up some big plays to him when he was out of the pocket. That's a problem. You've got to not let him get out there very often, or you've got to at least keep pressure on him when he is out of there. Well, it's always tough. Any time you lose a starter, there's a reason why the other guy was backing him up a little bit. I'm going to miss the guy. I'm not going to miss him just because he was a good player. I'm going to miss him because of him. I always thought he was really in tune into the game. Very knowledgeable. Very did a great job of communicating. You lose not only just the physical aspect sometimes, but there's a lot of other aspects. He was a good locker room guy, a good guy to have in the meetings and very informative. So, hey, we'll find out. That's the NFL. That's part of football. That's why you get put on a 53-man roster because your name is going to get called at some point in time during the season. And generally speaking, in the past, it's usually been defensive backs. So, like I told you, one year we had eight starting corners in one season. It is what it is. So, the next guy's got to know. That's why those guys got to be in tune. Even when they're not playing, stay up on everything because they never know when your name is going to get called. Sometimes it's in the middle of a game, or early in the game, in this case. The emergence may be changed when your initial thought was with what you wanted to do at NFL. How did he change it? Did his emergence maybe change? You may be running multiple guys at that spot. I didn't know what he was running. He didn't change it. Basically at all, Michael. I mean, he was kind of like the Logan Rans, the Darius Webs, the guys that I've had. He was like that. He didn't change anything. That was the good thing was the fact that I didn't have to change because of him. So there wasn't a change. I could actually do the stuff that I had done at Baltimore and at Tennessee because of Isaiah. So, he didn't change anything. To his credit, he fit in just like we wanted him to. Does that put you in a position where maybe we'd use different guys in different situations versus one guy? Could be. I mean, I can't answer a question that we haven't really done this week. So, we're going to look at a lot of different options there this week, see what those guys can do, I'm going to try my best as a coach to not put them and ask them to do things they can't do. If there's different guys that can do different things, that may be what we do. We just, I can't answer that. I can't tell you what I'm going to do until the end of the week and then I wouldn't tell you at the end of the week. So, I'll tell you after Sunday with the word. How did you evaluate him? Oh, had some good players, had some not so good players. I mean, he just got thrown into it and all of a sudden and, you know, it's a tough situation sometimes for a rookie. You haven't been playing, you haven't been playing, you've been special teams, been a returner and all of a sudden now you're the starting nickel early in the game and, you know, we got a little bit of a game plan stuff and so it's, you know, but overall I thought he did, he did well. He did well. I mean, he did as well as we could probably expect to put in that situation. So a week, I mean, I don't know what, like, time at all? None. None? The only time I see defenses is the defenses that are playing against the offense that we're going to play. I mean, I come in at five and go home at 11 and it's all watching their offense and watching how other defenses play them. I don't get to watch Philadelphia's defense unless Philadelphia is playing a team that we play. So watching another team's defense means nothing to me during that week. I got to spend all my time on that offense and like I say, they played New England so I saw New England's defense. I saw him play Tennessee. I saw Tennessee's defense. I'm familiar with it. So I kind of knew a little bit of some of the stuff that was going on and how they were calling the game. You know, Denver. You know, I just watched the teams that they played. He's a green player so far this season. I know he got some reels to reel himself and he's been good so far this season. Well, he's, you know, I was really, really pleased with him after the New York game. I thought he got thrown into a situation there with AJ out and I thought he played really well. He just got to keep playing.  You know, he had a tough break there on the one that the guy just threw the daggone ball up and the guy catches it in the end zone. He just lost the ball. He actually fell down and when he tried to get up and go get the guy, you know, he tried to just go man the guy and tried, didn't look for the ball and, you know, when you fall down, you're in a panic state that you got to go and get the guy that you're covering in man coverage and that's what he did and he just lost track of the ball and the guy caught it. So, but, you know, I don't want that play that to me does not define TJ at all. You know, it just, it happened. I've seen it happen to all pro guys. It happens, but that doesn't define how he's been playing. He's been progressing pretty good.  Did he take that to account? Sure. It's really both teams got to play it like it's an away game because I don't know if you've been to many of those games. It's like a soccer match. The noise never ends. It just, it's all the time and you know, you're going to see John L. Wade-Jersey's up in the stands. You're going to see everything. I mean, who knows who they're cheering for. They're just cheering. To me, it's just, it's to me is a, it's a fun atmosphere. I think it's a fun atmosphere to play over there. I think it's, they're excited about it. It's usually a great crowd, a capacity crowd. They're loud. I think it's a great atmosphere to play in. Yeah, we get to get a new contract and start to play Will up there. What have you seen up there as far as... On who? Corey Davis. On Corey? He's played well. He's always been a guy that to me, he's got a big catch radius. He's a big guy. He's fearless over the middle. He's not afraid to go over the middle and catch the ball. Good route runner. Got deceptive speed because he's long. You know, everybody thinks of guys that are just really quick and stuff. But he's not that easy, but he's got deceptive speed when he can turn it on. Like he turned one up last week on a kind of a scramble play on Tennessee and just ran by those guys. And he'll go up and get the ball. He's got great hands. So I think he's playing exceptionally well. He had a big year last year. I mean, they're trying to get him the ball. And so he's a really good player. Yeah, the thing that we're... The thing that we are not doing well on that stuff is as a defensive back, you got to go attack the ball almost like a basketball player who goes to get a rebound. You never catch the ball with your thumbs out. Receivers catch the ball with their thumbs out.  You don't have any choice. My hands are going like this. And just like when you go up, if you try to cradle the ball in, the guy's got a chance.  You got to go get it. So even if you miss it, it's like a rebound. I'm knocking it down. I'm not tipping out. You never catch a ball like this. You got to go get it. You got to go attack the ball. And we sometimes just kind of baby it in and if they had great hands, they'd be receivers. So I'm just saying that... But there's been some great defensive backs that I've had and those guys really go attack the ball. And that's the thing we got to do and we got to do a better job of drawing it and drawing it into them. That's what they got to do. They got to go attack the ball. Don't let it come to you. You got to go to it. You've heard people say, you know, get it at its highest point. Well, that's attacking the ball. And sometimes we don't do that and we don't make the pick. Is there a what? Where in the world do you most want to go to? Atlanta. You trying to get me fired or what? I'm not like... I'm not like... You know, I'm not like... I'm not like... I'm not like... No. No. No. No. No. I'm happy you're right where I am. Either this or be... Hardin' on in high school, my old high school back in Ohio or something. No. I love it here.  They were kind of like, who do you... Okay, well, it needs to be me this week. Well, you got a bunch of guys that obviously if they're on the 53-man roster or even on practice squad, we thought enough of them to be on this team. So they have talent and each one has different types of talent. And what you got to do is assess going into a game. That's from a defense standpoint. Okay, is this going to be a game where we're going to be in a lot of sub-defense or are we going to be in a lot of base defense? That sometimes has a bearing on line... basically linebackers and D-line. DBs are probably pretty standard across the board unless the guy's injured. But the other thing, too, is injuries always take into account. But just let's say there's no injuries. It's really going to be based on what's the game plan asking for. Okay, if we're playing a lot of sub, there's only 2-D linemen in the game. And if you're going to play a lot of it, if you have 4-D linemen, that's probably going to suffice. If you're playing a base game where there's 3-D defensive linemen again, you probably need 5. Okay, then also taking into account is special teams. Are any of these guys involved in special teams? If you've got two guys close and one guy is going to be really your fourth or fifth guy up and just a rotational guy, but he also could be a starter on some special team, that's going to take precedent. So it's all those things. That's why bottom line is, Art has to make the decision on who's active and who's not because he has to look at the whole team. Does he need an extra tight end? Is there one beat up so he may need an extra tight end? Well, that means somebody else has got to go down. Well, is it going to be a defensive guy? Is it going to be a linebacker? How many linebackers do we need? There's all those things that go into account. And all we do is present, here's who we'd like to have, and then he has to make the decision based on what's best for the team. So I hope that answers your question. But the thing of it is, what you're kind of saying, though, when one guy's up one week and one guy's up the next week, they're probably very equal in talent in what we expect from them. It's just a matter, then, of do we need an extra lineman, an extra backer, what do we need for that game plan? I think they're getting there. And it's just, I think they're getting very comfortable with it. And we got to just kind of keep doing the same things. Like I said, I told you a week or so ago and we scaled back a little bit, because I felt like I was probably throwing too much at him early and tried to scale that back. And, you know, like in this last game, it's just, it's very frustrating and it's very disappointing for all of us. It's disappointing for you guys. It's disappointing for all of us. It's just, we got to get rid of the loose plays.  Just like even the throwback, we got the quarterback under duress and he throws over to the back who's not even in the route.  And it didn't have anything to do with the comfort, being comfortable in the scheme, because the scheme didn't call for that. It was just somebody kind of, and it wasn't something malicious in any way that I'm going to go do something else. It was just, okay, I see the quarterback scramble and so we don't stay at home over there where we need to stay so that he can't throw that pass. Or if he throws it back there, we knock it down or pick it off. Those are the little things, we just got to, we just got to really keep paying attention to the little details. Those are the things, we had some chances to pick some passes off in that game. We had plenty of opportunities to win that game. And we just, we didn't do it. And it's not because they didn't have a mental error and line up in the wrong place or run the wrong thing or do the wrong thing. And we just, we just got to keep working out those details. And that's, you know, but I think they're getting very comfortable with it, you know, and we just got to keep working on every day in practice. Thank you coach. Okay, appreciate it. Thank you.


Hi guys and welcome to this video. My name is Dapo Willis. I'm the CEO of Western Sahara Group and Today I'm going to be talking about my trading strategy the strategy that I use to build Decent profits in the market the strategy that I've used to build my company over the years. I mean I've Pretty much used Forex trading to build a group of companies right now We have three companies on the Western Sahara Group and yeah My trading strategy is very straightforward very simple. I use four key technical tools and if you just Pay attention you're gonna understand Exactly how it is I trade The four key technical tools that I use to develop my trading strategy now I know this looks very Cliche and basic and simple, but that's that's exactly what trading is about So what do you have in front of you? First of all is price action train lines support and resistance and Fibonacci So these four key technical tools are what I use to build my trading bias and I have been very profitable so far Now moving on For those of you who have been trading the longest you already know what Japanese candlesticks are. I don't need to go Over them again now support and resistance.  Are just new to the market and then I'm gonna jump over straight to the trading strategy So support and resistance is basically These are levels in which the market tends to respect over and over again Resistance is known as the price ceiling in which when the price gets to the ceiling turns around and starts to fall back down Support is known as like a bounce level in which when the market touches it will start to head back up So as you can see As you can see anytime the market heat resistance it touches it comes back down Hit support comes back goes back up and so on and so forth So I'm also we've got trend lines now trend lines is a very key part of my technical indicators because all I simply do in my trend line Is I just joined the two most out of points and I just basically let it slide I just let it slide and you see as you can see it touches here touches here touches there now When I do understand my price action for instance, let's say my price action is telling me that market is bullish Okay, what does bullish mean bullish simply means the market is in uptrend and you know what bearish means bearish means the market is in A downtrend so once I'm able to identify the trend I then bring out my trend line and I then plot it as you can see like so Now what this helped me do what this helped me what this helps me with is It just basically guarantees the fact that the market is still in an uptrend Okay, so anything above this trend line simply means that the market is in an uptrend now If we do break this upward trend line, then I know there's trouble then I know that the market is about to change in trend You know, so that's what the option basic. That's what the trend line basically helps me do now moving on I've got this really amazing guy for the means name is Fibonacci now Fibonacci is some mathematician from the from the From the early times. Okay, so this guy, you know, he has this mathematical formula that basically states that everything in life pretty much revolves around Setting mathematical formulas and he has been kind enough to, you know, write books about it And we've also seen in the past that you know, the market tends to respect this mathematical numbers so after After years and years of Trading and research I found out that the most important level in the Fibonacci sequence It's actually the 50 Fibonacci level as you can see here. This 50 Fibonacci level is very important Now, how do I use the 50 Fibonacci level simply done by so when the market tends to sell off as you can see from point A To point B. What I simply do is I draw my trend my Keep saying trend line my Fibonacci from swing high to swing low Once I've done that the market then pulls back into the 50 Fibonacci region Then I'm always looking to sell not always looking to sell but if the market is in the downtrend It just gives me an extra confirmation that yep, that's it's time to go south Now I've also got some earlier ways, but I'm not really going to go into that at the moment I'll just take you straight into, you know, what you're here for you want to know how exactly do I buy or how exactly do I sell? Or what is what is the all right guys? So what I what I have in front of me is It's basically a trade that is very very dear to me as you can see This is this is a trade that I took in way back in 2014 Now you're probably wondering why am I bringing back an old trade and talking about it? The reason I'm doing this is just because I want to use this trade to explain Exactly what my strategy is and how exactly I perceive the market Alright, so I'll just tell you a little story. Okay, how I came about this trading strategy and how it has done Absolutely wonders for me over the past years Okay, so It was 2014 and I was just sitting in the living room with my mom and basically the news the news came on and You know Bloomberg was talking about how the S&P 500 was collapsing and You know, I obviously I changed CNN to check if the same news was on CNN as well And yes, everybody on Wall Street was in absolute panic The Wall Street was was the S&P 500 was in some one way or the other Retracing or collapsing or however easy you decide to look at it And I was like wow this this doesn't look good So what I do is I grab my laptop opened up my charts and what I saw my charts really took me by surprise Okay, so by the time I looked at my charts, I realized that as much as the market was Collapsing in their own words. It was just simply retracing Because you guys are straight as remember that the market doesn't just move in one direction Okay, he doesn't just move up He moves up comes down moves up comes down moves up comes up and so on and so forth And this just looked to me like a mere retracement.  Okay price action trend line supporting resistance and Fibonacci So the first thing I did was price action. I looked at this chart. I said, hmm This market is making significant higher highs and high lows high highs and high lows high highs and high lows High highs and high lows. So what does that tell me this market is in a bullish trend? Second thing I did was I brought up my trend line. Okay, I brought up my trend line and I plotted it really nicely Okay, third thing I did was I looked for the the best area of support Okay, so this area was resistance one resistant to resistant three and for those of you who've been trading the longest You know once a level of resistance is broken. It automatically turns to support So I did that and then last but not the least thing on my on my in my toolbox is my Fibonacci tool So I brought my Fibonacci tool and I plotted it from swing low to swing high and ladies and gentlemen It would surprise you to know that it actually came into some form of confluence in this blue box I was like wow now I feel you know, I Feel justified in terms of my analysis. Okay, because I have a confluence on so it's very possible that this market is just pulling back into this confluence zone before we head higher and You know, luckily for me, I was able to stick to my bias You know, I was said, you know what?  Anyway, we'll get to that in a bit Now I just stuck to my bias and I decided and this is very very important Especially for struggling traders. You need to stick to your bias and what happened ladies and gentlemen I I placed a buy order within this blue box that I highlighted very nicely here and this is exactly what happened Okay, fast forward nine days later actually seven days later The market came picked up my buy order and rallied all the way to the upside for a good 900 pips 900 and 9 hundred pips guys 900 freaking pips now I don't know what kind of trader you are but if you're a real trader, you definitely know that 900 pips is a lot of pips Okay, guys. So that just goes to show that the news they talk our rubbish. Okay in this market FX market You want to be 100 or well 95% technical? You want to leave the remaining 5% for obviously? What's this thing called again? We want to leave it for Policy decisions interest rates you want to leave it would be like Janet yelling Mario drag You know, they got the remaining 5% because whenever it is they speak, you know, the market obviously tends to listen However, I'm 95% technical and as you can see I made 900 pips on this move alone Just by using price action train line support Price actions train line support and Fibonacci. Okay Price action train lines support and Fibonacci these four components are what put together this trade from me And I was able to bank 900 pips now. You're probably wondering how much did I really make? Okay? How much did I really make? How much did I really make now? Let's say hypothetically I had a 500 pound account size. Okay, and I stick two pounds of points. Okay, so that'll be Two pounds of point multiplied by 900 pips. I'll give you a thousand eight hundred pounds. Okay now Let's look on the bigger side. Okay, so imagine if my account size was 5,000 pounds and I stick to 20 pounds per point That would give me 18,000 pounds now. I don't know where you are in this world, but 18,000 pounds is a shitload of money Okay, it's not a shitload of money, but it's a shitload of money A lot of people work a whole year before they were to see 18,000 pounds now You have to remember this period. I was in the first year of uni I just started trading three years ago and you know, I was like wow now You're probably wondering how much did I exactly make personally now ladies and gentlemen. I stick 50 pounds of point 50 pounds of point ladies and gentlemen. I made 45 grand 45,000 pounds absolutely blew my mind like you have to remember I was first year in uni. I was in I didn't really have that much Cash and all of that. I just probably had about nine grand in my trading account And I flipped nine grand into 45 grand now I'm not asking you to go and double your account overnight but I'm just telling you the power of listening to your technical tools and and basically focusing on your trading bias So, you know, that's basically my trading strategy I have this forked key technical tools that help me, you know, make my decisions and they help me You know Position myself in a such a way that I'm able to trade any market And you know the good thing about this trading strategy is I'm able to trade any market be the effects Stocks and commodities. Yeah, I can trade oil gold. I've used his strategy to trade so many You know financial instruments across board Okay, guys, so if you want to know more about my trading strategy, okay Comment below if you think my video was helpful to you in any any way or form do comment below and say, thank you Dabs, thanks for the video You've given me another form of trading strategy. Give me another way to look at the market Okay, and if you're also struggling out this video is actually Tailor to struggling traders. If you are struggling with your trading, send me an email my email is dapplewillisatgmail.com I'm gonna leave my email in the bio section Okay, the description of this video to send me an email and I will definitely be in touch with you So we can at least have a one-to-one session and I can show you exactly how is it how it is I trade and you know help you from inconsistent profitability Now you have to remember I've been trading this market for eight years. So I've seen it all Okay, so you have nothing to be ashamed about if you feeling ashamed then use a different email Send me an email. I want to help you out. I want to help Alright guys. Yeah, so I just wanted to quickly reintroduce myself. Okay, my name is dapplewillisatgmail.com I'm an FX trader. I'm a public speaker and I'm also the CEO of Western Sahara Group We've got Western Sahara FX and Willis Media, which is a digital marketing agency Now the point I wanted to make here is I wanted to quickly stress on the power of FX Now Forex has literally taken me from being an average kid into you know Speaking to people across the world meeting up with you know, very very wealthy people Influential people just because of my ability to be able to predict the market now ladies and gentlemen This is me standing with the richest black man in the world as you can see both of us here We're really friends now before I always read about this guy in the newspaper. I used to watch him on TV I was literally always glued to Bloomberg, but now just because I'm able to trade I mean he flew to he flew to London and I met up with him's You know somewhere he was he was chilling with his friends and all that and I because I knew who he was and I just literally walked up to him You know, and I just said to him excuse me, sir This is who I am my trade market in Northern and that's how we got talking and on the long run I was able to make him some money by giving him the best trade calls He made a lot of money from it literally millions of USD and as you can see us were smiling together We're literally best of friends now, you know, so that's the power of FX FX will take you places that you can't believe is Even possible. So that's why I want to encourage you guys if you know, you're struggling with the market send me an email Let's talk Let's talk because you don't want to allow pride getting the wave of your destiny. You don't want a lot But you know pride affects your prosperity in life. Okay, and this is me once again given a speech. I'm always talking This is a group of my students. I'm asking one of my students and basically talk about what he learned here This is me given a speech. It's me given another speech This is me given another speech. This is me given an even bigger talk at Coverage University. This is obviously me Obviously I'm not in this picture But this is an event that was hosted in honor of myself and this is me giving another talk So basically ladies and gentlemen, you can see how you know FX has really changed my life I mean, I'm not trying to show for anything But you know, I've really enjoyed the journey and it's been absolutely fantastic So if you've enjoyed my training strategy, this is exactly what my training strategy has done for me I might not be the richest guy. I'm not trying to portray a certain lifestyle It just gives you a certain purpose in life in the community in society You can add value to people's lives and also to your bank account as well So I encourage you to follow me on Instagram. My name is at I am on school dapple Subscribes this channel because I'm gonna be giving away free content in terms of trading setups and Basically in terms of the way I perceive the market So alright ladies and gentlemen, thanks for tuning in things for watching this video If you like this video give it a thumbs up and don't forget to subscribe to my channel Alright all the best and peace cheers. Bye


Hello and welcome to the ST Stand at Embedded World 2016, where I have been joined by Federico Rivelli, technical marketer for 32-bit automotive microcontrollers. Let's talk a little bit about ISOCAN FD and what it's doing to help improve car network bandwidth. Well, ISOCAN FD is more or less an evolution of a pre-existing, well-known automotive standard network, the CAN itself. FD stands for flexible data rate, where the flexibility comes from a different data rate during the arbitration phase versus the data phase, and this is what is the particular point of the CAN FD. Recently, so in December last year, it became an international standard, so that we call it now ISOCAN FD. ISOCAN FD features up to 5 megabits per second during the data phase, and it offers a larger payload, so up to 64 bytes with respect to the formal standard CAN. In this sense, the ISOCAN FD pushes the standard CAN in the direction of flex ray, filling a hole between the standard CAN itself and the flex ray in terms of bandwidth, bringing the benefits of cost-effectiveness typical of the standard CAN, as well as the white knowledge which is spread around the technical community. Okay, Federico, prove it. Let's see if one of your microcontrollers is in action demonstrating performance increase. In front of us we have a CAN FD demonstration based on two microcontrollers, which we brought recently on the market. They are represented here, so they belong to the SPC57 family, and the data transfer is represented here by a simple image which is sent from source to destination via CAN FD protocol. For instance, we start first from the standard configuration to see which the speed of the transferred image is, and then here you see all the benefits which is really brought in pictures. In this case we have seen which speed was, now we go in configuration or CAN FD mode with up to four megabits per second, and we can appreciate which the speed is. It's incredibly faster, so we can say that it is roughly, so from 6 to 10 times, we could say, faster than the old standard, sure, depending on the conditions. In this specific case, we were going up to four megabits per second, so not even going to the maximum extent, because the ISO CAN FD itself offers up to five megabits per second. Here we were limiting ourselves simply up to four. As impressive as that is, what's next in the pipeline? We are doing a lot of investment in terms of CAN ISO CAN FD, so all our microcontrollers will be featuring the ISO CAN FD standard. We are supporting them with AutoSAR MCAL drivers. We are doing alliances and strategic partnership with the major software houses. This is all we are doing right now in the CAN FD perimeter, but this is not a unique perimeter where a C is putting a lot of efforts in terms of automotive networks. We are already working at other automotive standards. Let's see, it might be a topic for next year. I will catch up with you next year. Enjoy this year's embedded weather. Thanks for your time, Federico. Thank you too.


Chad, what does it mean to have fans in attendance tomorrow, even a limited number? What does it mean to you as a ball player? Yeah, I mean, it's exciting. Just especially after experiencing empty stadiums, I just think we're all excited to have that, just whether it's 10,000 people or 5,000 people. I mean, just have somebody there to get the adrenaline going. I think it's going to be fun. It's going to be fun for everybody. I think we're all looking forward to it. Hey, Chad, how would you feel about potentially coming in in a closer situation tomorrow with Chapman that we suspended and the way the bullpen's set up right now?   But I mean, I think I'll be ready for any situation. And yeah, I think our eight guys in the bullpen, I think we'll be ready to go in any given role. So regardless of if we name a closure or whatever, I think it's just, I think guys are going to be ready to go. So I don't think it, we've had some guys who've pitched in high leverage situations before. So it's not going to be anything new. So it's just going to be guys stepping up and for a couple of games until we get Chappy back. Chad, you start the season with 15 games against the Vizional opponents. Does that make it extra important to get off to a good start? Yeah, I mean, I think you always want to get off to a good start. I mean, I don't think anybody starts a season and looks to say like, hey, it's OK if we get off to a slow start. I mean, I think anybody playing baseball wants to get off to a good start. So yeah, and especially being in division, just makes it more important. So yeah, I mean, we treat every game like it's a must win game. So and that's what we'll do tomorrow.


Blink a blink. Cool. Okay. So first up People are gonna ask this at the end of the chat. So you may as well Yeah, you may as well. So we all heard about this. There's gonna be Bluetooth support in the Raspberry Pi Pico Likely in January. What does that mean? Okay? Let me tell you what that means and what that doesn't mean What does what doesn't it mean? So that silver square over there You know, whatever is Contains the Cypress like forty three forty three nine chip or whatever the part number is and that chip has the ability to do Wi-Fi 2.4 gigahertz and it can do Bluetooth classic and it can do Bluetooth though energy I believe it's either the same or very similar chip to the a wireless chip that's used on the Raspberry Pi boards and the you know pi W's So when they launched the Pico W, you know, they launched with Wi-Fi support We recently added into circuit Python as well. And so you can now use Arduino micro Python circuit Python with Wi-Fi now The issue is is that you know, there's this other mode with Bluetooth and you have to upload firmware and like you have to You have the commands and like I don't know how to do the commands The support is initially coming out For Pico SDK. That's the only thing that we've heard and we assume it'll also come out for micro Python The circuit Python team and myself and Phil had no other information about this chip or whether it'll be easy to implement or hard or what stack They're using. Yeah, we got some requests right away. Yeah, and it's done yet. Yeah You know the Pico W Wi-Fi is added I don't know how long it's gonna take to add Bluetooth or how easy it's gonna be or whether it's gonna be Bluetooth So I don't see your Bluetooth classic. We have to basically wait until the SDK code comes out and take a look at it But you know, if it's something that we can do we would love to add Bluetooth support All right other stuff but no ETA no information. No idea. Yeah, we'll talk about some of the pie cameras Because we have them. We'll talk about that later on in the show We're still doing our circuit Python 2023 posts and call for Your input. So let us know what you want to see in circuit Python in 2023 There's a lot of ways to let us know you can also look at 2019 to the 22 21 22 and see what you asked for and what you got you could do via video You can put in the circuit Python form. You can do a blog post on our site You can post a mastodon or Twitter or a gist on get up You can email us. So you have a million different ways. So please please please send us some stuff right away And then I wanted to ask you about the expressive chips because people are gonna ask about that as well Have you seen expressive? What do you think? Okay, so there's two New chips there's the c6 and the c6 actually there were getting dev boards I don't know when exactly they're coming but we do have some dev boards on order that will be able to stock in the shop for people it's a Bloop, you know, you can see here. It's 2.4 gigahertz Wi-Fi and Bluetooth low-energy not Bluetooth classic Running on the risk 5 so I think you know, it's basically I think like the C3 which we already have in store. I think JP even did that did that for the part of the week The C3 which doesn't have a lot of pins and doesn't have, you know, a ton of flash and memory But we do have circuit Python support for it. It does have also this kind of interesting not native USB But like built into a USB so the c6 I think is just kind of like an upgrade of that still a risk 5 core Bluetooth and Wi-Fi just has a little bit more memory probably more capabilities Maybe, you know more USB not not trouble get the dev board soon. Then there's the p4 now the p4 is yes The p4 the p4 is like it and that it doesn't exist yet. Like I can't get a chip There's probably engineering samples. There's no dev board the p4 is kind of The closest thing to like an IMX chipset. It's a very very fast big Processor that has a lot of user interface stuff for it. For example, it has Mipi DSi CSI which I find very interesting because a lot of displays these days And cameras come with CSI DSI interfaces They don't come with parallel and they use a lot fewer pins Which is like great because parallel displays use like, you know, 70 pins or something So this is a large physically large chip, you know with lots of flash lots of RAM Sorry, the flash is probably external, but it has lots of on-chip SRAM. It runs very fast. It's got a ton of peripherals Displays interface and stuff, but I'll tell you one thing it doesn't have It does not have Wi-Fi or Bluetooth built-in as far as I can tell I see I see no Reference to that anywhere and so you would use this maybe with a co-processor or maybe you would want a very light weight version of Linux on this Get 400 megahertz risk 5 maybe you could run like a little you know major Linux distrail and That you then maybe you would use USB. I think it has high-speed USB. You would use that to Get interactivity, but it's not it's not a Wi-Fi chipset like every other ESP Board, which I think is a little Confusing but as far as I can tell does not have internet connectivity. So Again, it's very very new and we'll get more information about it But I was like a not chip week chip announcement week. So Apple announced that they're doing or like the rumors Are they're gonna do a Bluetooth Wi-Fi cellular on a chip. They're gonna make it themselves Yeah, don't scroll down because there's the peripherals Yeah, so sorry go up. So it's got I as you know, it's got SPI 50 GPIO SPI I squared C I to C PWM RMT, you know, they're automatic, you know, think for IR ADC's DAX you arts and 20 to wire And high-speed on the go USB which is very interesting Ethernet SD IO So that and again all this display stuff. So that's what it's good for It's good if you're like making it an all-in-one interactive device. Okay And that is our Python on where news this week Don't forget you get this delivered to your inbox every single week.  We don't do anything with this We have a completely separate site because we didn't want to have anything connected to your store account for your purchases So go data for daily. We also have some other newsletters over there