So I'm very excited. I have a tripod. I finally have a tripod. So I decided to finally buy myself a tripod, which is absolutely amazing. I think it's about time that I got that. And with that, we're gonna go into a topic that's not discussed at all in success circles. And that topic is don't trust your brain. So I've had a coaching call today with a client of mine and we gave him a strategy a week ago. A sales strategy. Literally step by step do this, then this, then this, then this. And the guy went on, did a few meetings and every time he was about to do the strategy, he would always back off at some point. And the point was usually the price. Like he felt uncomfortable with the price. So I called him today and I asked, Hey, how's it going with the strategy? You know, because it's a winning strategy to make really high ticket sales. And he tells me, look, I don't think it's the right thing for me. Like I think I should maybe do like, you know, $150 sales instead of $2,000 sales. Like, I think it's too much. It's not, you know, it's too much out of my comfort zone. It's not the right thing for me. And I basically had to explain to him, this is the concept I want to get to you today. If you're not getting results in an area of your life, let's say that in terms of diet, you're trying to lose weight for a long time and you can't lose weight. You keep gaining weight or not getting results.   Your beliefs, your comfort zone, they're all against you because if you could actually do it, if you could actually lose weight, you would have done it by now with the tools you have here. So when you get a mentor or a guide or a course or anything where there's step-by-step instructions, there's principles, things you should follow, you should never only do some of them. You should do all of them. And again, the reason for that is your brain is not working properly because what usually people do in this situation is they nitpick. They say, oh, I want to do this step and this step, but I don't want to do that step because that step is like, I'm comfortable and I don't think I should do it. And what happens is they pick the things they're comfortable with, which are usually not that different from what they're currently doing and they're actually missing out on the things that will make it work. So you never know which part of the formula of the recipe actually works and that's why when you have a mentor, you have to do exactly what he says to the letter or else, again, you're just going to lose that bonus. Another example, I have another client for whom I built this really successful landing page and he started getting sales for his workshop. And then he had the bright ADN said, hey, let's change a bunch of stuff in the web page. And he said, why? What's the purpose? And he said, I think it's more me, you know, it's more me to change this, this, this. And we did the changes. And again, I told him, look, it's not going to go away. It's not going to turn out well. But, you know, you'll see. So we did it. And it's immediately like the changes lowered the conversion rates, but not by like 10%, by like 70, 80%. And the reason for that is, again, when something works, it just works. So if you're going to copy someone, if you're going to get mentored by someone, do exactly as they say, do everything that they say. Because again, your brain so far has been broken, maybe in general, maybe in this area of life. So you cannot afford to to listen to what your brain is saying, you have to use the external direction and what's going to happen. But same with my client. He's going to listen to me now, he's going to do exactly what I told him, and he's going to get results. And when he gets results, even if it was really uncomfortable, and felt like not my identity, which again, is a good thing. If you're not getting results at the moment, because your identity is that of somebody who's not getting results. So if he's going to listen to me and do what I say, he's going to start seeing results. And then his identity is actually going to shift. Because his motivation level will rise dramatically. He's going to think, Whoa, this worked like, like, I should do more. And one final example, I had a sales meeting just a few days ago, with somebody who's been a good friend of mine for a while. And he wanted me to coach him. And immediately I thought, Oh, I'm going to close them on like, you know, a couple hundred dollars, just because he's my friend. I'm just going to, you know, give him like a friendly discount or something. But then as I was sitting in the actual sales meeting, I would just started thinking, like, Oh, God, dude, this is not like, don't follow your intuition, you know, like, don't don't go different, because it's a different situation. Use the strategy that worked so far. So basically I took my strategy and applied it and it didn't feel natural. But I did exactly step by step what I usually do. We ended up closing an almost $3,000 sale. And we've been working for a few days now. And so far, he's super, super happy. And I don't think I would have gotten nearly the same results with him and for myself, if I would have just followed my intuition. So again, it's really important that you learn to follow your intuition and be, you know, be authentic and be you. But if you're not getting the results you want right now, authenticity and your comfort zone, they're not a priority right now. A priority is is feeling just following a system that works, getting results. And once you start getting results, once you have that abundance, no matter what area of life that is, now you can actually inject your personality into it. So now you can say, Oh, this is more me, this is not me, because now your identity and your results are somebody that's actually successful and abundant. Again, no matter which area of life review, even in general. So take this tip, again, if you're not in a good place in your life right now, find a mentor or find a course strategy, anything, and just stick to it. Don't listen to your brain, don't do what your intuition tells you. Because again, your identity is


