Okay let's go. Once again, welcome everyone. My name is Sakmabicki. I'm a senior software engineer in Apsilon, a company focused on providing solutions for various other companies based mostly on Shiny. But also we do some other software engineering related to R, but our main topic is Shiny. And today I want to share with you a glimpse of a tool that we developed during the years, maybe not during the years, but the idea of having such a tool started a few years ago. And the thing that I will show you in a minute is the outcome of those years. So basically what is Rhino? Rhino is a framework for Shiny applications that keeps in mind that Shiny is and are in general, it's just a programming language. So if it's a programming language, then let's keep all those best practices developed through the years of software engineering and put it here. Let's use it to produce something that is reliable, that is maintainable, and let's treat Shiny and R as it should be treated as a regular tool that can be used in enterprise. So I bet all of you already heard about it, because we released it a few years ago. And the general idea I want to show with you is the Rhino is a framework that's kind of a toolbox. It is based on various different tools that are known. And it combines them and shows how you can use them to test things, to write things in a better way to keep your code the best as it can be. Of course, those are just our ideas how it can be done. There are other tools that do similar things. But this is the way that we came and this is something we want now to share with you. A few things about this workshop. We have only one half hour, so this will be a pretty fast one. And to be honest, I have a lot of things already prepared. So probably you will not be able to keep along with what I'm showing on the screen. Don't be afraid. Here is a link to the repository. Now it's empty, but I will post everything there. A few things about the requirements. I assume that all of you have already installed Rhino. I also asked for Node.js and Yarn. Those two are optional, although without it you will not be able to follow everything. Most of Rhino will still work, but without some cool features that I will show you. For now, we are all muted. If you have any questions, please ask them using the chat. I'll try to monitor that and answer them on the fly. If you have some bigger ones, please keep them till the end. I hope we will have some time to answer them or at least a few of them. Do you have any questions right now? If yes, just write them on the chat. I can't see anything, so let me go to the actual coding. This will be more or less live coding experience. So let's start. First thing, that is kind of obvious. Before that, we will have the recording on our constant YouTube. Node doesn't really matter. Both versions 16 and 18 are okay. I know that Rhino also worked with version 14, so this should be fine. Any new one should be okay. First thing, we need to start Rhino application to create an initial Rhino application. You can do it by running Rhino init function, or if you use RStudio, you can simply create a new project. If you have Rhino already installed in your system, you will see something like that. For this workshop, I will use Visual Studio Code, but let me first create an application. As the input for Rhino init, you just need to give your application name or your product name. This is actually simple, so let's call it our medicine. And something's happened. We will have our profile. We will have some packages here. As you can see, Rhino forces you to use our end. We will have some structure created. So let's quit. Let's go here and let's start coding. I trust myself. Okay, so first of all, is this size of the screen okay, or do you want me to enlarge it? Maybe I'll do it anyway. Okay, what do we have here? We have App.R, which is an entry point to our application. And this is something that will run your application. If you are in our studio, you will see a button to run a Shiny application. RStudio perfectly recognizes that as a Shiny app. If we want to do this, okay, I need to make it smaller. Sorry about that. It does not work. Sorry. Okay, we can go with a different mode.  And what you see is an initial Shiny application. So what happens here? Rhino starts the application based on the main file. This is the initial module that you get when you start a new Rhino project. And this is something you should be familiar with, the server part and the UI part. What is different comparing to the regular Shiny? You already have it wrapped in modules. Second thing different is this part. In Rhino, instead of using library, we use box. What's the difference? This thing will load Shiny, but will load only those functions from Shiny. So it's our page, module server, and this is local. So those functions will be available only in this script. If you know Python, this should be kind of familiar to you, because box is based on the import idea that is known in Python. We'll get back to it in a second. What else you can see here? There is our end of this here. So you already can see the full library of your project. And you have our end of the log. So you know everything about all the packages that are here. You get some configuration files. You get some initial structure of your application. A few directories. We'll get to it in a second. Some initial JS file. Some initial CSS file. You get a configuration for your CI. This will come in a minute. Okay. So the initial application is pretty simple. Just hello. So let's start with having something. Let's add a table. And to do that, we need a table. We need a content of the table. And we will need to put it inside the application. So first, let's create a function that will produce a table. I will choose the logic directory because it's a place where you should put your application logic, which is not reactive. Let me call it just table. By the way, this expression between logic and view, which I will use in a second, is just a suggestion. So if you want to use some different names or a different setup, feel free to do that. All right. So now I need to write kind of a function that will produce a table. So I will call it again table. It should take something and do something with this dataset. So now we need a library that will produce a table. There are multiple solutions here in Shiny, DT, our handsome table, so on and so on. I will choose react table first. I need to install it. And this is the first place where Rhino uses a well-known tune, which is aren't, but adds a small twist to that. So first, let me install react table. It should be pretty fast because it's cached. And now what I should do is probably do the snapshot. So to record the react table in my dependencies file, in my aren't block file. But the general way aren't work is that it scans your whole project setup, project directory for all library calls, double columns, things like that. Here in Rhino, we slightly change this solution. There is a file called dependencies, which is the only file that will be checked for library calls. So if I, for example, I'm testing various libraries for table, like DT, handsome table and so on. And finally, I came up with the idea that, okay, the react table is the best one and I will choose that. I will not end up with a mess in my aren't block in my environment because only things that are here will be stored in aren't block. Now the repository is still empty. It will, I will push things as I'm showing you the application. So for now, it is empty. It will be populated in a minute. So, okay, you see it found that react table is used and it stored it in my aren't block. Okay, we've got this. So now we need to let this script know that we are using, we are going to use react table. So as I already told you, you're not going to use library, we are going to use box. And this construction will tell our that, okay, we are using this package and we are importing this particular function into this here. Okay, there is one thing missing, which is export. You probably know this keyword from package, from developing packages. This is exactly the same. And now the, if I will try to use that file, I will know that, okay, table is a function that should be available. So in fact, you can think about this very, very small script as a very, very small package. I can have additional functions here. And this will be hidden. Only table will be available if you will try to use that. Later, if I, if the product is getting bigger, maybe this will be part of a package. And okay, I can see a question about the description file. Yeah, the problem, we try to use the description file. This is still in progress. The problem is that aren't, if it, if it finds the description file, it will store the libraries, not here, but in a general location. So this can cause some problems later with the, because the library is not fully stick to the project. Okay, the triangle, this is just the, the native pipe from, from the new R. VS code is just, because I am using, if you record fonts, so this is automatic ligature that will be shown here. And if you, for example, use things like that to also be, be modified. Okay, benefits to use VS over RStudio does the matter of what you like. I like VS code more. It's better to, to use it if you work with different languages. And extensions are super cool. Okay, let's, let's go back to the, to creating a table. We have a table. We need something to put inside. So let me create another file. And I'll just use a data set that is available in Rhino, which is called Rhino's and will, inside there will be, there's, there is a bunch of facts about Rhino's service. So here is an exception regarding the box. Normally I should use here dollar sign. This is a, an alternative to this structure. Instead of having something like that, I can have something like that. Now I'm importing whole package. It's not available. Or the functions are not available directly, but they are accessible by using something like that, the dollar sign. If I want to have everything in, in this script, I can do something like that. I, this is not a good practice. You lose all those, all the benefits, all those benefits that, that, that are given you by using box. But yeah, you can do that. Okay. So here, this is an exception because for data sets, the dollar sign doesn't work. And the last part, I need to use all of this in, in the, in my application. So let me quickly show you how this can be, how to approach that because now we have two scripts, table and data. And we want to create a new view with that table. So Rhino takes everything, including the main part, and wraps it into shiny modules. So this is one leg of the, of the encapsulation. The other leg is box. I will help you a little bit more in a second. First, let's, let's make this work. So, yeah, we need to simply render those, those things. And we need to be able to use those two scripts that we just made. Okay. Box can not only use, be used to call libraries. It is also going to be, it's also used to load your scripts. Instead of doing source something, you can do something like that. This points box to upload the table, which is the file we just created. And you, and it understands now that the table will be a function from that script. So why you, you should do this instead of having a global source. As you can see, I hear you're stable, table, table, table. This is an over-engineered example, because this is just a very, very quick workshop. So this is, this may not make too much sense here in a such small application. But if you have a very, very large application with 20, 30 files, you can imagine that there can be a mess.  And you will start thinking, okay, so I have a function fetch date. So where does it come from? And here's the answer. It's pretty clear immediately after you enter such a file that, okay, I'm using here those two scripts, date and table from logic, those two functions. And I need shiny and direct table libraries. So later, if you get to this application in six months or any new developer gets here, they will immediately know what's going on. And you avoid various conflicts regarding the naming. Okay, so this is a more or less full module of, that can be used in our application. Finally, we need to add it somewhere, add it to our main part. So first, of course, we need to load it again. This is the table. But because this is the path, you already know that this is a different table that we have used in a second ago. Okay, we don't need this initial part. What we need is, we need to call the module that we just created. That's it. We don't need those things. Let's check if, of course not. Okay, so we missed something. We missed reactive. It happens here. So here, the data is fetched inside reactive. This is something that will be useful in a second. Okay, I see a few questions here. How to create a view table are just create a file and this, I will post this in a second. This will be just a regular Rhino module if you have, if you are using RStudio, there is also an add-in for that. So best thing would be to wait a second and let me give me a second. I will just quickly push everything to the repo. Okay, so, sorry, I accidentally sent this to just one person. Okay, once again, this is a link to the repo. You should be able to see the code there. Okay, let's get back here. The application doesn't look very well. The table is kind of, makes not a lot of sense. So let's upgrade it.  I will simply use the player and tider to do that. And what I'll do is I'll make columns for each Rhino species if you do notice. This is a table with a population of various species of rhinos by years. So what I'm going to do is I'm going to make a column for each species and around it by year. What I miss is of course, installation of packages. I need to save them in my RnVlog file. So I need to add them to the dependencies, the snapshots. So it's all stored. Okay, it looks a little bit better. So we have column for years and for each species of rhino, we have population. Of course, this is, we have some blank spaces, but that's okay. Okay, we have a table. Maybe let's add a chart. So again, same as previously, let's create a, for that, for the logic regarding the chart. Again, this is an overhead. So normally I wouldn't create a logic for a chart that can be created in a single file. This is just for the sake of the workshop. So again, I will use each R for R. I will need, I will quickly copy a prepared function. So what we want to do, we want to have data, probably the same dataset as we used in the second ago. We're going to group it by species. We want to have a chart by year. We want to have a chart where the line will be marking the population of species. And x-axis should be here. And we can add tooltip just to make it better. Okay, so we already have a logic for the chart. Not much logic, but a logic. We need a view for that. Again, this is much overhead, but this is just for the sake of the workshop. And we will need some functions from each R's from R. And of course, we'll need to import the logic that we just created. So okay, let's use that. Let's create a module with the DIY part, which will have these output. And of course, renderer for the chart. So okay, we have data. Data will be the same as in the table. So if you go here, this is a pretty simple function that just loads dataset from a package. But we can easily image that, have an image that this can be a call to the database. This can be very expensive. This can take time. So there is no point in there is no point in doing this twice. Let's simply pass the object here. And if we want to do that here, we probably also want to do the same. And this, this will be just a part of our main function that will, our main module that will fetch the data and pass it to the table. We also need to remember that reactive is now here in this file, not imported. And what we need to do is we need to import here the chart. One thing that is cool in box is that you can have a trailing comma. So later, if you push this to the git repository and someone will add something here, only this line will be modified. So this makes things much more clear. Okay, let's call the UI. Let's do the same with this part. Sorry. And what's missing is the package. One more thing is the dependencies and the snapshots. And of course, there is a problem with the main file. And there's still a problem because I did a typo. What happened now? First, we, I missed the export here, but it was working because if there are no exports, box assumes that everything is exported, but the missing part is here. We, because we started fetching data here, we need to do a logic. Sorry. We need probably something like that. Okay, we've got everything. We've got a chart. We've got a table. Okay, so this works. We have two components. We have an over-engineered structure for such small applications, but it's in a larger scale. It will give you some, give you a lot of benefits. So again, for a small application, this may be an overkill to use the things. For a larger, it immediately starts to make sense to keep it like that. Okay, so yeah, let me quickly push everything to the repository. You can have access to that. Okay, so what can we do next? Okay, let's see here. There is a comma here. This should be a year. So this comma makes no sense. And this is because this is an integer. So it starts automatically adds something like that. Let's get rid of it. And I will show you how Rhino can interact with JavaScript code. So if you put the chart logic here, you can add something called formatter. And this will take all values and somehow format it. And this needs to be a JavaScript code. So I will simply use HTML Widgets.js to convert a string to a JS code. And normally, I would just write something here. Very, very short snippet of JavaScript code to remove this comma from the chart. But it's a great opportunity to show you how JS works in Rhino. So here, there is an initial file that should contain your JavaScript code. There is a whole directory for that. Let's use it. And let's make it cool. So let's use some features from newer JavaScript. Sorry. Okay. So we need to take value. And we need to make it a string. If it's a string, then it just for our shouldn't convert, shouldn't add this comma there. So there are multiple ways to do that. Let's use string interpolation. Again, overkill here, but why not? Okay. So we have this function. What's next? Normally, in Shiny, you would add a tag script to the head of your application to load the script. And this would be accessible. Rhino kind of does it for you. But again, with a twist. Because the things that are here are not going to be directly put in the application. The location of all files that will be accessible from the browser in your application will be here in static. For now, there's only the icon. But there is a very, very easy thing that you can do. And this is the first place where you need node. So what I have to do is I need to build a bundled JS file from what I just wrote. To do that, I need one more thing. I need to export that function. So similar to what is done now in our files, in JS code, in Rhino, you need to export things that you want to access from outside of the script. So without this export, I wouldn't be able to access this format here function.  Rhino will install node. So this is a plate, node module. So this is a moment where you need that. If you don't have a node in your machine, then you need to do this the old way just by adding scripts to your head. What is this? Simple. This is the arrow, equal mark. And again, this is just the way that JS code formats it. And what just happened, Rhino created a new file in static.js with a JS code that is minified in a single line that is simplified that again, this is an overhead because this is just a very, very small function. But in a large code base, this is a common practice. And this is something natural for people in JS world, not so natural in R, but Rhino tries to bring all those best practices here. So this will be faster. This will allow all the browsers to use this JS code, things like that. Under the hood, there is a webpack, there is Babel. You can learn more about it in line documentation and there are links to those tools. But let's check if this actually works. Of course not. And it does not work because I created this function, but I didn't use it actually in the chat. Sorry about that. So here, I need to use this format here to give the information that I use this function to format those files. But this is another difference between regular sharing and Rhino. Now everything that is exported can be found under app. So if I do something like that, I hope that this will work. Okay, finally. As you, I hope, can see that there is no comma here. Okay. One more thing regarding JS code. This is not very cool because we have these are three lines. I used arrow function, which should be probably written slightly different. And regarding the style guidelines for JS. So what Rhino can do for you? Rhino can check if your code looks okay and does not. We have missing semicolon. We have too much things inside the row function. Probably it works as you saw, but let's make it better. And I don't need to do it backhand. Link.js has a nice argument fix. And you can see it looks much better. It's just one liner. Looks nice. Okay. So that is regarding JavaScript. If you want, again, there is documentation for that in Rhino. We are working on that constantly. So hopefully there will be more in the future. There are also some discussions on the GitHub page of Rhino. So please check that. And yeah. Let me quickly add this to the repo so you can access it. It's there. Okay. What's next? The application still is not looking the best. So we should probably add some styling here. And to do that, I will quickly add a few things in the main. So what I want to do is I want to have somehow this chart and the end table inline and maybe add some border or something like that. First, let's add some helper functions. As you can see, you can add them in the main. Normally for such components, I would probably create another directory called components or UI components. But for the simplicity, let's add it here. I have added div. So it will ask for that later. So let's give a box the div that it wants. And let's wrap those things in those functions. Okay. So this is now in the grid. Let's add it to cart. And as you can see, the only thing that will now happen is we'll get those classes in those divs. So we can style them. I can do one more thing. I can add title to the page. Okay. Let's go. Okay. We've got title. If you check those elements somewhere, okay. Here we have class cart and here we have class grid. So we can do styling on those elements. And obviously I have some CSS prepared. And for the CSS code or the styles, we have another directory called styles. And this is another tool that is used by Rhino and is incorporated into the code. It's SAS. It's a modern language that uses a little bit enhanced syntax to produce a regular CSS. So here you can see one of things that are available, which is mixing. So I can create something like that. This will give me a shadow. And later I can include this code in the specification for the cart class. Later I could have another class like box and I will also be able to include the same thing here. So there's no need to write it. Why is the same? There are multiple various things you can use. There is nesting. There are functions. So this is really cool. If you want, please check the documentation of SAS. And this is something. Maybe I will remove this thing. This is something that is not a valid CSS right now because the regular CSS does not know what is mixed in, what is included. And again, same as this, this is just a file that is somewhere here and application is not going to see that. And similar to what happened a few minutes ago, we need to build proper CSS from this. As it was done with JavaScript, this can be done also with the SAS code. And here is a place where you can either use Node or R package. I encourage you to use Node if you were able to do things with JavaScript, you should be able to do things with SAS. So if you don't have Node on your machine, you can go to Rhino-Yaml and change this SAS configuration to R. And this will allow you to use the R package. But the problem with R package is that it depends on library that is deprecated. So it will not give you the newest features that SAS is bringing to you like you will probably need to still use import to import other files while now it is encouraged to use a keyword. There are some things that are changing and you will be stuck with the old version. Okay, a question about this. Okay, this is just extension to Visual Studio Code. This is one of the reasons I like this code. I can manually pick up a correct color. And how I created the CSS file so quickly. So the CSS file was here. It was empty. And I had these styles prepared. So to quickly guide you what's going to happen. There is no margin around here. Looks pretty odd. So let's add a margin to the whole application. Let's use a grid display to inline those two parts. And let's add a shadow and some padding to each part so it will look better. Okay, this is regarding the shadow. This is just a snippet to do that. So, yeah, to be honest, I copy pasted it. So this is not something that I know by heart. It's just a matter of how white should be the box around the object. Okay, question about this one. No, this can have only single value. So if you can use Node, please leave it as it is. If you have to use our package, you can change it to R. But there are no other options and you can have only one option. And this controls what's going to happen here. And this is the similar function to what happened with JS. So what is new right now is this file. So you can recognize all those things that were there. And if you check the definition of card, it now has this shadow. And again, same as with JS, this file is already imported by Rhino. So there is no need to create a link to the style sheet in the head of application. This is already done by Rhino. And, okay, it simply works. So now we have a nice box and inline things. Okay, so this is it. And same as it was with the, with JS, you can also have a linter or SAS. And this is something that requires Node. So if you are using our package for SAS, sorry, this is not going to going to work. Now it works fine. It looks okay. If I miss semicolon, it should be able to spot it. Okay. And same as with JS, it will be able to automatically fix it. Okay. Let me add it to the repository. Okay. I have a few more tools to show in Rhino. So, but this will require a little bit more interactivity inside the application. So I want to create another module that will be responsible for filtering species. So now we have everything here. I want to add another card here that will allow you to select which species you want to have. So again, same as before. Let's add some logic to that. This is purely related to the data. So I will create a function to filter. It needs to be exported. And let's just use the plier. And as previously, we of course need to have the plier imported here. Okay. So now this will work. This should simply filter our data set with what will be given in some kind of input. And let's create another tab for that, another box or something. So again, let's use a Shiny module for that. We will need to use this filtering function. So we can filter. We can have a checkbox for that. So let's import a checkbox. Let's create a checkbox. Okay. We need one more thing. We need options for those, for this checkbox. So we could pull it from the data set. But again, for the simplicity, I will just create a simple vector. As you can see, there is no problem with exporting a vector from a box module. I will simply use it to populate the checkbox input and to use it to start with all selected species. Okay. And we have the UI. We need to do something to happen in the server part. So for sure the server will need to get some data. And it should produce a filtered data set. So let's use our new function. And let's use the, what is in the input. Okay. That should work. And now we need to add it to our main module. So we need, we need these filters to be imported. Be helpful here. And obviously we need a server part. Now this, we need to somehow assign the outcome from this server to be just this reactive into a variable and pass it to the table and the server. So let me quickly do it. Okay. So now what's going to happen is we should be able to see a checkbox input with filters, which will be passed to, and which will be controlling the data set and data set after filtering should be pushed to table and chart. Okay. So it almost worked. We again missed the reactive part. Here we have reactive filters, also reactive. Okay. Let's give it. I guess this is something we've done. Okay. Because it's, it's a reactive to do this. Okay. So we have a filtering and it should work. It works. And probably we also need to change a little bit this layout. So let's go to our styles. Let's make the grid three colon one. Again, to build. There is a way to not have to do it every time. Build stars has an argument watch. If you run it with that, it will be running constantly. And each time you change your CSS file, it will rebuild it and create a new one. But I'm not going to do this here. And same as with the previous features, this only works with the node version. This works. So this is not bad. It works. Maybe this could be wider, but let's leave it as this. And I will quickly add things to the repository so you can, you can have it. Okay. So another good practice in software development is to write tests, obviously. So in R and shiny, then obviously you have a very good framework for testing, test data, very nice package. So Rhino is not reinventing the wheel. It just helps you with writing your tests. So if you go to the directory, you already have a test directory and test that. There is a single file that tests the main server. We already modified that. So let's get rid of it. Let's write a new test. A few seconds before, we created a function for filtering. So let's create a file that will be responsible for testing that logic. It needs to start with test. What we need? We need to test that. So here, as you can see, I simply imported everything from test.dat. And I wouldn't do that in the application, but in the unit tests. And for the sake of the speed, I will leave that as it is. Let's import our function. And one thing you should notice here is that we are now in tests.dat directory. But we still start our path from the root. So this is something that, again, Rhino gives you. And it is hidden here. So when you start your R process, our profile is obviously red. And it will set the box path, which is the root where the box packet will look for modules to your working directory. That's why you don't have to do weird things like that here. Again, it will understand when we're... It understands such things, but there's no need to do that. Okay, we have not much time, so let me quickly copy the unit test. It's very simple. It just takes a mock data frame and checks if we filter by A, it will produce the proper IDs. And again, Rhino has a wrapper for tests. And okay, it just found the test that we wrote and all are working. Okay, but this is pretty common. What is not so common is the usage of end-to-end tests. So Rhino comes with a framework called Cypress, which is responsible for running a front end test, which is responsible for testing the front end of the application. So let me quickly run the basic tests. Okay, maybe I should run it differently. So it will... What it is now doing, it is running a Hedl's browser with the application and it checks if that worked. Okay, our application worked. And but to show you how does it actually work, I will quickly copy paste an actual end-to-end test. Okay, what this is going to do, this is going to open the application and this is going to click all the checkboxes. So it will expect some kind of message, which is not there. And let me show what happened, but this time with the interactive mode. So we will see what is going on. Okay, so we have our test, our test file, which I just edited and here's two tests. First it checks if the application starts and then it fails. That's okay. You see what happened? If all the checkboxes are unchecked, there is a problem because there is no data, so the chart fails. And you can go through the scenario of the script and check where things happen. We don't have time to dig into that, so this is a powerful tool. It is kind of competitive to what was recently shown on Studio Conf and on epsilon Shiny Conf and I mean Shiny Test 2. It is kind of a different, it requires node, it requires writing tests in JavaScript. So this is a sample test. But on the other hand, it is better comparing to Shiny Test 2 because it actually simulates the actions in the application. Shiny Test 2 does things like changing the value of the input and here we have an actual click on the input, so an actual event. So there are some differences. Probably right now in the future we'll also incorporate Shiny Test 2, so stay tuned. Is there a gallery of apps that use Rhino? Not yet. Some of our recent demos are using Rhino. So in general from looking at last few months, we in epsilon started using Rhino, so probably this will come in the future. For now, unfortunately, there is no gallery. The UI of the application will be similar. There is no difference in what you get. There is difference in how you write your application code. So don't expect from such a gallery anything different that you can see in some top-notch Shiny applications over the world that the key is what's going inside. Okay, we have only seven minutes, so maybe I'll end right now and I'll let you ask some questions. So from now you should be able to unmute yourself. So if you have any questions, if something was unclear, please ask. Now you can always write on the chat. If there are no questions, I can show you one more thing that is available in Rhino, which is logging. So if you go to that config file, which again uses a config package from from RStudio, so it utilizes things like having different environments and like that. Check the documentation. It's really, really cool. It is populated with two values, with Rhino log level and Rhino log file. So if you go to, let's use it here, we can start adding some messages, which are kind of a better than a simple print. Let me show you what's happening. In Rhino, you can import log, which will include seven standard levels of logs that can be produced by your application. And if I now run the application and start filtering, we'll see that it informs you that, okay, there was filtering action, this timestamp, and the level of the message is info. So it is a pretty standard in software engineering. The cool thing now is that you can change the level of those filters, of those messages. So if I change the value of the of the environmental variable, just here, to something else like warning, the patient will no longer produce those things. So if this is a production application, you can have a very limited logs. But if something happens, you can change the level of logging to debug and have very, very large logs to debug it very efficiently. So this is a small thing, but a really cool, really standard thing in the applications world. So this is now incorporated into Rhino without any additional configuration requirements and things like that. It just works. Okay. Time is up. Time's up. I think we can finish. If there is anything you want to ask, we probably have still time for a small question. If not, please, you can reach me on LinkedIn or on Twitter, or you can write to us at epsilon via our website. So thank you very much. Thank you for watching. How easy it is to use crosstalk with Rhino. It should work. In general, the most of the shiny packages in simply work, there are some problems with, it can be some problems with, for example, the debugger in our studio because of how the box is loading things. But in general, it should work. If it does not, then Rhino is pretty fresh. So any feedback and any comments will be appreciated. We will try to make it work if there are some problems. Okay. I don't see any more questions. So again, thank you very much. It's a great pleasure to be here with you. I hope that you will give Rhino a chance. Thank you.


