Okay, hello everybody, welcome to this presentation. Thank you so much for attending my presentation. I'm Mauricio, I work as a software engineer for Microsoft and today I will be presenting you how to collect low level metrics by using BPF. So, yeah, in the agenda of today, I want to introduce the concept of metrics. I hope that many of you are already familiar with that, otherwise this is just a quick introduction to metrics and the same for the BPF. I will be covering very quickly what the BPF is and some concepts that we need to understand the content of this talk. Then after that I will be speaking what is the relationship between metrics and BPF and finally I will be presenting some of the projects that we can use to collect metrics by using BPF. Okay, so there we are. So, metrics, by definition, a metric is a measurement of a service capture around time. So we can think of a metric like a number that represents the performance of the help of our service. So, yeah, examples of metrics are the percentage of CPU that our system is using, the quantity of run that our system is using, the error rate of the response, the output of our system. Oh, yeah, basically any numeric measurement that you can do on your system that represents the performance of that. So why do we need metrics? Well, by using metrics we are able to understand if our service is available and also we are able to understand what is the performance of our service. Yeah, for sure, probably many of you get alerts when a metric is changing on the system when there is an outage. So, yeah, we can configure those rules to understand when there is an issue with our system. And another thing that we can use metrics for is to perform trigger scheduling decisions. So if we need to allocate more resources for our system or maybe if we have so many resources and we need to remove some of them for our system. There are different kind of metrics. So the first one is like the simplest one to understand is the counter. So the counter is a numeric value that only can go up. So we can use counters for representing the numbers of packets that are being sent on a system, the total, the number of requests that are being processed and so on. The second one is gauges. So gauges are also a single numerical type that can go up or down. An example of gauge could be the CPU usage on our system. So we can have high CPU usage but it can go down or up. It's the same for memory. So our system could consume more or less memory. So yeah, that's a numeric value that can go down or up. And the last one, well, I forgot to say that this is the definition according to Prometheus. If you go to open telemetry, there is like a different definition but in the end the core concept is the same for all of them. So histograms are the more like the most difficult one to explain. So the idea there is that we make a measurement, we divide the range of possible values into different buckets and then when we have the measurement we increase the counter for some of those buckets. So yeah, histograms are used for latency measurements in general. So they provide some statistical information about what is going on with our system there. So what is the average response time or if there are any outliers and things like that. Okay, and the other concept I want to introduce very quickly today about metrics are the dimensions. So when we perform a measurement we not only care about the numerical value but we only take additional information for that metric. So those are dimensions called labels or also attributes. So for instance, if we are taking the number of packets that are being sent on a system, we only care about all the packets but we want to provide additional information on those. For instance, what is the network interface where we are sending those packets? What is the IP protocol and so on. So dimensions are important because by using there we are able to aggregate the data. So in the example that we have there, for instance if we only care about a specific, if you only care about the network interface we can aggregate the data. We can remove the IP protocol label so we can get data by specific network interface. And also we can perform filtering. So for instance, if we only care about IP before we can filter all other values there. So the cardinality of a metric refers to the number of combination of the labels. So in this case, the cardinality is four because we have two different interfaces, two different values for the IP protocol. So what is the point about cardinality? When we capture metrics we want to keep the cardinality as high as possible because we want to have as much information as possible. But when we have high cardinality we, our observability system need more resources especially memory. So we have to find the right balance there. We need as detailed as possible information but at the same time we don't want to consume a lot of resources in our observability application. So this is going to be important in a second when I will show you how to collect metrics. Okay, I know it was a very fast introduction of metrics. Let's switch to the second topic that is BPF. So what is BPF? BPF is an Inkernel by code virtual machine. So basically with the BPF we can take programs that are provided by the user and we can run those programs in the context of the kernel. What it means is that we are able to change the kernel behavior by running those programs that are provided by the user. There are different use cases for BPF, tracing, networking, security. In this one we are more interested in the tracing one because we want to get information about what is going on on the kernel by using BPF. So this is just to give you a quick introduction about why BPF is so popular right now. So I will say that there are three different things. The third one is that by using BPF we are able to bring flexibility to the kernel. So we are able to change the behavior of the kernel without having to recompile the kernel. So that's very powerful because we can like something like implement new features in the kernel without having to recompile not install a new version of that. The second one is efficient. So it provides a just-in-time compilation approach. What it means is that it translates from BPF instructions to machine instructions on the flight and it gives us a very good performance there because there is no like an emulation in that. And the last one is for sure also very important. BPF is safe. So the kernel has a mechanism that allow us to be sure that the BPF program that we are running there are safe so we can not crash the kernel. We can no access to memory that they are not allowed to. So we can say that BPF program are running a sandbox in a way that those are safe to run. Okay, so yeah, I want to introduce a couple more concepts there just to be sure that we are able to understand the next topic. So if BPF programs are even driving it means that when something happens on the kernel our BPF programs are a secure it. And the source of those events are called hooks. So what are examples of that? For instance, network devices we can attach our BPF program to different network devices and when a packet is received or sent to that network device our BPF program is a secure it. But for this specific talk the most interesting one are the first one. So we have K probes and three points. So those are hooks in the kernel that allow us to attach those BPF programs to any function within the kernel. So for instance, we need to understand what is going on on a specific function of the kernel. We attach the program there and each time that function is a secure it in the kernel our BPF program is run. So from there we are able to understand what are the parameters of the function what is the return value of the function what is the process user or whatever that is running that specific function. So the interesting thing is that we can attach to almost whatever point in the kernel that we want. There are other cases but I will skip them for now because those are not so interesting for this specific use case. So this is how it looks like we have an observability application. So this is the application that performs those observability. It runs or it injects better different BPF programs in the kernel that are attached to different hook points there for instance, storage, networking, syscalls. And then we have the processes that we are monitoring on the system. So those processes needs to interact to the system by using syscalls. So by having those BPF programs in the kernel we are able to understand the activity that those processes are performing by sending network packets, calling functions in the kernel, accessing the disk and so on. Another concept that I need to explain is well with those BPF programs we are able to capture information from the kernel but then we need a place to store that information. So that is what the BPF maps are for. So we can think about those maps as a key value structures that are used to share information between different BPF programs and also between BPF programs and user space applications. So basically the idea is that the BPF program runs, it grabs, it gets some information from the kernel, stores that information in those BPF maps and then our application from user space pulls those data. Okay, so yeah, I know it was a very quick introduction on BPF but I just wanted you to have like a general idea before I go to the next topics. Okay, so what is the relationship of metrics and BPF? Right, so with a BPF we can get a very deep insights of what is going on in the kernel. So as I was explaining before we can attach to any kernel functions so we can get very low level information there. And for sure, also as mentioned before it has flexible efficient and safe. So it makes like the perfect tool to get these low level details on the kernel. There are different projects that provide metrics by using BPF. In this talk I will cover in three of them but for sure there are many more I'm not aware of. Okay, so let me show you the first one of them. This is called BPF Esporter, this is by CloudFair. So yeah, the definition that we can find in their website is this is a Prometheus Esporter for custom BPF metrics. So this is important to understand that this is for custom BPF metrics. So the idea there is that the user can write their own BPF programs to get that information and then the BPF Esporter is going to export and to expose that information as Prometheus metrics. So they support counters and histograms. And yeah, so as mentioned before when you are creating a program there or better when you want to use this project you need to create two things. The first one is the BPF program to get the metrics. And the second one is a configuration file that defines what is the format where those metrics are stored in the BPF map. So this is what the configuration file looks like. So you can see we have metrics, we have counters. So in general information about the metrics like the name, help. I will show you in a second what labels is about. And yeah, depending on the kind of the metrics you have more parameters especially for the histogram regarding to the bucket configuration and so on. So there is something important to understand here is when we capture information from the kernel using BPF many times we only capture like numerical identifiers of the things. So we need a way to convert that numerical identifiers to a human readable version. So the BPF Sporter project does it by implementing something that they call decoders. So the idea is that we provide an number and by using a decoder we are able to convert that to a human readable version. One example is the C group ID. So that's an integer on the kernel and by using the C group decoder we are able to convert that or we are able to get the C group path from that C group ID. And yeah, this is how we configure that on the labels. So we have the decoder. First we convert that to an integer and then that's converted to a C group path. Okay, so time for a demo about that. So if we go to the BPF Sporter website we can see that they already provide some examples there. So for each of the examples they have this BPF program and the configuration file that is a YAML. So yeah, as you can see they have a bunch of different examples ready to use. In this presentation I want to show you this specific one about syscalls. So this is an example that provides metrics for different syscalls. So provides a counter for each syscall that is executed on the system. So this is the structure of the BPF program. So we have an BPF map to store the metrics. So as the key of that map we have an integer. So this is the number of the syscall and value we have another integer. So that will be the counter. And then this is the BPF program that we use to capture when syscalls are executed on our system. So yeah, the only thing that is done by that BPF program is to increase a counter on the BPF map. And then we have the configuration file for that. So yeah, we have metrics. We are defining a counter that we call syscalls. And in the labels here we only have a single label that is called syscalls. And yeah, again in this case we have to use a decoder in order to convert the system call number to the name. Let me show you how we can run that. I don't have the time to go into all the details of this YAML manifest. I will only show you the most important part. So in this case I'm using the official container image and here I'm saying what is the directory where the configuration files are stored and what is the one that I want to run. So in this case it's only the syscalls one. Let me apply that. So as demon said was created, Prometheus was also deployed. And if we go to the Prometheus interface we can see that our metric is available there. So if I query the metric I get the different values. So we have the name of the syscall. We have the counter for that. Yeah, so there are a lot of differences called that are being executed on my system. But what I want to highlight here is that we don't get any information about the Kubernetes spots. So we have like the syscall but we don't have like what is the pod, what is the container that is performing those syscalls. This is because the BPF project supporter is not integrated with Kubernetes. So they don't provide that information. Okay, the other project that I want to talk to you today is Tetragon. So the definition of Tetragon is a flexible Kubernetes aware, security, observability and runtime enforcement tool. So by default Tetragon traces different events like when processes are already secured, syscall activity, IO activity, this includes networking and file access. Yeah, so Kubernetes aware means that it understands the different components of Kubernetes. In other words, it is able to provide information about the Kubernetes pod, the Kubernetes container and so on. So let me show you a demonstration of that project. In this case, I already have Tetragon running on my system. So there is a Tetragon pod there, also a Tetragon operator running there. Prometheus is configured to scrap the metrics from their end point, so. So if we go there, we can see that it produces different metrics. The one that we are interested in is called Tetragon events total. Again, so if we query the metric, we can see the information there. So it provides when a process was executed. So it provides the counter there. When the process finished execution, it also provides a label for the binary that was executed. And yeah, so looking here is also that for some of them it also provides Kubernetes information. So we have the name of space, we have the name of the pod where that activity was happening. So those are the metrics that we get by default when we deploy Tetragon. But what is interesting about Tetragon is that we can configure and we can get other metrics if we want. So Tetragon defines a tracing policy custom resource. So by using that custom resource, we are able to say, hey, count a metric on that or on that on another specific point on the kernel. So let me show you that. Actually, I should be showing that before applying, but anyway. Okay, so this is the tracing policy that I have configured there. So there I'm telling Tetragon, okay, attach, approve on a trace point on the Roses calls on this specific event. So this is like other way to tell the program what to do. So in this case, we don't need to write BPF code. We are able to configure the metric by only writing this YAML file. So yeah, this example is very similar to the previous one. We are content this calls, but in this case, we don't care about the BPF code. Okay, so let me go back to Prometheus. So if we list the different metrics available, we see that now we have this Tetragon's calls. So if we query that, we can see that the result is very similar to the BPF Sporter one, but the difference there is that we get information about Kubernetes, or well, this is what I'm trying to look for there. So yeah, there it is. Yeah, right, so as you can see, it provides information for Kubernetes components there. Okay, and the final project I want to show you today is called InspectorGadget, so as a disclaimer and one of the maintainers of this project. So I will try to keep as neutral as possible, but for sure, this is the one that I like the most. So InspectorGadget is a tool designed for the creation, deployment, and execution of BPF programs, both on Kubernetes and in Linux machines. So we can think of InspectorGadget as a Docker runtime for a BPF. So the idea is that you, as a developer, you create your own BPF program, you put that in an OCI image, you give that to InspectorGadget and InspectorGadget will take care of injecting those, running those programs in the kernel. Yeah, another interesting thing about BPF is that, as I showed you about InspectorGadget, sorry, is that when we get information from the kernel, we usually get low-level information. So we get the PID, we get the user ID, but there is no container concept in the kernel. So InspectorGadget provides that mapping, adding a context about container, pod name, and so on there. So specifically regarding about metrics, there are two different ways to support metrics in BPF in InspectorGadget, sorry, one is in user space and the other one is in kernel. So in user space metrics, in this case, we have different tools that already provide information, already provide events. So the idea of configuring the metrics in user space is to count the events that are generated by those already existing tools. So those tools, each time something happened, they send an event to user space and then there we perform the counting, the aggregation and filtering of those events. So yeah, for sure this solution is less performant because we are sending all the events from kernel to user space, but it was also easier to implement. So that's like the initial support that we got for Prometheus there. And yeah, for sure this is up to the user to configure how to count and how to aggregate the events. So this is configured by using a configuration file. This is based on the BPF-Sporter one. So yeah, as you can see, we have metrics, some generic information about the metrics like the name, the type of the metric. This category and gadget refers to the existing tools that we have. So if you want to use this, you have to go to our website, check the existing gadgets that we have, check what is the information that they provide in order to understand if they provide some events that are useful for you. And yeah, so we have selector labels. This is explained here. So selector is to filter out some of the events that we don't want. So maybe we only care about events on a specific name space and a specific pod. So we can configure that. And the labels define what is the granularity that we want for our metrics. So in this specific example, we are going to have a label for the pod name or for the container name. So let me show you how it works here. So this is a YAML manifest with all the configuration there. So this is the configuration file for InspectorGadget that is stored as a config mac on the cluster. So yeah, there I am defining a secure process metric that is going to use the TraceEsec gadget. So one of our existing tools. In this case, I didn't configure any filtering and those are the labels that I configured for that example. So the coordinates name space, the coordinates to spot the container and the name of the process that was executed. Okay, and yeah, this is just to show you how we run that. So I'm using the one of the official InspectorGadget container images. And this is the command line that we have to use to run this. So we say this is Prometheus, we pass the path to the configuration file. And that's it. So I deploy that. Again, a demon said was created, Prometheus is running. So this is really similar to the VPF supporter case before. Yeah, in this case, it takes a little bit more until the metrics are available. And yeah, as you can see, we got our metric available there. So yeah, in this case, we have the labels that we configure there. So we have a coordinates name space, spot the name of the process and so. So what is interesting about this approach is that again, you don't have to worry about writing VPF. You can use our existing tools to get some metrics, but it's less performant. So there is a trade-off there. And the other way that we can use to collect VPF metrics in InspectorGadget is to count or to call it then directly in kernel space. So in this case, the user has to develop their own VPF code. The user has to define what is the granularity that they want to use. So yeah, very similar to the VPF supporter case. And for sure, this is more performant than counting on user space. So the idea that we have is that we are going to provide some tools that support some common metrics. So maybe in some cases, you don't have to write the VPF code by yourself. So let me show you a demonstration of this one. Okay, so this is the same example to count CIS calls. So as you can see, there are two files there. One is the VPF code. The other one is like a configuration file. So this is the VPF code that we use to gather that information from the kernel. So very similar to the VPF supporter case. The only difference there is that we are providing this mount in a space ID. So this is a number that we can associate with each specific container. So in SpatorGadget, we'll automatically map this number to the container pod in a space and whatever there. Again, this is very similar. This is our VPF map that we are using there. And this is the VPF program that we use to gather the data from the kernel. So yeah, it really similar to the VPF supporter case. And let me show you the configuration file in this case. This is simpler. So we have, what is the name of the tool? And we say, okay, this tool provides metrics and the metrics are stored on a VPF map that is called CIS calls. So this allows InspectorGadget to understand what is the VPF map that I have stored it in order to provide the metrics. So again, this is how we export this. In this case, I'm using like a custom image for this presentation. There I have the IG binary and the compile version of the VPF code that I showed you before. And this is the command line that we have to use to run this tool. Okay, so let me deploy all of that there. Very similar to other cases before. If we go to Prometheus, we have to check again. So there we can see that we have our CIS calls metric. And as you can see there, we provide a lot of information related to the container. Not only the name space but we also provide more information like the ID and so on. One thing that we are still missing is that we only provide the number of the CIS call which will be providing also the name but this is something that we are still working on. It should not be that difficult to implement. Okay, so I think this is the most important slide of the presentation. The thing that I want you to take away from this this is metrics are used to understand what is the health and performance of our system. And the VPF is a really powerful mechanism to get to collect data from the kernel. And there are different projects that provide metrics based on the VPF and based on the dependent on the obstruction level that you want to have, you could choose one or another. So maybe you want to write your own VPF code. Maybe you only want to configure a YAML manifest and also dependent on the labels that you need. So if you only need operating system labels you can use VPF as part of it. If you need also coordinate this information then you will have to use something like Tetragon or Inspector Gadget. So yeah, as usual in this presentation I really like to prepare some reference material so all the things that I explained today are better explained there so if you want to go and get more details you can check it out. Actually, the last one could be the most interesting one. So all the YAML manifest, all the files so reproduce the demos that I showed you before are available on the repository there. Okay, and finally, this is really important if you have any feedback about the presentation. If you like the presentation, if you didn't just go ahead and give us some feedback. And yeah, that's it, thank you. Happy to take any questions. Thank you.