Okay, so we've done two modules, mostly sort of introductory ones are focused as I said today and this lab is on quantitative metabolomics. Here's the standard set of slides about creative commons licensing. And as I said this is the lab that we're going to be doing. And we have a total of two hours allocated for the lab so we're starting at three and ending at five in Montreal and we're starting at one and ending at three here in Edmonton. Now for the lab I'm going to give you guys roughly I don't know about a 35 40 minute introduction to the lab. This is where I think if you can please download the slides so you have them internally on your computer because you're going to have to look at things might have to write some notes down because you have to go to certain websites. The lab and I'm showing you the slides partly take you through what you're supposed to do so. If you're stuck, you should be able to find a slide that says click here. So that portion work, talk to your neighbor, they might be doing exactly the same thing, or they might not it depends on the groupings here. But this is intended to be interactive. So it's going to be open, open mic for the first 35 40 minutes and then we're going to close the mics in Edmonton and in Montreal so that each group can work with their TAs and go through the different exercises. So roughly an hour and a half to finish up, you need to be you're going to do three different exercises for three different platforms like explain this in a bit more detail so we're trying to do quantitative metabolomics you're going to be processing experimental real experimental data from real samples that were collected and harvested if you want for this particular project. So you're going to do NMR. You're going to do LCMS and you're going to be LCMS for NMR you're going to use the software that I just introduced called magnet for GCMS they're going to introduce the software called GC out of it. And for the LCMS we're going to use LC out of it. So three platforms, three software types. Now, because these things are pretty compute intensive. It's not as if we can get everyone there's 43 of you I think in in Montreal and Edmonton to take all these queries all at once. So that's just not possible with today's computer technology so we're dividing you into several groups. And so it's kind of around Robin. Three groups, three platforms. That means that roughly gets 13 to 14 users at a time, which is what these servers can tolerate. So there's going to be two files were two experiments that you're going to get for the GCMS and the LCMS. And you guys are going to work with one file for NMR. So it means that NMR partly takes a little longer GCMS should be fast. I don't know how long the LCMS will take that hopefully it's reasonably fast. Now the idea is you work on your platform so if you're assigned to the NMR platform, you're going to work on that file for 30 minutes. So it might take 15 minutes for it to get a result. And then for the last 15 minutes you can play around with the spectrum but you're also supposed to upload your data to a certain server so that we can pool everyone's results. So there are slides sheets or the CBW github page where you'll see your name and which technology platform and which software tool, you're supposed to be using. So if you're with NMR you do magnet if you're with GCMS you do GC out of it if you're assigned to LCMS use LC out of it. Don't mix LCMS data with NMR magnets. Okay. So you're going to have your files the files will have your name associated with them. You can download those onto your computer, and then you're going to start your designated web server. And that means when you start it you're going to have to upload your files to the web server can process it. Now you're processing, sometimes it's interactive, most of it's going to be automatic so you just click and kind of wait. And then the answer appears, and it's once the answer appears that's when you can kind of explore and check and do things. So you can download the files onto your computer, those are all going to be CSV files or Excel files, comma separated value files. So you can take a look at them, and you can save them. Some of you know a little bit about HMDB or other resources you can compare the values you got with what's what's known. And then you're going to be uploading your CSV files to the CBW Dropbox page. Those are all going to be consolidated, because what we're doing is that sort of crowdsourcing science. You're running these things. You're doing it for many different samples. And for, you know, three different experiments with three different subject groups. And then tomorrow you're going to be able to use Metaboanalyst to analyze those data sets. And you're going to see what Metabolomics reveals what's different about these what's unique. Maybe find some biomarkers, maybe discover something that we haven't discovered. So for the GCMS files, there's 84 urine samples from patients. And we were looking at a study with sleep apnea. So some people had sleep apnea, some didn't. Evidently, there is a difference in terms of their metabolomes. And this was analyzed on an instrument up on the eighth floor here, which is an Agilent 7890 GCMS. And I think measures about 7075 metabolites. Do you guys remember exactly? The NMR files are going to be 42 serum samples. And this is nonhumans. We're looking at sheep. And we're looking at pregnant sheep and non-pregnant sheep. And the idea here was to see if we can find a marker that can distinguish between pregnant and non-pregnant sheep in the early stages of pregnancy. So if you look at sheep, you can't tell which ones are pregnant, especially at sort of 50 days. So it's a little blood test than you could. And that makes a difference for sheep farmers because they have to change the feeding rations and other things for pregnant sheep. So this is part of a study to develop a biomarker for sheep pregnancy. Second, a third one is 84 serum samples. These are patients with early stage lung cancer and then controls. And lung cancer, which is normally quite fatal and is usually not discovered until stage three or four, can be cured quite routinely if you identify it at stage one. Unfortunately, we don't have any markers to do that. So this is a study to identify markers for early stage lung cancer. And as you guys will see, I think, I hope, well, when you do your study tomorrow, you will find markers for early stage lung cancer detection. So this was done with LCMS. It was done with a smaller study just to make it simpler for you guys. It measures about 145 metabolites using LCMS, using a Q-trap 4000. Again, all these instruments are either up on the eighth floor or the 700 megahertz is just down the hole in the third floor. So we've talked about magnets. I've given you a little bit of an introduction of it. This is the same text, but the access that you can have is either teaching one dot magnet or teaching two dot magnet. That's a sign to you. So if you've written it down or if it's in your slides, make sure you go to that. Same thing with GC AutoFit. Explained it before already. Again, two servers. Make sure you know which one. It's either the GC AutoFit one or GC AutoFit two. And those are the URLs that you go to, depending on what you've been assigned to based on the slides I've just shown you. LC AutoFit. Again, we've done a quick review about what it's like, what you do. You go to the LC AutoFitWishartLab.com. So everyone can do this one. It's the same server saying it's not two, it's just the one. We've explained the general overview as well for NMR. Your focus for the lab is from the processing the NMR spectrum to get the list. All the other stuff has been done for you guys already. Obviously we can't have a lab with everyone working in the lab. So this has been done for you.  Again, the link should be on I think the Slack channel or GitHub or both. And you're going to see your name. So, yeah, you're at the top. And so that's your file. And that's the one that you're going to download. Delissa and Amber, I think it's all alphabetical. So you can, you know, find your name, download your file if you're doing NMR first. If you're not doing NMR first, don't download the NMR file. So let's say you're doing NMR. Then you're going to go to teaching one about magnet or teaching two dot magnet. And these are just pictures of that. So this is the instruction. Now, I'm not going to go in a lot of detail. You guys can download this, but this is what you'll see, you'll see, you know, at about menu. It'll explain things. And, you know, you can look at it or you can race through it depending on whether you're into that sort of thing. So once you've started, then you're going to be able to submit your spectra. So it says welcome to magnet. Thank you for using it. We're so pleased. And then it goes on say upload how to submit your files. So if you scroll down, it'll explain this and you'll see this instructions to analyze. It does have some examples. There's no need for you guys to run example files. You have real files to work with you've hopefully downloaded them. So, you're going to select your zip file, you're going to enter a submission name. You're going to select none for the pre processed option. Because we're analyzing serum. These are sheep syrup that you have. So that's your bio food and we're using a 700 megahertz NMR instrument so the data were collected on a 700 megahertz. In NMR you can collect it 500 600 700 800 and so on. But you were collecting on 700 or the data for you as a 700 so don't choose 600 don't choose 800. And make sure you choose serum because that's what you're analyzing. So once you've uploaded your data, then the computer starts churning and it's doing that spectral deconvolution talked about. So it's going through each peak and there's hundreds of peaks in the spectrum, and it's picking out the peaks, matching to things in the library, trying and guessing and checking like a human would, but it's doing it automatically. So after probably about eight or 10 minutes for you guys, it'll produce an answer. So during those eight or 10 minutes you can have a cookie some coffee walk around chat with some friends. But eventually you're going to get a result would look like this. This will be a spectrum where it's been fitted. And you can view those spectrum or detail. You can click on the spectrum you can download the spectrum. It's giving you a list of you know what's been going on what's been processed whether it's completed or whether it's being processed. If it was completed, this one is still being processed. You're only hopefully submitting one file so you should just see one I think listed unless if everyone's submitting at the same time I guess it will at least all of them. I can't remember. So if 12 of you submitted you're going to see 12 files make sure you know which one is yours, and you don't steal someone else's. Yes. And my frequency select by the preprocessed is optional. Did you have to submit your chemical shift reference I think it should know the chemical shift reference that's that should all be there. It does ask for. So just the default options. So it should have chosen DSS. So you should just take those defaults. So maybe we'll put a six and seven is choose keep your defaults for that.  And that'll expand it to the control panel which allows you to view things. This is a tool called J spectra view. It was a Java spec JavaScript tool that was developed in the lab that allows you to view spectra it allows you to do NMR spectra GC mass spectra LC mass spectra interactively on the web. That's been a lot of work, because most resources require computers full time CPUs to do this so this is a lot of work to get this interactive. You can expand and blow up your spectrum you can zoom in you can drag across the spectrum. You can see how things are fitting or some cases not fitting. The interactive zoom is available, essentially for all the spectral views. So we've zoomed in here you can see where things are closer. You can show your compound file.  So again, once it's done you should spend a few minutes just exploring things. You can mouse over with your mouse or trackpad and click on peaks. Those will also identify things for you. You can search so this thing will have identified about 55 compounds and will determine the concentration for all of these compounds in these sheep serum samples. You can type in a name here we've typed in veiling. There it is listed. You can click and highlight that. And when you clicked on the name of the compound in the screen below, it highlights the veiling chemical shifts in the spectrum above. Those are the dark blue peaks. So you can see how well it fits or isn't fitting most of the time it should fit very, very well. And so this is done this spectral deconvolution.  Once you've played around you can then download things so you can download the magnet file you can download the spectral database in a CSV file. And so the CSV file will be a list with the hMDB identifiers and name the compound the concentration. You can get the magnet data as a JSON file. You can drag and drop that JSON file back into a standalone viewer to see things again. So this allows you to revisit your data. So that's the NMR one. So this is what the NMR groups should be doing.  So we talked about how GCMS is done and how things are processed. So you're focusing on this last part process GCMS chromatogram analyze where you see out of it, get your list. The other stuff was done for you to collect in this case urine samples. So if you're in the GCMS group for part one, your name is here. You can download your GCMS file. And this is the link. You don't have to type in all 18,000 characters. That link is on GitHub or Slack. Is that correct? I'm good. So each of these long ridiculously long links. They should work on your slides if you've downloaded them. Okay. Okay, again, I'm just trying to give you guys an overview. If you're feeling a little lost after I finish the overview, then you can start asking questions that Mark and Alan and others. Okay, so in this case, if you're doing GCMS, you go to the GC auto fit server and there's two different ones, and you've been assigned to one of them. You don't know which one it is. So you don't overload the server. So in this case, you're going to, going to download your GCMS spectra first, and then you're going to upload them to the server. So those spectra have to be taken from the cloud. And then these have been zipped for you guys. So it just keeps it simple. Didn't want to complicate it. So that means we put in the alkane standards, the blanks and the sample file all into one. So three files have been put together. And it's now in a single zip file, you're going to upload that zip file for you for us. And once you upload and say go, it's going to start processing. It should take one or two minutes. We'll see if the smoke and fire starts coming up out of the servers or not. And once it's done, then you can start, you know, profiling. And you're going to click at this stage. It's going to show you some of your alkane standards. I say you have to wait till the profiling is done. Once that profiling is completed, and you can see there's, they'll say complete. If it's not completed, they'll say profile. You can download some of the results in a CSV file. So here's an example of what the CSV file is. And so it's names metabolites. But you can also view it through the spectrum viewer. This also uses J spectra view, but for GCMS. And so this is what the annotated results will look like. So it looks a little bit like the NMR one. So there's your spectrum, but this is not an NMR spectrum. This is a GC chromatogram. And it's not where we're looking at, you know, all the peaks are integrated. That's not how an GCMS works. But the peaks are labeled, and then you'll see the list of the compound ID, compound name retention index and everything else. So you can scroll up, click again to view the spectrum. I think you can click on peaks, I hope, and it'll show you where things are. Click on the names and it should show you the position of those peaks. So that's the GCMS one. It's probably the simplest of them. And in terms of the server, it's still probably evolving a little bit. But it's in principle very similar to the NMR. They both use a lot of similar code. Now for the last one, that's LCMS targeted metabolomics. You've seen the slide already. This is outlining the protocol. Gain, this was done for you in the, in the lab, the kits for run, things are driven ties, things were processed to the LC chromatograms through the MS. And now you have the data files. So those data files are gain in this ridiculously long URL. But that's on the Google Drive that you can then download your file with your name on it. So these are zip files. So choose the one with your name, not someone else's name. So then you can go to the LC auto fit server. So unlike GCMS and the NMR one, where we had to choose one of the two. This one, everyone can use the same server. I hope. So to use that, you're going to load your file. So first download your file, and it's on your computer, run the web server. Web server wants your file. So choose that file, click here.  And then you're going to do something that's good. Things you click which is pre process and select your quality control level. That's the first thing that does is starting of the pre processing and it's looking at all those qcs that were in the plate. And then it's going to ask you to process these calibration control level selections. So again, it's going to screen pops up and you say, it's very small there. And then you're going to say, once you've done that, then you can start profiling. So those qcs have been uploaded. You can start profiling. And just like with all the other ones, it's going to process process process. And you may have to wait a minute, you may have to wait two or three minutes, I don't know for sure, depending on the load. There's a bunch of these files being loaded up here but for you, well, I guess you'll look for your file and wait till it's completed. And as they wait till things are completed, don't press it while it's still saying processing. Once it's completed, then you can click on your calibration profiling, I guess, and you'll optimize things. So this is the case where you can spend a bit of time interactively looking at how are my calibration curves looking. And most cases they should be very linear. And because you're going to be looking at a few dozen different molecules, you can just quickly browse through some of those, see how things are looking. Here's an example of one where it didn't work out too well so for whatever reason. So this is where peak drift or some erroneous retention time was entered. So then you would have to do some manual adjustments so you can see that it's trying to integrate just on the left hand of the peak. But in fact the peak is actually all of this. So this is where the program made a mistake. And so you can adjust some of those parameters to make sure that you're integrating the full set. So here's the retention time on the left and update the max and the minimum retention time. So here the max minimum was too low. Now you've adjusted it. And after that you can submit and get the actual correct integration which will give you actual or correct concentration. So these are looking at these MRM pairs, the product ion, qualifier ion, paradigm, and the retention times. So once you're done with the concentration you have to do the integration. Once you've finished some of those fixes then you just can click on your results and download some of those results files in a zip format. So that's if you're exporting and you'll find an LC file with your metabolite names and the concentrations. Again you can open that up. It doesn't use all of J spectra viewer and the way that we saw with GC out of it and NMR. But the integration graphs and other things I think use elements of J spectra view. So again, you'll have a spectral viewer and the CSV file it allows you to look at things. So once you're done, you guys will have spent roughly an hour and a half I've given you about half an hour of this field so you've got an hour and a half now, roughly 30 minutes each. Each of you will have processed a few files for GC mess LC mess and NMR. And then you're going to go to drop the CBW drops box folder, and these are the sequence and this is the link. So you can see that it's crowdsourced science, you're analyzing all this data, sort of simultaneously, you'll have looked at by the end of this. What is it 160 200 different samples. And these things are going to be uploaded into three different batches GC LC NMR. And that data set or those three data sets are the data sets that you can use tomorrow for metabolism analyst to do things like biomarker identification. Multivariate statistics PCA PLS DA heat maps whatever else you want to do. But this will give you quantitative metabolomics data for three different disease conditions and three different systems. So the whole point here was to show that you can use targeted metabolomics methods, NMR GC mess LC mess. We're not giving you a barge scale study, we're not making you guys do all of the wet work. But it's, it's to give you a flavor of what it's like, what the fields have evolved to. If you were doing this as a, you know, masters or PhD thesis or to do a paper. There's a lot of examples and what we're doing here. And I think, particularly for the LC MS one there's usually a bit more manual work that is required. It's not quite perfect. Usually, at least with the GC mess and LC mess or the NMR, there may be a little bit of tweaking that you would do. So we've tried to give you example files that are pretty high quality. So you're not going to get spend three hours trying to figure out why this peak looks so strange. But we're trying to give you a flavor. So this is more like a sampling menu, as opposed to a full smorgasbord. I think what I wanted to also highlight with this because you'll have done some quantitative metabolomics now and this may be for some of you the very first time you've done it. I want to reemphasize some of the myth busting concepts here so that targeting metabolomics is quite a bit cheaper. It is quite a bit faster. It's quite a bit more sensitive. It tends to be more comprehensive. And it can lead to significant discoveries. And all of these projects did lead to significant discoveries. And you'll have a chance to have those eureka moments yourselves. It also means that because this stuff is quantitative, these things in some cases are already being translated to clinical practice or veterinary practice. As opposed to things that were untargeted where, yeah, it's a nice paper and then people just kind of put in the dustbin and move on to another thing. The point about targeting metabolomics is to try and get it to a point where it can be used in practical applications that other people can replicate it, other people can do it, and so that it can be applied in regular types of testing or meaningful applications.


