Hello, everyone. Hi, my name is Victor Rodriguez and welcome everyone to the ELC 2020. Today, I'm going to present about tool change in the new area, how to update SAFE. My name is Victor Rodriguez and I'm going to be talking this time about this impressive topic that I really enjoy and hope that you really enjoy too. So, a few months ago, before all these chaos around December, November, one of my friends told me something really amazing that he found amazing at that moment that you didn't realize before. And it was how much work the GNU tool change community actually do every year, right? And I was like, okay, we have two releases in GNU every year around the beginning of the year and end of the year. And we have one release every year for the GCC compiler. We have GCC 10 a few months ago in May, a few weeks ago. But it was something that he told me. He said, you know, the community is very healthy. It's a great community, great developers, but they are not that many. I mean, there are very few people involved in this great amazing job that we, everyone in the Linux world and outside of the Linux world actually enjoy, which is the compiler tool change being utils and other things that actually is very few developers. So, GNU compiler community, for example, do a lot of work per developer. But the question that I was wondering a few days ago is how much in terms of commits per developer? Well, here it is. So, the number of commits per developer in our history with GCC, it's around 200 commits per developer. And in the Linux kernel, it's around less than 50. So, we are very good community. We have a great community. However, it's not that many people that create all these amazing topics, all these amazing new features, all these amazing things that everyone can enjoy. The first thing that we're going to be checking is GCC new features in terms of security. One of the flags that came up in this new version of GCC 10 that was released in May is FNALISER. FNALISER is an amazing thing, right? This is an option enabled in the static analysis of the program flow that looks back to the source code and issues warning for the problem found on this thing. So, it's pretty much what we had before about, hey, I need to find a new tool to actually go and do static analysis of my code to figure out if something is wrong, like security issues, some other stuff that I could be forcing in the runtime to happen there. Now, FNALISER comes with a proper static analysis tool for you in the compiler. You don't have to go and search or pay for another. Of course, you can go and pay, but in this case, you can initially go and try with the FNALISER flag and see how many errors actually the GCC compiler actually find. So, enable this option, effectively enable some of these warnings. So, it's a union of multiple warnings that actually enables. Things like FNALISER double F close, analyzer for double three. It's going to give you a warning if you have a double three. It's going to give you a warning if you have exposure throughout the file, if you have a file leak, if you have a free of non-heap, right, and a mild leak. So, and there are more. I just put six in this small lease, but you can see the full documentation of the GCC release notes and you will find it how many there are there, like five more. Well, the first one, FNALISER for double three. So, FNALISER for double three is the diagnostics of warnings for when you have a double three in your code, right? How does it look? Okay. So, it looks like this. You have a main. You have a main. And in this case, we asked to the memory management, hey, can you give me a pointer? Sure. And then ASA NICE developer have to free the pointer because it's a proper thing to do. But then, of course, here is very obvious and it just made it for an example. Later, I free that pointer again. And in this case, as I said, it's very obvious, but we have seen this thing a lot of times because it between the two frees that are hundreds lines of codes, and we as humans, despite the fact that we're very smart, we can commit mistakes. And after 100, 200 lines of code, we say, oh, I need to free my pointer or by the logic that we have, we free the pointer two times or three times. So a double three, it's an issue on runtime. As we know, it's critical in terms of security. And now with this F analyzer, when we compile this basic code with GCC test.c F analyzer, you will see that the warning of a double three pointer, it's about in the end in your screen. So you will see actually the line codes that you will have the error free pointer and free pointer, say, second free here, first free line one point one, right. So actually it's very helpful because it's telling you where in your source code, it's actually the double three. Now comes to a much more serious things that we can come up in this thing. A good example is the dangerous F print out. So for your mind, no, not every now it's evil at some point. And here we have a good example. So we have this thing, which is a main and basic main to see arguments. We have declared a buffer and run a rate of charge and we set a string copy from whatever I pass as my argument to the buffer passing actually the length correctly. And when the problem is that we print F buffer, and we never cast to see if it's in the string or if it's and the thing here is that when we pass something that it's not actually in a string, something else, for example, when after we compile this basic code, and we run a assembly that output and we pass this this huge a string actually passing a bunch of days and later over floating the F print F, we can see that actually start to bring the stack. How do we know that because 41 41 41 is actually these aids that we're seeing over here passing to ask you. So the thing of funny here is that print F can be a security vulnerability for sure. There is a ton of documentation about that how to fix it how to how to avoid this thing with the consciousness of the developer. The problem is that print F determines how many arguments it shows get by examining the format string in format string doesn't agree with the actual arguments. For example, that we have here, you have undefined behavior which can manifest a security vulnerability. What kind of vulnerability it's a format string exploits, the attacker can perform writes to arbitrary memory address, which is very dangerous. Right. So what happened with a real code? Here is nothing that we know or have a little bit background about the print F. The F print F, it's going to go and do the same thing, but we put this inside a logger, right. And these logger is going to be executed by a handler. So signal has the name of these flag safe, event analyzer and safe call signal handler. It's because we have a handler like these ones. It's a special function from Siege to actually have a signal request. It's going to say, oh, I have a function called handler. And later inside, I have an F print. GCC will detect and say, wait a minute, F print F, it's not properly or safe. And you're also calling that from a handler. So it's the unit of a really, really bad situation where you can perform a security vulnerability. So when we compile this thing and say, hey, call to print F from within signal handler, it's the warning that I was actually telling us.  So GCC now is that is more with this new flag to actually detect this kind of thing. It's very impressive. Now, extra options, because you can see, okay, I have this in my compiler and me as a developer, I can say, okay, compile. But as you can imagine, the codes that we compile every day are not that simple and are not that easy to actually start reading all the lines that pop up in the window. That's insane, right? So there are two extra options of the agnostic path format separate events, which is going to separate the events one by one and also agnostic format equal JSON. So now you can generate a JSON file at the end of your compilation file, pass process that with Python, PHP, Perot, whatever you want. And later that printed in a nice dashboard. So as you can imagine, the CI CD, for example, in this case, for the previous example that we have with Bubble Free, it's possible to print a JSON file that is telling us the line, the file, the column, the description, the function, all the information that is printed on the standard output in our screen, it's possible to have on the JSON file. So now your application will be built and in the end, generate a JSON file, pass process that and give the warning to the developers. You can even imagine a CI CD, of course, that warns things before actually having it pushed to the main repository, to the main branch. And it's pretty healthy for us as developers to figure it out that we are committing a mistake in terms of security, right? And prevent that instead of going to production. Now, what it means to have these things in terms of next steps, a real example on where to use it. This is taken from a really nice article, this information reading by one of good developers. So you can hear the credits to developers Red Hat, block 2020, static analysis in GCC 10. So I highly recommend that you go and check this blog, some examples we're taking from there. And in this blog, they mentioned something about CBE that happened 15 years ago, CBE 2005, 1689. As you know, the CBEs are databases that are for everyone outside in the open source to actually check when a new security ability has been detected and proofed and tested, we create a new CBE community, and now we're ready to track, fix and propose the patch. So this happened 15 years ago. It happened in Kerberos, version five, Kerberos is a computer network authentication problem. And the problem with that thing when I double, I checked the CBE in the database of the CBEs and the description is very straightforward. It was a double free vulnerability in the Kerberos five, REC vout function in MIT Kerberos five, 1.4.1. And earlier allows remote attackers to execute arbitrary code by certain error conditions. So that's one of the things that we have, we have double free, allow things like executing arbitrary codes by double free, double free the memory. So in things things, we have Kerberos five. And if we compile Kerberos with GC10, with FNLizer flag enable, we figure out that it correctly identifies the box with no false positives. The only thing that needs to be fixed is to improve the warnings without overwhelming. Of course, it could be printed to a JSON file and then post-process and clean a little bit more. However, it does the thing that it's supposed to do. How does it look? Okay, you pay attention to this part. It in file included from, and you can see the file actually installing the line in function, REC vout common, which is the same one that was described on the in the description of the CBE. Double free off. And then the value, right?  Now, when I checked the patch, I was looking for the patch that I was actually for this one. I was very surprised that the patch for this one, it's exactly the piece of code that the warning on the compiler is, it's telling me. So it goes and fix and into the same position that the compiler was suggesting to fix. So it matched actually that the compiler is telling us a warning and the community 15 years ago discovered the same fix and that was the fix that actually solved the issue. So this proved that this flag actually works in real environments, right? So my recommendation from this first part of the presentation is let's use it in our daily CICD, in our daily jobs and try to go ahead and say, hey, maybe I should go and double check with FNLizer with the GCC latest version and see if I'm committing a mistake or if I can find something useful or if of some way that I can improve my code always. Now, the next feature that I want to talk, it's GCC new feature about profiling. Now, profiling is the best topic and the topic that we're going to be touching in this part is F-profiling for partial training. For profiling for partial training, it's a new flag that came out with GCC 10. This flag enables that now we can inform the compiler that the functions that are not executed during the profile execution or not exercised it during the profile execution should not be optimized. Now, what happened before this flag? Because it's important to understand what is the before and the after to have a feeling of the change that we have. So imagine that you have a code function A, function B, and function C. Now, for the steps for profiling is we compile, we instrument your code to let the compiler later know when we execute, what are the paths that are actually being exercised, and later the compiler can optimize the paths that are much more exercised. And we will see a little bit more about profiling for developers in a minute. But I want to highlight the before and after. So before this flag came up a year ago, a few months ago, if a function A was not executed during training, then function B was not executed during the training or not exercised during the training. Now, function C, okay, function C means that I have a new binary that now it's instrumented. I want to run a benchmark on top of disk B. So that the profiler have better information, much more accurate about what is the real and common use case for these binaries for libraries. So it will detect what function are being executed during the train. And the good thing is that once we detect that and pass back to the compiler, the compiler is going to say, hey, I'm going to optimize that function. And what happened before with a function that was not executing during your training, the compiler say, you know, I'm going to optimize those ones, but for size, because maybe I increase a little bit the size, but I need to do something else with the other function. So it goes three forward and optimize these other functions, but now for size. Optimizing for size, despite the fact that it sounds pretty amazing, it has an issue. And it's that sometimes optimizing for size affect the performance of the function in terms of how much time, how much memory you're using or the time of the execution of that function. So optimizing for size is good for embedded things and it's good for application when the size matters, IOT and stuff. However, it be taking with caution because it's not always the rule of say, hey, I want you to optimize for size all the time. No, sometimes optimizing for size could have a penalty in terms of performance. Now what happened now with the f-profile partial training? With the f-profile partial training, the functions that are not exercised during the profiling are just ignored. If you can see function A and B, it's just ignored. And the compiler say, hey, I did not exercise during the profiling, during the execution of the benchmark on the instrumented binary these functions. I'm just going to ignore it and create the same function A and B as I did before. So we have an optimized function and just the same function that was optimized before without any penalization in performance or size, nothing. Of course, as you can imagine, the new binary, it's going to be way much more heavy than the previous one, right? What happened with the f-profile kind of optimization? Well, it was thought years ago I said, hey, why would be nice if we could actually provide something to the compiler about where does it go? And the reason why I put this picture is because the best analogy that I can figure out is if you are training of a kids soccer team and you want to improve the performance of your team, right? It's a chaos. It's similar to what we have in our code when it's running into a CPU, multiple branches, multiple variables, multiple paths. And of course, one instruction pointer, which in this case will be the ball that it's go. How does it go? But it's an analogy that I want to propose to you about how this profile data can be used to work. So to extract good performance out of the program, it will be nice if programmers could provide hints of annotation to the compiler and say, hey, compiler, I get the idea of where is it going? And the binary is being executed more into this path and never actually taking these other paths. So PGR is a method used by compilers to produce optimal code by using application runtime data. Because this data come up from directly from the application, the compiler can make much more accurate guesses. So it's giving a hint to the compiler and say, hey, actually, you should go. We go most of the time during runtime for these five. Oh, great. So the compiler now can optimize better. And we will see what kind of optimization could happen. Profile optimizations have three stages. The compilation of an instrumented binary, the profile execution and the compile optimization. And the reason why I put the picture before is imagine that you're the coach of the soccer game and you want to know the soccer team and you want to know which one of the players actually run more, which one runs less and so on. But you lack of technology. You have it thrown on top of that. And it's very complicated, expensive. And you have extra virtual reality technology. Yeah, it's not. So a solution that we were going to propose is going to put a huge cry on the back of each one of the players. And we are going to make it to run and it's going to paint over the field where does it go, right? Or a lot of paint can in the back. And it's going to let me know actually where, where each player it's going. Or if a player is talking one place and never running, right? So it's going to be at the end of a picture of the field. And let me know good information. That's that's an analogy for how the speech you're worried. Now, the first part is I have to put this huge pain into the back of the player. And as you can imagine, the player isn't going to run the same speed. Why? Because it's heavy. That happens the same with instrumentation. Instrumentation produced an executable that now has counters. And every time that we take a branch, it's going to increase the counter. Take another against the branch, increase the counter again, go for the branch, increase the counter again. And it's going to happen for branches, blocks in variables. So it which proves sensors count the numbers of time of a basic block runs. If the block is a branch before it records the direct taken by that branch, how do I generate this part? So it's very simple. You have your application code. So you're going to compile as GCC app profile, generate and the profile directory. Here is where all the GCBA files that is going to be the extension that is going to be curated, are going to be saved or recorded, right? The second one is, okay, I now that I put in my player sensors or groups, go and play grade. It's going to be way much more slow because the groups are heavy in the back of the players. Now, with the profile execution, you have to simulate the most real conditions. So what I have to do, bring in a team or a friend team that tell me to actually go and get the photo of where my team is failing or where can I improve my team. So the profile execution actually gets an execution of a benchmark or a regular basic application for the daily test cases that we execute at the end. So when it's executed, the instrumented program generates data that a file that contains the execution counts for the specific role of the program. So it's going to leave a path of where each one of the players is actually going. And the compile optimization part, now that we have the pane on the field, we can go and now take the picture pound and I can have pictures say, okay, so player green, yellow and red are not moving, blue it's moving only to the left, and purple it's moving only to the corner, but it's in the top. Okay, that's great. So now I can analyze my data that's recent of this picture and actually go and think about how can I improve my team, right? So information from the profile execution of program needs feedback to the compiler. The compiler now doesn't have to hint that much. And the data is used to make a better estimator of the program flow. The compiler uses the information to reduce the executable file reliant this data rather than the statistic heuristics. So the GCC in the end, it's going to say, hey, GCC that profile use and you pass the data that they're actually want to work for all the GCD. All these could be offended. Yes. So can you run multiple benchmarks and information will you send? Yes. However, there are a few things that we will check in a minute. It's not sometimes very good idea to append that much data. So we will check that. But before, what kind of optimization should I expect once I have all these jobs? Well, the first one, it's functioning line. Function is lining at the logic has been with us for a long time with the compiler. It's a techniques where the inline high frequency function into one of the calling functions to reduce function call overheads. The function in line needs to reduce the use of the call overheads to many functions, which will force to use the amount of cash that you might going to need. Remember that you're going to need memory to move from one function to another and so on. So the lesson of memory is also important for the performance of an application. Let's take an example as easily. We have function A, which is going to be our main function. And it could go into, we have an if and else, and it could go into function B or C. And function B could go into function D or E, or in function C, it could go into our function F and J, based on the condition that they could define. This could be a counter, this could be a Boolean, an external database injection, whatever you want, that it could display the branch of the execution. Now, 70 times from A, it's going to be, and only 30 times it's going to C. When you are in function B, 80 times it's going to function D, and 20 times it's going to function E. And from C, we go 90 times to function F, and only 10 times to function D. If the amount will be 100, in terms of portion, as we can see that most of the times function A go to function B, and function B most of the time goes to function B. Function C most of the times go to function F. Now, in line, in function lining, it's going to go and merge the functions that are very tight, and most of the time one called the other. So in this case, B and E could be in line, C could be in line into F, and very risky A could be in line into B. So that would reduce the amount of function all over heads on the execution of your binary. The next one, and this could happen if we pass the PGO profile data optimization back to the compiler, the compiler actually can figure it out, say, most of the time you go from this function to this function, and from C to F. So I'm going to try to inline these functions. Now block ordering. The second part of this could be improved is block ordering. The compiler would aim to achieve all locally to perform minimum amount of memory operation. Functions which are tightly bound should be allocated to minimize instruction capabilities. Sometimes we said, oh, I have my code. I'm just compile and let the compiler do the magic, and we forget what's happening behind the scenes. Well, behind the scenes, the compiler has to figure it out on the text sides and how an arranged text data heap, how does it work in terms of doing much more efficient. Let's take into the example of this one. Function A, we have function A if condition is equal to true, and it's going to call function B else, it's going to call function C. And at the end, function B, it's going to be calling function D. So we can figure out more or less any, and we have A, it's going to call function B if it's true or call function C. And function B, it's going to call function D. Now, what happened? If most of the time we realize that the condition, it's always false because it's for some reason or during the training of our file guide optimization, most of the times the conditions were false, well, we rearrange things and say, you know, A now it's going to call C immediately, C it's going to call, and A it's going to call B sometimes, but B it's going to be closer to D. So here before, B was very far, far away from D, and C was far, far away from A. Now, A is closer from C, and B is closer to D. This is because we have lock reordering based on the information that we get from the protocol guide instrumentation entering the training, right? And the third one, it's going to be the death code elimination. Death code elimination, it's an optimization that removes code that does not affect the program result. It's important to differentiate from death code elimination to enrichable code. Death code is code that it's, despite the fact that it could be executed, it will not affect the end result of what we have. So it's going to consider a waste of CPU performance. And when you are trying to increase performance, every single step matters, every single step matters, every bottleneck that you fix, it's a third thing for your application. So a good example, well, in the other case, a reachable code is a code that will never be reached. It doesn't matter, it's like you said, okay, if condition equal true, and condition you defined by before as true, it always goes into that branch. Else, do something else. You know that it will never reach that else, because condition was hardcoded to be true, right? That is a reachable code that can code that will never be reached regardless of the logic flow. The difference, it's not executed, it's never executed. However, the death code is executed and it's dangerous. So what we want to eliminate is death code, not a reachable code in the beginning, but the death code, it's much more dangerous. Now, the death code, here is a good example. We have a function true, we have index and y, and then return a, and a, it's equal one here. And before we have a equal x plus y, and later re-assign one to a. So it doesn't matter what value we pass, a will always be one. So this is death code. This over here, red, is an example of death code, because it will never be, despite the fact that it's executed, the result will never change between one and this function. So it's a waste of CPU cycles and performance. So with the profile kind of optimization, now compiler knows, hey, you know, actually, if this function is highly executed, and I can figure out that our codes that it will, despite the fact that I executed will never change the result based on the training that I have, I'm just going to remove that. Okay. So it's very interesting that death code elimination, it's being performed. There is another flag that you can actually exercise that is not based on profile kind of optimization, which is FDCE. It's the death code elimination for profile kind of optimization. It's similar to this one, but with runtime information, this one only gets the death code elimination by PGO actually knows that this is a waste of CPU, right? Now, next steps and real example where to use it. If the application behaves something important you have in your mind and say, hey, this is magic. I'm going to use it most of the time. Well, be careful. If the application behaves differently for different datasets, it's possible to have a performance regression. We have had examples where we have executed one benchmark and then we append another benchmark, another one, and surprise, performance is worse than the original. Why? Because we're trying that the compiler gets multiple paths and the compiler decreases. Hey, you first let me know that the condition was always true and then condition was false. I don't know at this point. So the point with what is going to be the common scenario that it's really close to the application, how the application should behave when it's in print production, right? For large applications that are run frequently, it is observable that PGOs can provide, can prove to be a significant source of performance. So example of that is Python. I don't really provide these options. So for Python, it goes in terms of developing very yet and how to use more technology to compiler. And you can compile Python by yourself and put it into your path. And you can file with Python, compile your flags, enable optimization, and make profile OPT and SMTP flags. This profile dash OPT, compile the Python service code into again, path using PGO. So inside this make file, you will see that the three steps that we saw before, which are compile instrumentation, profile execution, and compile optimization. Sure, the time that your Python is going to be taken to compile is going to increase because we are actually running a benchmark. What we did in Clear was modify the very simple flag in a variable, sorry, and define what is going to be the training model that we want to optimize for. So I encourage you that if you want to optimize your Python, select before in that patch what training model that you want to use so that you will be optimizing for your application. And the steps are going to be very simple. Build, run the benchmark, and recompile. That is what happens inside the make profile OPT. The next thing is something new. Be the dynamic range of big floats extreme. It's created that the floating bits, floating point 16, a little bit of history. Floating be float 16. It's going to have one bit for sign, eight bits for exponent, and seven bits for the fraction. The float 32 that we are used to when we have a long float number, it's going to have one sign, one bit for sign, eight bit for the exponent, and 23 more for the fraction that we want to use. In the history, people said I don't need that much precision. I'm going to split the registry of the floating point for just using 16 bits in terms of 32. Be float 16, it's a range that changes because before for float 16, it was using five bits and 10 bits. Now it's going to be using eight bits and seven bits. Now, the float 16 range is used for things like radians that can outside the dynamic for machine learning, and it's better, but float 16. It requires lots of scaling, but be float 16 can represent source grading straightforward. In addition to that, something you can use be float 16 format to accurately represent all the integers from minus 256 to 256, which means that you can encode integer A in float 16 without lose of accuracy, which is a good idea. So Cooper Lake, this new platform that it's coming in the compiler with MRG, Cooper Lake, enable these kinds of things with three different instructions. Now, my kind of instructions we have, it's split it into two kind of operation on the ISA. One is going to be for FMA, fusing application addition of two be float 16 input operands, and the other one will be conversion between floating point 32 and be float 16, because it's important. There might be the case that your application is expecting be floating point 32, and you want to perform actually the instruction on hardware with be float 16. Well, on the Lisa Pintel ABX 12, be float 16 vectoral network instruction includes these three instructions, which is bct need to be float 16. As you can see, it says two be float 16, two be float 16, and it's going to be two precision single or precision single, right? And this one to precision single means because it's doing the conversion of two packet single data, two one packet data data, two packet single data, two be float 16, and here is converting packet single data to be float 16. There's the reason of these accounting, and it's a kind of conversion. On the last one, it's be float 16 PS, it's the dot product of be float 16 pairs accumulating into package single precision, right? So, remember, the application addition is the core instruction for matrix multiplication, that you can go and take two elements, multiply them, and then add them to the accumulation that was before into the third element. So, it's going to receive three elements. All this instruction could be performed in a registry of 128 bits, 256 bits, and 512 bit nodes. So, software developers can define the level that they prefer, and they use that they prefer. They didn't want to say, hey, I want to use all the full 512 register. I want to use, which is a CETA MM register. I want to use a much more shorter register on XMM or YMM. It's okay for them. As long as it's inside a Cooper Lake platform, because a Cooper Lake platform is the only one that support these instructions. FMA with be float 16 is going to take as an input the be float 16 serves one and serves two. And the source destination is going to be a floating point 32. Do the multiplication and addition in one single operation. And of course, number of cycle will be less than if you do that separately in addition and then multiplication, moving the things from a register to registry. It's way much more expensive in terms of performance and power actually execution you want to use. This unit takes two be float 16 values and multiply and adds them, and it will be extended to floating point 32 numbers with the lower 16 bits to zero. The be float 16 multiplication is performing without loss of precision that is important. It resolves passive to the general floating point 32 later with a form of settings, right? So in the end, you will have the source destination have a floating point 32, and that is a cool because you actually have a good precision by exercising the be float 16. Example in code, you can click here for a full example of repositories I have. It's going to have, how do I use this instruction in my coding C? Well, the good thing is that we have intrinsics. So in intrinsics, it's translated to CBTNAPS, PBH, and then you pass the register that you want to convert, or with the two registries that you want to convert also, convert packet of single position 32 bits, floating point elements in two vectors AMB to packet be float 16, floating point and the store the resource in single vector destination, right? And the last one, the float, first multiplication addition that we saw, we have AMB and source, and it's going to be doing the multiplication of AMB and addition to source. Now, how does it look in terms of a demo? Taking the last one, we're going to multiply 8 times B and then add back to A and if AMB is going to be 10 and 6, it's going to be 10 multiplied by 6 and then add that plus 8. And as you can see in the result, we have 70, which is the result of 10 times 6, which is 16, plus 10, it's going to be 70. So it works. It actually works the instructions that we want to perform with the float 16. How do I manage to move to a new tool change in these extremely rapid world that requesting super fast production in two, three weeks and old containers, cloud, and super, well, the recommendation that I have to you is take it easy, take a breath. Moving from one compiler to another, it's definitely not something that you can take as a joke and say, yeah, that morning I'm going to do it in one hour. No, take it easy, be very conscious about what you're going to do because it could affect you a lot in future problems. So, but if you manage correctly, it could go as straightforward and enjoy all the benefits of the new tool change. First thing that you want, you need to do is build the new GCC. In this case, we're going to focus through the compiler. It's a different story for Tillip C, but we'll focus for now just for the demo. Download the terrible from wherever you want. If you say you want to download that version, good for you. You want to use GCC9, GCC10, GCC8. According to the version you want to go. Then download the prerequisites. Something very interesting about GCC is that they always have a form to go and dash country download from requisites. It's very interesting. Go and check what they do and actually install things you need to compile. It's not that many. You don't believe it's going to be your computer with garbage now. Create a build directory. We're going to get out from the repository, from the inside of the repository, one step back, create a GCC build or whatever you want. Go back into the GCC build. And then start first to configure, make, and make install. Now, here comes the tricky part. Confir will require some specific flags for your consideration that with my personal story, I was stepping my head into the wall and saying, why am I still compiling? Why am I still compiling? Because I was missing some of these important things.  What am I missing? Here is the receipt that worked for me that I thought that works for you. The source code of the business script, it's there in my personal YouTube repository. And it's very simple. I'm just going to explain a bit. So we specify a prefix. Where do you want to install your new GCC, right? You want to install just the test in the middle in user log car or you define your prefix. Enable share. It's for sure mandatory. We live in a shared world. It's very rare that you have a static world where all the drivers need to be compiled statically. You need to be shared and loaded dynamically. So that's for sure. Enable system seed leave. This is important because in terms of performance, it will help you to improve the compression size. And if you think that your system, it's way much more in terms of seed leave, it has better performance than the one that it's loaded with GCC. Go ahead and set with system seed leave because it will improve the performance quite a bit. Enable the kind of threats. As we know, we have different kind of threats formats. The POSIX is the most much more user one. So this is the one that I use in normal machine. So you have a specific needs. In the documentation of enable threats for configuring the seed, you will find all the possible frustration that you can use. For the ethics, it's when you clean out the function and how do you clean up problems with the memory. Enable collocate, continue. Again, there are multiple versions. For us, it's going to be the mandatory or recommended. Enable language. These will save you a lot of time. You just need C++4 trend. That's good enough. If you don't need any other thing else, for all the language that the GNUD compiler collection, that's the reason why it's called GCC GNUD compiler collection, because in the beginning it was just for C, now it was just for C++4 trend goal and other things. So I highly recommend that you do not put here all and specify straightforward which one you need. And after that, just go make and make install. We're going to go into the install. Here are some examples or description about just for the record about what does each one of these one do. And again, also, another one that you want to put over here, it's disable multilip. Disable multilip, it's very important. This parameter ensures that they are created for the specific architecture. This was the one that I was bumping my head because you will see an error, something that say, hey, compiler bill fails with fatal error, you need to stop 32.h not to fail directly. If you're like me in a 64-bit system, it's supposed to have the libc that you want to compile. So remember, the compiler will require libraries to do it and those libraries are going to be in GNUDC. So if you are asking, you don't disable multilip or disable multiart, it will just go and bill for multiple architecture and for multiple libraries definition. So we'll bill for 32 and 64. And when it goes and bill for 32 and say, I don't have the libraries for 32 bits and it's going to fail horrible. So please disable multilip or disable multiart, also highly recommend that all the descriptions, it's put it there. So it's the one that I use and disable both. So if it works for you, I'm happy to share. Now that I have my GCC, what I do is I put into, in my personal experience, what we have here, clear, at least it's, we use Mock and we use Koji. So you can use other options if you're using Davian or Suze or according to your architecture and your bill system up to you. But the idea is you have a new compiler. And what you have to do is compile all the minimum packages to create a new image and say, okay, I'm going to grab, now I'm going to grab the new compiler, the source code of the compiler. Does it compile, okay, with the new compiler? Yes, okay. So I'm going to put that in my new repo, my local repo. I'm going to tell my Mock and say, hey, use please this one. Mock's going to tell me, hey, do I have a new version of the compiler? Yes, I'm going to use it. Okay. So in this one is redundant, but it's going to happen with the kernel, gdpc, tcl, spec, encorses, bash, or utl, getex, rep, gc, and formake, pack, grow, set, and tar. Another important ones that you might think in the beginning that it's useful. This list is the minimal package to build a Linux system taking from the instrument scratch, which is a great source. And I just added system D because you know, system D is important to rebuild. And once you start to rebuild, of course, when you rebuild, you're going to need sometimes bash, getex, rep. Mock is going to take from the old one, all packages. The idea is that in the end, you grow that much, this local repo, that it's similar to this one. And when you build a new thing like hello world, or a test case, it's going to go and grab instead of from the old packages, the new packages, because the version is going to be changing in this part when you upgrade your build system, try to upgrade the version, so that Mock takes the latest one and compile with the new packages here. In the end, if there is a niche and does not compile, okay, well, it's time to debug. What happened a few weeks ago, we have by ethanol common many mistakes. We have to go grab the patch, fix it, or apply ethanol common, F common, and keep moving. But in the end, it was the written file of the minimum. What are the minimum systems that you need to rebuild? The recommendation is to rebuild the full distro. In these terms, however, if you want to build your application statically with new features for GCC, you don't have to, of course, build the full stop, but be cautious about future problems of my health. So it's not a role you have to, but it's recommended that you build as much packages you're going to be using in this part. What can I ask for help? If you are in a lot of problems, top of your head, GCC provides a porting to GCC documentation. Go and check. It's very well documented. The people and maintainers have figured out there is an issue with their new things. Go and post how to do the porting to the new GCC. GCC held mail needs. There are specific mail needs where people ask and ask and ask, and they get pretty good answers about how to fix the issue. GCC mail needs for packaging problems, and GCC also mentioned that they have a new mail needs for the package problem. So if there is an issue, they can post it over there into the mail needs. In summary, the tool chain is simply tool to build software, compile or assemble a link, your libraries, and a few useful utilities, and that was taken actually from entering from the position of what is a tool chain. The answer is no. It's not entirely true. Actually, the tool chain is a set of optimized tools to build better software. It's like in this picture, we have a lot of tools that are optimized to build better software for you. We are in the tool chain's team. Our goal is to create you tools that help you to create better software with better performance, with higher security, with better code with less errors for your end user. We are happy when you, as a community, success with our tools that we create for you. So let use it and have fun with this. Thank you so much. Have a great day and now we are open for any question. Thank you.


