Let's do this thing. So welcome to four programming paradigms in 45 minutes. When I proposed this talk, I did not think they would accept it. When I got the acceptance, I'm like, what the heck am I going to do? There are 190 slides in this talk. It's going to be fast. Get ready to hang on. I'm Ajah Hammerly. I'm on GitHub as Thagamizer, the code from this talk that we posted later today. I need to do some licensing stuff before I can get it out. I tweet as the underscore Thagamizer, assuming that the internet and automation work properly. I have tweeted the slides. And that is going to give you a link to www.thagamizer.com, which is my website, where I blog. And I also have the slides from most of the talks I've given. And I like dinosaurs. I work on Google Cloud Platform as a developer advocate. If you have any questions about Google Cloud, Kubernetes, App Engine, BigQuery, all that stuff, you can come ask me. There's also three of my colleagues are here. Two of them are up here right now and one, I told to go see a different talk so that he could learn from different people. We're also probably going to do a Birds of a Feather or a Lunchtime thing, so watch my Twitter. We'll announce when we figure out when we're going to do that. And since I work for a very large company, LawyerCat says any code in this talk is copyright Google and licensed to PatchEV2. So formality's over, onward. So this talk is based on a class I took my freshman year of college. We called it CS60, although the actual title was the Introduction to Principles of Computer Science. And unlike a lot of CS majors, this course was very early in the major and it was a survey of all of computing. We did finite state automata. We did grammars. We did provability and complexity theory. We did formal logic. But about 10-ish, 12-ish weeks of the course was dedicated to learning four different programming languages, each of which represented a different paradigm and solving the same problem in all of them and solving some problems that were designed for that language. And I learned a lot of stuff from this course. More than any other class I took in my major, this one made me the computer scientist that I am. And the biggest thing I took from this class was abstraction. When I started this class, I knew Java. I knew some Visual Basic and some Basic. But my concepts of things like arrays and conditionals was attached to the syntax for those things. I thought about them in terms of their syntax. And by forcing four completely new languages, three completely new languages, four languages, all in a very short period of time, I was able to move those concepts from being attached to the syntax to actual abstractions in my mind. If you're a philosophy person and you know Plato's allegory of the cave, you kind of have an idea of what I'm trying to get at here. The other thing I took was that I too could be a polyglot. I was always impressed with people who knew a lot of computer languages. But when you learn three new languages in nine weeks and you're able to be productive with them, you realize that once you have the concepts and the abstractions down, the syntax isn't really that hard. And when you're a polyglot, you can point out the similarities between languages. Concepts like conditions and collections and arithmetic and loading and storing things from memory. They show up over and over again in different languages in different ways. And so understanding those at a conceptual level as opposed to I use this syntax for a raise is really helpful. And the other thing it taught me was there are big differences between programming languages. And different languages are good for different things. And I'm hoping that you guys will take some of that out of this 45 minute crash course where I try to cover what I learned in 18 weeks in 45 minutes, I hope. But don't worry if you can't keep up. This is supposed to talk about ideas even though there's a lot of code. So when I took the class, our primary example was solving the puzzle towers of Hanoi with the little rings and the pegs. You have to move the tower from one peg to the other. Explaining the algorithm to do that and then explaining that in four different languages is going to take more time than I have. So we're gonna use something much simpler. I'm gonna talk about change. And by change, I mean this kind of change. In each language, I'm going to show you how you would calculate the amount of change you would give if you were a cashier working a cash register. So everyone following? Let's dive straight in. We're gonna start with OO. We're at RubyConf, so we're gonna use Ruby. I color coded my slides. Ruby is, of course, red. And we're gonna start with something easy. The code gets harder as we go along. It's just how it is today. So let's talk a little bit about OO. Everything in Ruby is an object, everything. False is an object. False is a singleton, an instance of an object. No is an object. Your classes themselves are instances of the object class. Not all OO languages are this pure, but the general idea in OO is that most things, I would prefer all things, are objects. Well, what's an object? An object is a way of encapsulating state and behavior. State is things like fields, attributes, instance variables, what you call them varies a little depending on the language and your particular background. And behavior is what you do with that state, things like methods. Most OO languages, the object is responsible for modifying its own internal state. In Ruby, we call this self. So if I was an object, I could say self.pets equals the array, Emma, Nick, and Shy, because those are the names of my cats. Objects have to interact with each other, because an object just sitting there by itself is rather boring, and the way they do that in Ruby is through message passing. If I wanna find out the length of an array, I send the message length to an instance of an array object that object calculates the length of its internal state and then returns that length to me. So when I'm teaching stuff, I normally try to use my own examples, but since we're going super fast today, I'm going to try to use examples that are canonical or commonplace in the literature, so that hopefully you can kind of attach this to something you may have seen before, hopefully. And one of the most common examples for OO is the idea of a bank account. So I'm gonna build up a bank account object. Well, objects are instances of classes, so class bank account. Bank accounts need to have a balance of some sort, and for a lot of reasons, it's a bad idea to allow folks to monkey with my balance, which is my internal state, so I'm gonna store balance as an instance variable, and I'm gonna set it to zero when I initialize the class, or initialize the object. No, I'm going to talk about money a lot today, and I'm always going to represent money as an integer number of cents. If you are representing money as float in any of your code, come talk to me later and I will teach you about why that is a horrible idea. So, I'm gonna take a break for IRB. I can go bankaccount.new and get an account object back. Now, I know since I wrote the code that my balance is zero, but I can't actually see it, so let's write an accessor. So, I'm gonna have an adder reader, because I don't want anyone outside to be able to set the balance, and that's gonna return balance. Back to IRB, now I can see my balance. It's zero. So, a bank account with a balance of zero is pretty much useless, so I'm gonna add ways to withdraw and deposit money. So, deposit's going to increase the balance. Deposit is a message, it takes an amount, and it adds that to the balance. Withdraw is the opposite, it takes an amount and subtracts that from the balance. And you can see from my IRB break here that it works. So, I talked about an object having both data and methods before. In this case, the data is the balance, and the methods or the behavior are deposit, withdraw, and initialize. And all of these methods modify the internal state of the object, and my IRB process is communicating with them by passing a message like deposit with an amount, and trusting that the object will do the right thing with that data, in that message. So, some of the strengths of OO. It's really good at modeling what we do in real life. So, I have a chair here, I could have a chair object, it could have an attribute color, it could have behavior, hold me up, those kinds of things. We think about the world through concepts and ideas that very closely align with objects. We don't think about the world as the chair's color is fundamentally separate from what it does. Objects are also reusable, a good way to see this is think about the standard library. Arrays are objects, hashes are objects, strings are objects, and we all reuse them in all different ways, because the same types of concepts and objects show up again and again and again in the problems we're trying to solve. And this means I don't have to implement array.length over and over and over. I think objects are easier to test. I can test an object in isolation and test that it modifies its own behavior correctly, and then I can test the seams between the objects when I'm testing my system as a whole. So, on to the motivating example. So I'm gonna do the making change algorithm, OO style. Here's the code. So this is like 28 point font, and I don't expect you to be able to read it. So we're gonna build this up piece by piece. So I have a class, I'm gonna make a class called cash register, because that's what I use to make change. My cash register has a cash drawer, that's the thing that slides out that contains the money. The drawer contains a bunch of different denominations of bills and coins. I have 20s, 10s, 5s, and 1s, and then I have quarters, dimes, nickels, and pennies. If I was doing a more thorough implementation, I could have the amounts of each that I have in addition to the denomination. Here is the method that makes the change, and it's still kind of small, so let's build that up piece by piece too. Here's the method signature. Make change takes an amount owed, this is the amount that the customer owes at the store, and it takes the amount the customer gave the cashier, which you'll see frequently referred to as tendered. Not tender love, Erin. So the first thing I need to do is I need to figure out how much change I have to give the customer, and this is gonna be the difference, and to do that I subtract the owed from the amount tendered, and then I'm gonna represent the bills and coins I need to give the customer in the change array. This is gonna be the thing that tells the cashier, five fives, three ones, blah, blah, blah. The next thing is I need to figure out which part of the drawer I'm working in. When I've seen people make change, a fair number of people start at one end, either the smallest or the largest, and move down the drawer, and grab the corporate amount and then move to the next slot and the next slot and the next slot. So I'm gonna do that exact process with my array that is my drawer, and I'm gonna use I to index where I am in that process. And it's a loop. While I still have change to give the customer, while difference is greater than zero, I'm gonna loop through this thing. So, expanding on the loop a little bit, here's the first part. If the difference, the amount I still need to give the customer is less than the current denomination I'm looking at, the current slot in the drawer I'm looking at. So that would be the case where I have to give the customer $4.50 in change and I'm currently looking at the 20s. I can't give them a 20. So I need to increase my index and set my denomination to the next smallest thing. Now I'm making an assumption throughout the entire talk today that my change drawer is always sorted largest to smallest. If it isn't, none of these algorithms work. And once I've done that I can go back to the start of the loop and try again. So the next part is, now this is the case where I'm giving $4.50 in change with the current thing I'm looking at as a dollar. I'm going to say, well, that's not bigger so I can use that one. So I'm gonna add it to the list of change I'm giving and then I'm gonna subtract that amount from the amount still owed to the client, or the customer. And then I go back to the top of the loop and I keep going through this and eventually I'm going to have the change I need. And this ends up with this method. So those of you who really like your OO are like, this is not OO and you are totally right. This is a really, really bad problem for demonstrating OO. And that brings up the point that different programming languages are good for different things but this is a fine problem for demonstrating the other three paradigms I'm gonna talk about today so that's why I used it. This actually looks much better as a functional program. Onto our second paradigm. I'm gonna use Racket, which is a general purpose programming language in the Lisp family. Lisp in turn, if you have never heard of it, is the second oldest multipurpose high level programming language. Lisp stands for Lisp processor. The only language that is older than Lisp is Fortran. And Racket and Lisp are well suited to demonstrate functional languages although both of them are not limited to that paradigm. You can also use Ruby for functional languages but four languages, 45 minutes. That was the promise of the talk. So, an overview. Functional languages are built of functions. Who would have thought? Functions taken data and output data. I'm gonna focus today entirely on pure functional programming which means that my functions don't ever store state and they don't ever mutate the incoming data. So, if you give me an array, I will give you back a new array and will not modify the one you gave me.  A nice thing about pure functional style is the input only depends, the output only depends on the input. It doesn't depend on what came before. So I can do a bunch of stuff and then give the same input and it will always be the same thing. History doesn't matter at all. And the really fundamental thing of functional languages is that data and procedures, state and behavior are separate unlike OO where they're encapsulated together. I'm hand waving a bit here. It's not actually entirely true but for the purposes of this talk it is true. So for all the languages that aren't Ruby I get to teach you syntax. The biggest thing you need to know about Lisp family languages in Racket in particular is that we're used to things like in Ruby that use infix notation but Lisp languages in Racket use prefix notation. So to add three and five I use plus three five and you're like, well that's weird but it's actually super useful because I can do one times two times three using only one time symbol which I couldn't do in Ruby. Times one, two, three. That multiplies all those together. I'm not limited to just two arguments which you are with infix notation. And you're like, well that's completely impractical. How can you do multiple levels of it? Well the answer is on the last line there. I'm multiplying three and five and subtracting six from 10 and then I'm adding the two results together. And you just use multiple levels of parentheses and I really like this because the order of operations is very, very explicit. So math is not particularly interesting on its own. I need to be able to write my own functions. You declare a function by putting the word define and then in parentheses the name of the function ends argument list. The square function takes one argument and I'm calling it n. And then after that I have the body of the function. In this case I'm multiplying n times itself. To call that function I go parentheses function name argument square of five is 25. I of course need some way of doing conditionals and I'm gonna use the conditional from a bracket called conned which is short for conditional and it acts like Ruby's case statement. So I have a conned and then the first thing is on the first line is I have a test and then there's some stuff to do if that test is true and then I have a different test and there's different stuff and then there's an else and there's more stuff. Very similar to the case statement. And here's a concrete example. This is calculating absolute value of x. If x is greater than zero well the absolute value of that is gonna be itself so I return itself. If x is equal to zero well the absolute value of zero is zero so I return zero. In all other cases I now know that x is a negative number so I'm going to return the negation of x to give me the positive x. Okay. The only other thing you need to know is lists. As I said lisp, list, processor, lists. This is a list. I represent it as a set of items separated by spaces inside parentheses with a little tick in front. The tick is there because otherwise I wouldn't know if this is applying the function one to two or three or if this is a list one, two, three. Because remember, prefix notation. This is not a function call. When you have lists I can access the first thing in the list by calling the car. These names will come back later I promise. That gives me the first thing in the list or I can get cdr which gives me the rest of the list. You might also hear me to say today head and tail I mean first and rest in those cases or car and cdr. And I can make lists by using cons. In this case I am consing the item one onto the list two, three which gives me the list one, two, three. Some examples. Here's factorial. We use recursion a lot in functional languages. So I have a con if the item I'm trying to get the factorial of is one or less. I return one because the factorial of one and the factorial of zero are both one. Otherwise I multiply n by the factorial of n minus one which recursively will give me the factorial. Fibonacci. This will give me the nth Fibonacci number. So if n is less than or equal to zero I return zero. If n is equal to one I return one. Otherwise I sum the nth minus one Fibonacci number and the nth minus tooth Fibonacci number. That's the definition of Fibonacci. So some of the strengths of functional programming. If I'm doing pure functional programming and I'm not modifying state at all I don't have to worry about all of the stuff you have to worry about with concurrency and threading. Because we're not sharing memory. We're not having to lock tables. None of that stuff is even important because nobody's modifying state. Everything is just a read operation. That's really handy a lot of the time. I think that functional programs are easier to test than some of the other ones because state doesn't matter. Data in, data out, especially pure functional programs which means that the setup for automated tests is just this is the data I'm going to run it on. I don't have to set the state of an underlying object first. And because there's no state you can also reuse this. I can take code that works in one program and throw it in another program and I don't have to worry about there being context around it that's required. And I really like that they're short. Functional programs tend to be really short especially in LISPs. A lot of people hate this but it makes me happy. So, on to our motivating example. Here's the choned code that makes change in Racket and I'm gonna actually slow down a little bit here because I wanna make sure that you sort of understand this. So here's the function signature. It is a function of two arguments. X is the amount of money I need to make change for and denominations is the denominations of bills and coins that are available in my cash drawer. So now I have a conditional. The first case I wanna check is if the amount I'm trying to make is zero I don't owe any change. So I can return a list that is empty because the list I'm returning is what bills I need to pull out of the cash drawer and what coins. So, how do you make change for zero? You give someone nothing, empty list. The next thing I'm gonna check is do I have any money in my cash drawer? If there are no denominations, there's no bills or coins in my cash drawer, I can't make change. So I'm gonna return false. So these last two cases are the tricky ones. So this is the case where the amount I'm trying to make is less than that first domination. So this is car denom's is getting the first element of the denom's list which is the highest bill in the cash drawer that I'm currently looking at right now. If that amount is less, sorry, is greater than the amount of money I'm trying to make, I need to use the rest of my cash drawer. So if I'm trying to make change for 450 with a $5 bill, I can't do that. I need to use the rest of my denominations to make change for acts. So I do a recursive call. Finally, and this is the case where I actually use that first bill. So remember, I'm trying to return a list and I make lists with cons. So I'm conzing the first element of my denominations thing which might be my $5 bill onto the recursive call to make change for the rest of the amount. And I calculate the rest of the amount with that subtraction there. That's like that difference equals line in the Ruby. And then the same set of denominations I'm working with because I might need two or three pennies. I might need to use the same denomination more than once. So this is the case where I don't use the current thing I'm looking at. This is the case where I do. There's really only two cases beyond the base. So I really, really like this. It's much shorter than the Ruby. I think it's very, very logical. And if you've got some background in number theory or mathematical theory and you're used to proofs by induction, I think the recursion looks very familiar and very comforting. But this is not actually the shortest solution to this problem that we will see today. That is given to my friend Prolog. We're gonna do logic and constraint programming. And this is going to most likely be by far the most brain-breaking part of the talk. So I will try to take it slow and you can come up and talk to me about Prolog later. I'm happy to demonstrate all this code. So I'm gonna give an overview of Prolog. Prolog is based on formal logic. Things like Socrates is a man. All men are mortal. Therefore Socrates is mortal. So ands, ors, implications, knots, that kind of stuff. Very, very basic formal logic that's used in philosophy and mathematics and also is the basis of a lot of computer science. Prolog programs aren't made up of instructions. They're made up of facts and clauses. Yes, that's weird. And the weirdest thing about Prolog is that instead of describing the how, we're used to in programming telling the computer how to solve the problem, Prolog works different. You describe the what of the situation. One of the common examples is a logic program. So I would say, okay, the logic program says that the guy in the yellow house does not own the fish. And I would encode that, or I would say that the guy who really likes to drink rum lives next to the man who owns the cat. And I can encode all of those facts in the system and then what Prolog does is it uses everything that it knows and it tries to come up with a world where all of those are true. And it fills in any blanks that are remaining once it comes up with the world where all of those facts and clauses are true. So a syntax to do this is a little weird. The biggest thing is that we have variables and constants. Variables start with a capital letter. Constants don't. This is our lowercase letter. And then we have facts and facts end with a period. So I can say that Washington is a state or that Washington borders Oregon and Washington borders Idaho and Oregon borders California. And using this I can define a rule and rule specify relationships between facts. So here I'm defining the rule adjacent and that colon minus sign is actually a logical implication. If you know what that means that might help you understand this. But all this is saying is that x and y, now those are variables because capital letters are adjacent if there is a fact where border x and y is true. And what Prologue's gonna do with those variables is it's gonna try to pattern match. It's gonna go through all of the facts it has and figure out if there's some constant it can put in for x and another constant it can put in for y or the same constant where there's a rule that matches or fact that matches. And this is called pattern matching and pattern matching languages are awesome. And so here's my adjacent rule again. Now here are the facts I have, some of them. And here's the adjacent rule and I can go into an interactive Prologue terminal and say, hey Prologue, is Washington adjacent to Oregon? And it will say yes. And then I can go, hey Prologue, is Oregon adjacent to Washington? And Prologue's gonna say no because Prologue is incredibly literal. And since I only have a fact that says that Washington and Oregon share a border, not that Oregon and Washington share a border, Prologue doesn't know that the reflexive case is true for this particular rule. So I have to teach Prologue that by saying that adjacent x y implies that there is a border between x y, but adjacent x y can also imply that there is a border between y and x. I got a tricky there. And then if I go in and say, hey Prologue, is Oregon adjacent to Washington? Prologue will correctly say yes. And I have a couple minutes so I'm gonna go over my favorite Prologue joke. How many Prologue programmers does it take to change a light bulb? Anyone know? No, the answer to that is no. So I'm gonna do some basic examples and the canonical example in Prologue is ancestors, building a family tree. So I'm using the Simpsons and one of my first rules is that first facts is that father, homer, Bart. So that's saying that homer is Bart's father. You have to change the word order around a little bit to make it work in English. Not true in other languages that have different word order than English. I can also say that homer is Lisa's father. I can say that Marge is Bart's mother and Marge is Lisa's mother. So then I can go into my interactive Prologue terminal and I can start asking questions. I can say, hey Prologue, who is Bart's mother? And that's that first line there and what I'm actually saying is, hey Prologue, what do I need to shove in for X? What value of X makes this statement true? And Prologue's like Marge is Bart's mother, which is correct. And then I can say the opposite. Hey Prologue, who is Marge the mother of? By putting the variable in a different location. And Prologue says Bart and then I can use the semicolon to say, you got anything else? And Prologue will say Lisa. And this is the real strength of Prologue is that I can run programs backwards and forwards and I can put variables wherever I want. And it is crazy the first time you do this. But it's also super duper powerful. And I've showed you simple examples thus far, but you can build rules that are much more complicated. So let's build the rule sibling.  But there's another way that you can be siblings. X and Y are siblings if there is some Z such that Z is the father of X, Z is the father of Y and again X and Y are not the same person. And Prologue's gonna try to figure out whatever values it has to put into each of those capital letter variables to make this true. So I can go into the interactive Prologue terminal and say, hey Prologue, who are siblings? And it says, oh, Bart and Lisa are siblings. Awesome. So I'm gonna go into the last bit and this is one of the most complicated bits of Prologue that we're gonna talk about today. Prologue has lists like Rackett, like Ruby. I have an empty list, I have the list one, two, three. I have a list apples and bananas. So I can have lists that are heterogeneous. I can have lists that have numbers or constants in them. And I can also have nested lists which is what I'm showing on that last line. But in order to pattern match on lists, I have to have crazy, some crazy notation. This is called bar notation. I'm gonna say this aloud as F bar R. You can think of the F as first and the R as rest. And this is just like the car in the cutter we saw in Rackett. F is the car, it is the first element of the list. The bar separates the first element from the rest of the list, which is the cutter. And if that didn't make any sense, if I have the list one, two, three and I pattern match that against F bar R, F is going to match the one and R is going to match the list two, three. So car and cutter, same thing, crazy notation. The last little bit is this is an underscore. So I might break some of your brains, I hope not, but did you all know that you can use the underscore to say I don't care about this variable, it's unused in Ruby? And good, people are nodding, this is fantastic. I've broken people's brain with that one before. Rackett has the same thing and underscore in Rackett is called meh, I like that. Learn that from Ryan Davis last night. And then in Prologue texts, we refer to this underscore as don't care, which is this variable isn't actually used for any of the logic, so put whatever you want there, I don't care. So we're gonna do a quick list function, list rule, not a function, not in a functional language. So this is member, it's like include question mark in Ruby. So x is a member of the list. First argument is the thing I'm looking for, the second argument is the list, x is a member of this list, if x is the first thing in that list, makes sense, right? That's one case, oh, forgot to change the bold. Second line, x is a member of this list, if, I don't care about the first thing, doesn't match, but x is a member of the rest of the list. So x is a member of this list implies that x must be a member of the rest of the list. So recursion, it's handy that way. So strengths, one of the awesome pro things about Prologue is that thing I mentioned about running programs backwards and forwards, this is true of logic programming in general. There's a great talk about Minikanron where they actually run their logic system backwards to generate the code for factorial. Because why not, you can run it backwards and forwards as long as you set up the constraints correctly. One of the early use cases of Prologue that I've read about was actually scheduling time to use limited resources in a research lab. I believe the research resource was a dolphin and they needed to figure out how do you work everyone's schedules around, like this experiment's gonna take 45 minutes and we need to repeat it every three days for a month and I have class at this time and all that. They used Prologue to put all those constraints in and solve the problem so that they had a reasonable shift schedule. So, time to make some change. So, we're in Prologue. The weirdest thing and the thing that always gets me when I have to contact switch into this language is I don't have a return. There is no concept of a return. Everything is encoded in the method signature and you have to have that so you can run it backwards. So, we're gonna have a change rule. It has three arguments, the first is the amount, the second is a list of coins or bills we have, and the third is how you make change for that amount using that list of coins. First one is an integer, the second two are lists. So, this is going to be true only if change, that last argument, is how you make change for the first amount using the coins in the middle. I think it might have just snapped for a couple of people. This is weird. So, here's the code for the change function. It's actually shorter than the racket. We'll go through it, I promise, I promise. So, first case, the easy case. How do I make change for the amount zero? Well, change for the amount zero is the empty list and I don't care what's in my cash drawer, which is why I'm using the underscore, because I don't need to know, I don't need to use anything from the cash drawer if I'm making change for zero. That's the easy one. Here's the second one. Focus just on the first line right now. This is where we use pattern matching. So, I've got an amount a and this is saying that I make change for the amount a by using the first thing from my cash drawer and that is the first thing in the way I make change. So, this is the case where I use that first bill or coin in the cash drawer. And I can only do that if the amount is greater than the denomination of that first thing. And if those two things are true, I need to calculate b such that that is the difference between the amount, that is what's left over after I use that bill. And the other thing that has to be true in that case is that I can make change for b using the same stuff in my cash drawer and the way I do that is x, which matches that x on the very top there. So, a is greater than f. I can use this because the bill is smaller than the amount I'm making. b is equal to that difference, the remaining amount of change, and the way I make change for b is x, which matches on that top part. Remember, Peralg is gonna make all of the instances of each variable the same thing. So, that's the second clause. Third clause, this is the case where we don't use the first coin or bill. So, I used a don't care again. I only wanna apply this one if I'm actually making more than zero in change because if I'm making just zero, I can use the first one above, the very first one. And in this case, I'm gonna say, hey, the way you make change for a is you use the rest of the stuff in your cash drawer and the way you do that is x. So, this is the other recursive case. And I promise it works. And you're probably going, ow, my brain right now. This, I love Peralg, and this was the hardest of the examples for this talk to write. I actually had to break into the debugger to do it. And I didn't have to do that for even what's coming next, which is a procedure role. And we're gonna do that with assembly. So, the fact that I was able to write the assembly without the debugger and I needed the debugger for the prologue, the prologue is hard. So, assembly is old school programming. We have a limited vocabulary, a limited standard library, a limited number of functions we can call. And by limited, I mean very limited. For the assembly I'm using, I think there are less than 30, I think there's like 22. And there are tons of assemblies that exist. I am using the assembly from a book called, well, it's commonly referred to as NAND to Tetris. I have a bibliography entry for it in NAND so you can grab it and look, check it out yourself. The reason I'm using this is that it is less ugly than most assemblies, it looks more like the programming you're used to. And it's very, very simple. So, here's the syntax. So, the big thing about the assembly is that I have two registers, A and D. And those are the only two things that I can do operations on. D is D because it is the data register. A is A because it could be a data register or it can be the address register. And when it's the address register, I use whatever value is in A and I go pull that cell out of memory. So, in the cases where I'm using A to access memory, I'm gonna actually just call it M. So, I'm gonna use A, D and M, but I only have two. It's just when I'm using M, I'm using what A is pointing to and when I'm using A, I'm using the actual value of A. And circling back to Racket, we had car and cutter. Car stands for the contents of the A register. Cutter stands for the contents of the D register. That's where the names came from. So, we got some computations. I can do A plus D. I can do D minus A. I can do A minus D. I can do A plus one or D plus one. I can do A minus one or D minus one. I have a bitwise not, a bitwise and and a bitwise or. And I can negate A or D. And any place I use A, I can also use M. So like M plus one or D plus M. And that's it. That is the contents of the list of things I can do. And important to note, I don't have multiplication. Don't have division. Don't have anything that even remotely looks like a list. Very, very limited. But I can actually assign the things I calculate to values. So I can assign to any of the registers or to memory. So I can say D equals M plus one or D equals D minus one. And I can also do multiple assignments. So I can say M and D both get the value of A plus one. Which is crazy, because then I'm incrementing the memory register, yeah, that's a bad idea. I need to be able to get constants into my program. And the way I do that with this at syntax, and constants only can go into the A register. That's why it's at. So if I wanna load 100, I do at 100. If I wanna have a kind of label, and I use this label somewhere in the program to access the line of my program that this label is on. And again, since this goes into the A register. And I use this for jumps. Jumps are this format. There's a value, a semicolon, and then the type of jump. And so I'm like, the value in this example is D. J, G, T is jump greater than. And I will jump to whatever line of the program is in the A register if D is greater than zero. I don't get to have any other greater thans. It's always been referenced to zero. So I have J, E, Q, jump if equal. And so this will always jump, because I'm jumping if zero is equal to zero. Jump greater than, jump less than, jump greater than or equal to, jump less than or equal to. I also have a non-conditional jump, which is J, M, P. So those are the jumps I have. Those are the only form of branching logic I have in this entire language. So here's how we add. This loads at two into the A register. I then move the contents of the A register to the D register. This loads at three into the A register. And I add what's in my D register to my A register and assign it to myself. And then I take whatever is there and I assign it to the contents of memory cell zero. And it's memory cell zero because I put a zero into the A register. And then I'm using an M, which means it refers to memory, not to the value in A. See, it's easy. Here's how I sum the digits from one to five. I'm actually doing it backwards. So the first thing I do is I'm gonna store them, I'm gonna store my result in memory cell zero. So I wanna zero out memory cell zero. And then I'm gonna store five in memory cell one. So I load it into A, assign it to D, and then load address one into A, and then assign whatever is in D, which is five, two, memory cell, that's referenced by the address in A, which is one, so putting in memory cell one. Here's my loop. The parentheses notation is a label. First thing I do is I pull whatever is in memory cell one, which is five in this case. And I put that in D. And then I'm going to take whatever I have in D and add it to the contents of memory cell zero, which is my accumulator. So now it's memory cell zero is five and memory cell one is five. And then I'm gonna take the contents of memory cell one and I'm gonna subtract one from that. So now I've decremented to four. And I'm gonna store that in both back in my memory cell one and in D. And then I'm gonna do my logic. And here's my loop. So I'm gonna load end into my A register. This is where I wanna go and it's the end of my program if my program's over. And I know my program's over when my counter has gone from five to four to three to two to one to zero. And so if D is less than or equal to zero, I'm gonna jump to the end. Otherwise, I fall through to my loop label and I'm gonna go back to the top of my loop in all other cases. And I guess I have an unconditional jump there. Awesome. So strengths, there are no strengths. I don't have use for assembly on a daily basis. I'm really hoping that none of you do too. But procedural style in a self can be useful and you can write procedural style in any language. Most of us, our very first program was procedural. Hello World is totally procedural. All of the scripting stuff we write is generally procedural. Do this thing, then do this thing, then do this last thing. And writing procedural code is generally pretty easy. For most of us, our brains instinctively think this way. So here's making change in the assembly. So I don't have lists. So I'm gonna use memory zero for the amount to make. I'm gonna use memories one through four for my coin denominations, 25, 10, five and one. And I'm gonna use memories five through eight for the number of each coin D is. Cause I have memory, we'll turn it into a list. The assembly I'm using doesn't understand this M syntax, it uses R instead. So you'll see this in the code. So this loads 67 into memory register zero. And then, yes. And then this loads the denominations. And then this is the code for quarters. So I load in my, I load in the amount I wanna make. I load in the amount of the quarter is. I subtract the amount that a quarter is from the amount I wanna make. If the result is negative, I don't need any quarters. So I go on to dimes. If the result isn't negative, I save the amount I have left, increment the number of quarters I've used and go back to the top. So I didn't cover anything in detail. And I've got four minutes left according to my timer. So let's do this thing. So here's where you can learn more about functional. Talks by Jim Wyrick, including his Why Not Adventures in Functional Programming Keynote from RubyConf 2012. Again, I tweeted the slide, so you don't have to take pictures of this. The slides are online. And then, Freedmen and Filiasen have the Little Schemer, the Reason Schemer and the Season Schemer. Those are fantastic books. They're written in Socratic Dialogue, they're awesome. And the Structure and Interpretation of Computer Programs is a very large textbook on the fundamentals of computer science from a functional perspective. I gave a talk at Cascadia Ruby 2012 on Prolog. It's the 45-minute version and much easier to follow than this talk. There's also the Art of Prolog, Clause and Effect, the Prolog Programming for the Working Programmer, and Prolog Programming for Artificial Intelligence. And then I mentioned that the assembly I used was from a book called Nandetetris. The actual title of the book is the Elements of Computing System, Building a Modern Computer from First Principles. I highly recommend, if you don't understand how your wizard box works, you follow this book. You start with logic gates and you end up writing a very small version of Java, including the assembler, the machine code, and the VM underneath. It's awesome. And if you just like languages, seven languages in seven weeks is the classic, and then I also have, and it's actually in my bag, a book called Exercises and Programming Style, which is basically this talk, but in book form and better. It goes over lots of different styles and how to do the same program in lots of different languages. I have it with me, come find me, and you can flip through it. So I'm supposed to have a thoughtful closing here, but I'm out of time because I used every last second I had available. And I also kind of told you what the whole purpose of this talk was up front. You can learn other programming languages. Other paradigms are not that different. Everything has conditionals, accessing memory, integers, mathematics, it's all similar. So go learn other languages. Because it's me, I have dinosaurs, you can come get one later.  I also have Google Cloud stickers and I'm done. Thank you. Thank you.