Ladies and gentlemen, silent mic back with another video. Before we hop in, be sure to give this thing a thumbs up, subscribe, we're gonna be talking about what is the most important factor, number one, number two, maybe even number three, of getting strong and why you guys are focusing on the wrong stuff. But yeah, do a favor, like this thing, appreciate all the support in the past videos. And this topic kinda came to mind as I'm Twitch streaming. Check me out on Twitch, Monday through Thursday. And a lot of guys are obviously, you guys, my Instagram, et cetera, et cetera, that come in and chill. I am playing video games, but we tend to end up talking about lifting weights. And I love answering and I love teaching and I love coaching. But I guess there's a different conversation of teaching and coaching. Coaching in a lot of ways is more direct. I'm telling you to do something and you go and do it. I'm taking into account what your goals are, who you are, and giving you the best plan to go attack it and you go attack it. Teaching is kind of the why behind all this stuff. And for the majority of people, I know you're interested and you wanna get optimal gains, whether you wanna lose fat, build muscle, gain strength. But sometimes you don't need to know the why. And so a lot of people were asking you about programming and all these details on programming. And the biggest thing, you know, the other comments I'm getting lately are that, how fast I'm coming back to strength. But what you guys don't understand is that I've been doing this for, I've been lifting weights since eighth grade, year round and focusing purely on powerlifting for 11 or 12 years, year round. Up until this last fall, again, where I took off three months or so from everything and maybe six months from bench, maybe nine months from bench and maybe six months from deadlifts, I lifted minimum four times a week, mostly five to six times a week for 11 years, not missing a session, not being hungover, not missing my protein intake, et cetera, et cetera. So for me, I'm not surprised that I just pulled 585 in the gym and I'm hitting nearly close to my front squat PRs, et cetera. It's not that surprising. And I benched this week three 25, I think for two, which not as close to my best ever, but it's in the realm. And that leads to the number one important thing is literally just consistency. Now you hear me harp on programming and obviously programming, having a plan to get somewhere is going to help, right? If you wanna go to Starbucks and you've never been there, you need a roadmap to get there. But there are multiple ways to get there. Some may be a little faster, some may be a little slower, but if you don't have that map, that programming, you may not know or need to know which way gets you there fastest. You just wanna go get your coffee, right? And that's kinda like lifting weights. I've said in the past that no programming is fully optimized. Now someone misquoted me in saying that you can't program optimally. That's a little bit different if you really think about it because what I'm saying is we don't know exactly the volume, the intensity, the variations that you can handle in a week. We'll never know exactly. Kinda like nutrition. You'll never know exactly the micronutrients and macronutrients you need weekly or that you're intaking, you're absorbing to lose the exact amount of weight you want. But what we can do, kinda using the scientific method, trial and error, stabilizing some variables and slowly progressive being as consistent as we can, find what's most optimal or may help you. That leads to the programming, right? Programming number two, I think there are a lot of ways that we know will get us stronger. And that is some type of specificity depending on what your goal is. If you wanna be a better deadlifter, you should probably be doing some kind of deadlift. If you wanna be a deadlifter, a really strong deadlifter and you're doing only box squats and front squats, you'll deadlift some weight you'll be able to and you may even hit PRs, but that's probably not an optimized training program if you wanna be the best raw conventional puller you wanna be, right? And that's where these conversations lead. Now, the detail in those is what maybe doesn't matter. If you wanna be the best deadlifter ever or your best version of a deadlifter, whether you do four weeks of two inch block pulls or against bands or three inch block pulls, probably in the 10 year span, five year span, three year span won't make or break your next PR. What will is not putting enough effort and not being consistent. Some kind of variation, right? We're trying to, when we talk about specificity, we'll just keep the deadlift example is we want the hip hinge because that's the movement we're practicing. Greatest range of motion first probably, right? So the competition deadlift is gonna be closest to what you can practice, but then something against bands is very similar. You're just changing kind of the strength curve. Blocks are close, but you're obviously cutting down the range of motion. Chains are still similar range of motion, slightly different bar path, et cetera, et cetera. There is this zone of lifts that stay within kind of the pocket. Rather than, again, if you wanna be the best deadlifter and on your deadlift day for a cycle, you're just doing lunges, not deadlifts, probably not optimal. Can you get better that way? Maybe. General strength may help. People have gotten stronger doing crazy exercises and people have gotten stronger, not lifting sometimes, the exact movement, the specific movement. This will get more specific and you'll need to get more specific the longer you've been training, right? In the beginning, you could deadlift once a month, but if you're squatting on the other days and doing like hamstring curls, you might hit a deadlift PR in four to six weeks, but if you've been deadlifting and pushing your genetic potential, your own personal potential, three, five, 10 years into the game, you're gonna need to get more specific and up the volume. And then number three, I guess, right? So we have one, just consistency. Doing the movements as often as you can, staying healthy, having fun over a long period of time. Two, having some kind of program that sits in the pocket. Again, there is directions that we need in some basic rules, right? Like that specificity rule. The other one is like sets and reps. Can you increase your one rep max deadlift by just doing sets of 10? You probably can. Is it optimal to only do sets of 10 and then just test your one rep max? Probably not as you get stronger, right? But counter to that, it probably doesn't matter if you do a block that you're doing three sets of four as opposed to three sets of five. There's no magic in five and there's no magic in four. There is some, right? We're getting closer to specificity as we get close to the single and you're training strength a little bit more, perhaps to hypertrophy and there are benefits of getting more reps in to get more practice and build volume and then there's benefits of handling heavier weight, handling the intensities that get you stronger. So there is a time and place for all this but point being four to five, five to six, probably isn't a big deal but there is a little bit more of a big deal, one to 10. So I think you need to ask yourself kind of why and if you wanna learn programming, if you really wanna help and coach people and learn these general concepts and then learn to apply them or if you just wanna become the best lifter you can then hiring a coach or following a program is probably gonna be your best option. You don't always need to know the why is my point and I wanted to learn the why. I wanna be a really good coach. I'm not as obsessive about my own lifting. I want to get stronger and I wanna be healthy and I like lifting weights and I like training but I don't wanna be the world's best power lifter. Never have really. But I do wanna help you guys as much as you can. So I guess the last pieces are troubleshooting and once you get these basic rules then you can start to troubleshoot and it could be as something as simple as I don't feel very strong or get much out of doing block pulls. So, or I feel too strong doing block pulls. So if you can pull 300 pounds over your competition lift doing a block pull maybe that's not the variation you need to throw in any of your cycles and that goes for across the board variations of exercises, et cetera. We talked about the previous video when maybe to use a belt, how to use a belt and why I think people will apply it wrong. I think that's the same with these variations. Now some variations can, I'm just throwing out general rules now to try to help you guys handle some of this. They can address certain weaknesses whether it's a motor pattern thing or a muscular strength thing. But overall I think that's a little blown out of the water too.  Some of it's positioning, some of it could be just strength, you could just be weaker, right? And so if I throw a baseball 100 yards I'm making up these analogies that may not be great. If I'm throwing a baseball 100 yards and it starts to putter out at the end does that mean I just need to like practice my deep end throwing or something? Like no, I'm probably just not strong enough to throw hard enough, right?  If you're missing 500 at the top being able to block pull 500 doesn't necessarily mean you'll be able to pull it from the ground. But if I just get stronger generally through the full range I'll be able to lock out that 500 eventually. Maybe not my world's best analogy but I think it makes some sense to you guys.  Just gonna be a matter of consistency having some kind of framework or plan to get there and it doesn't have to be super exact. Remember it's not gonna, we're gonna optimize it but it's not always gonna be optimal. And last one's just the work and effort. You do have to show up. You do have to get the work done.   So staying healthy, having fun will really last you long and that's why my strength's going back easy. That's how I learned a program and once again if you wanna dive into it you'll probably just need a coach or a mentor because there's so many different things to learn along the way. It's hard to explain in one three minute YouTube video but I do appreciate you guys kicking it. We'll be on Twitch Monday through Thursday 3 p.m. Pacific Standard Time. Links in the bio or just search Silent Mike on Twitch. New podcast, 50%.  Life changing announcements as these influencers say. The biggest thing the internet's ever seen as these people say. So stick around, I'm excited to share potentially life changing for me. The man behind the camera, some people around us. We got a lot of big things that'll throw a big riptide in the content and our lives. So coming at you, appreciate you. Catch you in the next one.