The end of every revolution is a change and revolutions have changed human life since antiquity. From the invention of the written script to the abacus-driven number games, from the beginnings of telecommunication to the electronic technologies of yesterday, every revolution led to some progress and change. Until we reached a revolution that redefined human life in a radically new way. Although the revolution was based on special machines called computers, it is only in recent years that computers have developed the ability to affect this radical change. The IT revolution as this revolution is currently known as has grown in a flash to affect virtually all aspects of our lives. From telecommunication to transportation, from education to surgery, from governance to banking, all kinds of activities are today embedded with information technology, a technology that has opened up a host of other exciting possibilities. This new reality is creating new centers of activity and power. It is names like these that have directed the course of IT revolution and changed the fortunes of many developing as well as developed economies. Nations rich in human resource and technology from different corners of the globe are riding the crest of this revolution to create a new digital destiny for the rest of the mankind. The undisputed leader on the list of such countries is India. There is not a single organization in the world which does not look to India for that knowledge capital. Indian professionals today service some of the most demanding international clients and have the ability to take up the most challenging assignments. There are good reasons why Indian professionals are international favorites, offering comprehensive servicing and technical abilities at competitive costs. These professionals also deliver quality on time. The Indian IT professionals are some of the best in the world. You have some of the top educational institutions in the world here in India, plus many Indians have been educated in fine institutions in the United States and other countries around the world. I would rate the Indian IT professional as better than the best worldwide. That's because 70% of all quality certifications given the world over have been given to Indians or Indian companies. Many far-sighted industrial trade and fiscal policies introduced by the Government of India have well complemented the educational system in making India more competitive and advanced in the field of IT. The three economic measures which had a major impact on the software industry are the first one being liberalization of Indian industry starting 91 with the specific things like free pricing of shares. The second one I would like to talk about is forming the electronic export processing zones and software technology parks. And the last one I would emphasize is zero import duty for importing software. The testimony to some of these new initiatives taken by the Government is the fact that the way the entire software industry in India has grown and super-grown. Even as you view this film, this new revolution is catharting pace through the length and breadth of India in unthinkable ways. It's we Indians who are spearheading this movement globally. So, can we speak of India as the digital destination of tomorrow? Yes, certainly a digital destination, a bigger market and a bigger laboratory.