Hi, I'm Petrifying Pumpkins and this is 20 things you need to know about Iron Man Vior. 1. Iron Man Vior is releasing on February 28th, 2020. After initially being set to release in 2019, Iron Man was pushed back to February 28th to possibly be PS Vior's biggest release for 2020. 2. Iron Man Vior is a PS Vior exclusive. Iron Man Vior is being published by Sony Interactive Entertainment and as such it will be an exclusive title for the PS Vior headset. 3. Iron Man Vior is being developed by Camouflage, the studio's first ground-up virtual reality title. Their previous work being Republic, an action-adventure stealth title. 4. Camouflage's take on Iron Man will be brand new. Our Iron Man universe is not the films, it's not the comics, but their inspirations. 5. The main villain in Iron Man Vior is Ghost. Camouflage were eager to get Ghost as the main antagonist for Tony to face off against. Ghost has been a long-standing enemy for Iron Man in the comics. 6. Camouflage wanted Ghost to be female before they knew about Ant-Man's version of Ghost. The team asked Marvel if they could make Ghost a female for the sake of diversity. And I said, I swear to God, like a year later we're all in the theater, seeing the trailer for Ant-Man and the Wasp, we were like, oh my God, are you serious? To be honest, we were a little bit disappointed because we wanted to be the first group to have a female Ghost. But soon after that, we thought, you know what, this is actually helping us build confidence that we're thinking along the same lines as Marvel. 7. The story will see Tony dealing with damage caused by his own weapons. Tony Stark made his name with weapons development. However, it seems the villain Ghost will be taking control of those weapons to wreak havoc. 8. You'll need the move controllers to play. An essential part of being Iron Man is the ability to fly. And camouflage have elected to use the move controllers as the most immersive method of achieving this. As such, PSVOR owners will need to ensure they have a pair of move controllers laying around if they want to play as the high flying playboy. 9. Getting the flying down was the first thing the team did. Peyton said that, almost from the get go, camouflage figured out the 360 degree free flying aspects of the game. 10. Getting the hood and Tony's arms to look rice took a lot more time than the flight. It was the hood of Iron Man's visor, seen in motion in a variety of Marvel Cinematic Universe films that was harder to get rice. Just as tough was making Iron Man's arms work in first person and with PlayStation move controllers. Camouflage spent over a year and a half worth of work to get all that approved and working properly in VOR, Peyton said. 11. Iron Man VOR features combat. It's not all flying around in Iron Man VOR. As Tony Stark, he'll be using his trademark repulsor blasts as well as powerful lock on punch attacks amongst other means of combat yet to be revealed. 12. Iron Man VOR is a proper game not just a VOR experience. We're not making a rail shooter. We're not making an amusement park game. We're not making a short demo or an Iron Man experience, says Peyton. We're making a full game with a deep sandbox, with a deep story, with plenty of great missions and great cinematics. 13. Iron Man VOR has been in development for quite some time. It has been in development for two and a half years at Camouflage. The game was born, Peyton said, in a meeting at a hotel near E3 in 2016 after the announcement of Spider-Man for PS4. The head of Marvel's game and division was looking for VOR games Peyton learned and so he pitched them Iron Man. This means that by the time the game releases it will have been in development for a total of around three and a half years. 14. Camouflage were inspired by Resident Evil 7 and Halo. Peyton says he and his team have paid attention to the first waves of VOR games and have tried to learn lessons about what works and what doesn't. He's especially inspired by Resident Evil 7's VOR mode which he describes as the best game he's played in years and refers to as life-changing. Peyton also cites his team's prior work on Halo as an influence. Iron Man has more to his arsenal than the pan blasts and punches I tried in the demo he said, as his team is inspired by the sandbox bungee pioneered in Master Chief's adventures and plans to offer a variety of combat moves. 15. Iron Man VOR and Marvel's Spider-Man for PS4 may be set in the same universe. Since Iron Man VOR, like Marvel's Spider-Man, is exclusive to the PS4, I wondered if they'd be treated as operating in the same universe or even in some larger shared Marvel games universe. That, Peyton said, is to be decided. 16. Iron Man VOR utilizes software to allow for 360 degree tracking. One of the biggest weaknesses of the PS VOR is its tracking. Only using one single camera to track the player means that the player usually needs to be facing the camera for the game to function correctly. This limits the player's movement. However, Camouflage came up with an algorithm that allows the software to make an approximation of where the player is aiming, even if the camera cannot see the move controllers. Feedback from pre-viewers on this aspect has been positive. With upload VOR's Jamie Felton stated, the gameplay felt so smooth I often forgot I was playing on PS VOR. 17. New Suit Iron Man VOR will feature a brand new suit made specifically for the game by A.D. Granov, who has worked on the Iron Man comics. 18. Tony's Garage Players can expect to be seen a lot of Tony's house in the game, his garage in particular. Here, players will be selected in missions, customizing and upgrading, among other things, the studio want to keep a secret for now. Think of Tony's home as like a hub. 19. Voice Actors Josh Keaton and Chantel Barry will play the roles of Tony Stark and Ghost respectively. Neither are strangers to voice acting, but Keaton in particular has a long history as a video game voice actor, including Major Ocelot from Metal Gear Solid 3. 20. Pre-Order Bonus and Deluxe Edition It's not often a PS VOR title gets Deluxe Editions or incentives to pre-order. Iron Man, VOR bucks that trend. Pre-Order in the game will get you four armor designs to equip in the game as well, as well as a theme for your PS4. If you buy the Deluxe Edition for $49.99 compared to the Standard Edition's $39.99, you'll be getting another four custom armor designs, 12 research points which we'll assume are used to upgrade your abilities, the soundtrack to the game and another theme for your PS4. And there you have it, 20 things you need to know about Iron Man, VOR. Before I end this video, let me thank my Patreon supporters whose names are on screen right now. Their generosity is helping this channel greatly. Also, let me give special mention to the top supporters over on Patreon from Pete Hawkins, Tradition and Columbus Thomas III. My Patreon link is in the description if you're interested, but if you'd like to help me out the old fashioned way by liking and subscribing, I'd appreciate that too. Finally, if you like the music in this video, then check out tsepticon.com for more of those great beats. Thank you for watching lads and ladies, I'll see you in the next one, bye for now.