Hi, I am Dr. Vidyadara here, Head of the Department and Concertant Fine Surgeon at Manipal Hospital, Bangalore. Final tumors are quite common. Definitely in a tertiary care centre like that of ours, the Manipal Fine Care Centre, definitely we encounter a huge number of final tumors. The most common being the metastatic tumors in elderly people. Any back pain, which is significant, needs to be evaluated for final metastatic tumor. And also, at times we come across patients with multiple myeloma which can present with problems or tumors in the spine, or rarely a primary tumor in the bone like Gensel tumor or any regional bone disease is also prevalent. Now the common is being metastatic spinal tumors, they all come with back pain. When you do X-rays and MRIs, already one of the other bone could have fractured because of the pathology which has weakened the bone. And it is not because of the injury that the patient has broken the bone, it is just because the bone has been weakened by the disease or the cancer. In these conditions, what we do is very systematic. First, we need to work up and make sure that whether we can get the primary tumor, like PET CT scan is the ideal before you head for any other intervention, and also sometimes blood test can get us to be diagnosed. Once the diagnosis is confirmed, the back pain because of which the patient has been non-ambulance can be treated very well with minimal invasive procedures such as vertebroplasty or balloon typhoplasty, which are daycare procedures wherein we insert a needle into the fractured bone and take a biopsy from the tissue in the bone, the back bone, and then inject bone cement into the bone of the back. And once the bone cement sets, the patient becomes pain free to the extent of 75 to 95% and we can again be ambulance and once the biopsy report comes, we can get treated by the oncologist appropriately with either chemotherapy or radiotherapy. And second common is being myeloma, multiple myeloma, which is also the predominant site of spines, can be treated with chemotherapy once diagnosed. And the rare tumors, we may have to go more aggressive like dental tumor, we may have to do anterior posterior surgery with complete accession of the tumor.