and it's a very special edition of the clubhouse report with a special guest Meredith take it away well we have Kyle Higashioka a guy that clearly played a big role in last night's no-hitter Kyle when I spoke to you after the game last night you described the feeling as almost euphoric when the no-hitter was completed has that feeling carried over into today yeah I mean I'm still a little bit in disbelief that it you know it actually it actually happened I just it's kind of like almost like a dreamlike state but I mean now we got a we got to focus on this next game today and and you know focus on winning it you had said later in the game you were almost suffering from some mini panic attacks behind the plate how are you able to keep yourself calm to make sure that cluber himself stayed calm I mean he's he's a pretty calm guy I don't think he needs any help staying calm it was there's more of me trying to settle myself what's going through your head in those final innings as you're calling pitcher pitches hoping that this no-hitter continues just don't want to mess it up what was the celebration like in the clubhouse afterwards I understand both cluber and you were the recipients of some beer showers oh yeah yeah they put us in the the laundry cart and showered us with beer those that's pretty fun now that you've had a little bit of time to reflect what stands out to you most about last night what will you remember most you know I just it just he just had an unbelievable night and you know he was he was putting hairs away with ease and then at at the end I mean it was just that the feeling was definitely just euphoric it was it was unbelievable Kyle he doesn't throw show an awful lot of emotion but I spoke with Matt Blake earlier he said it's in there can you take us inside that clubhouse to just see a little more emotion from Corey cluber after the fact oh yeah when when he's when he's not pitching he's he's pretty relaxed and he he lets loose so I mean it was it was it was unbelievable you know he he definitely was you know extremely happy all smiles after the game Kyle thank you so much for the time and congratulations on being a part of history yeah thank you Matt