Hi, in this short tutorial we're going to talk about that how to install Rust programming language plug-in in Brackets code editor. As you can see we have here simple program in Rust programming language, but it's not recognized by our Brackets code editor, so we need to install additional plug-in that looks like Rust ID to help us to work with Rust code to highlight our syntax and autocomplete our code written in Rust programming language. So we need to click here to install our plug-in, I'm gonna click to available plug-ins and I will search for Rust, here we have two options, I will install Rust ID, I will install this one because it has more downloads and it's newer than Rust. Maybe this one is also good, but I will install this, I will click to this install button and now our installation is complete and as you can see now our code is highlighted and Brackets editor can recognize our Rust code. That is all in this tutorial, don't forget to like this video and to subscribe to my channel and please check out my other videos. Thanks for watching.


Our meetings have been, I think, very constructive, and I heard very positive voices from both parties. It was very important that they said that they will support Ukraine. It's not about financing, it's about the morality. The biggest problem when you don't support Ukraine is that people on the front line, families waiting for their heroes at home that they think that the United States doesn't support Ukraine and that Ukraine is alone defending our common values for the United States and Europe. That is the problem, to kick our morality. And of course people are afraid to be again alone, but you have to know that even if will be, we will stand and fight. Last thing, Mr. President.


HBCU Digest, welcome back to our Presidential Leadership Series. Today, we have distinguished guests of the very rare variety here on the Digest, a current and former president of one of our esteemed historically black colleges, Tukalu College president, Dr. Carmen J. Walters, and former president, Dr. Beverly Wade Hogan. They announced last week a very, very important gift to the institution, four million dollars, the largest in school history from an individual donor. And this will go to the establishment and endowment of Dr. Hogan's Scholarship Fund. And so what a pleasure it is to, one, have two ladies running the show. We know HBCUs are so much better ran, so much stronger when women are in charge. And what a pleasure it is to see live and in person the transition of effective leadership from one hand to another. So, sisters, I definitely appreciate you. Thank you so much for your time this morning. Thank you. Dr. Walters, we will begin with you because you're sitting in the chair with a four million dollar gift. Talk about the concept in a season of giving to HBCUs, just how transformative this is for Tukalu. And what do you think it does to add or change the conversation about certain HBCUs always get all of the money? This is a big gift to a school that is as a powerhouse in its own right, but usually isn't in that orbit of other schools that get accused of getting all the money. Absolutely. We all know the story of who's getting what. And this is so special for Tukalu. To me, it says for sure, Tukalu is worth the investment. Having this honor for Dr. Hogan means so much as the first leader. She's made history as the first president, female president, and now she's making history with the first to have this large gift in her honor. So it means a lot to us. And I can't even put it into words. Our students, for those students who need that gap, we call it. You're trying to feel an unmet need for a student. This is going to go a long way for our scholars, and we are just grateful. And I can't think of a better person to have this honor bestowed upon her for her labor and the love she's shown to Tukalu as an alum and as a leader, as a president, as a leader in the community. It speaks volumes. And so we're excited. We couldn't wait to make the announcement to let everyone know that this is happening right here at Tukalu in a little place called Tukalu, Mississippi. Dr. Hogan, talk about the relationship between yourself and the donors to this gift, because that is an important thing that we always try to emphasize in profiles like this, is that gifts like this don't happen overnight.  This is a relationship that's been built on other gifts that have happened over the years and a relationship that you established with this particular couple. Can you talk about how that relationship got started and how you build to this kind of, I would say, transformative level gift? Yes. Thank you. Dr. George Wallastead and his wife, Dr. Julie Luss, have been friends of the college for a long, long time. I met them when I first joined the institution as an administrator. He had been giving to the college and there was a lapse in there. And I was organizing the Health and Wellness Center at that time and was looking for people who were friends of the college. And so I called George to see, to introduce myself and to see how long he'd been giving and why the lapse. And we talked for a while. But George's friendship with the college came from the Brown-Tukalu partnership. He's been involved with Tukalu since that partnership was formed back in 1964. He graduated from Brown in 1951. So we met and just struck up a friendship and he would come down to the college as part of the Brown-Tukalu partnership and he was a sustained donor to the college every year and substantially. So when I retired, he and Julie called me and said that they wanted to do something to honor my legacy. And we talked about the need for scholarships and what they would mean for Tukalu College and attracting, entertaining students and helping students to go through college and complete successfully without interruption. Because financial assistance is very important to the students we serve. I didn't know what level George was talking about because he said Tukalu is in his will, talked about that. And I told him that he said, where can I start? And I said, with the new president and her vice president for an institutional advancement. I said, everything's in order.  And so they did. He worked with them. And then Dr. Walters called me back in June to tell me that George and Julie had submitted their first payment of a $4 million gift to establish the Hogan Scholars. And we talked about the importance of, she mentioned the importance of establishing this and maybe putting it into endowment that would most impact the college. And my response was, I'm proud of this gift. I'm proud of what it means to Tukalu College. But however, you can, you arrange it so that it can have the best impact on Tukalu College's bottom line and can serve Tukalu College in perpetuity. We were all in agreement with that. So we worked on that and worked up the criteria for that relationship, for that endowment. But yes, George and I probably talked a couple of several times in a year just about different things, issues of the world, world affairs, the relationship between Brown and Tukalu, you name it. He's an astronomer, as is his wife. And because he had made so many contributions, both in the scientific community and as an humanitarian, we honored him by destroying the honorary doctorate in science and because he was deserving of that. And not to know him even better than, but just along the line, I'd always zip him a note during the year to see how they're doing and kept in touch with him and kept him involved with Tukalu College. And they are the type people who have invested in many spectrums of our lives in terms of whether it's the NAACP Legal Defense Fund, but they're interested in helping to build a better world for all people and to help America's playing field become a little bit more level. I often say about them is that they have lived their professional lives using the telescopic lens to view the universe from many angles. But what most impressed me is they use their lens of humanity to see how they can have an impact on helping us to create a better world that's inclusive, that's kind, that's fair, that's equitable. And that's why I applaud them. And I say that they are the real celebrated heroes in the story because without them, without their interest in their law for Tukalu College, not withstanding a relationship I had built with them, but the law for Tukalu College. And that's what must continue is how people believe in our institutions, see them as worthy of investments. And we tell our story and they can see that they can see the products that come out of these institutions, in particular Tukalu College. And George and Julie had been able to witness that in the emphasis that we were putting on how we actually educate our students for success in life, that they will be able to make that mark on a larger world and through leadership and service and all those kinds of expanded learning opportunities that Tukalu College is very good at providing its students. I was going to say let's back up and talk about that because a lot of people don't know about the partnerships between Tukalu and Brown, between Tukalu and Boston University. Tukalu has explicit strength in the sciences, particularly in the health sciences. Why do you think that people know it? Because obviously the universities, the college is here and thriving and people take advantage of those partnerships and go on to wonderful careers. What is it that you think that has allowed that to remain such a powerful thing that not too many people know about? Well, Jared, I always say that Tukalu College has been extremely blessed with great faculty. Great faculty really make great colleges. The faculty from its exceptions have approached teaching broadly and they've been committed to the ideals of education. And intellectualism and idealism have really been the drivers of Tukalu education so that when still in the students that they can become anything that they dream of as long as they're willing to prepare themselves. So long before the nation issued the alarm that America would lag behind if we institutions did not start sending more students to graduate school in STEM, Tukalu was doing that back in the early 1930s and the 1950s through every generation. You can find those people like the Dr. Edgar Smith and Dr. Deloach, you know, the Aaron Shirley's and all those people who graduated all through the line. You can go up into the 2000 with Angel Bird and so many others, Chance Jackson, just people who come there and they go into these areas and because first of all, Tukalu magically gives students confidence and that's truly important to success and they introduce them to a broader world and expand their world view. And that's also important. Many of our students come from Mississippi. Many of them have still in the 21st century have not been able to airplane but Tukalu realizes that it cannot give them everything in that campus environment. So Tukalu has branched out and formed these kind of partnerships. There were people on Tukalu College's Bowet in the 50s and 60s from New York who had relationships with Brown and they thought at that time at the really the beginning of the civil rights movement and all that expansion that it would be great for a Ivy League college university in the east and a small HBCU in the south to form a relationship and learn from each other. And that's how that's the genesis of that relationship and over the years it has grown and expanded through every president at Brown and every president at Tukalu College. It is important for me to note though, you know one of the things I said about the history of Tukalu is that all the persons who came before me helped to cut the path to Tukalu to last. And when I got there I looked at it. I looked at the things that work. I looked at the things that we needed to improve upon but I looked at the rich history of Tukalu which wasn't foreign to me because I had been a student there and said let's build on the things that really work at Tukalu. And when I was trying to figure out what I wanted to do was to give the incoming president that kind of support and space, the space to build her own plan and look at those things that will work at Tukalu and be of assistance and not getting away. I think I publicly said that I would give my support and send my money without being asked but I would also wait to be asked for advice. I would not be there on that campus interfering with the work because we have to be supportive without getting in the way and that's what I think I've tried to do with President Walters and she has my number and whenever she calls me I respond and if I can be helpful I want to do that because it's not about this institution has to continue and you don't stop and start over. You've got to find those smooth patches where you just continue and but President Walters to succeed at Tukalu College means that Tukalu College will succeed and that's what supporters and alumni and everyone must keep in focus that it's about the institution always and that all of us kind of go but it's about the institution and we do the best that we can while we're there to make these institutions stronger and that's an interesting point Dr. Walters because typically it's tough to follow a long-standing president and the number one problem more than tough but it seems that that I wouldn't say difficulty I would say the opportunity almost to do that because you guys are working together and you are continuing a lot of what makes Tukalu so great. How has that transition been for you because a lot of presidents get get ran over by you ain't the last person problem but it doesn't seem that is the case that you know this was so interesting I came to Mississippi I'm a New Orleansian and I started working in Mississippi in 2012 and one of the first persons I learned about was Dr. Hogan as a black female and you know you're trying to move up into this field you're going to look at others who are doing it well and so I met her at a conference for women here in New Orleans and when I came here to start working I told her I said you know I've literally been stalking you you probably didn't even know that so I've admired her from afar and then of course when you come in and you're trying to understand your role you do get engaged in some things that is not very comfortable for you and I think that what Dr. Hogan and I have had to always have is transparency and trust and I feel like I can go to her and talk about any challenge and she will advise me and I've just done that and you know I'll call her and if she's not available she calls me back I text her and you know and we just go from there and not not long ago I said you know how can we get to some of these donors that are friends of yours because this is just one donor that's that's a friend of Dr. Hogan she has many and we want to connect to them and so I called her about that because because I need that I need her relationships that she's built over the years I need those people to know that Tougalou is still a worthy investment and and this has paid off by doing that you know to to have the Wallace teens give this gift so I support her and her endeavors and she's supporting me it does help to know that she will take my calls and won't avoid me and things like that so I feel very comfortable doing it what's the what does the future look like for Tougalou because again as bad of a time as 2028 it's very propitious it seems for HBCUs enrollment at several institutions is up given is up interest is up so there are positive metrics even in the in the midst of disaster it almost seems but at the same time 2021 is coming and that's when we're really going to know what what you know what what our test will be sure what do you think that Tougalou is is built obviously built to last but what does it take to make it built to grow or building it to grow um in 2020 2021 and beyond you know my thing when I came in it just came to my heart preserving and advancing excellence and that's that's the thing that I've worked from from day one you know I didn't come in trying to tear down what anyone had built I wanted to learn about what was built what was being put in place and then to build on that and to preserve that and I think that's what's going to carry us forward it's standing on all those principles and those policies and those programs and ideas that were here for very long so we know STEM is the forefront and so we are adding to that we're not tearing that down well so what we're doing we're adding environmental science and then because of our red thread of social justice we've added environmental justice we started a a center you know Dr. Hogan did this when she was here she had a social justice center we are building on that it's the Reuben V. Anderson social justice institute and because of the the the challenges we're facing today in America people want to invest in that so the Mellon Foundation gave us a $500,000 grant to do social justice programs so we are putting all of those programs into one center or and they're going to be our pre-law program which is very well known our public policy program and we've added leadership development because we know at Tougaloo we are growing leaders and Dr. Hogan mentioned that about building self-esteem but we want students to understand and as the it's not just enough to protest but we have to have some action behind that with voting we have to teach others about that teach others about you know affect policy and so the policy program is supported by an endowment that we're very proud of with Attorney General Eric Holder who is supporting that endowment with $250,000 so we are you know we're raising those those dollars right now and then USDA is partnering it with us we have our Congressman Benny Thompson who's responsible for us making sure we have a very nice very good strong partnership with USDA and all corn state we just signed another wonderful agreement a collaborative agreement with UCLA that program we're trying to model it after the Brown program our students will be able to go to UCLA in the summers with no tuition so you know we're just ecstatic about where we're going the future of Tougaloo is very bright and I say to the students every time I talk with them the road from Tougaloo College can take you anywhere you want to go and so these partnerships are very very important we're working on our cyber security program we have a cyber security advisory team that consists of Amazon Web Services and Deloitte and USC and Mississippi State so we're thrilled at the future of Tougaloo College and we think that we're going to really build on something that's already historic already prominent and Dr. Hogan we are number 14 we're trying to get into the top 10 of HBCUs so we're excited about where we're going the future is so bright I need sunglasses the last question is easy for you Dr. Hogan as an alumna you know to transition into an advocacy role obviously because you love the institution and you've seen what the inside and the outside of it looks like but what does what does retirement look like uh in in serving or fulfilling that role but knowing like I'm a president I know how to move these people I don't know how to do that without without the president in you being presidential and it's just Beverly Tougaloo College alumna well it is just Beverly Tougaloo College alumna I I'm always reminded that I I do hold honorific title of president emerita but that's uh and it's easy because I've transitioned out of many different careers uh into higher education and one of the things that I do is I take the value of what I've learned and in the memories that I cherish I was ready to retire so I'm enjoying retirement and I I have time now to to give back in different kinds of ways to many things that are important to me and there's nothing more important to me that has the list to the college but I am thankful that I know how to be Beverly and not president Beverly Hogan and I think that Dr. Dr. Walton's a test to it that it's not because I don't love the institution but I am rarely on that campus I don't have an office I don't come out to do research I don't do any of those things I come back to special kinds of things to support the administration to support the students and to be a part of the community of value and love so much