Gold's haven appeal burnished by drumbeat of growth warnings. Gold could be heading for another rally, with warnings over a global economic slowdown paving the way for a fresh push toward $2,000 an ounce. A potent mix of decades-high inflation, geopolitical turmoil and growing talk of recession should be bullish for the traditional haven, according to speakers interviewed ahead of a precious metals conference in Singapore this week. Bullion is down about 10 percent from a peak in mid-March, after the concerns that Russia's invasion of Ukraine might sprawl into a broader conflict dissipated. But with top banking executives now warning about fresh economic shocks, the situation is ripe for stagflation, which would be bullish for gold. After decades of massive deficit spending and ultra-loose monetary policies, we are heading toward a period of stagflation, said Gregor Gregerson, founder of Silver Bullion Private in this kind of environment, safe haven assets like physical gold and silver are some of the best things you can own. Gregerson predicts gold and silver could rise to around $2,000 an ounce and $26 an ounce respectively by the end of the year, and could exceed those levels should there be unexpected black swan events. On Tuesday, spot gold edged down 0.1 percent to $1,840 an ounce at 7.21 a.m. in London. The Bloomberg Dollar Spot Index added 0.4 percent. Silver declined to about $21.90 an ounce and platinum fell, while Palladium gained. According to Rona O'Connell, head of market analysis for regions including Asia at Stonex Group, bullion prices are facing resistance at $1,930 an ounce, but if that level is cleared then $2,000 could be reached, propelled by technical trading. The economic and geopolitical fundamentals are more supportive of gold than they would be bearish, O'Connell said in an interview before the conference. Even as the specter of higher rates and rising bond yields weighs on the non-interest bearing precious metal, the Federal Reserve's aggressive tightening stance has also triggered recession fears, particularly in the U.S. The gold price decline in recent months has come as the U.S. central bank started its hiking cycle, when officials raised rates for the first time since 2018 and signaled increases at all six remaining meetings this year. Goldman Sachs Group Inc. President John Waldron and J.P. Morgan Chase and company's chief executive officer Jamie Dimmond last week both warned of shocks to the economy amid challenges including risks from inflation and the fallout from the war in Europe. These uncertainties could well see more investors seeking a store of value. Hawkesh Fed Still, the Hawkesh Fed, higher real rates, and a relatively robust U.S. dollar backdrop are among factors weighing on bullion, said Citigroup Inc., which cut its three-month gold point price target by $300 to $1,825. The bank has kept its six-to-12-month forecast at $1,900, with elevated asset market volatility and stagflation tail-head is likely underpinning support at around $1,800, according to a June 1 report. Citigroup shifted its base case outlook to neutral for the rest of this quarter. Metal's focus forecast gold could drop to a low of $1,670 as inflation eases over the rest of the year, and real rates and yields rise. Still, bullion will massively outperform U.S. equities as well as high-yield bonds, and possibly even investment-grade bonds in 2022, Necoscovelis, managing director at the London-based consultancy, said at the conference. There are other signs of demand. In April, Golden Yen surged to a record on the back of the currency's weakness. While that prompted some selling in Japan by those who had accumulated bullion over the years to take profit, there was also a wave of buying by the younger generation seeking a hedge against inflation, said Bruce Aikmizu, representative director of the Japan Bullion Market Association. Although Golden Yen is still at very high levels, we see very steady buying interest, Aikmizu said before an outlook panel at the conference. Prices will likely continue to trade in the $1,800 to $1,900 range over the next few months and may potentially end the year at $1,950, he added. Physical consumption could be supportive. The Perth Mint has seen strong physical demand for gold and silver-minted bars and coins this year, especially in the U.S., according to Cameron Alexander, manager of business development and industry research at Australia's largest precious metals refinery. The immediate outlook remains robust but it is difficult to predict whether the elevated level of demand we have seen recently can continue into the second half, said Alexander, who's also a speaker at the conference. The recent surge in inflation numbers being printed in Europe and the U.S. would suggest that demand for precious metals may continue for some time yet.