What's going on everyone Sam here with late in sports cards? We are doing 2022 Panini score football hobby six box break number two random team style Let's go ahead and take a look again at your random results As always you can find these on the website under the results that well as Lincoln's chat. Let's get started. Good luck everyone I'm just gonna go pretty quickly through the base We do have one dice roll. We're gonna have to do there's like triple cards So I'll kind of just show you how we do that It's pretty easy and then be it's base will be evenly split. I believe is that true But even it's perfect. So yeah, we'll just kind of cruise through the base which are on top here till we get to the rookies There's first ones Trent McDuffie There's a Kenny picket rookie should be a zappy right behind it. Yep Tray Pickens So here's how I'll do this dice roll one two top three four bottom left five six right This will go for the entire break unless it's something low numbered then we'll do it individual random That is a four. It'll go to the bottom left Bottom left Jalen portray is gonna be our first auto. That's going to the Texans And Matt Corral three out of ten nice one there Panthers Heck, yeah, we'll take that on the orange who starts next week for which game do you think Lane? Which game talking about this base the font ziggs? That is Darius Leonard.  There you go, buddy. That's nice. Oh for the past probably Mac I would think I mean a kind of we were talking about it today. I was not impressed by that coaching by Belichick I think I think we were probably talking about that today to lane James Cook Hot rookies watermire spiller and Brian Dawkins nice one there Right who do you have? Oh, you have the Patriots. That's right Yeah, those zappy rookies are money right now probably not anymore as much but Still not bad. It's Kennedy Brooks Traylon Perks, I know Evan Neal 45 out of a hundred Feeding your lizard was ripped that's funny. I know honestly Greg gotcha Are you in this one or no, Greg? I don't you're not right? Breakthrough squad Eagles and Kyle Phillips. Oh, you're in certified. Gotcha. Gotcha. Gotcha Gotcha. Gotcha. Gotcha You are rooting for Greg S and his breaks. He got a man got a roof for that same name mojo That's how it goes League Willis rookie Kobe Bryant Got Alec Pierce there you go Colts very nice and Jerry Rice 7 out of 35 Yeah, base score. They were like 15 20 dollars. I was telling you like they're like 20 bucks I need to remember somebody posting that Instagram like these serious Unreal man, so not exactly money, but pretty crazy Devon White on the grayboard Kyler Gordon Traylon Brooks. That's Vince young That's sick, man Texas Longhorn legend. There you go Lane. There you go Titans as well and Kingsley Enegbara Drake London on Dotson. That is Traylon Berks on the hot rookies going to the Titans 39 out of 50 nice one there Yeah, the vet autos are cool. I will give it that for sure. The vet autos are pretty awesome Card points, that'll be a random to all at the end and Joe Montana All right Have fun Pellis right on top. There you go. Ed with the Titans. Congrats, man There he is Williams on top here. There's a Malik Willis rookie like Willis pack right there and base Absolutely Nick Benito Titans are running very hot in this break Smoking us Jim Kelly on the grayboarder. There you go. Bills. It's Invicta Victor still on a high after imagine from last night You guys have not watched his breath his personal. It was insane Go on brisk here. Got Travis ETN jr. On the second year. Nice one there Jax Congrats on that and a blue Patrick Sartan 25 at 29 out of 35 Broncos. Yes, too No, he's not he's good. No, he's very good. Yes. Yeah shifty fast No, he's not he's not huge for sure That's Eric Metcalf going to the Browns. There you go Cleveland. I think that's a combo check a best and Nicoby Dean grayboarder rookie. We got another one right on top that this time It's gonna be Jeremy Rucker going to the Jets. There you go. NYJ Have a pick it and a zappy behind it. No, no zappy behind it. Well, oh no, there it is zappy close behind it Seven ago in luminaries guys Let's get that filled up breaks at the end of the night random hit style. Everybody goes home happy Everybody goes home with something With a hit I should say TJ Hawkinson on the grayboarder and Chad Johnson grayboarder Yeah, they stream. I don't know why they're not streaming tonight. Usually they do stream on Tuesdays I think that they had something going on like a shop thing with some of the management. So Yeah, they're not streaming tonight, but yeah, usually they do Creed Humphrey nice 57 out of 100 Usually they stream every night except Thursday, I believe they're off on Thursday So they are streaming tomorrow 100% I know that for a fact they're doing group breaks tomorrow grayboarder Pat fry me Yeah, I'm still pumped to the jerseys Max Paul So much fun. Are you in that ball? I feel like I remember writing your name out for that AJ Brown and Kevin Winslow on our grayboarders Nice ones there. Nice got two in the next one. Heck, yeah, you know who looked really good Kenneth Walker 23 out of 50 today beyond clowny on the goal Some of the names are pretty sweet. I'm in Zappa Jersey. Geez To go with your one-of-one shield RPI Yeah, Paul and chat on Saturday Out of one of those mixers like two certified two elements to build standard I pulled in a bit the Bailey Zappi shield RPI one more than I said in the chat. Yeah. Oh, that's right Yeah, that's Paul Paul Paul in Florida Let's go Paul. That is Robbie Anderson, Gray There's so many cars in this dude. It's pretty wild. That's a Desmond Ritter rookie That is 39 out of 50 that'll go bottom left to the Niners with Diva So usually like if it's something numbered like 10 or lower and then we'll do a separate random like we pulled one out of six the other day and We'll do a separate random on those We've got Chase Edmunds going to the Cardinals nice one there Arizona AZ Tyler Goodson on the graph Yeah, we literally did I was like I Was like freaking out was like I couldn't believe it and I was like you guys aren't ready for this And I was like what do you guys like what do you guys think this is gonna be and Paul like joking? He's like I was gonna be in a Zappi shield What it was really blue Wanda Robinson going to the Giants for 94 out of 100 Yes, sir Arizona, baby got your Sean Corbin on the auto going to the Giants nice three out of six There you go. G mad Giants Rory you go Rory and Jordan Love to 50 It's a complete an entire base set of score probably like three if you get the right run League Willis rookie. We've got Trey McBride going to the Cardinals nice one there. That's AZ Matthew see on that one she very a char various Ward for the Chiefs on the gray Yeah, cards are hitting well for a combo spot the Cardinals are hitting very well. Can we pick it rookie? That means Zappi right behind it Chilling betray and David Johnson on the gray I David Johnson, I think it's a free agent Tyler Algier rookie great Josh Allen. There you go sin Yeah, I remember drafting him very high one year and he broke his wrist Yeah, I was like the same thing here. It's like I feel bad He was pure like that we are making him up with pure trash Yeah, that was tough.  That's pretty sweet on the Super Bowl auto Tampa Brett W. Nice man on card there, too And orange Elijah Moore 10 out of 10 going to the Jets. It's pretty cool. Actually Godwin was like randomly inserted into every product to So it's always cool to pull one of those. They're fun, man. Have a meal because you con one Or breeze hall to Nice Kenny pick it on the gray. There you go Solid one there. Congrats Steelers. I think that's a William box four. Good luck here guys That that's not really like truly a score insert Andy I think that's What was I gonna say you're you have Panthers right your name is Nate Nathan, right? Yeah, Nathan Nathan. Those aren't really like a score specific insert. They have They're inserted into most other products so you can like randomly hit one of those the Super Bowl autos Like some not all of them, but some of them like Don Russ when that comes out They're always in there a few other ones as well a lot of like base heavy paper products you can get those. Oh Yeah, definitely. No, it's awesome. I'm glad they do it. It's Logan Hall Got a Jerome Ford going to the Browns eight out of ten There you go.  Do these Dax them help your home dots. That's gonna be Landon Collins going to the Commanders Not bad goon not bad. That's Trey Kwan Smith. There are 40 cards per pack she's 12 packs per box Romeo Dobbs going to the Packers there you go pack and we got a James Cook nice one there sin Victor That's Sven right there We've got 600 points. I'm just gonna take that off the top right there. That'll be a random to all at the end You got a picket and a zappy. Oh, you literally could start your own library over the case of score Got Hunter Renfro 46 out of 50 But honestly like to be 100% honest I'd rather have it set up like this than have it be like 40 packs 10 cards a pack per box like that would get way too tedious. Oh, yeah, that's another $20 zappy right there That is Curtis Martin going to the Jets on the grid Sam Howell And blue pen I stool 41 out of 100 Seven to go and luminaries still guys breaking at the end of the night Random hit style luminaries baseball just came out on Friday Doing a double case of it. Everybody gets a hit. We've got Kobe Bryant going to the Seahawks Nice one there congrats on that one and Abram Smith that is the Hanse Cole pepper going to the Vikings. There you go. Lori congrats on that one and Debo Samuel grass It's the fondigs and toe the line Mike Evans two out of a hundred. What do you have now for Straight up just destroying a box on these easiest way to get them out All right next one here good look pick it hot rookie Damien Harris Got Cortland Sutton There you go Broncos nice one there again Lori my combo spot JJ walk Abram Smith on the rookie auto going to the Saints Nice one there. We've got Dalvin cook on the grass What's this? This is cool. It's like a holographic. I don't feel like a case hit or a super short print There you go Jets on the Garrett Wilson That's cool, man like a shadow box kind of look to it very nice Crystal Lave John L. Way to 100 Broncos and Leonard for net on the gray bucks phone ring again She imagine gray Dallas Goddard Eagles Marvin Liao Lenticular case it. Thank you. That's pretty nice. Honestly. There's a picket rookie Bailey zappy rookie It's gonna say it had to be a case hit of something something's right. I hadn't seen one yet This is actually nasty Fred Taylor on the auto some underrated running back love their Jags and Brian Dawkins to 181 out of 100 Fred yeah, oh, yeah, so like underrated He has one Really That's really good. Oh, it's called. It's kind of a wild Got cave-on timid oh going to the Giants 31 out of 35. I think that's Rory. There you go Rory And Kyron Williams Yeah, I know Vaughan loves that Fred Taylor. Oh, yeah But he was nasty. He was good Yeah, when you think of it, let me know I'm honestly check that out Athlete Jonathan Taylor Yeah, I've seen clips of it, but I've not fully I've fully watched it good stuff. Yeah, I know people like it Zabier roads 49 out of 50 Colts Yeah, Fred Taylor to MJD very true Don't forget Toby Gerhardt was in there Jags legend Toby Gerhardt Chris Ivory He's good on a jet stunk on the bags last Box of score. Good luck everyone. Oh, yeah, Jimmy Smith receiving man was very underrated receiver He was good Jimmy Smith is good sauce Gardner There you go jets nice one there Carson Palmer Sauce yeah solid very good Solid there's a Kenny picket hot rookies and grade your blood cell Tucket busted right next Maybe now not in the day. They're good in the day man Ronnie Brown There's a dolphin. So there you go self-inflicted wound on that one Daniel Jones Ronnie Brown was actually pretty decent for a little bit He ran that he was one who ran the Wildcat all the time I've water Kennedy Brooks going to the Eagles base auto and Devin white going to the Buccaneers 96 out of 100 Vince young again There you go Titans to Vince young autos nice And Andrew brood jr. Let's go Phoenix Golden State started. Oh Yeah, Shane champ Bailey for Clint Portis brutal Brutal move there J Jetta's got Jalen watermire five out of ten on the die cut there you go Bill sin Wildcard points Aaron Donald Yeah, a lot of points in this for sure Steve young For the Bucks pick it and a zappy Pick it zappy Always right behind each other pickings in there, too blue is gonna be Jamison Williams a hundred out of a hundred lines and last pack of the break. Good luck here guys Kyle Phillips Malik Willis rookie We've got Derek Barnett going to the Eagles. That is 21 out of 50 I got to a quick recap of our autos here Give Sean all of his base you can build a Ford out of Yeah Same Kennedy Brooks Eagles sauce gardener jets came on to the giants Fred Taylor Jags Abram Smith Saints Coraline Sutton Broncos Dante Cole Pepper Vikings Kobe Bryant Seahawks Romeo Dobbs Packers Chris Godwin Bucks Tray McBride Cardinals Dashaun Corbin is six for the Giants Chase Edmonds Cardinals Jeremy Rocker Jets Eric my cap brown Travis ETN Jags Vince young Titans Vince young Titans Alec Pierce Colts Jalen Petrae Texans and then I'm a leak will I saw to go into the Titans that'll do it for the break guys. They are no we got to do a random really quick for these points So gonna do a random to all Gonna do just one random top two teams will receive wild card points and team number three will receive 600 so let me do that random really quick before we stop the recording gonna roll the dice Let me take you guys over the random Whatever two teams are on top of both get wild card and team number three will get 600 so we're gonna go eight times one two three four five six seven and eight gonna get the Ravens are gonna get wild card Patriots are also gonna get wild card and Then the Cowboys are gonna get 600 all right guys that'll do for the break. Thanks again for the fill next up more football