उसद्यब, आप सैंडार क्याज़ा औरत्पैटेक्स मैंँ दोराशा। तो लगाची मैंगी लगाचा किसे प्ले� nylon सब लगा रईदा। खीरब खात के सबलक से होगा रदा और वेम वह पीर्ट्टिण के। आब दरदा बबववग की सोन प्सज्ँलेँ कार्ष्लिएई करुष्लिएँ ये शीन भीगद हैं। आब जमीई पे आल्दिपा ल्टीं मारकर भी बेद सकते हैं। आरकर भी बैट सकते हैं इन नहीं प्लांट्स के साथ सो फस्ट्ली आप लेग to tell you briefly what exactly is a hip joint replacement सु this is a model of a hip joint this is your pelvis and this is your thigh bone or femur सु the hip joint is a ball and socket joint between these two bones due to a variety of causes such as fractures, rheumatoid arthritis, avascular necrosis, ankle lozing spondylitis this hip gets deformed so the surface collapses and is no longer circular, spherical or congruent which causes pain, limb and leg limb discrepancy this is addressed by a hip replacement so in hip replacement we replace the head of the femur, thigh bone and the socket into which it goes or the acid table so we've got a variety of hip replacement implants broadly we classify them into two types cemented and uncemented the choice depends on the patient profile and obviously your orthopedic surgeon can decide which one is better for the patient we also have ceramic implants now so we have ceramic on ceramic, ceramic on poly, metal on poly sort of bearing surfaces which all have different friction coefficients and different profiles now we even have large diameter heads and surface replacements which allow the patient a wider range of motion the patient can sit on the floor which was earlier unheard of in a hip replacement normally the patient is up and about very fast we allow the patient to walk the next day after surgery initially for a short period of time the patient uses a walker or stick and then once he is totally confident and the bone gripping of the implant is good we allow unrestricted movements we allow all sort of range of motion the patient can climb stairs the only things which we ask the patient not to do is avoid extremes of movement like using an Indian toilet otherwise the quality of life after a replacement is almost as good as it is in a normal hip the patient is out of the hospital in 2 or 3 days after surgery there is hardly any blood loss with the recent techniques which are used in orthopedics the anesthesia and post-op pain relief is quite good virtually a very comfortable surgery which improves the quality of life drastically and gets the patient back to his normal life like it was before the disease apart from hip replacement in Manipal hospital we also do surgeries of replacing the other joints primary and revision knee replacements shoulder replacement, elbow replacement and even ankle replacement so I would like patients to come forward clear their misconceptions about joint replacement and go ahead with these surgeries which are quite successful and give very good results and very good quality of life thank you