Ukrainian Army will take revenge on Russia for Uman with American Zuni. The Ukrainian forces are already armed with the American Zuni missiles, the transfer of which the United States announced in January. A frame with a suspension on the Su-25 was shown on Telegram by the commander of the Air Force of the Armed Forces of Ukraine, Nikolai Oleshuk. Burning Hell non-humans, Oleshuk wrote, In turn, military political observer Oleksandr Kovalenko explained the enemy's hysteria about this. Of course, they immediately tried to start talking about the fact that the Ukrainians had run out of unguided aircraft missiles, so they use American ones. As Kovalenko noted, the 122mm Zuni rocket has recently been no longer unguided. Since 2011, they have been produced with laser guidance and are higher precision weapons. This development has been carried out since 2007 and is similar to the updated advanced precision kill weapon system for the Hydra 70, the expert said. Kovalenko compared Zuni with high precision aviation BM-21 grad. The Zuni laser-guided missile consists of a new WGU F-58 stroke B, control and guidance section that is attached to the front of the Zuni unguided missile and warhead. The laser-guided Zuni missile is compatible with any aircraft equipped with the LAU-10 launcher. Such missiles successfully hit both stationary and moving targets. On April 28, Russian invaders attacked Ukraine from TU-95 strategic aircraft from the Caspian Sea region. Defense forces that day destroyed 21 of 23 Kh-101 stroke Kh-555 cruise missiles as well as two operational tactical UAVs. In Uman, one of the rockets hit a nine-story residential building as a result of which an entire entrance was practically destroyed. As a result of a Russian strike on a high-rise building in Uman, 23 people were killed. The bodies of 22 were pulled out from under the rubble. Another person died in the hospital.