What do you know about introverts? For those of you who are more extroverted, the quiet nature and aloofness of introverts may seem very mysterious and even intimidating sometimes. So to learn more about what's really going on in their minds, here are five harsh things introverts want you to know. 1.  Well, it may be something that comes naturally for you, smalltalk can often feel tiring and draining for us. For this reason, introverts may sometimes zone out, disengage or avoid smalltalk altogether when it comes to it. Instead, you may find us choosing to engage in deep conversation with one or two people. 2. We Like Writing More Than Speaking Have you noticed your introverted friend getting flustered during an unexpected phone call or speaking like they're at a loss for words? Those introverts tend to work through things by contemplating about them on our own without interruptions. Because of this, we find it very uncomfortable, stressful and even exhausting when we're put in a situation where we need to quickly and clearly articulate and express exactly what we're thinking and feeling. 3. We Value Time Alone To Get Things Done What do introverts do on their own if they're not socializing? Despite what you may believe, introverts are actually bursting with ideas and projects that they want to explore. It's just that we like to explore them when in a quiet and safe space, away from others. This is why we value our time alone so much, and why having others intrude in that space can really derail our ideas, train of thought and put us in a bad mood. 4. We Are Selective About Our Friends Does it seem like we don't care about anyone? Despite our aloofness, introverts can care very deeply. While we do appreciate social connections, we tend to be most comfortable and affectionate with our closest friends. Instead of forming shallow connections, we're much more interested in building deep connections with those whom we feel safe around. After all, it takes time for us to open up and blossom around the right people, so don't feel offended if we seem very guarded at first. 5. We Don't Need Fixing Ever tried to help an introvert, only to be rebuffed? Perhaps you tried to offer tips to be more outgoing, invite them to a lot of social events or encourage them to speak up. While you may be doing it with good intentions, introverts do not need fixing. Like with everyone else, we just want to be who we are without being judged for it. Ultimately, we enjoy having a few, but very close friends, and just want to thrive in our own space and to live life on our own terms. Did you relate to any of these points? Let us know in the comments below. If you found this video helpful, be sure to like, subscribe, and share this video with those who might benefit from it. And don't forget to hit the notification bell icon to get notified whenever Psych2Go posts a new video. The references and studies used in this video are added in the description below. We'll see you in our next video. Take care.