Donald Trump is still a little bit hurt about the fact that Republicans and many mainstream news pundits blamed him for the GOP's election losses in 2022. And as a result, he's still coping by saying, actually, it's not me. And something that he says here is really interesting. And I think that he's correct to a degree. The problem with what he's saying here is that he is assuming that we're not also going to think that he is as culpable as the people who he's accusing. So he wrote this via TruthSocial. It wasn't my fault that the Republicans didn't live up to expectations in the midterms. I was 233 to 20. It was the abortion issues handled poorly by many Republicans, especially those that firmly insisted on no exceptions, even in the case of rape, incest, or life of the mother, that lost large numbers of voters.   I don't really know what he's saying, but Mitch wasn't necessarily the one who endorsed bad candidates like you did, Herschel Walker, Dr. Oz. But what he's saying there, I think that there is some truth to it. The problem is that he's only admitting to half of the problem here. Yes, it is indeed the case that once Roe v. Wade was overturned, Republicans let their freak flags fly, and they kind of showed to the world that they really are a threat, immediately saying we should ban abortion in all 50 states. There should be no exceptions for rape or incest, but it's just in general abortion as an issue is not a winner for the GOP. And Trump, to his credit, actually was aware of this. So back in June, former President Donald Trump, who installed a solid conservative majority on the Supreme Court, heralded the court's overturning of Roe v. Wade as the biggest win for life in a generation. Mr. Trump has, however, privately expressed concern that the high court's decision could motivate Democrats ahead of the midterm elections, hurting Republicans who otherwise face a favorable political climate according to a person familiar with his thinking. So support for exceptions aside, Trump knew that the issue of abortion would come back to bite Republicans in the ass, although he did also believe, reportedly, that it would help shore up the GOP's base in more battleground states. But the problem is that if you can't win independence, if you're turning off normies, you're going to lose. But Trump is trying to find some ways to obfuscate his own problems in the way that he contributed to the GOP not winning. I mean, they still won, right? But not winning as big as it was predicted by polls and pundits. So he's trying to say, it's all them and not me. But if it is the case that he thinks that the GOP's extremist position on abortion or position on abortion, more broadly speaking, is an issue, well, he's responsible for that. He has taken credit for nominating the Supreme Court justices who ultimately voted to overturn Roe v. Wade. And he did pander to extremists on this issue because on the campaign trail back in 2016, remember how he literally raised the specter of punishing women who got abortions. Let's watch. Do you believe in punishment for abortion? Yes or no? Is it a principle? The answer is that there has to be some form of punishment. For the woman? Yeah. It has to be some form. Ten years. I don't know. That I don't know. Why not? You take positions in everything else? Frankly, I do take positions in everything else. It's a very complicated position. I'm asking, you're running for president. I'm not. I'm asking you, what should a woman face if she chooses to have an abortion? Why not? Yeah. So he played his role too, but let's be very clear and address the elephant in the room.  He doesn't care about what did or didn't hurt Republicans for him. This is all about whether or not he's going to take blame or not. And currently it's the case, I think, arguably that most Republicans view him as one of the main reasons, if not the sole reason that the Republican Party underperformed in the 2022 midterms and he needs to rehabilitate his own record because he's running a new campaign, the 2024 presidential campaign. And if they view him as an electoral liability, that's going to hurt his chances. And the polls have kind of indicated that he is in a bit of trouble when juxtaposed against Ron DeSantis or Biden in a general hypothetical matchup. So he's trying to save face currently, and that's what this is about. He doesn't care about the GOP's position on abortion. They could be pro-choice for all he cares. He just wants to make sure that he doesn't get blamed because it's never been about the GOP or the issues. It's always about what benefits him exclusively. And he further demonstrated this by sharing an article that encouraged him to run third party instead of within the Republican Party, which means he'd play spoiler and destroy the GOP's chances of winning back the White House in 2024. Per Rolling Stone, Trump promoted an article from conservative publication American Greatness by writer Dan Gullerinter. Gullerinter compared Trump to the late president Teddy Roosevelt, whose run for a third term as president and third party bid in 1912 was widely blamed for splitting Republican ranks in handing over the election to Democratic candidate Woodrow Wilson. Although Gullerinter admits that Trump running as a third party candidate in 2024 would likely meet a similar fate, he declares his allegiance to the former president and suggests a Republican loss would teach the corrupt gravy train a lesson. I love how it's assumed that Trump isn't part of that corrupt gravy train as he explicitly profited from being president. His businesses were booming. His hotels were booming while he was president. I mean, it's influence peddling, but I guess Trump is outside of that. And he's also not part of the swamp in DC, even though he was the embodiment of the swamp, but that's neither here nor there. What Trump is doing here is tacitly threatening the GOP. He's saying, if you don't vote for me, we're all going to lose together. Because if you nominate Ron DeSantis, if you try to screw me over, that is to the RNC and the GOP establishment, I will make sure you all suffer the consequences. So in a way, I love that he's doing this because he's kind of holding the Republican party hostage and he has been doing that for years. But he's saying, I'll put it all on the line. I will crush all of our chances if the base doesn't nominate me, if leadership does not explicitly and unequivocally support me. And it's great to see it. This would be the most hilarious outcome of the 2024 GOP presidential primary. That's even possible. And the GOP would be shrieking at the top of their lungs. But oh, my God, I hope he does this. It would be hilarious. But it's because of things like this. It's because of the leverage that he still has, which is why the GOP leadership has to play into Trump's little game.  For example, the third ranking Republican in the House, at least DeFonic, reportedly described Trump as a whack job in private. And yeah, that's pretty obvious, right? Anyone with common sense can see that Donald Trump is unstable. He's an imbecile. He's narcissistic. He only cares about himself, but they can't say that because they know the damage that Trump can do to the overall GOP apparatus. And it's just it's to think about the possibilities is hilarious. But because this is America, probably the most boring outcome will end up coming to fruition where Trump just wins the GOP nomination outright and doesn't have to run third party. But even though I'm worried about Ron DeSantis more so than Donald Trump and the damage that he can cause, in a way, I'm kind of rooting for Ron DeSantis to win the GOP primary, assuming that Trump will be so butthurt that he mounts an independent challenge and just sinks Ron DeSantis and himself and all of Republicans. That would be incredible. So remember when it comes to Donald Trump, there's only one thing to keep in mind. Anything that he's saying is exclusively to benefit himself. And that's it period. Full stop. And this here is no different scapegoating over abortion and extremists. That's no different. It's all just about him and whether or not he still can be the biggest influence peddler have the most influence in the Republican Party. And people will doubt whether or not his word is liable or whether or not he still has the cloud. If they view him instead of abortion extremists as the reason why the GOP underperformed in twenty twenty two. So it's always about Trump at the end of the day. But I'm preaching to the choir because all of you know that.