This is the SF Productions podcast network Cutler again from the pop culture bunker. I'm Mindy and I'm Mark You can check out our audio podcast how I got my way free comics on iTunes or in our website SF podcast network comm So for many in our audience or our potential audience those actually out there Online equals the internet or maybe just Facebook even right But for some of us older folks we remember an online world with no simple browser to access Yes My first online experience happened around 1978 and involved a friend whose dad worked for what became AT&T Mm-hmm. He had this suitcase like box with a keyboard a small printer and an acoustic coupler in it And tell me Mark What is an acoustic coupler? Back before phone deregulation you couldn't just plug a phone into the wall yourself. Yes You had to lease a phone and it used this weird four prong plug. Yes A coupler allowed you to plug the handset and they were all the same back then so there was no standardization issue Into cups that would send the audio signals back and forth. You just plug it in. Yes So we played tic-tac-toe by typing in a code We typed in a code and then a printout would occur of the whole screen There's no there's no display It's just the printer and then we would type another code in and so on and so forth And you were actually talking to somebody over the acoustic coupler right with them, right? Not a very green solution because it wasted huge amount of paper you would print a new piece of paper, right? So what was your first experience? Well, you know, I I just hardly even remember boy It was probably something along the lines of Getting on the source or something right dad, right? I I Because your dad was in my dad was really into computers you probably You know when I was a freshman in high school or even before that he had a home computer and And he well we may talk about this later, but he was one of those first guys to get on one of these You know what we're basically service providers right to get Online bulletin board kind of things right so you know it's very interesting, but you know it was the whole modem Hook in the phone kind of thing, so But I probably really don't remember the first time. I mean I Was trying to remember my first email address and I don't even remember that well Yeah, well in the early 80s I got an Atari 1200 XL computer and it was hard to justify a computer back then yes because you could play games Maybe you could write programming or you could enter your mom's recipes, which was always the use case they push forward It's like yeah, what you're gonna do is you're gonna type in all your mom's recipes And then when she needs one all she has to do is fire up the computer in her kitchen And it takes about 15 20 minutes rather than opening the recipe box Now my mom still has a whole bunch of recipes that were printed out on a dot matrix But then I bought a 300 bod modem what's bod well That's the term for the number of bits that could be sent in a second So at that point I joined comp you serve and which was one of these several online firms And comp you serve was actually sort of Stepchild of the source which I mentioned earlier right and and so even before comp you serve There were these bulletin boards online you could log directly into the bulletin board So some guy in their house yeah Would have their phone hooked up to a computer right and most of the time these guys had dedicated phone lines for it Because they wanted these bulletin boards up And so you would log in to their bulletin board and just post messages on their computer it was Interesting time right because with that you again the guy may have only had one phone line So only one person to be connecting at any one time.  Yeah, like you would now right right so The online services that went out were mostly created from these business-centric companies They used unused capacity of their time-share system, right? It was all text-based. It was all proprietary Which mean a comp you serve user couldn't interact with a prodigy or a genie or a Delphi user, right? So you had to pay based on your usage a meter was running based on how long you're online Right, so you did what you wanted to do and you signed off quickly because the meter was running And it's sort of in a way like your cell phone data plan now. Yeah, except your data was much more limited Yes, and and there is obviously less to do then right yeah And so to sign on to one of these services all you had to do was Make sure no one else in the house was using the phone right unless you had a dedicated line, which hardly anybody did If we had four girls Yeah, I guess you had to If someone else picked up the phone while you were online you would generally be disconnected But then you if they did to you would hear that noise. Yeah, you can do the noise better than Yeah, so if you then look up a local call-in number if one was available in a physical book, yes You would then fire up your computer and your modem you would type in commands to call the number You would hear something like this And then you would sign in with your account Comp you serve was generally a five-digit number a comma and then a four-digit number And that's all there was to it So they had things like forums kind of like groups today you had online newspapers which cost more to access than just going and getting the paper newspaper Games you could check your stocks. There was email, but only other other users of your service, right? Shopping whether all the things you have websites and apps for today But most of it as you said was text-based. It was very very text-based And if you think about it really I'm at this point on your home computer, too You're barely getting into windows right and into a graphical user interface at all. Yeah, so you're used to that Absolutely. Yeah, now one point I switched over to genie for a while, which was general electric service But I think they were cheaper, but I came back to copy-serve In fact when I was doing the public access TV show in the 90s vast wasteland My email address had a copy-serve suffix initially. Yeah, well, I think part of that too was by that time I was was I working for copy-serve? I think that was before that. Okay As you mentioned the bulletin board systems or bbs's so This is also where the the earliest forms of copyright infringement happened. Yes, I downloaded a TNG next-generation Star Trek episode guide from one of them. This is a bound print out Yeah, because that's the only way you could get it I mean it was available on the internet you could look at it Yeah, but really it was something that you'd have to probably print out to look at so and as times went on The services move from text to more graphics base and that's as as your Operating systems developed as well, you know your your windows and your and your Mac so then America online arrived which became compusers main competitor and later their buyer. Yeah, and at this point in time You also have to keep in mind that that If you were on compu-serve You were on compu-serve you didn't go beyond compu-serve, right? You logged into compu-serve and all the services were provided by they were a provider a content provider Absolutely, they were not a network access point, right? And so AOL came and so the big the big thing there was you know Are we offering what compu-serve is offering is are we offering what AOL is offering? We all have to offer those same services. Yeah, it became an arms race. Yes, and that's why they moved from a Metered rate to X number of hours per month for a set cost Which kept going up as the interest increased and more people jumped on yes And this started the constant floppies and then CDs arriving in the mail. Yeah Yeah, so you know you would get your your compu-serve or your AOL floppy to sign up Which actually made it a lot easier to sign up to because as you're saying looking up the numbers before supposedly these Starter discs came you logged in with an 800 number and it would automatically then turn you over to your local number Exactly that also caused problems And then a lot of people ended up using especially the CDs for crafting Because there were so many coming in the mail. Yes So then the internet and the web which is not the same thing No, not at all brought this era to an end, right? So the internet happened basically when the services starting getting together and hooking them up, right? Yeah Yeah, so the internet is everything. Yeah Yeah, and the services tried to bring a form of the web in while keeping that walled garden going Yes, but it didn't last very long because people like no I want the internet and people just ended up just using their service as an entry point to get to leave the garden, right? And you know, it's kind of funny because a lot of people I worked at compu-serve right during that end phase basically from I Worked there when Before the web started developing up until about the time that it was absorbed into AOL Right and there would be people who would who would call up and and say they want to get on the internet But they would have no idea what the internet was.  Yeah, well, I know I loaded the internet on my computer and then but I want to do this yes And it and there are just all kinds of weird and funny things that went on so I remember Like I said when the web came in and that's when people really wanted to start getting off of the compu-serve services Right online, right? And I remember people talking about the eBay Going to the eBay and And it was a big thing among you know in the bullpen where where we were working and everything You know, I remember the eBay coming up and was it Jenny McCarthy who had that web cam? Yeah, Jenny cam Jenny cam. I don't think it was her. I think it was somebody else. Some other Jenny I don't know but but yeah, so that was a big thing that everybody talked about But everybody who would call in on our lines because I was in tech support would be like Well, how do I get on the internet and you would try to tell these people things and and you know It's like what you you know all you have to do. Well, what do I do when I get there? Yeah? Yeah, well And it's hard to imagine now that there was a time when people didn't know but the internet would do right so Trying to think of some other things like those discs that you put in and load it up Sometimes those people would get on and it wouldn't change the number to the right number And they'd either end up with huge long-distance charges for calling the wrong number or huge out-of-network Basically charges where they were charging a number that that time them people would end up with hundreds and hundreds of dollars worth of bills And we would just write them off. Yeah the most part Yeah, and the other fun thing is like when people would call up and they would say, you know What's this charge on my credit card? And I think that you know, there were a number of people who had the source right which we talked about Yeah, and they had it on their credit card for like 20 years Yes, and they never they never used it right signed up for it one time and they were just now realizing what it was They're like, can I get a refund? It's the it's the health club of the tech industry You join up you forget you're on it and you pay a fortune and you're like, I'm gonna get back to that pretty soon Right, and you know, there's still some vestiges of that old internet out there Yeah, some of the things like with file transfer protocol FTP sites it used to be that you couldn't send large files through your email or you didn't have things like drop-bots or anything Yeah, so they would set up these file transfer protocols that you could use to send these large files places and There were actually special sites set up for that and special things and you always had to type it in with code and I was trying to remember what the name of the old bulletin board things. There was a You know we're and and I still occasionally see the remnants of them But I can't remember the name of it is but it was basically and basically it's sort of like What reddit is now? Yeah, these bulletin board. Yeah, these under literally under the radar. Yeah things went on Yeah, and people would exchange the files like this one and things Sometimes I miss those days. Yeah but Wild West yes, yes, so to speak so But now we just have our Gmail addresses with no. Yeah, no specialness to them But I guess a point of fact would be, you know, how old is your Gmail address and right that? Tells you how long you've been on the internet, right? Yeah, pretty much because I got I got an invitation only Gmail address Way back when you know Well, obviously we got a lot to talk about I could talk about this forever, but mark is telling me to shut up You should check out our audio podcast how I got my wife to read comics on iTunes or on our website as a podcast network From the pop culture bunker. I'm indy and I'm mark. Thanks for watching. Bye. Bye