Welcome everybody to our next video in our training series on 30 Boxes. In this video, we will show you how to add details in your calendar. We're now going to focus on an appointment for videos in YouTube. It's scheduled for the 15th of April. We click on that, hover over the videos in YouTube entry, and click on Edit to add details. You can see it's already scheduled for the 15th. We want to add notes to remind us of the importance of this appointment to make sure that all the videos are uploaded. We can also tag this to make sure we can find it in a later search. So we will tag it, Upload Videos. We can now click on Update this event, and when we hover over the event, it will show the additional information of making sure all videos are uploaded. It's a simple process for adding details to your appointment.


So it's 8.30 in the morning and I just woke up to a message from my little sister saying wasn't yesterday your nine year so bad anniversary and I thought to myself wait a second it is. So it feels like I've been not drinking and doing drugs for so long that it's not a novelty anymore it's actually just my life so these anniversaries they come along and I'm like oh wait that's right it's become the norm now for me to not drink and not party and things like this but also I've been extremely busy and I just don't have time to think about those types of things right now I've got a million things on my plate and you know under a lot of stress and you know working for something that I'm very passionate about so I don't think about my my past all that much anymore which wasn't always like that when I first went sober and went vegan I was riddled with trauma I had nightmares every night I was always thinking about violence I had a very bad complex PTSD it would manifest in all different types of ways and that's what happens when you're around the gang culture for long enough from around 14 years old I started hanging around low level street gangs and then obviously I started becoming more and more violent I was a good kid but what happens is the environment starts to shape you you need to defend yourself in environments like that one way to defend yourself is to act in an offensive manner so do something violent and people will remember it that's what I did um you know from 16 17 18 I started getting more and more violent smashing bottles on people's heads and think I was around 17 the first time I'd stabbed someone with a bayonet it gets worse and worse and worse as as you get older and as you start drinking more and taking drugs and getting involved in just higher level street violence but around 20 years old I started hanging around with um the big boys then that was more of a the higher level organized crime figures uh I was around some of the most dangerous underworld figures in in Adelaide and in Australia so that was my life from 20 onwards I then became a part of a very notorious high level gang I don't mention names it was very serious and things were happening all the time you you would hear of shootings and you know it was just uh can't really get into the details which I don't need to get into details you can just maybe you could just put one and two together but with that environment comes addiction and with trauma comes more addiction and more drugs and you use drugs to deal with the environment and it's just just the vicious circle and you deal drugs to get more drugs and before you know it you're a full blown addict and you don't realize that and alcohol was one of those drugs that helps you deal with anxiety and and helps you handle social situations and my family all like to drink and my friends all like to drink and I was a big drinker I used to drink every single day often and my story goes I got I got busted with a gun and people like say oh you know you got busted with a gun why did you have a gun well you know other people had guns if you don't have a gun when other people who are dangerous have guns and they might be looking for you then you're pretty silly in that world you need to uh if of course you might say we'll just go to the police but that's just not an option in that world you don't go to the police you defend yourself you protect yourself and you know that's uh that type of world you you either have a weapon on you you protect yourself or you run to the police and you never show your face in the neighborhood ever again so that wasn't me so my my option was to defend myself I had a firearm on me and it was for self-defense basically it was for my own protection and uh you know I got caught with that firearm I went to prison briefly um and then I got released on house arrest to await my full sentence on house arrest I was still using drugs alcohol got really obese did a juice fast found this juice fasting guy on youtube got a seed planted about you know eating animals in karma stayed in the gangs stayed in the high-level gangs got locked up when I was locked up I got sober see my life with new eyes you know I know this story so well now so it's said it so many times but uh you know see my life with new eyes I've seen all the people in there you know good people and not so good people but they were doing long stints in prison some people doing life over one silly mistake and I just like started looking at the gang culture started looking at prison system and I was like I don't want to spend my rest of my life here when I got released I was released on parole I couldn't take any drugs or alcohol so uh because I didn't want to give a dirty urine test and end up back in prison it's because I didn't like prison I didn't I didn't like being surrounded by people all the time I like being by myself and you have no privacy in prison it's just a matter of time before something hectic goes down you know it's just the guards tell you what you can and can't do they strip search you randomly you know you just be out in the yard and they'll just take you into a room and make you strip down naked and squat over a mirror you have no autonomy in there so I don't want to go back there but I went vegan after criticizing my mum about smoking and she said kind of look in the mirror in in her own way and uh you know I went vegan that day uh November the first 2013 you know I've been sober and vegan ever since now the biggest culprits for me were alcohol methamphetamine maybe secondary to those two would be like Xanax and barbiturates alcohol and methamphetamine were my my worst drugs I'd say they're the ones who really that really got me how have I stayed sober from them for nine years he might ask well there's a combination of factors that go into it and the number one factor I would say is to remove yourself from the friend group that use drugs and alcohol it's change your environment would be my number one tip when I got went to prison my environment changed I couldn't get access to drugs in there I could but it's kind of frowned upon in my gangs I didn't want to be the the druggy in the gang you know so when I got to prison you have no privacy so I wasn't going to take any drugs in that in there so if you're in an environment now where there's drugs around you I get it some people can't change your environment they're in a horrible circumstance and I get that that this advice is not for you but if you have the freedom to be able to change your environment that that is what I would recommend the next thing would be to have a focus exercise is a very very good one because that gives you sort of a dopamine rush your heart pumping your blood pumping gives it can give you like this tingling feeling when you when you do really hard cardio and that is kind of a replacement for drugs so I recommend like getting on a bike and just riding for you know 100 kilometers and you know hiking for hours and hours or going to the gym and boxing boxing for hours I used to box for hours a box for a year straight when I got out of prison I was pretty good at one point I was boxing four times a week and I was running on the other days and I was cycling everywhere um because I needed to keep my mind just stimulated exercise is amazing for trauma just exercise your ass off if you're an addict and you want to get sober the friend group thing is huge for alcohol because it only takes one beer in my opinion which is why I don't give myself any beers I don't even have a sip of wine at Christmas time I don't touch alcohol it's not even like an option for me if you're an alcoholic you give yourself permission once you've basically opened up the floodgates if you've never had willpower before what makes you think you're going to just develop it you have to stay away from these substances completely that is my don't people say why can't you just have one or two drinks come on just have one or two drinks you know it's not like that it's like if you're you know on a diet you just have one or two donuts it just doesn't work like that and now nine years sober I can speak with authority on this I think you know because I was one of the worst and now I'm clean so it all comes down to a decision and you have to make a decision you have to think to yourself do I want to throw everything away to get drunk or to get on drugs that's what I weigh up because I ruined my entire life and I was on a one-way ticket to prison forever killing myself killing someone else going clinically insane losing your whole family they're your options there's not many good options with drugs and alcohol I'm not as concerned about psychedelics and things people do to for a purpose to enhance their consciousness or to help treat trauma I'm talking about illicit substances that do nothing but cause addiction and just ruin your life some people can have a couple beers no problem that's not me and I think you'll work it out that that's not you too if that's the case but it's a decision between ruining your life and having a life that you deserve and you only get one life I think I've still got friends to this day who are still doing exactly the same thing and one day they're gonna wake up they're gonna be 50 sitting in the prison cell and I didn't want that to be me you don't get any other chances after that I was running the gauntlet like that every single day so focusing on something other than myself was a big part of this as well so focusing on the animals the animal what the animals are going through the suffering of the animals and I think self-care is important and thinking about yourself is important to a certain extent but I wouldn't get like self-absorbed because that leads to depression and that leads to just me me me but if you focus on like say human beings outside of yourself helping the youth I wanted to get into the youth work or helping other people pull themselves out of gangs and but for me it was the animals the animals I felt were suffering more than any human in my vicinity and that was I really didn't understand the extent of the suffering till I've been an animal rights activist for a little while and you know just focusing on helping those beings and developing my platforms and every single day working to expose what happens to animals and persuade people to choose a different lifestyle has been a massive massive part of why I've stayed sober because that's way more important to me than than getting drunk and going down the pub and having a big fight you know like I just it doesn't do it for me anymore when I first put up my first post about being six months sober it was pretty funny you know because I just got out of prison I was one month out of prison six months sober and like I remember people going ah you know this is just a phase one year sober oh this is just a phase he's going to go back on it like he's going to get back on it two years sober I remember making my first two-year sober video and there I was like you know like I was a bit nervous and I was you can tell like I definitely wasn't as confident as I'm now then I had three years sober four years sober five years sober I remember thinking halfway through like about five years I was like maybe I can make it to 10 years you know then I had my six years sober seven years sober eight years sober last year and here we are nine years sober next year is my 10 years sober and that's a huge milestone that'll be a decade just no self-caused problems no real self-caused problems I mean I still obviously still get problems but nowhere near like the ones that I used to have my message to anyone who's trying to get sober you deserve better live a life of purpose outside of yourself help others if you're in a situation where you can have choice some people they need help because they're in a horrible situation they might be on the streets they might have no family they might not know where to start but many people can help themselves and I think that's a big takeaway message that you need to help yourself you need to pull yourself out of this no one's going to actually help you you can't rely on other people to do this for you you have to make that decision when you take your life into your own hands you start living your life your life doesn't happen to you they let the addiction take them and the next minute they're in prison or next minute they lost everything or next minute they've lost their life being in control of your life being in control of the decisions you make you got to be strong you got to be so strong you have to be stronger than those drugs and that alcohol and your friends like wanting to pull you into their hole with them you know you have to be really strong you have to be by yourself for a while if you knew me back then you would have thought I was lost hope there was no hope for me that's just some of my friends thought like you know he's gone my family as well my poor family my brothers sisters if you knew me back then you would have thought there's no way I would have made it to where I am now so the reason I'm saying that is because if I can do it then so can you here's to my nine years sober thank you to everyone who supported my animal rights activism my journey who's been with me since day dot thank you so much I appreciate it a lot and let's just hope I don't miss my 10 years sober and wake up the next morning and go the hell but thank you everyone and I'll see you all in the next video stay sober be vegan anyway be the change you want to see in the world good quote try to make a difference you know like you want to take action in your life and you know affect others around you positively and that's a gift you can sort of give back it's never too late to change your ways it's never too late so whatever hole you're in you can pull yourself out of that man because anything is possible