Hi, I'm Pookey and I'm all about helping you to help your child. Being a parent, carer or other adult supporting a child can be a pretty tricky business. I know I am a mum of two, a biological mother and an adoptive mother and it's not all plain sailing in our house. I create downloadable guides, videos and other resources to help us all along the way and by signing up to my Patreon and joining whichever tier works for you, you will be supporting me to invest more time, effort and creative resource into creating more and better things to help you and others like you along the way. I've chosen to go down the Patreon route because the parent and carer aspect of my work is one that usually gets less focus and for me it's become one of the most important elements. So if you can afford to and only if you can afford to, I would love if you would join me along the way. I will of course continue to create plenty of free resources too, but the hope is that with Patreon I can make this a really sustainable part of the work that I do. Thank you so much for joining me.


Hey everybody, it's Brian and I would love to make a video on Qt6, but I have not had a whole lot of luck getting this thing running. So just for giggles here, here are the kits that I currently have installed. I have 5123, 515.0, this 515 web assembly, which I've actually never used. And then I built this static, building static is not for the faint of heart. I did that for the Udemy series. All right, so I've run into a whole boatload of problems on my Mac. We're going to try this on my Linux machine and see what happens here. So let's run the maintenance tool and they've got a snazzy new maintenance tool. Spoiler alert, I have done some work before I got to this point. I actually went out and I updated the maintenance tool and made sure everything's good. I want to do this real time on the screen. Also, I had to actually go out and rebuild CMake because when I tried this initially, it was complaining that, hey, CMake was out of date. So I had to actually download, compile, build, and install the newest version of CMake just to get to this point. All right, no updates available. We are good to go. So I'm going to quit the maintenance tool, give it a second to figure out what it's doing and then start it. All right, now I don't want to get super crazy with this, but we're going to go add, remove components next. Definitely hats off that a developer who made this look super awesome because it looks way better than it used to. And I'm going to expand this out a bit. See if I can get it in the whole recording area here. All right. So Qt 6 is out as of today. I have absolutely nothing Qt 6 related installed. We're going to just check desktop GCC 64 bit. I am on Linux Mint 64 bit and just for giggles here. There it is. All right. So LDD Ubuntu G Lib C 2.7. This is going to come back and haunt us if it's going to do the same thing that it did previous, but I'm on Linux Mint. And let's go ahead and just desktop GCC 64 bit next. Setups now ready to update, show the details here. And let's just, you know, what do you guys want to talk about? I like my coffee a lot like I like my soul black. No sugar, no cream, just completely black and dark. Nothing but misery and pain here in compiler land. And oh, it's actually gotten further this time. Oh, no, never mind. Okay. Error during installation process of Qt, Qt 6, 6.0, GCC 64 bit. The output is, I'm going to grab this, copy this. So I've already filed a bug report. I'm not expecting a whole lot back to be brutally honest, but I'm going to copy this, let's just open a command line here. Unable to parse. I wonder why. Let's go ahead and paste. Uh-oh. G lip see 2.8. Ooh, that's not good. So I am the first to admit I am not a Linux expert, but if I go LDV. Version. And you can see that it's looking for 2.8 and I am running 2.7. I'm now presented with some options as the end user of the software, meaning I can now go out and either completely upgrade to a different operating system, or I can try to manually update that, which from what I've read on different forums could completely smoke this box because it's so integrated into everything here. So big let down. I would love to say that I was just going to start rocketing out Qt 6 tutorials and I do want to rerecord everything, but what I'm probably going to end up doing is closing these, canceling this, watch it roll back, and then we're just going to finish and I'm going to restart this. And not in this video, because it's just going to take an obnoxiously long time, but what I'm probably going to do now is download the source code and then I will build this manually on my box and see if it links correctly to the version that I have and see if that fixes the problem. But major let down, cute. I love you guys, but man, my my Mac won't even run it. I mean, I've tried just about everything. So I'm just going to go to sources. We're going to download those and that's going to take 500 megs. And let's go ahead and update. So I'm going to try and build this and see if I can get a successful build out of Qt 6 and from there, maybe, maybe, maybe we've been waiting a long time, we'll get some Qt 6 tutorials. I've been reading a lot of the change logs and I'm super excited to see what's happening under the hood. The irony here is I did not have any of these problems in beta beta for Qt 6 was just fine. It was so smooth that you do download it, you compile it, you build it, whatever you wanted to do, it just worked. But for some reason, this release has not gone smooth for me. I've got four different boxes, each one with different operating systems and none of them run Qt 6 out of the box. So anyways, thanks for watching, guys. Sorry for the letdown. I will try to build this on my box and we'll see what happens.