Hey there, Chad Bons here for High University Libraries. If you're looking for S&P stock reports, this video is going to show you how to find those reports and invest text. So here you go. To get to invest text from Mergin Online, you're going to click on the Invest Text tab. And then I'm going to search for the ticker for Activision, ATVI as a ticker. You could also search by company name and just add that to my criteria. I could also click Search, but I'm looking for particular publications by S&P. And it's kind of hidden. They're actually under an organization called CFRA, which is the CFRA Research. And once we do that, we click Search, and it'll just search for that contributor and that ticker. And so here we find CFRA Research. If we go to the next page, we can see that by clicking on an older report like this, the contributor is actually a standard report, standard report stock report. That was the old name. The new name under Mergin Online for the newer reports is CFRA. So now we found those reports. That's good. Let's just say we want to find other equity or stock reports for Activision that aren't just S&P reports. We can go down and search for the ticker style, ticker name, and then the report style. And click on the report list here and just choose Company Equity Reports. And once we do that, we're just going to find reports from other equity firms in addition to S&P or CFRA that talk about Activision. So here we have stuff from Global Data, Piper Jaffray, Market Line, Wedbush, other places like that. That would be a great place to find additional equity reports and brokerage reports and analysis for your particular company. Hope this video helped you find those stock reports you need. Best of luck with your research. Take care.


My name is Li, I'm from China and I have been here for half a year. I'm here starting your Math Emeralds as a wake-up scholar. It has been two months since our first meeting. She really helped me a lot. Can you help me about all the English stuff? Like pronouns, like some words. I just cannot use it correctly in English words. Yeah, and we also tell each other about little cultural nuances, both Chinese and American, and laugh at how ridiculous we both sound. Interesting. It's pretty cool. So we meet twice a week and I look forward to it. I don't have very much experience teaching and I'm not an English major. But one of the best things is just the chance to have conversations. And then the grammar and the slang and these cultural aspects all just sort of come together when you just have these organic conversations. And it's pretty cool that it's working out. And it's turning out to be as fun and easy as it is. People are so nice here. And you can not only study English but also making different friends, meeting different people. I think it's very good. It's a very good experience.