I am your host looking at Kumar and today I am going to discuss an update on PLOS1 website regarding the metrics of your research article. On your computer screen what you are seeing is one of my research articles that was published in PLOS1 in 2014 and right now I am seeing the analytics of my research article. I can see how many views I have, I can see how many downloads I have, I can also see what is the percentage of downloads of my research article and you can see 31.95% of the research article views led to the PDF downloads. That is valuable information and then you have a chart which shows you how many views and how many downloads you have on monthly basis and if you click on, you don't have to click, you just drag your cursor and you will see the information on the particular research article and what are the downloads and what are the views for your particular research article. It also shows you the total view which is pretty cool and I can see it is increasing which is great and another thing in this case you can also see that how many XML downloads are there, how many PDF downloads are there and you can see in this tab you can see citation which is the most important part of the research article. I think PLOS1 has introduced a very good feature that provides you the analytics of your research article. If I go to the second research article that I published in PLOS1 in 2019, January 11, 2019, I can see I have around 2000 views for that research article and people have downloaded my research article where I have 40.30% article views led to the PDF download and this one you can see they have distributed the downloads and views according to the PLOS website as well as BMC which is PubMed Central website views. So that is a cool feature that they have introduced and I have, I already have four citations for this research article which is great and if I see my next research article which was published in 2019 and where I have 2.6,000 views on that particular research article and I can see 61.05 of the article views led to the PDF download which is great and I can see how the growth of the research article is happening. So these are really important analytics when you are trying to find out the research area, find out the analytics of research area, visibility of the research area that you are doing. I think PLOS1 has introduced a very good feature in the journal and if you have any article published in PLOS1, I would recommend you to check your analytics and try to analyze the visibility of your research article. Alright, that was all from my side. That was the update regarding the metrics of the research article in PLOS1. So I hope you liked the video. If you liked the video, please press the like button and if you like the content of the channel then subscribe to the channel so that you can get immediate updates on my videos. Thank you. Take care.