Forests are one of the planet's greatest resources, but climate change and human impact pose growing threats. Thanks to cutting-edge advances in technology, new tools are making it possible to address these challenges. One of the frontlines for forest innovation is here in Papua New Guinea, which is home to the world's third largest rainforest and 7% of global biodiversity. In this Pacific Island nation, 97% of the land is under customary ownership. This means it belongs to the people. Papua New Guinea's indigenous peoples are now using advanced technology to monitor their forests. We are in the midst of a forest data revolution and the Food and Agriculture Organization of the United Nations is at the forefront of this. Here in Papua New Guinea we are supporting the government and local communities to collect new data to boost their efforts to protect, restore and sustainably used forests. Elsewhere, remote sensing and monitoring is also helping to fight fires, one of the main threats to forests by creating early warning systems and reducing fire risk. But innovation is not just changing the way we monitor forests. Innovation is also pushing the boundaries of what we can do with wood and forest products. By 2030, we will have to house an additional three billion people, but the construction sector alone is responsible for approximately 37% of energy and process related greenhouse gas emissions. We do need to try and find a better way to build housing and this is where mass timber comes into play. It reduces the carbon footprint of buildings and it stores carbon for its lifetime and this can make wood-based construction almost an extension of our forests. And the list of new applications is constantly growing from packaging to cosmetics. State of the art wood-based products are also being used in medicine, for example in casts, biodegradable medical equipment and even antimicrobial creams. And they are also starting to increase sustainability in the clothing and fashion industry with around 60% of all textiles currently estimated to be plastic-based. People really want to know what their clothes are made of and choose better more responsible options. I think using wood-based materials could be a game changer. I can see so many possibilities that these kind of materials can bring to the fashion industry and it's super exciting to be part of it. From new ways to monitor and protect our forests to breakthroughs paving the way for greater sustainability forest innovations are set to play a key role in tackling global challenges for our planet.