YouTube team keeping clean. Listen to this, listen to this. It's engraving here with another video and in this video, I'm here to share my post game thoughts from the game that we watched, the first pre-season game between the Ravens and the Titans. I feel real good to say that. I feel really, really good to say that. Haven't said that in a long time. Haven't said that ever since the Steelers Week 18 game. So anyway, it was nice, man. I appreciate everybody that came out to the stream last night. Thank you, thank you, thank you, thank you, thank you. Thank you, for real. Thank you for spending that three and a half hours with us watching the game. I had a lot of fun. And what was crazy was that leading up to the pre-season game, I knew it was a pre-season game. And I was like, all right, cool, first pre-season game. Yeah, we gonna live stream, all right, cool, yeah, that's fine. But it didn't really hit me yet. The excitement didn't hit me yet until we went live. Right when we went live, it was like, oh, we back. We like, we back for real. Football is back. So it was just, it was super exciting, a lot of fun. So thank you to everybody that came through and went through the technical difficulties, because my camera, this camera that we're using right now, it said the battery got exhausted, it just shut off on me. But y'all still stayed with the stream while we end up hooking up a webcam. But anyway, thank you all. I appreciate y'all like so much for real, man. Y'all don't even know. Now, get into this game. Like, the Ravens 121 pre-season games in a row, that's cool, that's impressive. But honestly, I wasn't even like that. I was whatever about that. I was just very happy to see some people shining last night. But first let's talk about the quarterbacks. Tyler Huntley, I think he only missed like, what, two passes, something like that. Even though most of his passes only went for like two yards. But no, Tyler Huntley, he was doing his thing. Same Tyler Huntley, he would show up the only, only little issue I saw was just some, there was a deep pass to Benjamin Victor. And hey, it's not a big deal.  So you can't really, in this pre-season, it's the first live action game. So you can't really judge him like based off of one deep throw that he threw. Cause I think it was the only deep throw that he threw to Benjamin Victor where it just, he just sailed it a little bit too much. A little bit too much. But that was it. I mean, it's pre-season.  It's the first pre-season game. The expectation should not be super high for the first pre-season game. The first time they going against somebody. But anyway, so Tyler Huntley did his thing. My favorite play from Tyler Hunt, well, two of my favorite plays. One of them was obviously the touchdown of somebody that we gonna talk about in a little minute. But my other favorite play from Tyler Huntley. It was, I think it was third and long, maybe like third and 12, something like that. And Raven saw a lot of third and 12s. But anyway, it was third and long and he snapped the ball. Right when he snapped the ball, he had pressure in his face. I said, oh, if you were Raven's quarterback, you gotta be used to that. You gotta be used to pressure in your face immediately. Hopefully not this year, but the last year, yeah, year before that. Anyway, Tyler Huntley, he snapped the ball, pressure was in his face right away, made a super quick decision through it to Isaiah Likely, who we gonna talk about in a little bit too. Through it to Isaiah Likely, Isaiah Likely called it. And it just, it was the quick decision making that I just really appreciated from Tyler Huntley on that play. So he did his thing. He looked comfortable. He was giving different guys a chance and hey, good job Tyler Huntley. Anthony Brown, undrafted rookie from Oregon. He looked good too. He looked, he came in there, looked comfortable and whatnot. So hold up now. Hold up, this brother might be on or something there. So yeah, he came in there. He looked fine too. And I know it's just the first pre-season game. So we can't look too into it, but by the way that the order that they played in, I wonder if Anthony Brown is above on a depth chart over Huntley, not Huntley, but Huntley. So something to keep an eye on.  And hopefully Lamar can end up being QB number one. If you know, you know. Hopefully he changed that Jersey number to number one. But with, based off of last night, I will say that the practice squad quarterback would be Anthony Brown. But we'll see. We'll see, we still got two games left and he's for sure gonna get a good amount of playing time in those games. So we'll see how it goes. And then, yeah, Huntley came out later on and he, man, it was a play where he got like walloped. He got sacked, fumbled. And I saw, at first I was like, I said, uh-oh, he fumbled. Well, I guess that's that. It was nice knowing you. You know how Hobbs feels, boy, about them fumbles, boy. Yeah, y'all know. But then they showed the replay and I saw the offensive lineman that got beat. And I was thinking like, oh man, but I wasn't sure if he was at guard or he was at left tackle. Cause I just saw the part of the replay where he just got beat. I just saw him like trying to push the defensive lineman out of the way, but it ain't work. So it's okay though. It's okay, he got time, he got time, he got time. But so that was the quarterback's running backs. Justice Hill, who that was somebody that I was very excited to see last night. He did his thing, broke off some nice runs. And Justice Hill, with him, he got this like crazy like, he got this underrated like strength power to him. Cause he's so small, but he's so quick, but he like bounce off of somebody breaking the tackle and catch his balance real quick and take off. So I was happy to see Justice Hill doing good. Tyler Beatty, he looked good too. They had him at kick return as well. And this is exactly what I was talking about when they drafted him. And I talked about this in several videos too. I said, I would like to see him as a kick returner. And as a running back too, obviously, but he looked comfortable in both roles. And then there's something to think about too. This was not, I mean, who knows because injuries or injuries, but this is not even Ravens starting offensive line. They had some quality guys out there now, but this is not even the starting offensive line. So that was, that's something to think about. And the runner backs, they look like Mike Davis. He got a nice little touchdown. He looked comfortable.  And then even when Gus Edwards gets back cause it's going to be a process. So Mike Davis, hey, we looking forward to you, my friend, then Corey Clement, he got in there too. Oh man, one play by Corey Clement. I just felt so bad for Anthony Brown. Anthony Brown had pressure in his face. He made somebody move. He made, he made somebody, I mean, he made somebody miss and I made somebody move. Well, I guess he technically didn't make them move, but he made them miss in the process.  He was one of them little Lamar plays, you know them Lamar plays where Lamar would make like 50 people miss.  So I was like, oh, but that's what happened with Anthony Brown. He made all these people miss. Then he threw the ball and Corey Clement dropped it. I was like, oh, I feel so bad for Anthony Brown. But again, it's pre-season. Get all the drops out now. Get all that good. All that stuff out now. It's okay. It's pre-season. So that was the running backs. Now we start tight ends or we'll start with the tight ends first and likely that boy likely, man. Hey, shout out to him because something that we talked about on here and we've talked to other people about it too. Every year with the Ravens and I'm sure with every team really, but we focus on the Ravens, but every year with the Ravens, there's a player, oh man, they killing it in training camp. They doing this, that and a third in training camp. Oh man, they going off in training camp. We hit that every single year and kudos to those players. But a lot of times it's like, all right, when it's when it's game time, hey, that player was killing in training camp. Then we look around like, oh, what happened? Where'd they go? With all that hype, what would that lead to? But Isaiah likely, I love that Isaiah likely, he continued doing what he's been doing and making plays. He was catching the ball when he was open. He was catching the ball on top of people's head. That boy, I said, hold up, is that, is that Lamar Jackson that tight end on that first catch when I said, who, who, who likely, I said, oh my goodness. I loved it, man. I loved it. That boy got some moves, man. I said, hold up now. Likely you like that? I was like, oh, man, come on, man. Let's get it, man. I loved it, loved it. So seeing him continue doing what he's been doing in training camp, seeing that translate to the first pre-season get, and he was involved a lot. I loved it so much, so much. I was so happy to see that. What other tight ends were? Oh, but he did have them, he did have them two holding calls. But at the same time, I was telling my God, JT, I'm like, man, look, likely had the two holding calls. That's cool, but likely trying to tell the Ravens, I'm not out here to block. I'm out here to catch passes. Y'all get a block into somebody. Give it to Nick Boyle, give it to Pat Ricard. Give it to your offensive line. Don't give it to me. I'm not here to block. So I wasn't mad with the holding call. And then the second one was actually really bad. The second one, he actually looked like offensive lineman because he threw that defensive lineman into the ground. I was like, okay, likely. Is that guy likely to get back up? Oh, yeah, I had to throw the little dad joking. All right, no more likely jokes for the rest of the season. Anyway, what other tight ends did anything? I think Josh Oliver might've had a catch, but yeah, that was that. So wide receivers, oh man. Tyler Wallace, I feel bad for him. I'm recording this video right now at 9.59 AM. I mean, we're gonna be here for a while because we still got a lot to talk about and then it's gonna take a real long time to upload. So by the time you see this video, maybe news on Tyler Wallace will come out as far as the severity of his injury. I'm not expecting anything good. I'm bracing for bad news because it's just simply how it goes, man. I hope that we can get good news on him, but I'm not expecting it to be good news. Tyler Wallace, that's the thing in it. It sucks, man, because you hate this for people. I would love if somebody's career got derailed, got held back due to them being a poor player, due to them being a bad player, due to them just not working out. But you hate to see it 50 million times more when stuff gets derailed because of injury.   But again, so hopefully it's nothing long-term, but I'm bracing for the worst. So we'll see what happens with him. He did have, I think, two catches. I think he had two or three catches last night. Now, oh, hold up, what is this?  Okay. All right, sorry. I was just looking at Shamar Bridges' roster spot because it's a lock. Shamar Bridges, who I felt so bad last night. But then I realized, I'm like, man, I've been rooting for this guy. Every time somebody asks me who you think is gonna be the fifth receiver, who you think is gonna be, I keep saying Shamar Bridges. But last night made me really realize I was like, hold up now. One of my guys, I think his name was Last Something on the stream. He was like Duvall. And I said, hold up, man. I know Duvall County, that's Jacksonville. And I said, wait a minute, now. So I looked up where Shamar Bridges was from. Not the HBCU, but where he's actually from. And they said, Jacksonville, Florida. I said, we got a Florida Raven. I should have known by how his dreads are, but still, man, Shamar Bridges, hey, hey, hey, man. Hey, man. Oh, that boy showed out last night. Shout out to Tyler Huntley, because that little fade right in. Oh, that was a beautiful, beautiful throw. Shamar Bridges, beautiful concentration on the catch. That's what I talked about with him. He's smooth with it, man. Shamar Bridges is smooth with it, man. Big six, four, six, five outside receiver. Hey, can he be the one? Can he be what we've been looking? Well, what I've been looking for. Can he be it? Hey, we'll see with time and opportunity. But last night was an amazing start for Shamar Bridges. It was an amazing start. Loved it. He called the deep balls. He called the short passes. He called the touchdown. I love what I saw from him. So shout out to Shamar. Keep on stacking. It's a beautiful thing to see. Makai Poke. He look good too.  He tried to catch a couple people with it. But I love how, especially on his first catch, I think it was Tyler Huntley throwing to him, I forgot. But his first catch through the ball and he didn't just wait for the ball to come to him. No, he went out, reached out and took it out the air. And I love that. And that's so important too. Because if you making a play on the ball as a wide receiver, then you give the defender less chance to make a play on the ball. If you sit there and wait for it, wait for it to come to you, then the defender got a better chance to get their hand in there and pop, knock it out. But if you actually go out and take it, I loved it. I loved it. And he's getting involved a lot too. So he made a name for himself a wide receiver. Based off of last night, and it's just the first game. So we gotta see consistency, obviously. But depending on what happens with Tyler Wallace, both Shamar Bridges and Makai Poke will make the roster. Based off of last night. Based off of last night. So Devin Williams, I think he had one catch, but then he had that fumble at the end, but then they said he was down, but you know, hard ball, hard gun, hard ball gonna remember that.  Oh, okay. All right. He probably wrote it down, probably put his glasses on and wrote it down like, oh, okay, we good, yeah, okay. So we'll see. But yeah, I think that was the only catch that he had. Number 11, Webb. Oh, that was a beautiful deep ball. Beautiful pass. It was Anthony Brown that threw it, but beautiful pass and even better catch. To be concentrating like that, having a defender draped all over you and still come in with the football and you got hit, it's so beautiful, man. It was so nice to see all that stuff last night. Oh, speaking of Rui receivers, they said James Pro Shagun be out for the next couple of weeks. Oh boy. It's like, man, what? But again, this goes back to what I was saying. I kept saying it too. First, because I wanted legitimate weapons for Lamar Jackson and even more weapons for Lamar Jackson. But on top of that, one of the reasons I kept saying that the Raven should add receivers are, hey, what if somebody gets hurt? What if somebody gets hurt? And now we're looking at two of the Raven's top four receivers hurt. Hopefully it won't be anything serious, but we just got to wait and see. Offensive line. Honestly, I really wasn't like glued to the offensive line like that. So I couldn't tell you about anybody specifically, whether they did good, they're bad, anything like that. Now defense, let me make sure we covered everybody on offense. Yeah, yeah, yeah. I think that's pretty much everybody. Defense, Travis Jones. Oh yeah. Oh yeah. Beautiful start. Beautiful way to get everything started to your career. We saw consistent pressure from him. He even got to sack him and Daylan Hayes together. Shout out to Daylan Hayes. Daylan Hayes was getting some pressure off and on last night. So that was good to see. That was real good to see. Cause we've been hearing some rough stuff about him in training camp, but it was nice to see that. Who else? Oh, Michael Pierce. Michael Pierce was out there early on. I was like, oh, okay. All right. I ain't mad at it, but he, and he like, he was back there. He was back around the quarterback. I was like, all right, Michael Pierce. You still got it, huh? Okay. Steven Means, who definitely started off slow, early on in the game. But he showed up, man. He bawled out at, he started, he missed the play. I forgot what the play was that he missed early on. But after that, it was smooth sailing. It was smooth sailing. He got the sack. He kept getting pressure. He was doing this thing. I was like, all right, Steven Means.  But besides that, hey, you doing your thing. Somebody else who it actually went in reverse for was Malik Harrison. Malik Harrison, he started off strong. He started off killing it. He was doing his thing. He was like, all right, Leak, let's get it. But then toward the end of his play, playing time, there was a tackle that he missed. And it went from like being a 10 yard game to being like a 17 or 18, maybe even 20 yard game because of that missed tackle. But it's all good. It's preseason, but preseason, where you want to just work on these things. You want to see where you're at. And you just want to try to fix stuff. Cause it's better now than later, right? Pepe, Pepe, oh man. He had a pick six and he dropped it, but it's okay. That's why he plays defense. But he, they had him, somebody in the stream last night was like, oh, this going to be the 2022 version of Brandon Stevens, the way the Ravens just have him doing so much different stuff. And that's what it was last night. They had him at corner, they had him as safety. They had him at punt return. And at punt return, he looked good. He looked good and he looked comfortable back there. Not everybody can go back there and be comfortable. Not everybody can. I remember they put James Proshay back there and James Proshay, he would catch the ball.  You know, you don't want the ball, you don't want to fumble or anything like that. But James Proshay catch the ball, but he just didn't have that explosiveness back then as a punt returner.  Devon Duvenay, he'll catch it. I mean, he dropped one before, but I think he picked it up though. He ain't lose the phone. He did fumble it, but I mean, he muffed it, but he ain't lose it. But anyway, Devon Duvenay, again, that straight line speed, but he ain't really got no wiggle like that. He got that straight line speed though. So like, remember Chris Moore? Yeah, I remember Chris Moore. Chris Moore straight line speed with no wiggle. But Pepe, he was smooth, man. He was smooth back there. I was like, okay, hold up, man. So it was nice to see that, man. Who else, who else, who else, who else? Kevan Seymour, he struggled, he struggled. And that has been a consistent throughout training camp, and he's been struggling a lot, man. So hopefully they can work with him, fine tune some things, tighten some stuff up, and hopefully that can improve. Daryl Worley, Worley just got signed a couple days ago and ended up getting a pick in his first game. He said, hey, I'm back. I'm back, I'm like really back. I'm like, okay, Worley, we see you. And then a couple of drives later, he ended up giving up a big catch. And that's life in the NFL, life in the NFL is a cornerback. It's tough, it is maybe one of the toughest jobs to do, toughest positions to play.  Because all the rules, they benefit the offense and receivers and whatnot. And I think Raven should take advantage of that. But anyway, yeah, it's tough life as a cornerback. 46, his name is not coming to me right now. But he was solid. He looked like a defensive lineman playing linebacker. But he was making some plays. He's actually the one that tipped the ball up for Geno Stone to make the pick. And Geno Stone was balling last night. Geno Stone was flying around everywhere, tackles in the backfield, almost had a, it probably would have been a pick six cause he jumped the route, but he was just a little too short. He just missed it. And the tight end for the Titans called it, got a couple yards. But Geno Stone was right there, so you see it. Them instincts, man, that's what it's about.  It's so weird. He has a way of being at the right place at the right time to get these instincts. He was doing the same thing last year in the preseason. Right place, right time. So shout out to him, man. He looked good. Tony Jefferson was out there for a little bit off and on. He made a real nice tack on the backfield. And then there was another play. I'm not sure if it was Keevon Seymour fault or Tony Jefferson fault. Cause initially Keevon Seymour, he was, oh yeah, they probably playing zone. So maybe it was a little bit of both. But Keevon Seymour was on the receiver. And then Keevon Seymour sort of dropped off and Tony Jefferson picked him up and the receiver ended up just being wide open. But I don't know what happened there. But it's preseason. It's preseason. So it's okay. The rookie, Kyle Hamilton. He looked apart. He did miss a tackle and ended up leading to a touchdown, but that was Malik Willis. So he ain't too mad at that. That dude Malik Willis, he was doing this thing last night. I love seeing it, man. I loved it. Again, put that pressure on Tana Hill, man. Make them Titans fans upset, man. Put that pressure on Tana Hill. Anyway, Kyle Hamilton, the pursuit is there. That closed down speed is there. I loved it. This dude is so, I didn't realize he was that tall. But that dude looked like, he looked like Terminator, some chasing people down. But I loved it, man. And then of course, he recovered the fumble too. So hey, that awareness, the smarts, they kicking in. And that's what it's about, man. That's what it's about. So you combine smarts with ability and you can make a certified baller. So hopefully Ravens, they get the most of it. And I mean, it's Ravens. It's Ravens. He's the first round pick and a defensive player. So they definitely gonna maximize that talent for sure. For sure. So it was exciting seeing him last night, seeing him out there, seeing him play. And just seeing him do his thing. It was his first game. It was his first game. So I like what I saw from him. I know I heard some people that didn't, hey, that's okay. We all got our own opinions. But I like what I saw from Kyle Hamilton. It was a nice start. Am I missing? Well, I know I'm probably missing plenty of people, but trying to think of anybody else that stood out. Can't think anybody off the top of my head. So, and I mean, there's a lot of space up there. So for me, not to think of anybody off the top of my head, then I must be really blanked out. But anyway, Team Keep It Clean, appreciate y'all. It's nice to be back. Really, really nice to be back. I loved it. It had so much fun last night. Can't wait for the next one. But until then, I'll see y'all later. Let me do one last check right now to see if I missed anything as far as any injury updates. I don't think so. And it is official. No, we didn't. Okay, so we just got to wait and see. We just got to wait and see the update on Tyler Wallace. We'll approach it. We won't get any updates on him until he's back. So they already said, he said one or two weeks or two to three weeks. I think they said two to three weeks. Whatever he said, we just got to wait till he's back. So yeah. Anyway, love y'all. Appreciate y'all. And just like a couple of our receivers all right now, I'm out.


Because I am determined and queen of class communication and self-advocacy for 2014. Do not leave me behind. Just follow me. Do not assume I always need your help. Do ask me if I need your help. Do not put labels on me. Do accept me for who I am. Do not think you know everything about people with disabilities. Do take time to learn about all disabilities.  Do assume I like being who I am. Do not assume that what you think is normal. Do assume no one is normal. Do not hold me to your standards. Do recognize that I live by my own standards. Do not hear me ask it. Do not try to make me fit into your mold. Do let me expand my boundaries. Do not call me by my disability. Do before me by my name. Don't feel sorry for me. Do be kind to me. Because you like me who I am. Do not show hate, show love.  Do expect I will make my own decisions. Do not step when you look at me. Do grip me and say hello. Do not tell me there is a limit to what I can do. Do let me show you my full potential. Do not speak doubt to me. To be understanding and help me when I ask for assistance. Do not pass judgment. Do respect me for who I am. Do not deny me an opportunity. Do show me how I can succeed. Do not assume I cannot learn. Do let me show you how smart I really am. Do not doubt me. Do trust I can. Do not call me less than capable.  Do not leave me behind. Do follow me. Be kind to me.