Artificial intelligence used to only exist in movies, in science fiction. Still, over the past decade, AI has been replacing jobs according to CNBC. 30% of jobs risk being taken over by AI. Recently, one of the biggest tech guys in the industry, Elon Musk, stated that AI will make jobs pointless. In this video, I will be sharing with you 10 jobs that artificial intelligence will take away. 1. Telemarketing. Have you ever heard those annoying calls that want to market some products? Well, guess what? Many of us have already experienced to receive automated phone calls in the telemarketing services. A poll by WillRobotsTakeMyJob.com suggested that it is 93% certain that automation will take over the telemarketing space in the next two decades. Unlike other sales roles, telemarketing is highly routine, repetitive and predictable, which leads to having a 99% probability of automation in the next couple of years. One of the biggest reasons behind this replacement is that conversion rates for direct phone telephone sales are relatively low, typically less than 10%, making this role one that will be automated to reduce costs. The probability of this job getting fully computerized is quite high, at least 99.9%. The career growth expectancy in telemarketing is meant to decrease by 3% in the upcoming years. 2. Receptionist. Receptionists are also highly expected to be replaced by robots. An automated touchscreen system or humanoid AI can easily replace the role of a receptionist. A poll by WillRobotsTakeMyJob.com suggested that it is 80% certain that automation will take over receptionist jobs in the next two decades. Robots are already deployed in the hospitality industries to provide information, front desk services, storage services, as well as checking and check out services of modern companies that can afford the technology. For instance, to hospitals in Belgium, robots are already taking reception duties. The receptionist's robots, which stands at 4 feet tall with a round head and screen on his chest, can recognize the human voice in 20 languages and detect if he is talking to a man, woman or child. 3. Bookkeeping. The likelihood of this job getting replaced by robots and AI-activated devices is almost 98%. Well, it's no surprise that this job is getting computerized as the growth in this role is expected to decrease by a solid 8%. Tools and applications like QuickBooks, Microsoft Office and other tools offer bookkeeping features and services. In 2013, two researchers from Oxford University published a study examining the extent to which jobs are susceptible to computerization. The results at least for accountants and bookkeepers were pretty grim. Bookkeeping had a 97.6% chance of being automated shortly. Accounting and auditing did only a little better at 95.3%. With a rapid increase in the fully automated tools and applications, the job of bookkeeping clerks will no longer need a person to keep all the books in check. 4. Retail Sales People. Did you know that according to Deloitte, about 41% of Canadian companies have already implemented cognitive and AI technologies? Well, the reason for this adoption by those companies is that AI shits the focus to how high sales reps close deals, not send emails. Artificial intelligence will replace salespeople even faster than sensors combined with algorithms will replace drivers. 95% of current sales roles will be entirely automated by 2036 and probably a lot sooner than that. When it comes to sales, we've already seen AI replace basic jobs in retail and fast food. Although AI won't make all salespeople's jobs irrelevant, though, however, it will take a lot more than being a mere salesperson to be able to retain your position and stay significant. Sites like Amazon and Netflix use AI to make spot on recommendations for what we should buy or watch next. And e-commerce has ultimately taken away the need for salespeople to explain things. 5. Couriers Aside from the manufacturing industry, the logistics and transport sectors will be most affected when robotic automation booms in the future years. A poll on Hubspot.com shows that the likelihood for AI to take the jobs of couriers in 94%. These statistics prove that in the next few years, your delivery boy will no longer have a human form. Couriers and deliver people are already being replaced by drones and robots capable of traveling by air or wheels. Starship's technology recently launched its tiny self-driving robots which can deliver goods from various diners in Redwood City to its customers within a two mile radius. Thus, it's only a matter of time until this space is dominated by automation altogether. This space is expected to grow by 5% in 2024, so it might not happen as quickly as you think. 6. Accountant Various researchers have shown that robots are better in accounting tasks than humans. Hence, finance jobs may soon be replaced by AIs, which could compute and analyze data faster. There is no denying that computerized devices are much better at financing and accounting than any human will ever be. Many companies and business organizations have already automated their financing and accounting systems and no longer need a human employee to monitor and track payables and receivables. Still, experts believe that automation will not destroy the accounting industry, but rather strengthen it. However, for individuals who bagged only bachelor's or even a master's degree in accounting without taking additional advanced and digital courses, their jobs are predicted to be replaced by AI. 7. Security Guard An article by Tribune Content Agency, LLC, in 2007, stated that the security guard of the future is an all-seen robot endowed with laser scanning, thermal imaging, 360-degree video, and sensors for all kinds of signals. Today, AI has taken the security world by storm, particularly when it comes to the state-of-the-art security measures and protocols. A poll from WillRobotsTakeMyJobs.com suggests that there is a 58% chance of automation in the security sector within the next two decades. The evolution of technology in the field of security is commendable, with facial recognition systems to high-tech robotic guards. AI has made considerable advancement in the field of security. Although a report by the White House in 2016 suggests that AI will be a complement to humans in terms of safety and technology, it is essential to understand that the jobs for security guards will be significantly advanced. As such, the number of guards will reduce. 8. Market Research Analyst A new study of artificial intelligence suggests better-paid, better-educated workers might be more impacted by automation than previously thought. In fact, knowledge workers are said to be the most impacted by future automation, with the possibility of AI taking over the jobs of market research analysts at a whopping 61%. Analysts are responsible for conducting comprehensive market research on their competitors. Indeed, market research analysts play a significant role in the development of messaging, content and products, but automated AIs and surveys can compile information more and more efficiently. A typical example is Growthbot, an AI package that can conduct market research on nearby businesses and competitors with a simple Slack command. Automated robots are gaining popularity in the business and market sectors because they tend to produce a highly accurate and comprehensive market research report. 9. Computer Support Specialist The field is projected to grow 12% by 2024, but with so much content on the internet, with instructions, step-by-step guides and hacks out there, it's no surprise that companies will rely more heavily on bots and automation to answer support questions from employees and customers in the future. With a rapid increase in online content, tips, guidelines and instructions, many large organizations now rely on automated robots and software to answer FAQs and customer support questions. The replacement possibility of this job is estimated to be 65%. 10. Advertising Managers Hubspot.com has predicted that the rate at which AI would take over advertising jobs is 54%. AI is now being used to create a content strategy and email marketing playbooks for marketers. The use of AI makes it possible for sales calls and advertising processes to be carried out quicker than any sales manager. In fact, according to one study, telemarketing is predicted to decline by the year 2024, mainly because of robo-collars that can take the place of telemarketers. Advertising has shifted from print media and TV to online and social marketing. Many large organizations utilize animation studio services to obtain high-quality animated business ads and explainer videos. More social media platforms and digital advertising methods make it easy for people to buy space through free application programs interfaces, APIs and self-serve and marketplaces, removing the advertising personnel and making it faster and easier for users to make money. The growth of this process is reflected to be projected at 3% decline in the industry of recent. Considering how many technological advancements have impacted our lives, one can say there's no limit to technological advancements. In the beginning, computers astounded the whole world. And now AI.