What's going on everybody? Got Kyle and Sean here with Layton Sportsguards and we are ripping this one's 2023 Bowman's Best Hobby, 8 box case number 14, Random Team Style. We do have a Super Fractor bounty going on. So if we do hit a Super Fractor in this case, the team who has it will get $400 in group break credit and we are going to do starting right now. You can start guessing every person in the chat is able to have one guess. If you guess who the Super Fractor is, you will get $90 now in group break credit. So we'll give about 30 seconds here guys for the guesses. CJ Stroud not a very good guess. I like it's baseball, it's baseball. I appreciate that, Bruce. Yes, sir. We'll see you in a little bit my man. Alright guys, so about 30 seconds here. Appreciate everybody. Let me show you guys the results again real quick on the screen while we're doing this. I had Joseph FS with the Reds in this one, down to Matthew A with the Dodgers in this one. Alrighty guys, good luck, good luck. I'm just a little bit longer here. Again, one guess per person. Sean will be copying these over, so we will be able to tell if you do guess twice. We'll not count if it is the second. Alright guys, about 10 more seconds. 10 more seconds. I appreciate that, Steve. Thank you for joining us my man. Hope you hit well in that one. I'm always down to riff some definitive man. Such a fun product.  Alrighty, about... Five. There we go. Four, three, two, one. Alright. That's it. Alrighty, that will do it, that will do it. Alright, let's do it guys. Good luck, good luck on this one. We got Bowman's Best case number 14. Random teams got another Bowman's Best case coming up next. Another random team. And then we have a couple of mixers. So a few more chances at the bounty today. Hit it twice yesterday, so let's do it again. Left side zero, guess one. Uno. The rookie for the end, come on, Volpe? Volpe, Paul? Paul. We did see a few Volpe's earlier. Paul. I can't count it, too. Oh boy. Good luck guys. Skydiving. Oh, this guy. This guy... You count to 13 kills, though. You count to 13. You count to 13.   Three kills, 40 damage. I know, I saw that, Shady. That was a smart move. That was a good business decision. Good business decision. Go Nulls. Go Nulls. That's what you get. Oh man. There's a Volpe. There's the Yankees rookie. Volpe on the projections. Get some sleep, Shane. We got a late run tonight. Yeah, we probably do. Probably do, Shane. We got a late run today. Are you ready? Hey, Axl Sanchez for the Mariners. Big Sato, Ezekiel Tovar Refractive. Oh, thank you, Timmy. Appreciate that, man. Is that what you guessed? The Family Tree Super? I'm in on that. 250, we have a Max Clark. Nice one there. Tigers. Thumbs up. There's a Wave Rizzle. I'll be ready. Let's go, Shane. Shane's ready. Shane popped in last night. Nicest 75, Spencer Jones. 2 AM, this guy's jumping in. Yellow for the Yankees. Yeah, we know he's awake a lot of times, though. He had just got home, I guess, from the airport. There's a shellact of Jordan Walker, Marcelo Meyer. There's Masatake Yoshida projections. Felden Seliston. Come on, Super. Come on now. There's a shellact on the lava. A nice one there at a 50 is Paul Skeens. There we go, Pirates. Very nice on the shellact lava at a 50. First pick in the draft. Nice one, Pirates. There's a Patrick Bailey on the Rookie Auto. Ricky Bradfield. I think so, too, Shady. I think it's coming. I think it's coming. There's a Speckletriss and Costas Rookie. And a Lizarro Montez on the Randy Johnson set. Xavier Isaac. You know how I do, Shane. You know how I roll. There's a Real the Real, Mike Trapp. CJ Abrams. A Sunday morning personal.  There's a Raina Arias for the Giants. This case in the next one, I like it. There's Logan O'Hoppy on the Rookie there. That one is not numbered. Rookie Minidiamon and a shellact of Corbin Carroll. Dan the Wise Man. Dan Dan the Wise Man. How we doing, sir? Dan Dan. How we doing, sir? The Wise Man.  Rolling. Really, Blake? You saw Tray Turner today. Interesting. Let's go. U.S. of Tray. Yeah. He is pretty good. He is really good. He is pretty good. Even though they all lay down. Yeah. Casillados when cold as you can go. After being as hot as you can go. Sad. I was rooting for him. Box two. Tigers. There's a Masterpiece as Carol. I like the Masterpieces too. And a Justin Crawford Projections. Vakero. And you get some spots going on Upper Deck Ice Hockey as well later today, guys. There's a Jordan Beck. Barraki's Auto. Still got a good bit of spots on those. Some hockey breaks. Don't always have a lot of hockey. This is our last of the Upper Deck Ice Hockey as well. Gave Moreno Rookie. One again to either of those. It would be a full Master Case. There's two inner cases per. So a full Master Case if you grab two spots. Camp Collier. There's the 150 Colson Montgomery. He was taking BP. He hits missiles. Yeah. I could imagine. So 150 Hefty Rodriguez on the Reds. I imagine his BP is a Jordan Walker. He's pretty good at it. Cranks him. Yeah. Give me one second, Wong. 271468. Can you send us an email, Wong, at LaytonSportsGards.com. Just need to make sure it's you before I do that. I can send you a refund, though, if you want to grab some different spots. Just need an email first. LaytonSportsGards.com. Confirm. Some Masterpieces. Max Clark. George Valera on the Projections. And Nolan Gorman. There's a Basado Luis Guaniba for the Braves. Yeah, he doesn't look huge for sure, Blake. He doesn't look huge, but... I guess he could be shorter than you expected for sure. All right, guys. So next break with spots to fill is going to be our Top's Crone Black. Top's Crone Black has the Braves, Tigers, Royals, Marlins, Brewers, Padres, and Rangers. Seven teams to go on that. There's a Speckle Jackson Holiday. And Refractor Corbin Carroll. Sitting in the glove. Real to Real Rookie Adley Rushman. And Matt Shaw. Oh, sorry about that, Dan. There's a Yellow to 75, Tristan Casas Rookie. And Fraley Incarnacion on the Refractor there for the Red Sox. I got you, Shady. Corbin coming. Corbin on the way. Corbin on the way. There's a Chalact of Cam Collier and a Logan O'Hoffey Refractor Rookie. Alrighty, guys. Good luck, good luck. Do you have tracking on it, Dan? Is it supposed to come tomorrow? Yeah, sorry about that. I don't know why I set it for sick. I don't know why I wouldn't descent that way. Sorry about that. So Top's Crone Black and definitive going to be our last two breaks of the day. Baseball breaks anyway. Top's Crone and definitive. Vaughn, how are we doing? What's going on, Vaughn? How are we doing today, sir? Salute, salute. There's a Masterpieces Francisco Alvarez. He's got a Rookie Coloss. Enrique Bradfield. Any birthdays today, Vaughn? We got anything going on? Let's say kind of prime for a nice birthday. Two 1.50 is going to be Javier Osario for the Tigers. The Tigers. Xavier Isaac. There's a Rookie Davis Martin. Randy Johnson set. And two 2.50, nice holiday. The O's. There's a Wade Devers. Jay Rod. Hey, what's up, Mark? How are we doing? That's right, we got quite a crew here. There's a Luis Guanipa base auto. And netto refracting. How's Edwardsville today, Mr. Mark? How's Edwardsville today? There's a shellac of Michael Harris and base Michael Harris. Exactly, we got the indoors, man. We play well indoors. Yeah, just like that lady has the bus. Junior Caminer, you see that? What? He's like, how are you preparing for weather in Detroit? He's like, hi, it's indoors. We're indoors, we're good. We're indoors, we're good. Take away your credentials immediately. There's a refractor, Davis and De Los Santos. I just want to de-back one of their top prospects. Yeah, that was not a shining moment for that reporter. There's a Jackson Cheerio on the speckle. And a Tyler Freeman for the Guardians. Randy Johnson set. Come on, super. Edwardsville is fine, that's good to hear. That's good to hear. Real to Real, rookie gunner. And a lava is Ronald Cunha, it's a 199. Cunha? Enrique Bradfield in the refractor. What are you talking about, Vaughn? $500 break credit. You guys are tripping. There's a Carlos Perez on the speckle. The speckle Randy Johnson set and a shellac of Jackson Halliday. I just thought for Randy Johnson's debut it wouldn't be these. I thought we'd get some really dope action shots. And actually setting up photos and stuff. This will be it. It's like senior year. That's actually the top's headquarters. It's the top's headquarters that took all the photos. Looks like it took them on a field trip to the zoo. Different spots outside. It does have a little bit of a yearbook vibe to it. Yeah, it's rough. A little bit of a yearbook vibe. I do want one of those giant glove chairs. Those are sweet. Those are sweet. There's a Rookie Masterpieces Gunner on the Celestin on the projections and Corbin Carroll refractor. Come on, Super. Come on, Super. Don't hide. There's an Otto of Amarian Boyd for the Phillies. Amarian Boyd, Adley Rushman refractor. Old school magic. Let's go. Team was awesome. There's a Rookie Coloss. Joey Ovato. Jay Ram. There's a Wave of Peter Lonzo. Yuri Perez. All right, I got you, Wong. I'm going to refund right after this. Give me just a few minutes here. I will give you a refund. There's a refractor, Samuel Bassio. Samuel Bassio as well. We've got some more absolute coming today as well, guys. All going to be PYT styles. There's a James Outman. Projections for the Dodgers. Sam forgot to do it, oh boy. I don't know. There's a Gavin Cross on the projections. He'll be here tomorrow. That's right. Good morning, guys. I'm going to hit up Sam for that one. There's a refractor, Otto Carlos Jorge. I'll give you $500 in V-Bucks, maybe. Reggie Crawford, Randy Johnson set. Seven to go now, nice. Seven to go. Come on. We'll get there. Gunner Henderson on the die cut and Nolan Gorman on the goal. Number 250, nice one there. Cardinals. Gorman action. Now, seven to go on... Oh, are we down again? No. No, we're good. Seven to go on that one and eight to go on definitive, guys. Seven to go on Chrome Black, eight to go on definitive. And our first absolute is also at seven PYT stop. Get all those going here later. Oh, okay. I like that, Vaughn. Some upstanding citizen bounties. There's a Jacob Baird for the Marlins. Joey Vado. Yeah, you have to take that up with Sam, though. I'm sure he could probably do that for you. There's a Gunner Henderson shellacked. Matt Mervis, Merv the swerve. Maybe one second here, guys. All right, I'm going to send a refund right now, Vaughn. You are still watching. All right, thank you, Christopher B, grabbing the Pirates in Bowman's Best, a PYT coming up. Keep on moving here. Box five.  What's up, Higley? Higley. Hopefully a Super Fractor. Super Fractor cooking here. Let me get one here soon. Get a little bounty going. We're up to 400. 400 on the bounty. $90 on the, um, on the guest bounty. How'd you play the Sixers tomorrow? Be mighty. There's a Caminero on the projections. And be mighty. B versus Goga. There's this, uh, 25. That'll be Darnichi Valdez for the Cups on the Speckalotto. Nice one there. Larry. Larry. Larry. Pretended Sakai Kachishin. I'll pretend you have the Holland spot. Come on. Look at Geolito, the 99. There's Spencer's boy. Javi. Javi Baez. How we doing today, Larry? How's things? There's a Real the Real Michael Harris. ATL Michael. Peter Alonzo. Peter Alonzo. Face Auto Ludwig Espinosa. Cubbies again. Oh, you know, chilling, Larry. Chilling. Trying to hit some supers, man. Trying to get this bounty going. There's a Shellac of Joindry Vargas. Oscar Coloss for Fractor. Trying to get this bounty going. The highest number ones are even 61,000 packs. So we can do that. We can do that. There's a Raleigh Green. Masterpieces Rookie. And Coloss on the Projections. Mike Trout. Head to the Casa. Very nice layer off work. That's good to hear. 250 Emanuel Bonilla.  Blue Jets. Kasebich. There's a Speckle. Why Langford? Nice one there. Rangers. Not numbered Speckle for the Rangers. Mr. Trout. Why Langford, Refractor? Are you talking about a beadwell? Oh, man. There's a Refractor, Nelson Rada. The Angels. We don't have very good centers. He might. At least points-wise. There's a Shellac of Vulp. I like that set, Larry. I do like the Shellac set and the Projections set. And the man. Both have... All three of those have autos. Trying to get some going. Let's go get him. Kevin by one. Stop's going black. Mr. Kevin S, we are down to Six to go. Grabbing the Marlins. Thank you, sir. Go, Kev. We have seen a few Dontrells in there. A few Jazz. Let's see if we can do it again. That's fair, Marty. That's fair. I'm not a free camera fuse. We eat a goat. Come on, Super. Got one more. Full case. Then we have a couple of mixers coming. There's James Wood on the Projections. Six to go in a Chrome Black now. And eight to go in definitive. Our last baseball breaks. There's Matt Mervis. The Cubbies to 199. And a rookie of Oswaldo Asario. Dodgers on the autumn. It's Carl's son, Justin Crawford. Go, Grace. Jackson Holiday. We got a rookie Tyler Freeman for the Guardians. Yeah, I think they might have at least said like their theme on it. Right. I don't know. Real to real, Justin Crawford on the die cut. I'm Bobby Miller. Taking the kids on a field trip. Randy could be a chaperone though. There's a refractor, Davis and De La Santos. Second one, nice one there. D-Bex. Casey Schmidt. Shellac is Max Clark. Third pick in the draft for the Tigers. Francisco. There's a Gunner Henderson Projections. And to 150, James Altman. Come on, Super. Get someone $400 here. There's a base on a Blake Mitchell. Nice one there, Royals. Their first pick in the draft this year. Devis. Him. We got a Masataka Yoshida on the rookie. Him. I can find him. I don't know. Nice one there for the Red Sox. Very nice on the short print. About one per case on these. Nice Masataka. Very good rookie for the Red Sox. And we have a Davis Martin. Randy Johnson set and Matt Olson. To him. There's a Wavehunter Brown rookie. Junior Canny. 250. Another nice one here is Enrique Bradfield. Very nice on the Blue Auto. Orioles' top pick in the draft. Bradfield. Gonzalez. Shellac Francisco. Francisco again. Rookie to 250 on the purple. Bryce Harper. 192. We're doing pretty good then. Pretty good on those. 222 yesterday and 22 today so we're beating the odds on those. Pulling him's like it's his job. That's right Will. Almost like it is. It's true Shane. It is very true. A lot of variety. A lot of color. Come on Ace. See what we got for Mr. Shane. There's a Manio Bonilla projections. Brett Baby rookie refractors. Refractor Auto as Waldo Sarrio. Dodgers. Rookie Ohapi. Casas rookie. And Orange. Nice one there is Rookie for the Mets. Francisco Alvarez. A lot of Francisco's in this one. Very nice. Orange to 25. Color maps there for the Mets. Chris Morel. Bassados going to be Ryan Clifford for the Astros. James Altman. Rookie Jonathan taking the A's in definitive and Taylor taking the Cardinals in definitive. Down to six on both of the next ones. Down to six on both the next ones. Chrome black and definitive. O-T-Y-T style. Shellac is going to be a Jackson holiday. There's a Vulpie rookie. Refractor. About a box and a half left. Feeling a Riley. Riley Green. I'm always ready for a Riley. There's a Matt McClain. On the speckle they do have Miguel Cabrera in there too I think. Tigers aren't a bad choice for sure on black. There's a Green to 99 Rizzo. And Bassados. Brandon Maillet. Go Yankees. Top international signing. There's Tovar. Randy Johnson. Joey Vato. Thank you Kevin taking the Dolphins in absolute. E. Oh I forgot we're done with the Sean's done with the E's. There's a Wave. What do we have in G. Vargas? Distinct dude. Matt Mervis. They don't deserve E's. Deserve E's. There's a Alfredo Dino. Nice one there for the Reds. And their top prospect. Corbin Carroll Refractor. Projections on the mini-diamond Francisco Alvarez. A lot of Francisco in here. Or the Mets. Chalacte of Hauke. And Adley Rutschman Refractor. Alrighty here guys. One more box. This was Case 14. Case 15 going next. Now the randoms. And then we'll do a couple of mixers. Two Jumbos and two Bowmans Best. And still 20 plus spots in both of the Upper Deck ice hockey breaks. We want to get those going today guys. Two random team styles.  So both will be from the same master case. Two inner cases. Yeah I know Von. We don't enjoy that. That's never fun. Come on. Super. There's a Hunter Brown Projections. And Speckle of 299 Tommy Troy. For the Dbex. There's ATL Michael. 26 to go in that first Upper Deck ice hockey. Get one of those going later. Seligia Green to 50. On the Lava Real to Real die cut. Those are pretty sweet. For the Nationals. Seligia Green. Their local Orlando kid. You Starbucks buying the Bucks. Fire the cannons. In absolute. And Larry buying the Tigers. Down to 5 to go. 5 to go in Top's Chrome Black. We'll get that going after these mixers. Lissandro Rodriguez. Miguel Cabrera. It's a Wave Langford. For the Rangers. Body Whits. For the Ace Autumn. For the Rates. Kodi Refractor. Come on Super. Come on now. There's a Shalacta of Jackson Churio. And 2199 Felon Seliston. Phoenix. For the Mariners. Shade Langlears Refractor. Casey Schmidt Projections. And Von Grissom. Alfredo Dunno. Second one for the Reds. Alfredo Dunno. There's a Wave Coloss. And 2199 Freddy Freeman. Correa. Otto is going to be Hector Rodriguez. For the Reds. Salas. And last one. I like to have the projections. Yeah, yeah. Definitely. Definitely got some cosmic vibes to it. And Shalacta is Adley Rushman. And Shalacta is Adley Rushman. Alrighty there guys. That'll do it for another full case number 14. That'll do it for another full case number 14. Do a quick recap here guys. And we'll be on to the case number 15. Another random team case. We'll do another Superfractive Bounty. We'll roll up to 425 now. We have 425 and $100 for the guests of the Superfractor. We'll do that again for these next couple breaks. Thank you Josh by The Braves and Chrome Black. Down to four. Down to four I believe. The Royals, Brewers, Padres and Rangers. Our last four on top is Chrome Black. Alrighty 2199. We had Tommy Troy. Joey Vado. Freddy Freeman. 250. Holiday. Alvarez. Max Clark. Bonilla to 199. Was Mervis. Celestine. Acunia to 150. James Altman. Montgomery to 99. Rizzo Baez. To 59. Shalacta of Skeens. Gold to 50. Cosas. Nolan Gorman to 50. And Francisco Alvarez to 25. That's the low number there. Autos of Hector Rodriguez. Dono. Guerrero. Dono again. That one was Refractor. Brandon Maella. Ryan Clifford. Osario on the Refractor Auto. Blake Mitchell. Refractor De Los Santos. Osario. Nelson Rota. Refractor. Josca Savitch. Espinoza. Barry. Jorge. Basayo. Boyd. And Enrique Bradfield. Oil's the good in this one.  Yeah. Sorry Shane. Got a Refractor. Davis and De Los Santos. Guanipa. Refractor Incarnacion. Guanipa. Jordan Beck. Arias. Pat Bailey. Axel Sanchez to 150. Nice Enrique. Osario. Hector Rodriguez to 50. Elijah Green to 75. Spencer Jones and to 25. Dernichy Valdez for the Cups. And then we had a hem of Mazatake Yoshida. Short print. Alrighty there guys. That'll do it for 8 box number 14. Just a minute here. We'll do a random and we'll get number 15 going.