Hello, good morning, you're with Newsround on today's show. We meet Germany's brand new polar bear twins, the brand new dinosaur discovery that looks like a giant chicken, and coming up later I'll be speaking to the world's most connected man. This morning on Newsround we've been showing you the very latest bits of wearable technology.  I've got my hands on some of these gadgets at the wearable tech show in London. That's where I met Chris Dancy. He uses between 300 and 700 systems at a time to monitor everything from his heartbeat to his sleep patterns. I'm with Chris Dancy now. He is said to be the most connected man on planet Earth. Chris, what does that mean? Wow. I've been for about five years wearing lots of computers, you know, really small ones and sometimes really obvious ones and sometimes ones that aren't so obvious and collecting my life and all the information around it. Sometimes it helps me remember things and sometimes it just tells me important things like where I need to be or where my friends are. And you said you've got something on you right now which is monitoring your heartbeat. You're taking photos as we speak during this interview and it's also detecting how fast you're walking. And then I'm wearing a belt that tells me from sitting up straight. So the devices I wear on my body and the devices at my home, they create what I call the internet. So not the internet where we go look up websites and stuff, but it's a website of information just about me. What about the next step? I think we're just two or three years away from some of this stuff getting better. Though I think it's going to be very natural in the next five to ten years for people just to be part of the machine. And you know for kids today, you can look forward to a world where everything around them is smart, but more importantly the information they create and how they're feeling talks to those objects whether they be toys or movies and changes them in real time so that they can experience them in new ways. What an interesting man right. Sport now and Robin van per...