and is typically in the range of five to ten days, averaging around seven. Now, during periods of time, can you get away with it every fourth day? Yeah. But over time, we're looking at a spectrum, and you can slide up and down that spectrum, but it's much longer than you realized. But the important thing to realize is that if you bring this signal back to the organism before it's completed its adaptive response, you will interfere with that response. You will block it. And that's where everyone makes the mistake. You start to see some results, you get six-sided, you start to do more, and you do it more frequently, and you end up doing this. And then all of a sudden, the progress that you saw comes to a stall and not understanding the underlying biology of what's going on there, you try to fix it with more effort, because that's what our Western culture has indoctrinated us with, is that don't force it, get a bigger hammer. So you get a bigger hammer, and you keep hammering at it, hammering at it, hammering at it, and despite all the evidence to the contrary, you keep on doing it until you get fed up and discussed and throw your hands up and quit. And then six, nine months later, a year later, you look at the cover of Men's Health and go, I wish I looked like that, and you start all over again. But if you learn, number one, to apply a stimulus that's meaningful, that's hard, that hard workout will make you have a short workout. If you can stand a workout that lasts longer than 12 or 15 minutes, you're not working hard enough to awaken that ancient message in your DNA that says ADAPT. It has to be hard enough where 12 to 15 minutes is all you can stand. If you've done that, you've produced a stimulus that's going to produce an adaptive response that takes time, and that's where the 12 minutes once a week comes from. Now, the particulars of the workout is in the book, but I will capsize it to say in the book what we've done, just to get people started, has picked five very big, basic, simple movements. There's a leg press, there's a pull-down movement, there's a chest press movement, there's a rowing movement, and an overhead press movement. Big, multiple joint movements that cover all the musculature of your body. And they are movements that don't require a lot of coordination. We're not going to have you do the Men's Health Bulgarian overhead split squat, because we don't want you having all your mental energy focused on balancing and doing this tight rope act.  That's where the money is. That's where the good stuff is, is to produce that level of fatigue. And not only that, is if you do something that is so skill-based and combine that level of fatigue with a skill-based movement, you're going to get hurt.  If you're doing a simplified movement, slow and smoothly, you can get to the deepest level of fatigue, and if you're doing it right, guess what?  Force is mass times acceleration. You do it slow and smooth. You eliminate acceleration.  So you're getting it done safely too. So these five big movements done safely, back to back, it's going to take you 90 seconds to two minutes to reach complete muscular fatigue. Bam, bam, bam, five done in and out, go home. That's basically the workout, but I'm going to let people that are better discussing that, like Drew, give you more details about that, but that's the premise of how the workout works. Now, what I want to do is take what you learned from Mark Sisson yesterday, and do two things with that. One is I want to provide medical support for everything that he told you, and then I'm going to show you how doing this wraps into that. Okay? So, while I try to get this thing flipped over, does anyone have any questions thus far or anything they want to ask? Yes, sir.  Can you clarify or expand upon that? No, I mean, to some extent, all exercises are skilled-based, but if you're going to be producing this level of fatigue going to muscular failure, I would much rather you do it, you know, squatting with a spotter or on a leg press machine that's set up in such a way that you can't drop it on yourself when you get to the level of fatigue that I'm seeking out. Now, can you do a significant level of fatigue with a skill-based movement? Yeah. And can you do it for a long time without getting hurt? Yeah. No, it's just, I think it just goes down and then flips. This way. So, no, I'm not completely opposed to it, but what we did in the book was we wanted to get people going with this with extremely simple movements because our focus is effort and not technique. What we're looking for is that depth of fatigue and we want someone to come right out of the blocks and be able to aspire to that on day one as opposed to spend all their mental energy on trying to coordinate things. That answer? Okay. Yes, sir? Not working. Could you maybe shed a little more light on the anabolic versus catabolic state? Mark mentioned it yesterday and he said, basically dispelling the common wisdom that, you know, people were thinking that you need to eat every three hours or you're going to enter catabolic state. Right. Yeah. And that's true from the exercise standpoint. It's also true from the dietary standpoint. And the thing is, is no omnivore in nature eats three meals and two snacks a day.  If you had to eat that much, you're going to get eaten. You don't have time to hunt, gather, reproduce or do anything else. Okay. But what happens and the reason that becomes part of our culture as we'll discuss here is people become metabolically deranged to the extent that they can't tap their energy stores. And as a consequence, when they feel their energy start to wane, they can't tap into their body fat or their glycogen stores because of their hormonal environment. So they need to eat right away. And the way most people that have been eating a grain based and a high in carbohydrate diet exist is as soon as their blood sugar drops, they got to eat something to kind of level it out. And that is the conventional wisdom's approach to managing hunger. But it's a losing battle because hunger always wins.  After you've done that for a while, you'll be going along and it'll be 2.30 in the afternoon and you go, I forgot to eat lunch. And you'll find yourself wanting only two meals a day because you're eating in such a way that doesn't drive hunger and you're eating in a way that sets your hormonal environment where you can actually experience satiety. So, but that'll come out more as we go through this. You'll see what I'm talking about. Yes, sir. My question is you're doing a workout once a week and you're getting an adaptive response to that workout. How often do you have to tweak that workout because eventually you're going to get used to that workout?  Yeah, you really, I mean, there are ways that you can tweak things but you'd be surprised at how far you can go without having to change much at all, okay? You'll learn a lot from Bill de Simone. Muscle and joint function really does not change much over time. And the whole concept of variety and, you know, the P90X muscle confusion and stuff like that is really not as true as they make it out to be. The real key is to allow the adaptation to occur and then to step up the challenge in terms of the resistance accordingly. Now, over time, what you really have to make tweaks for is not something necessarily going on in your body but tweaks in the mechanics of the equipment itself. Because no equipment's perfect, the strength curve of the equipment doesn't match that of your body perfectly. So there's going to be a sticking point at different places.  So what happens is the weight progresses over time that sticking point's like a speed bump. Well, when you first start, you're pushing a little Ugo over a speed bump. But as you get advanced, you're pushing a Mack truck over a speed bump. So you end up having to alternate movements that have a different location of sticking point and things like that. But really truth be told in terms of approaching your body's own phenotypic maximum, it almost doesn't matter. You're slicing things pretty thin at that point. Anyone else? After your workout, when would you recommend for sport training? Like how much rest? Say if you have to train five days a week, six days a week for your certain sport. Can you give me more particulars about your question or a sport per se? I play volleyball and our weightlifting program revolves a lot around squats, deadlifts, and RDLs. And usually we'll weightlip around two o'clock for an hour and then have rest and we'll practice for three hours and that's five days a week and we'll lift for three days a week. Because I want to talk to my coaches and my strength training coach about this and I want to ask them... Yeah, you're not going to get very far with that. Yeah, because after we do those squats, I can't jump at all and it's very hard to practice for three hours.  And as long as part of your organized sport, you're kind of locked into that training paradigm. To try to add this on top of it would just be suicide. What I would suggest to you is for yourself is to try to use something that follows this paradigm more during your off season, leading up to the beginning of your season when all this starts. And then try to sell it by demonstrating your performance right at the beginning of the season on the conditioning that you did for yourself. Because, yeah, the folklore and coaching is just abhorrent. I mean, you couldn't do it any more wrong.  I mean, they're going to be so fatigued, so ragged out. And the thing is, is doing that kind of training fatigues your fastest twitch motor units, which are the ones you need most for that particular sport, but they're also the ones that are most fatigue sensitive, meaning they fatigue quickly and they recover slowly. So your most productive motor units, the 15% of your muscle that is the most productive for explosive movement and jumping is just out of the equation for the entire season. It's hosed, so. But how to approach it with your coaches, I've got no good answer for you. If I can't do it, I don't think you can. Yes. Oh, yeah, yeah. Yeah, and here's the real key with this. Yep. Oh, I'm sorry, he went on the mic. He was asking, is, kid, when you incorporate this kind of workout at the time that you're initiating a new sport for yourself like martial arts, correct? Yes, and the neat thing is that when you're taking on a new sport from martial arts, what you're really focusing on, even though there's a large exercise component to it and a lot of activity, what you're trying to do there is to hone a skill, to develop a skill set. So you are skill training. This has nothing to do with skill training. This is physical conditioning, which the more you separate your physical conditioning from your skill training, the better it will be. And when you do your skill training, you want to make certain that you're doing it in the freshest, most recovered state possible, because you want to entrain the neuro motor pathway, sort of a dog trail in the back yard, so to speak, that is most efficient for all the skills that you're learning. Because if you're going to compete with this, you want to compete when you're fully recovered. So what you need to do is, when you're taking on your new sport, is to look at it and then back engineer your workout around your sporting activity so you make certain that when you're practicing your skill, you've had enough recovery time. And if that means pushing the workout out to every 10th day, because you're having so much activity learning your skill, that's fine. You're not going to decompensate. Your body's not going to build a sound of ground round and allow to decompensate in 14 days. It will not happen. Okay? Now your metabolic conditioning will decompensate over 14 days, but if you're doing this other activity, that's going to be taken care of by itself.  Okay? It's really interesting to me and I actually have three small questions. Okay. Could you first please repeat the five basic movements? Then I wanted to know how yesterday Mark System was talking about incorporating more play activities and I wanted to know how you thought that might affect that R part of your model if you're playing after you've done this kind of training. And then the last one, does your approach also apply to cardio exercise? Yes. And we'll hit the cardio thing more when we do this, but first the five movements are a leg press, a pull down movement and Bill Desimone will go through the mechanics of those in great detail for you so you don't have to worry about that. So leg press, a pull down, a chest press movement, a rowing movement which is in the horizontal plane and an overhead press. So that will kind of cover all the major elements of your body there. Second part of the question was the play. Yeah, that's very easy to incorporate because remember we're trying to separate our physical conditioning which is a very deliberate engineered triggering of a biologic process from other activities, but the thing you've got to remember is that play is not going to interfere with the recovery side of the equation too much.