Okay, so shall we start? Yes. So, hey, I'm Jan and I'm quickly going to tell you about stuff that I worked at the German Aerospace Center in Oberpfaffenhofen, which is a cafe. It's the co-processor accelerated filter bank extension library. Yeah, so maybe some of you guys know me from last year and from three years before. We are also presented about doing stuff in software defined radio and on the GPU. So, cafe, what is it? A bit of history. Last year I presented a polyphase filter bank channelizer that works with CUDA on NVIDIA GPUs. And the reason why I did that is because I was in the project. It was doing random access over DVB RCS2 basically and it's a multi-frequency random access system. We have 45 channels and a receiver we have to separate them somehow, which turned to be a pretty big task. So, we have, as you see, 1550 tap filter because we have four mega samples or four megahertz of bandwidth. 45 channels and basically the passband between the filters is like 13 kilohertz, which is nothing in four megahertz. So, yeah, 1550 tap filter needed and we needed to run it for mega samples per second. Otherwise, you know, it wouldn't be a real time. So, I tried with what's in GNU radio because I knew they have a super optimized polyphase filter bank channelizer for this CPU. But unfortunately with the 1550 tap filter and we also needed some more over sampling, didn't work. So, we were able to run one to two mega samples per second, but not more. So, yeah, we went to the GPU. So, fortunately we have CUDA or OpenCL and fortunately polyphase filter banks are really suitable to run on the GPU. So, I presented it last year. The filter bank can do some other things like it can over sample the output to all, like, you know, factors that are integers of the number of filters. Example, if we have 45 channels, we can over sample each channel by factor of three, which would be 45 divided by 15. With this, we were able to achieve 100 mega samples per second, which is a serious improvement of a one to two mega samples per second. And yeah, in addition to that, back when we did it last year, I was super lazy and we basically did the reshuffling of the output of the QFFT. We did the QFFT on the CPU. Now we do it with the QFFT because actually that's way much faster and simpler. It's just one line of code, but I was just even too lazy to research that. So, maybe we are even now faster. I don't know, but we should be because QFFT should be faster than what I hacked up on the CPU. So yeah, but then we had another problem. So, of course, we now had all the channels and then we had some external company write some pretty awesome DVB RCS2 blocks for us. And their timing sink needed a four times over sampling factor. Okay, so we can do some over sampling or resampling stuff with the filter bank channelizer. But as you heard before, we are pretty much limited to integer factors of the number of filter banks that we use. So, we could get to four to two, six, six, six, six times over sampling, which is close but not close enough. So, we needed an arbitrary resampler and as we had to resample 45 channels in parallel, just stick it again on the GPU. I didn't even bother measuring what a CPU resampler would do because it probably would be super slow. So, how does a resampler work?  If you have like 32 filters in the bank, it up-samples the signal by 32. And then what you do is you down-sample again by basically an appropriate step length that gets you close enough to the needed sample rate. And the cool thing about that is that you can basically skip most of the up-samplings part that you have done before because you just skip computing the output of the filters, so that's pretty neat. But you don't want to just skip the filters and then be close enough to the sampling rate. So, you also do interpolation, which I think is a minimum mean square error. I'm not 100% sure. I just looked into Harris, the book of Harris, and did what he did. So, you have two filters that filter the signal and then you interpolate between the output of both filters to be more accurate with the resampling time. So, how do you do this? So, you start as, again, you work with the polyphase filter bank. If you want to know more about that, then you can check maybe my previous talk because otherwise it gets too lengthy. So, you have your tabs for the filter that are basically designed as you would have like one general FIR filter. Then you have that. Then you add basically the second filter, which is the differential filter. And it's basically, for each tab you take the difference between the next tab and the actual tab. And then you zero out the last tab because you don't have another tab to make the calculation for that. So, that's pretty much it for how to design a differential filter.  So, you know, in FIRST filter you have like the zero phase and then FIRST phase and so on. Good. So, but how do you then actually do the resampling? So, you have the interpolation rate, which is how much you up-sample. This is basically, yeah, let's keep it like that. That's how much you up-sample. You have the decimation rate. It's basically how many filters you skip. Then you have the floating rate, which is like the difference between your integer resampling, which you would do when you just up-sample and down-sample by integer factors and your actual rate that you want to achieve. And then you have something that is like an accumulated rate or maybe more appropriate, it would be an accumulated step size. So, this makes basically finding the right filter more accurate. So, how are these calculated? Interpolation rate is basically just a number of filters you have in your bank. It's pretty easy. At decimation rate, you basically calculate by having your interpolation rate dividing it by the rate you want to use. And then you make a floor because you need an integer. The floating rate then, of course, is just like the difference between your real, decimation rate that you would need and your integer decimation rate that you can achieve. The accumulated rate is then done in two steps. As we can see later, while we do it in two steps. So, first of all, you update your accumulated rate by adding the floating rate to it. So, you start at zero and then every time you filter your signal with a filter, you just add the floating rate. This basically determines the exact filter you're using. After you have filtered and the signal, you just basically do a moduli one. So, you always have to accumulate the rate between zero and one. Because basically, all you want to know is, do I need to get, is the next filter closer to the actual sampling rate than the integer or not? And basically, that's how you determine it. So, yeah, how you do the filter skips. So, basically, you just calculate the output of your filter at index whatever. Usually, you start at filter zero, or you can also start at filter, like in the half of the filter bank, which changes the phase a bit. But usually, you can get away with zero. Then, you basically do the interpolation, which is you take the output of the normal filter and you add the output of the differential filter multiplied by the accumulated rate. And then, basically, you update this accumulated rate according to this. So, you add the floating rate. Then, you update the filter index for your next output that you want to calculate. And then, you just cap, or not cap, then you just do the mod one for the accumulated rate to always have it between zero and one. Yeah, and then, you update the input because, you know, for example, resampling to a lower sampling rate, you might just skip one input sample.  So, yeah. So, how do we get that now on the GPU? So, CUDA. Well, first of all, a short introduction to CUDA. So, what is CUDA? CUDA is basically NVIDIA's framework to do general purpose computation on the GPU, which is, I think, mostly used for scientific calculations and also heavily now in SDR. And it's the architecture of CUDA or how you would program it as closely related to how NVIDIA actually builds their GPUs, which makes a lot of sense. So, if you have a GPU, you usually have some multiprocessors on the chip, which basically all come with their own cache and their own ALUS and whatever or not. So, they have this on-chip memory and the cache, which is super fast, like your normal CPU probably would have. And this is pretty vital for, as we see later. Yeah, every multiprocessor has tons of ALUS, or they're called CUDA cores if you're talking in CUDA language, which are basically your kernels or your cores. And they have this global memory, which you usually see advertised. It's like with six gigabytes of DDR3 RAM. That's the global memory, which is super slow. And we usually try to avoid using that at all. So, there's another thing to it. So, basically, how do you map this architectural stuff to how you program in CUDA? So, in CUDA you basically have three terms that are very important. You have the grid, the block, and then you have the thread, which actually executes your computations that you need. So, the grid is basically you can, I always imagine it is. It's the GPU with all the stuff on it. You have your block, which you could map to multiprocessor. It's not really the case. Every block gets somehow executed on one distinct multiprocessor, but I think that it's close enough if you imagine it like that. And you then have the thread which runs on your CUDA core. Another important thing is the so-called warps, which is how the CUDA or the GPU scheduler schedules your computations. So, usually, they just stick 32 threads together. They're a warp and they're executed concurrently. You can do all the stuff like use the shared memory and the fast cache or local memory. Yes. Some rules of thumb, how you would program CUDA. So, usually, spawn more threads than you have cores. So, for example, I think the GPU that we used to have something like 2000, something-something cores, but we spawn like 32,000 threads. Probably not all of them. So, probably we are having a bit of overkill there, but usually the GPUs, they have a huge pipeline also for scheduling of the threads. So, if you keep the pipeline busy by having more threads than you have cores, you gain something. As already said, the global memory is super slow. So, the first thing you want to do after you've transitioned your data from your host to the GPU, which goes into global memory, you want to transfer all the hot stuff that you need to use frequently to the on-chip memory, which you can configure either as a cache or as this SL2 cache or as this CUDA shared memory. Yes. Something that you also need to take care of. For both transitioning data from global memory to the shared memory and from basically accessing the shared memory is that the GPUs have, like the CPUs, they have a cache line. The cache line is a bit bigger. If I recall correctly, the cache line is just big enough to provide all 32 threads in a warp in a single memory load with values if adjacent threads, so access adjacent memory. So, let's say your thread zero, access memory zero, and thread one access the memory at position one, which is then with a four byte offset always. So, because then you have one load that serves all the threads, if you don't apply that and you basically have multiple memory loads per warp which seriously slows down computations a lot. So, yeah, how do we do this now with the resampler? So, we basically do the same as we did before with the channelizer. So, we have one channel, so that the channelizer outputs 45 channels and we resample all 45 channels at once. So, we have one channel mapped to one CUDA block. So, each CUDA block basically takes care of resampling one channel. And each thread inside this block basically computes one resampler output. So, we only have concurrency by calculating several filter outputs at once. So, we don't do anything like do the multiplications in the dot product in parallel and then somehow see how we added. We don't do that. We just do the dot product basically in one kernel and concurrency comes from processing several samples at once. Which also minimizes synchronization because we really don't need any synchronization because the warps basically synchronize themselves. So, yeah. Filter calculations. Most of this filter calculations and by filter calculations I mean which filter to use are done on the GPU except for one thing. So, I made the decision if I have output from the channelizer because I have to transfer that again back to the CPU and I have pretty good CPU host code how to do streaming and I didn't have that for the GPU. I wanted to process all input samples at once. Which means with an arbitrary resampler we have a variable number of output samples. Which also means I don't know how many threads to start before I have to do it. So, to do that basically I pre-calculate how many samples I will produce in this round on the CPU transfer that to the GPU and I basically prayed for two things. First is that my calculation on the CPU weren't somehow compromised by doing a huge floating point multiplication. And second is frequent transfer from the CPU to the GPU don't slow down my system too much. So, yeah then we just start our kernels because we always start kernels in numbers of 32 I might be doing some wasteful calculations but I don't care I just throw the unnecessary stuff away when copying the data back from the GPU so we are fine on that. So, yeah I actually don't have that many benchmarks because I was a bit in a hurry and all I cared about is that the chain polyphase bank channelizer polyphase filter bank resampler was faster than four mega samples so I basically just pulled them together had the same setup 45 channels 1550 tabs prototype filter used for the channelizer I think the filter for the resampler was smaller it was 350 tabs something like that and yeah we processed 768 samples per channel in parallel and the result was 25 mega samples on average which was pretty good because that means I probably can sustain four mega samples for a long time. Yeah, so that's pretty much it. So last year I stood here at FOSSTEM and said yeah we're going to open source it and until September I was really optimistic that I can open source it until management got wind that I went to open source the stuff and then the bureaucratic nightmare started so I really had to go through a lot of bureaucratical stuff that wouldn't even guarantee me that I can open source it it was just that I had to put something on the table for our institute's management so they can then decide the fate of the software which was I had to check licenses I mean of course that everybody has to do that check the licenses I chose LG PLV3 if anybody is interested then check export control which is a real nightmare because German aerospace center doesn't really have a guy who can help you with export control so I manually went through the German export control list and if you're doing communication basically everything is regulated even a tiny FIR filter I think qualifies for having to be checked if you export it I just said it's fine I mean the technology is out there since I don't know ages there are several already available re-samplers IngenRadi for example so I think should be fine there I had to check with every project partners and coordinator and get their written approval that I can open source it even though it was our code but yeah you have to do that and I had to establish a contributors license agreement also there there's nobody to help you at DLR and then basically you have to do it yourself without you takes a lot of time like researching what does Apache what does FSF then come up with something that is similar to that but tailored to your needs also the cool thing is that I'm leaving German Aerospace Center in two weeks so in two weeks I have to sign the CLA for my own code which is pretty neat or not yeah so I still had to convince management so I wrote like thousands of documents and I give presentations I had other people give presentations for me because I'm not invited to the management meetings and yeah still the whole project was in jeopardy I was in contact with Martin I think also till last week I might not be able to make it and yeah last Monday I got the green light yeah one hour before I went on vacation so I had nothing done by Thursday pretty much in terms of having something for the presentation so the whole presentation was done on Thursday afternoon and that's it and yeah but there was lots of talk about management I also have to thank a lot of people at my institute mostly probably Jan-Louis Gilever who is my group leader and who fought relentlessly for me in all these management meetings also Hati who basically is our senior lead developer who also represented me in countless management meetings and made sure that the people understood hey it's good for us, it's good for everyone that we open sourced that stuff so yeah also some special thanks to me and Gerard for the Kung Fury images that you saw and enjoyed I hope so yeah then thanks for your time and have we time for questions? yeah we skip the pause now we can do one question yeah so computation depends on the previous one depends on the previous filter output no so no so each filter ah okay so the question was whether the filter output is dependent on the previous filter output it's not the thing with the precalculation is that sometimes as you skip the filters basically you overflow your filter bank earlier or not so in our example we could have had 1440 samples or 1441 samples produced by the filters I need to know in advance because I need to arrange stuff when copying so what I did I basically precalculated 1440 filter skips for that and to see at what filter do I end up and so because I also needed the last filter to start it again at the next call to the GPU that's where the floating point I was not sure whether then after one million calls I would still be in line with doing all this multiplication it's in contrary to just adding all the time just a tiny amount so that's it but everything is concurrently yeah that's it so thank you