Gastric cancer, GC, is one of the most common cancers worldwide, but its incidence and mortality rates have declined in recent decades due to improved screening and treatment methods. However, certain countries remain highly affected, especially in high-income economies, where the incidence of cardiotypes is steadily increasing. As a result, GC remains a major public health concern, ranking third among all causes of cancer death globally. Two-thirds of deaths still occur in low-income countries, but the global numbers are changing, and new regional challenges must be addressed. To better understand the current state of GC research worldwide, this study combined bibliometric analyses with density equalizing visualizations. The results showed that the number of publications on GC is rising more extensively than for other cancer types, with the United States ranking third overall. However, China and Japan are the most prolific authors and the most affected countries, while South Korea is also a key player. These countries are also the primary donors for GC research. Additionally, the number of articles and expenditure for R&D are positively correlated, suggesting that increased investment in research may lead to higher publication outputs. This article was authored by Doris Klingelhofer, Marcus Braun, Norman Schoffel, and others.


Right now we have finished cleaning out the mattress in the master bedroom. This mattress was covered with different items, maybe about two feet up off the bed. We finally have now made it down to the mattress itself. From here we are going to take the mattress out and get rid of it and then start cleaning underneath the bed frame.


According to the United Nations Office of Outer Space Affairs, over 11,000 space subjects have been launched and recorded in their online index. But this number is set to increase significantly as private companies and governments intend to launch tens of thousands of satellites into low earth orbit known as mega constellations. This trend is driven by the reduced cost of hardware and launch and the increased demand for low latency, high broadband internet to underserved locations. While U.S. companies like Amazon, Canada's Telesat and UK's OneWeb propose mega constellation satellites in the order of the low thousands, U.S.-based SpaceX alone has announced plans to launch 42,000 satellites as part of its Starlink project. If this happens, SpaceX will be responsible for a five-old increase in the number of satellites launched by all of humanity. Of those 42,000, they plan to have 11,926 launched in orbit by 2027. Also importantly, as the European Commission is currently studying the feasibility of a European-owned space-based communication system and the Chinese government has created a company dedicated to creating and operating a 13,000 satellite broadband constellation, the soft power political and security element is also present much as we see with global navigation. This means that some actors may enter this vertical even if the business case is not evident. One of the big questions is does servicing this increased demand warrant all the increased risks to and in low earth orbit, the atmosphere and on earth? COVID-19 showed us the extent of the digital divide problem. Those connected were able to maintain business or find new opportunities and continue their education. Those who were not, whether in rural areas, indigenous communities or in developing countries, found themselves further marginalized. This leads some to question whether there is a right to be connected. While low earth orbit is not the only way to be connected, proponents argue that it is cheaper and faster and this serves to bring many of the world's population into the 21st century. But should this goal be met at all costs? The astronomy community were one of the first communities to raise the alarm in a significant way about the risk posed to their activities by the brightness of satellite constellations, namely that the constellations cause streaks, diffuse background light and cause radio noise that may prevent access to the sky. Essentially two proposed rights are pushing against each other, the right to be connected versus the right to a dark and quiet sky. The space industry argues that there is no hierarchy to space activities and everyone is free to explore space subject only to the outer space treaty. But as article one of the outer space treaty highlights, the freedom of outer space is subject to the condition that space be explored and used for the benefit and in the interests of all countries. In this case, what is benefit and who gets to decide? We must promote dialogue to ensure that space activities are and continue to be beneficial for all of humanity. Untracked debris is also a big risk as this could lead to potentially dangerous in orbit collisions on a regular basis. Other less known risks include that satellite re-entries could deposit more aluminium into earth's upper atmosphere and the cumulative impact of thousands of rocket stages on the oceans environment could be significant should these stages contain hazardous materials. But should we still be concerned as some operators seem to be listening? According to Telesat CEO, operators are following best practices regarding how to deal with debris and are designing satellites to minimize debris, protect the space environment, and are launching into the lowest orbit so that trouble satellites can decay quickly. And in response to astronomy concerns, SpaceX has been meeting with the astronomy community regularly and are innovating around a coating called darksat and a sunshade to address the brightness of satellites. The issue is, can we rely on the good faith of these actors? And some argue that what they're doing does not go far enough. For instance, in recent times the news has reported controversy involving close approaches between a Starlink satellite and one web satellites and the European Space Agency where coordination did not work well. With no space traffic management system or global space situation and awareness capability, we may hear more of these issues. So what do we do next? The International Astronomical Union has now decided to take the issue of light pollution to the United Nations Committee on the Peaceful Uses of Outer Space requesting that they protect the night's darkness for the sake of advancements in astronomy. But astronomers are just one stakeholder. Mechanisms will be needed to balance interests and encourage coordination. Bolian buyers argue in the recent edition of Nature Journal that to address the myriad of concerns that will affect all communities, International Corporation is urgently needed along with a regulatory system that takes into account the effects of thousands of satellites, including action for improved space situational awareness, improved communication between operators and internationally adopted right-of-way rules.


Thanks very much Jackie. It's really nice having you introduce me. I also do want to thank all the sponsors for pulling this event together and inviting me up to Vancouver again. It's always wonderful to be back here and makes me think of how can I become a Canadian? I'm only half joking about that. And especially I want to thank Irene McInnes. I met Irene when I was actually still living in Anchorage. And she came up to show footage and photos and give a talk on what was happening in Iraq during the sanctions period. And it was at St. Mary's Church on Lake Otis and Tudor in Anchorage. And I remember that it was a sunny Sunday afternoon if I remember the right correctly. And it was a during the build up to the war with Iraq. And that presentation impacted me deeply and just seeing the footage and seeing inside the hospitals and seeing the people. That certainly played a part in my deciding to go. So it's wonderful that we've stayed in touch and that you've helped me come up to Vancouver again. So thanks a lot Irene. And I also want to thank Billy and Karnuk for letting me stay in your wonderful apartment. It's a lovely place and thanks for putting me up. And now it gets depressing. To talk about Iraq, tonight I basically want to do a few things. One, talk about very briefly why I did decide to go and then talk about what's happening on the ground right now in Iraq. Because specifically at this time we're in the midst of a pretty amazing propaganda campaign that is basically telling people that things are better in Iraq. Things are better even people are coming back to their homes and this sort of thing. And so I want to go into some great detail about what specifically is happening on the ground in Iraq today and why the situation is where it is exactly. And I want to read a little bit from the book. I promise not to read to you too much and I'll definitely be doing more talking. But especially with this audience, I won't spend a lot of time talking about why the US invaded Iraq. I imagine the common denominator in this audience is high enough that I don't need to spend too much time on that. Particularly in light of the fact that we have this interesting phenomena happening in the United States today that generals, high-ranking generals, very high-ranking generals that are now retiring. And I think there's about seven or eight now that have retired kind of almost become like a trend or this kind of fatty thing to do for these high-ranking generals to retire and then become critical of the war or how the invasion was run or how the occupation is being run or of the Bush administration itself as Ricardo Sanchez was doing just a couple of months ago. And it's interesting because these generals retire and then all of a sudden this phenomena happens and their testicles drop and then they start lashing out and they find this courage and they start lashing out at the administration. And I always ask myself, you really believe that so much, then why did you keep doing what you were doing before you retired? But anyway, that aside, the latest addition to the Newfound Testicle Club is former SINTCOM Commander General John Abizade. He's now part of the Hoover Institute, otherwise known as a very conservative think tank. It's Stanford University. It's also referred to as Bush's brain trust. And so big shocker John Abizade has a gig with Hoover Institute now. And he was speaking there at Stanford in the middle of this past October about the Iraq War and he said, quote, for anyone who still in doubt what this war was about. Of course it's about oil. We can't really deny that. We've treated the Arab world as a collection of big gas stations.  And then a little bit later on October 31st, when he was speaking at Carnegie Mellon University, Abizade told the audience that it may well be 50 years before the United States leaves the Middle East, in case there's any doubt. But I do want to back up and take us back to really the launching of the PR campaign to sell the Iraq War idea to the American public and to the rest of the world. And I want to take us back to September 6th, 2002 to do this, because it was on that day that the then White House Chief of Staff, Andrew Card, when speaking about the PR campaign for the Iraq War, told reporters in public, quote, from a marketing point of view, you don't introduce new products in August. I didn't, with few exceptions, I didn't see much mainstream media IRAs about this statement at all. I mean, a White House Chief of Staff talking about a PR campaign and war in the same sentence. But launch a PR campaign for war is exactly what he did, because literally on the very next day, on September 7th, 2002, George Bush and Tony Blair stood together at Camp David and declared that they had evidence from the United Nations International Atomic Energy Agency report that showed that Iraq was six months away from building nuclear weapons. The problem was no such IRA report ever existed, but we know that. But now I want to play a little trick, just let's suspend reality for a moment and pretend that we had legitimate journalism in the establishment media. And we're back at September 7th, 2002. So just pretend that all the big newspapers, all the big TV stations have legitimate journalists really doing their job, really digging for the facts, really holding the centers of power to account for the claims that they make and the things that they do. And that Bush and Blair make this outrageous statement claiming they have that evidence from a UNIAA report that actually doesn't exist. So in this world of legitimate journalism, we would assume then the next day, for example, perhaps the most reputable newspaper in the United States, The New York Times, certainly the most prestigious, that the front page story should have been, the lead story should have been something like Bush and Blair cite a report as evidence that actually doesn't exist. Something along these lines should have been the story because I, as a mountain climber in Anchorage, Alaska, using the internet to read UN Weapons Inspectors' reports, LeMonde, LeMonde Diplomatique, The Independent, The Guardian, basically anything except US mainstream media news, I knew when they said that, that it was bogus. And I would imagine that most of you in this room probably knew that, too. But nevertheless, the very next day, instead of, okay, so let's go back to reality, no legitimate journalism with few exceptions in the establishment media. And the very next day on September 8, 2002, the lead story in The New York Times co-authored by none other than Judith Miller and Michael Gordon of WMD Notoriety, Michael Gordon, of course, still writing for The Times, and they proudly quoted their favorite source, anonymous Bush administration officials, as saying, quote, Iraq has stepped up its quest for nuclear weapons and has embarked on a worldwide hunt for materials to make an atomic bomb. And a little bit more about the way this propaganda system worked, and this has all come out now. This is not me breaking any new information. It's very well known, especially at least in journalism circles. But the way that this worked, for example, Judith Miller, very prominent journalist with The New York Times, has security clearance at the Pentagon. She's regularly going into the Pentagon, being fed this information by her anonymous Bush administration officials. She's coming back to The Times, writing this up. The story runs on September 8 on literally the same day, Cheney goes on national television, claiming Iraq is six months away from getting nuclear weapons. Look, even The New York Times is reporting this. And so it went over and over and over for months and months and months. And watching that happen before my very eyes, that for me was my red line. That's when my red line got crossed. I was completely outraged at what I was seeing and felt that the states had to be up a bit if anything was going to change. And so that was when my red line got crossed and I decided to go to Iraq. And I would argue that the coverage is...