Good morning. Good afternoon. Good evening and welcome to another episode of red hat enterprise Linux presents today We're gonna be talking about rail system roles and we have no guest today So it is just myself and the wonderful Scott McBride That's true doing good.  I know I I mean, hmm. I wish for so many things in my life, but yet here we are Well, we are going to be doing live demo later. So hopefully that just goes up in total flames and then Idea, right? Like we're trying to just get people comfortable troubleshooting stuff, right? So yeah live demos are great So system roles, right? Like Well, first is there anything follow-up wise is you want to touch from last episode? No, we talked Last episode was with John Spinks and we're talking about Management and insights and I think we will touch on it a little bit when we we start talking about system roles a bit because They use as well. We use it as a goal We do your ins all together Yeah, I think we're pretty good shape there. Yeah, cool So system roles are not system purpose Right. You distinction to make right and When we were initially doing our setup for the show We were talking about this a little bit and you may recall that Two or three episodes ago we talked with Rich Dorito and Rich Dorito was we were talking about subscription manager And then there's this Affiliated tool called system purpose or cis purpose, right? It's this purpose is used to identify This box is a production box or a test box or you know something along those lines So when it registers with Red Hat subscription manager It will look at the pool of available subscriptions in your account and choose one that it thinks is the best match so that you're not tying a premium 24 by 7 support subscription To your dev box, right? It doesn't need that. Yeah, and so that's that's what cis purposes is to make Better automated decisions on what subscriptions get pulled out of your account and assigned to end visual systems as they register system roles are using a technology included in the ansible suite called ansible roles nice and They basically are like extensions For playbooks, okay, so ansible has a whole bunch of different things that they use to extend Beyond just like their YAML and playbook infrastructure, right? They've got Modules they've got plugins and they also have roles and that's what system roles is. It's worth. It's insible role Cool so These are pre-baked ready to go for me Like how do I start consuming them? An excellent question. It's one that I think we don't do a great job of Answering in a lot of our materials like we tell people what they are like which ones are available We never tell them how to use that, right? And so we get to the demo actually be showing like how it all hooks up in their playbook But they are remade by Red Hat There's actually an upstream project for them and then what gets sent as part of Red Hat Enterprise Linux so As we're working on new ones, you'll see it will appear in the upstream project Prior to their appearance in Red Hat Enterprise Linux Typically when they appear in Red Hat Enterprise Linux, it's at a dot release of the product So 8.3 for example had a whole bunch of new ones that got added into rel that were pulled in from the upstream If you look at the upstream today There's a lot more kind of in-flight there than what is available in rel today Right, and we'll see what what lands at different dot releases going forward but for example, I Know that they're working on one for the rel.ha plugin or rel.ha add-on So you can do some configuration of your pacemaker clusters And if you look at the upstream, there's not a lot there yet because it's still very much in development so I would not expect that one to land and in a recent release of rel right it might be a Couple releases down the right road and and I just found that they have a web page that kind of breaks down everything that's in the repo for you Including like here's demos. Here's currently supported ones. Here's ones that are on the roadmap So be sure to check that out if you're interested, right? is So these are answerable roles Like I get them from Red Hat I apply them on my system using Ansible not rpm or yam or anything like that. So Do I necessarily need to buy answerable support or are these Supported because they come with rel kind of deal. Okay, so so that can be a complex question So let's let's go with a simple answer first and then we'll see how how far down the rabbit hole we go So you don't need to buy Anything beyond a rel subscription to use and consume rel system roles Essentially your rel subscription will also provide you access to an ansible repo For the purpose of running system roles so that you get a supported ansible to running a supported feature of growl Which is system roles? If you're doing stuff outside of that You may need an extra animal subscription But for rel system roles what comes with rel is what you can use And then to actually get it going We'll have to install the rel system roles rpm which gives you the ansible role content And then you also have to install ansible so that you can run playbooks Okay, cool that makes sense So one step to get the thing another step to actually execute the thing Yeah, and when we hit demo time actually start from like here's how we subscribe to the ansible repo, okay, now let's install the pieces we need so It's not too bad. It's like to our PMC need Yeah, so If folks are looking for the official docs As far as like real stuff goes since we've talked about upstream. What's I'll drop those in chat What in your opinion are like, I mean, this is your opinion literally I'm asking you now What's your favorite system role? I mean there has to be one where you're like Most people who needs this It's good question so I like the The session recording system rule it uses t-long as the back end and does the configuration for it, okay But it only applies to rel 8 Let's see. I like I Like the kernel setting system rule So it actually uses tune D behind the scenes to apply changes the system But the reason I really like it is the automation piece the system rules gets right so I worked a lot of places where you would have a farm of boxes that are databases and maybe You know, let's say My sequel Somebody finds a document that says my sequel should have the swapping this value of the kernel set to 20 Right, so you go around and as you're building all those boxes That's what you do and then you find another article From a more reputable source or more recently that says no, that should really be 10 Not 20. Okay. Well in the olden days you then ran around all the boxes and like did the needful on them And now if you had implemented a system rule for that You can literally just like update the playbook execute the playbook across population so That's why I like it and system rules has kind of an interesting history of how it came about Yeah, let's talk about that. So Originally it started because As we released new major releases of brawl, right so from six to seven There was a lot of change that happened there. Oh, yeah. No, I remember that Well beyond system D like right, you know, we added in crony and yeah, you know We make different things the default things even though we still ship older things So crony is a good example where we have NTPD and crony and you get one of the other And then, you know, when you go to rail eight while I think the differential between seven and eight was not as large You still get some of those technological changes absolutely and so The original intention behind system rules was let's provide a method That administrators could use to do something like set their NTP servers Like right, that's a pretty common thing to have across your population what what NTP server should they use? and so in six seven and eight Those were potentially different methods of applying that change different technologies different files and you had to know Yeah, I remember having rail put out a nice like six seven eight like comparison chart between commands I remember having to pull that out during those upgrade processes many times And we still have that it's and it's great. It's a great resource. Let me go find it before I forget about But like from a customer perspective or from a you know administrator user perspective That's super annoying because here you are you've got this large fleet of systems on rail six and then real seven comes out and now you have to know oh There's a real six bucks. I need to do it this way. Oh, it's real seven bucks I need to do it this way and when you're trying to use shell scripting whatever else to automate Your shell script needs to account for that in its automation Yeah, right. Otherwise you'd get the long the long stuff done on the long box so One of the things with system rules is that when you use it It is cross rail capable So for example date time sake system rules a good example of that You can just put in the NTP servers you want your boxes to get and if it's on a rail six It does NTP D configuration stuff if it's on rail seven It actually checks to see whether you're using NTP D or crony and does the right thing and on rail eight It uses crony So you can use the same playbook across those different generations of red-hot enterprise Linux and Get a expected working output without having to worry about what's happening underneath Same thing with like kernel settings. It works on seven and eight Same deal and there is some What roles are cross portable and which ones aren't is gonna depend somewhat on when the role was added to the catalog. So for example Kernel settings was added in Rail eight dot three and I believe it had also been added in seven time nine But Well sex was already in maintenance phase two, which means no new features Including system roles. So it was not put into well sex Well seven has now crossed into maintenance phase two. So we'll know what they're beginning new features So any new system roles we make Or it's gonna be back toward in real seven and then there are some like session recording where That that technology doesn't come with anything but rel eight at this point So if you run it on a real seven or six box, it's not gonna do anything. I Cannot in the access that I cannot for life me find that PDF. I don't know if I'm searching wrong or not If you have it handy, I would appreciate I can probably Google food out for you Well, I Google food it and I found five six seven. I did not find six seven eight So yeah And I remember the five six seven chi chi well Don't recall there being one for so seven eight six seven eight. Sorry Four five six seven eight. So yes, I see the five six seven one. Yeah Maybe we didn't I'm sorry for the dog. Ah, here we go. Oh, you found it good. Maybe let me check. All right Yes We We can just put it in here, but quick start so That's what happens when you have more than one box. I know right. Oh, there it is. Okay, cool Also, yes, this is exactly what I was looking for cool Yeah, I still use that five six seven web-based chi chi Occasionally, but mostly because it's like wait five was 12 years ago. What do we do then? Well, I'm thinking of the the folks that are like changing jobs and they walk into Upgrade, you know a fleet of servers and it's like, okay. I was using seven and they're on Five still and I'm trying to get them upgraded kind of thing right like I've been in situations like that So having this chi chi really helps you like If you've been living in the future or the past this can bring you up to speed kind of thing I uh Like indulges to anyone who is working in a real project right now. Yeah. Yeah. Yeah, I mean, I remember what was it? 2011 we were upgrading from rail three two five and just Skipped over for or whatever and was like, okay That that was fun But then it became easier to upgrade because real five made it easier real six made it easier Upgrades got simpler. We got more automation so forth so on yeah and I actually was just asked yesterday about Six to seven upgrades and it's like Okay, so six is it extended life support phase So very limited updates essentially critical and an important security or out of all late With an add-on subscription, right? So you don't have to add on you don't get any updates anymore for it rail seven is in maintenance phase two. So it's got I don't know two two and a half years left before it goes extended life support and end of life phase so If you're going from six to seven You're essentially by yourself two years two and a half years And they're going to be the exact same situation again. It's like If you're going to go through all that effort Maybe it's worthwhile to go through all that effort to get up to eight which is currently in full support phase for another See year and a half Uh, I forget but I did stumble across the life cycle page when I was searching. So let me go Yeah, I was released in 2019. So 2024 is when it goes out of full support and goes into maintenance support for another five years So, I mean, you still got a lot of life left on rail eight and We're doing work to make the transition between major versions easier I don't know if we've talked about it before I know in March, I think it is we're going to have terry bowling on he's the And we're going to talk about leap which is the in-place upgrade utility. Yeah So we're currently using that for seven to eight. We're going to continue to use it for eight to nine But because the differential between eight and nine is not as great. It should be easier and smoother for people to use for eight to nine Yeah, and it's like we've gotten way better point releases too, right the whole release process, right? It I feel the evolution right like happening underneath me as a user. All right. It's pretty great Yeah, so Is there any other questions I needed to ask you specific to system roles? Let me double check here We kind of touched on what needed to be installed. You needed the system roll package as well as ansible. Yep I'm supporting well subscription Right. This is part of rail. You don't have to buy ansible The purpose of system roles we kind of discussed Oh, we we got sidetracked on that one. Yeah, we got started as that like let me run some let me have a slightly different administrative interface that I don't have to care about version Uh, so that as we had these major versions, uh changes You don't have to go through and update all of your scripting procedures automation Right, it all just still kind of works Um, right, but out of that has generated kind of a new idea of what we could use system roles for Which is standard operating environment. So if you're going to set Kernel settings across A segment of your population of your entire population Like let's build it into a playbook that we apply to all our boxes Or if you're going to set a specific configuration for ntp servers, you only want to use the pool servers or you only want to use the public one in your higher priority, right? Yeah, or you want to use your sp1? Will whoever You can you can do that and you could put it in your Your ansible playbook using system role to apply it across There are also some newer system roles that Do administrative tasks? So like the storage system role, for example, you can create Partitions on disks you can add new logical volumes you extend logical volumes. So But I will caution you that it is more utilitarian more It will provide you more benefit Wow, just like not using my words today. Okay, porky pig Uh, it will something like storage will provide you more value the more Complicated the more homogeneous. Yeah, yeah, your hardware is so if all your hardware has the exact same disk layout has the exact same Number of disks the exact same devices of disk Then the storage role is really really handy as you can execute that change and kind of know That across your population That new partition is one going to be able to be made and two isn't going to pop or something else or do something wonky Yeah, so if you have a really disparate population of all random stuff Then that probably would not be the best choice to to do Yeah, we had My first job out of the air force we had different like classes of servers and that's where I see that being helpful, right? Like if you have 20 Batch processing boxes and they need this amount of storage and this much in temp and this much and you know var That is super helpful, but that Could be something completely different in your database fleet or your you know, web server fleet or whatever you're using, you know That just and maybe you have a Standard operating environment that gets applied to a specific type of box. You have your web server S&E you have your database s&e but um, I worked for a large media conglomerate and their process for acquiring new hardware was buying Whatever was left over at the hardware manufacturer so like Yeah, so we would get things like dl280s HP dl280s, but they would have Different number of next different amount of ram different number of cores different disks and so You know While we could guarantee some basic sameness like they're all going to be the same processor generation Or there was going to be a minimum amount of ram that was in there We wouldn't necessarily know the the complete package before we got hands on it and to put it out the data center And something's like nix. You can't Oh, you can never guarantee. Yeah Right, like I'll know it has at least two because that was in my spec when I when I put it out to be fulfilled But it might have sex So, yeah, anyway, but fun times about standardization From the guy who used to work at nest nice Okay, cool, so are you you want to dive into this demo or sure because I feel like I'm gonna ask many questions during your demo Oh Absolutely, so let me just uh re-privilege this box here and we share my screen screen sharing Yeah, okay. So you should see it like currently provisioning Yeah, sweet hang tight Yep These boxes only exist for 30 minutes at a time So, you know, we're talking for 20 minutes.  So this is a a lab experience that I have not completed if you ever used a lab lab at redhat.com before typically there's like a lot of Crows in the instructions that tell you like why you're doing this step and what to look for in the output I haven't gotten to that yet. So at this point this this lab is essentially like click to run this command That might be super complicated and has no explanation of what it's doing But here's the output And there's no explanation of the output either. So we'll do that live on on the demo here. Cool The other thing I'd like to do with this demo is it's on a multi-node environment So I'd really like to get it Once I've gotten all the instructional stuff ironed out I'd like to get it so that we can apply the same playbook across all those So that's that's my plan. I had originally intended to have it completed by the end of 2020 You can see how that worked out for me. Well anything With the word 2020 in it as a goal You should have tossed that out in march, right? Fair enough all right So I said that the first thing we need to do was make sure we have the right software And part of that is getting access to the ansible rpm that we need that provides the ansible executable So I'm going to use the subscription manager command to just enable the ansible 2.9 repo for this Roblox It's included as part of your real subscription Or you have to do is enable it and then you're given access to the software that's contained with it very nice Yeah, you can do a subscription manager. I believe I blame rich giurino That's a good one All right, the next thing is installing the software you need So I'm going to install both the ansible rpm and the rel system rules rpm And they'll pull in a couple of dependencies as well, of course, yeah Python 3 that's a good one to pull in. Yeah They needed that for the ansibles So before we go further, I do just want to point out like where things are going So if we take a look at the list of files that were provided by rel system rules There's some documentation that's installed that's text-based. It's pretty basic But here in user share ansible roles That's where the actual ansible stuff that makes it work is and so Earlier we were talking about the differential between upstream and what comes as part of rel There it is So these are the ones that come with rel. Some of them will be tech preview So for example the post-fix one, I know is tech preview The other ones I think are all all now fully supported But that would be referenced in a rel documentation that you learned earlier chris So if you're interested in which ones were tech preview or not, you can find them there And so inside these directories is all the the ansibleness that makes the roles work with ansible Okay, so this is one of my invalid things. It's not working right Awesome Yep always So I'm just going to copy and paste this content Fair enough There we go All right, so this is a starting point that I wanted to have in the lab Especially because people may not be familiar with ansible and how they would write a playbook So I wanted to at least give them a starting point to kind of work off of And what we can see is down here In the roles section These are the role system roles that I'm pulling into my playbook. Okay So it's going to go out into So terminal logging and kernels Right, right and um because I have imported these roles that means that I can do these sections So I can now reference the kernel settings sys control and t-log scope sssd sections And then underneath of them I can define more variables And you find out what those variables are In the documentation It's crazy So kernel settings allows me to change Stuff that 2D can change Yeah, 2D is a great piece of software, right like Agree, yeah If you don't have 2D in your environment, I would encourage you to look into it And I was just talking with Mike Jaret over in the ISV team today about doing a webinar around developing 2D profiles specifically for People who are writing and distributing software at realm because I think that Including a 2D profile for your thing Has like that like extra level of polish and it's really not hard to do right like I can totally see a database ISV Being like oh, here's our 2D profile and everything else that we need right To make your thing perform You know at a certain you know performance level Or maybe there'd be multiple profiles so you could be like oh, is this a high right? Is this just a read-only replica like what is this? You know that kind of thing Yeah Or they can at least give you a basic one Yeah, and then if you need to customize it based off your use case they can provide that in their documentation or something else Yeah, like all of that sounds great to me Bake that in folks. There we go. Yeah Um, so because I use this kernel setting system rule and I'm now able to do these variables Um, I'm just going to set some parameters in the proxess directory Right, and that's what is happening here So I'm going to change the swappiness value for this system um swappiness is a value between zero and 100 that determines the kernel's affinity for utilizing swap space So zero it's going to try really really hard not to use swap space ever Ever like right as as much as ever can be right until a killer shows up Yeah 100 it's going to like try and use swapping this is a much spot or swap space is as much as possible right and so for For databases typically you want this to be 20 or less Depending on the database database depending on the workload. You might be choosing between 10 and 20 ish um Along with that I put in some other tunables for databases here. So In order to kind of ring as much performance as you can out of databases A lot of the open source and enterprise databases also tell you to make some changes to how your Cache is written and managed your file cache is written and managed And so the vm dirty ratio is don't sync file cache until it's 40 percent dirty And that are 40 percent of memory Is being used the expire sent to sex and write back sent to sex So when we decide that we need to do a a sync of file cache How long should it be until we decide that we need to do it? And so here we're saying that 30 pages expire in 500 sent a seconds And then Trying to remember what write back is it's another setting around kernel kernel pages. It escapes me at the moment And then the last one is the setting for semaphores so semaphores are Type of shared memory where processes can pass information back and forth to each other And so we're setting things like the size the total number of minimum and maximum length of semaphores and it's a Set of four values to get stuck in this one kernel setting nice so um So yeah, once I applied this playbook those are the settings that are going to be applied to this system through system rules The other one uh is my always be talked about as one of my favorites Um, this is session recording. It's based on a technology called t-log And essentially with this variable. I'm saying Start doing session recording for everyone so Why would you want to do that just out of curiosity? Okay, so uh same same media conglomerate whereas Serving a professional services engagement um We had a team of administrators that worked there And it was often the case that you would get a call like two or three o'clock in the morning Because it was not two or three o'clock in the morning somewhere else in the world And they need you to do something Um, and so here you are bleary eyed Getting out of bed executing a change on the systems. And what if it goes? haywire So then maybe you need somebody with more experience So you call an escalation And that person receiving your escalation asks you a question like What did you do? You could just say here you go. This is what I did Right and so they can actually replay your session and see not only what you did in terms of what commands you ran But also the outputs and errors that came from that Yeah, I was about to say the commands were only so good that you need the full output Yeah, right and and that's like Back then we essentially would like pull up somebody's history And try to detangle things based off of their history that they used But you're right without the output and error messages It gets really hard to figure out what exactly happened to that box But looking at at these recorded session you get everything in context Nice And so not only did that help us or would it help you? Detangle the situations and maybe repair them But you could also then use it as a training aid to be like look here you ran this command and you received this error Right and so this is what this error is telling you Um, and yeah, you can also here's the next step to fix that and then yeah, like that's really cool You could totally put together a program now Exactly around logging now and it all happens through Through text logs By default it goes to the same logging provider is configured on the system So for our boxes by default that'd be ursis log Which means you can also collect those logs not just from the individual boxes, but To a centralized logging host So the other thing that is really handy for this is like maybe you're in a more secure environment And you need to make sure that things don't go bad And if you allow someone to have root on an individual box, they could manipulate what's stored in their log After it happens But if you simulcast it to the local log and a remote log server You always have an unmangled copy on the log server Compared with what's locally on the system So and this would be for every single user right so like let's say somebody's credentials got Correct or you know, somebody came inside the wire You could then have an analysis on what's coming out of your logging service your centralized logging service if you have one And say hey, this isn't cool. Somebody just ran this command and you know Who knows what happened? So that's that's that's very handy. I feel like in larger environments, right? Like that could get To become a very useful thing Yeah, and I remember having to script these things out for myself sometimes and like Just having that output like in line as opposed to here's the errors You might encounter as like a separate section documentation, right? Like you just roll through them all that'd be cool well, and You know, we've had this in previous versions of row Kind of you could do a whole bunch of gymnastics with the audit d demon and get a lot of the same data But it would also do things like capture passwords, which you probably don't want Right and yeah, it goes into the audit logs, which are different in the system logs But still like you probably don't want that stuff um, whereas T log and session recording are set up to like Do do this in a more sane way than just capture system events and report on it Um, but this is something that's in row eight. It's not in previous versions of row There is actually a lab for it. So if you're really interested in it, you could go through the lab yourself on creating it and the back there's a command line playback utility called t log play Or there's a really really sweet plugin for cockpit or web console where you can get in a video. You can do zoom It'll you can actually put in a search term and because this is all stored in text It'll highlight the time codes where that search term exists. Like it's is really slick So anyway, that's awesome. Yeah, cool All right, so pull in the train back on the tracks for system roles. Yes. Thank you All right I see why it's your favorite though. That's I mean, this is good to know. Yeah. Yeah, it's got a lot of uh Got a lot of the use All right, so I've got my initial one and just to kind of see where we're at If I look at the swapping this value on this box right now, it's set to 30 After I run my playbook it should be set to 20 all right, so I'm gonna just uh As well playbook s we yaml right to execute my playbook um, and you can see that it's going through and Running different parameters Yep from kernel settings and then it's going to move to t-log um And then it should be completed at that point All right with uh with t-log I didn't have the software installed for it. So up in here where it talks about package facts and then installing the session recording plugin like That that's actually installing on the software you need to make that that happen that's built into the system for um Very cool first session recording. All right, so as expected when I look at the swap is by nano set to 20 And let me just real quick reset my password for this user All right, uh, and when I connect to the local system Right session recording was installed. It's there you go users. It's reporting that my session is being recorded um Session recording cannot go back in time is what I'm hearing right What do you mean like this is something you have to install before or correct You get the benefits of it. It's for any new session after it's been installed and configured that it'll uh That it'll pull it into your logs, right and just to to round out our discussion there. Um What is a t-log? um It's cure I don't think it is It's not I don't know what if we have time at the end. I'll Pull that one up and we can do that one too. All right. Uh, all right, so That that's like we created a playbook We set our parameters We told it which roles to use so we can knew what parameters to use And then we executed it and the parameters were applied to the system. All right So the next thing I'm going to do is I'm going to take that same Um yaml file and I'm just going to make some changes to it The first thing I'm going to do is I'm going to add another role to it So now we're going to do things in the playbook for kernel settings for t-log and for time sake nice And then I'm going to this is a super complex uh command But essentially what it's doing is it's uh A clickable so that I can shove stuff into the playbook without making type it and this type it. Yeah All right, so not as easy as you think right, so So when I uh executed it right there is my addition of the new role that I want to use time sync and then that said inline edit added this section Got it nice Where currently on this box is probably set up to use a bunch of ntp pool servers But maybe I have very specific ones I want to use so I'm going to use time.ness.gov box And then one out of the pool as like a backup right in reality probably went three maybe four or five Yeah Kind of depends on your need and sensitivities and such to time right Uh, so if we look at our crony sources right now Right, these are all pulled out of the pool and one of their yeah three six eight of them Um, but because they're pulled out of the pool Um, and I noticed they're like stratum two three I've seen right you have no idea six Right, um, whereas I know time time d Be.ness.gov is a stratum. Why I did just like connected the clock All right, so we can do a whole show on time and let's not slash ntpd and so forth, but yeah We shouldn't but let's not because it's super boring Oh, come on. I love time. That's fun I So to be honest I was the guy that said hey, we probably should get a gps time receiver since we're a news company at first job Out of military kind of deal, you know, because there's all sorts of system timing issues and I was like Hello, have you all heard of ntp? It's like, oh, yeah, we should do that. It's like, well, we should get our own time source too that we can trust And then have backups, right? So yeah, we actually well like the The ntpd servers oftentimes Random clients aren't permitted to connect to them, right? The only except connections from a list of of known servers So if you want to be one of those you need to like fill out an application and review it and decide where they want to do it So if you were say, um, I don't know A large vendor of some sort that wanted to maybe add all of your systems tens of thousands of them Well, and yeah, you know, right? Yeah, yeah, but if you're like a a large news organization where Time is important, right when you're like time stamping the publication date on articles or on news stories or whatever Um, you could register maybe three boxes Has an organization to that and then inside you use those three boxes. Anyway All right, enough on time for short. Super boring. Stop it All right, so I'm just gonna apply my updated playbook and It's basically going through and running all the same things and it should be reporting mostly Okays and skips because it's not doing anything except the time stuff Yeah, so, um, especially when you get down to t-log, right? It's already installed. It's already configured. We didn't make any changes Should be good All right, so now we're installing crony and making changes based off crony All right now that this part of the output here That makes sense Right, it makes sense. But if you are a person who's used to looking at red and green and red is bad It's bad, okay Right, but in reality, this is okay because what it's done is it I said earlier that we Go across to the versions of rel some versions of rel have ntp some have crony some have both which we're using and so essentially in here we're We're looking to see what's configured and then based off of the configuration. We're making the changes But it's actually checking and failing because it's not there right, um, I know that there is a open feature request with system rules guys And gals to change it so that this is simply a skip or an ignoring without the red error messaging So this is actually a thing in ansible, right where you can accept a failure, right? Like a failure in this thing does not mean an entire failure of the whole process It could just be a failure to check that the thing is actually there So i'm not going to continue down that role Or down, you know some other role that it needs to pull in it'll In theory quote skip over it, but it's not skipped because you have to check something with ansible to actually skip it So therefore it's failing to see the presence of something So therefore it ignores it and continues on because it's not a failure That is detrimental to what you're trying to do Right, but if you're just scanning the output that would attract your attention. You might know it's expected Right, but yeah, like disable time master, right if If you don't know what time master is you'd probably be like, oh, what is that and then you get to learn about time Well time master yet another service that one could use to manage time. Yes, exactly. Wow, right All right, so at this point if I check my current sources again Right, there's there's my two that I said I wanted one is time.ness.gov and the other one is random out of the pool All right, just like my playbook step All right, so When you want to make changes, right? I said earlier, maybe you're set up your database servers So if they use 20 and then you read the sub article and it says you should use 10 So you're like, all right, cool. Boom. There we go. I'll make the change Right that little in-place edit Just updated that guy And then once you've made your change you apply the playbook again And just like before it skips all the stuff that it had already done in the still the same state And then applies the new changes or the the differentials. So now we shouldn't see Time servers being set or changed or anything like that because it's already been done It hasn't been updated in the playbook has not been mucked with correct right So by adding more roles into the role section, you all of a sudden get to add more content into the variable section To customize different settings on your box All right, so no no surprise there that Changes anything down. Yep. So that's that's basic systems So let me pull up that. Yeah, we'll follow one more time Yeah, yeah This is an answer we'll playbook and with variables and everything else to find. It's awesome. Yeah, right and so Uh The documentation that's provided tells you about The layout I find it easier to read from the upstream system rules project because it's like You know, I pull up the github. I click on it. It gives me the markdown based Description of it that's a little bit easier to read than a text file on a terminal Yeah, and that's The hierarchy and everything right is there for you as well Right and if you have the awesome extension for github called octocat It will show you on the side where this thing would live in your infrastructure. Which is super cool noise Because I use some really simple system rules here the ones like storage Or logging configuration are a lot more complex and have a lot more variables and nuance to them And so the documentation goes much more key when working with those guys Yeah, no the The amount of things that you can Check and do and the safeties that you can put in with ansible are just vast. So, yeah the um I would be interested to find and I'll probably look after the show the most complex system role right and just like Highlight that on twitter somewhere. So, yeah So I think a good place to look would be storage and logging. Yeah, if I just You know, we're going to throw a couple out there. Um, I mean kernel could get complex But that depends on your variables, right like well Kind of but not really because it's really using toondi And so toondi has are an already established syntax that it uses. So for example for for these In the documentation it just says use use the sys control to the ball Right and that's what I'm using and tell me what to set it to so if I wanted to change I don't know. Oh make this machine a router I mean to turn on ip 40 Shall we shall we want it? Let's see Go ahead. See what? All right. Let's see if I remembered it. Uh rocks this ipv4 ip forward All right, so it's currently turned off. Yep. How good is the typing? I knew you're super impressed that I remembered that path I am actually to be honest with you because I would have had to have like tabbed like six or seven times to figure it out Network network forwarding is not something that I always did When I was administering rail box Well, yeah, I mean unless it's routing between networks, there's really no need But for a number of years I worked as a There it is. Cool. So that's it. I worked as a red hat Instructor for training and certification And we needed to route between networks and after you did your setup you went in and you twittled this bit or if things were working properly You would check this this value um, yeah, so There you go That's awesome Like this is very like I really like system roles like at first that it wasn't really you know I was ambivalent to him right like I've I've always been the type that's like gone to ansible galaxy and grab my role or playbook and You know scoop it up from there and kind of tune it and tweak it now having these like Absolute rock solid roles I'm probably going to refer to these more often as good documentation, you know Yeah, and like we're continuing to grow the catalog of roles Um, so I know that we're in development on one like I said earlier for the ha add-on. There's one for firewall settings There is one already out there for se limits because like Let's make sure it's enabled. Mm-hmm Don't don't don't make dan wash cry folks. Yeah, exactly. Um So, yeah, there's there's a bunch out there kind of circling um We added we're starting to add some for specific things like you may have noticed the certificate role Um, that was added in with idm for eight either a two or a three um, and so, you know how You have to manage your ssl certs And if they expire it's like really bad. Yeah, right So that system role can manage certificates. They're issued either self from a CA a local CA or through the cert monitor service, which is part of idm Yeah Yeah, cool. I just I just pulled up the the kit up repo. This is like Everything you would possibly need. I wish I had this five six years ago Exactly Exactly one of the last projects I worked on before I moved up to up here to michigan. We had we actually had to like Standardize web server configuration for like hundreds of hosts and that meant ssl certificates, too And this would have been super helpful Right. Well, I'm getting things like a wild card certificate to supply stuff so much. Yeah Which back in the day we didn't have yeah, I mean we were we were Using a vendor at the time, but we were like Seriously considering switching to let's encrypt, which if you haven't by now heard of let's encrypt Please go look it up because it could save you a lot of time and money So cool. Anything else you want to talk about as far as uh system roles go No, I think we're good. Did we get any questions or we're good? No, there's a lot of you know affirmation that you know, this is helpful. Yay So you're doing well, but like affirmation Yeah, yeah, always a good thing Yeah, so Next show we're going to have terry bowling on He actually He's a product manager for rel He's moving between product experiences. So system roles actually were his And he's handing it over to a new product manager Cockpit and web console were his and that's going to go with the new product manager He's also the product manager for image builder that he's going to retain And he's picking up Leap for in-place upgrades and convert to row Or converting from other rpm based Linux's to row And so in two weeks, we're going to have one. I think we're talking convert to row And then he'll come on again in April maybe Um to talk leap because uh So the new rel cadence is minor release every six months Major release every three years So Rel 8 was released in 2019 in the spring Guess what's happening in the spring of 2022? Rel 9 so So yeah, it's like April Right right about a year So we can expect rel 9 let's talk about in-place upgrade because um, yeah As we talked about already in this episode right rel 7 is Getting to be a short timer and Rel 8 rel 9 is is where you're you're wanting to be So tear i'll be on in a next next episode and a few episodes past that um And i'm gonna be better about booking guests for short because Oh, you're fine. Did you not like just the one two tandem? I mean just the two of us just the two of us So it was so lovely Indeed yeah indeed. All right, so cool Uh, yeah, so folks. This is it for streaming for today I appreciate everybody that's tuned in throughout the show throughout the day today You know stick around You know subscribe to the calendar if you have not already We have a calendar of events that you can subscribe to and know every show that's coming up in the future Including brand new ones that we're launching this year We have one on dev sec ops coming up and we have an eu based show That will be a morning coffee break kind of show for the eu so I will be asleep And the show will be happening. So yeah, stay tuned and uh, you will have more fun red hat things to watch So thank you, and we will see you all next time.


All right. Very good morning to all of you. I am really excited as this is my first time as an attendee and as a speaker at bad camp. So I'm really excited about it and a bit nervous. Let's begin with the session. So today we'll be talking about filters and the topic is titled as filters 101 where we are basically going to cover filters API and Drupal. So yeah, let's begin. First of all, let me give you a brief introduction about myself. I am Kunal Kursija. I am based out of Mumbai, India, and I am a Drupal engineer, mostly back end, but I am equipped to work with Drupal front end as well. And I currently work at Agzilarant. If you want to catch up with me, these are my social profiles where you can reach out to me. Twitter handle Drupal and LinkedIn. So yeah, let's start with the session of the day. Before we begin, I would like to say that I only have one screen, so it won't be possible for me to check the chat again. So it will make sense that we'll cover all the questions at the end of the session. So I'll follow that particular pattern. Now, let's start with the session and the very first slide that you see is it's called the filter module. Now Drupal core, it provides a module called as filter, which is enabled out of the box when you install the standard installation profile of Drupal. This module basically allows administrators to manage the text formats. Now, when we say manage the text formats, it basically means that this module will allow the site administrators to create new text formats, edit them, disable them and configure them to any extent that is as per their requirement. And it is really flexible to work with. So yeah, when we say text formats, now we mentioned that we talked about that this module allows to manage management of text formats. Now, when we say text formats, it is a broader concept and it is a whole package in itself. So let's jump into the text formats in our next slide. Text formats, so what are text formats basically? Text formats allow the content editors or the users to format their content in nodes, in comments or in any type of Drupal entities and in the formatted text fields only. And later on, once the content is created, then text formats also help in basically the display aspect of the content. So that is the job of the text formats where if you see the very first screenshot to the left of the screen, this is a formatted text field. And it has some content in it, which says bad camp is the best camp ever. Now it is a text. Just below the text, you can see we have this particular thing which says text format and it is a dropdown. Now this dropdown consists of various text formats that are created on your site. For example, basic HTML, then full HTML, plain text, etc. These are the names of the text formats that I just talked about, what they really are, what are they really composed of and what's present inside them. Those things we are going to cover in the next phase of the session. So, yeah, now this is how the content editors basically format the content. This is how in the next screenshot to the right of the slide. This is basically how the content that you created gets displayed. Now we have this is a screenshot of the node page and this is how the content gets displayed. In the definition that I have written, if you see I have highlighted two important terms over here. The one is content is form, content is created in the formatted text fields. Let's remember the term formatted and another important thing is the term that I have highlighted is hypothetically. Now text formats hypothetically control how the content gets displayed. But inside, I mean, the real story is something else controls this, but something else is actually the part of text format itself. So we'll come back to it in the later part of the session. Moving on, we saw in the previous slides that content editors can create in the formatted text fields. And now when we say formatted text fields, what we really mean in Drupal, we have various entities, entity types like node is in one, then we have comments, then we have users. And all these entities allows end users or the site administrators or site administrators to basically add various different types of fields in the entities. For example, let's say I have an entity and I want to add a date field to it. I want to add an email field, a Boolean, the text field, etc. So there are various types of fields that you can add to your entities. But the text formats that are present in the Drupal will not be available to you or will available to your users or your content editors across all the field types. All the text formats are available to users only in the three highlighted field types that I have shown in the very first screenshot. If you see text formatted, text formatted long, then text formatted long and summary. Only fields of these types will have the text format functionality available to them. For example, in the second screenshot, I have taken this screenshot from a node creation page where there is a plain text field and there is a formatted text field. If you see the difference between two, the plain text field does not have any sort of text formatting feature available to it. Whereas the text area or the formatted text field, it has the text format feature available to it. So that's what we meant in the previous slide when we said that text format functionality is available only for formatted text fields. Let's move on. Available text formats. Now, when you install Drupal with the standard installation profile, Drupal out of the box creates four text formats for you. These are the four. The first one is basic HTML, then we have restricted HTML, followed by full and plain text. These text formats are available to the formatted text fields. The important thing to know over here is this particular UI that you are able to see in the screenshot. It is provided to the end users by the core filter module that we earlier saw in the very first slide of this session. So all this functionality, the text format management, it is provided to you by the core filter module. You can see we have various links like add text format, then you have the options to configure, disable, etc. All the basically the options to play around with your text formats. Then we have ordering of the text formats as well. Now, in certain cases, there could be requirement like on a content, you might have a text format field, the text formatted text field, which will list certain text formats. And let's say the business wants you to show the text formats drop down options in a certain order. So that particular ordering is also controlled from this particular UI. Things might be getting a bit confusing with respect to the options that I just explained, but it will start making sense when we get into the demo at the later stage. So this was about the available text formats. Moving on, Anatomy of text formats. Now, what the text formats are actually made of this screenshot that I have taken it is from the UI there. When you click on add text format from the text formats management screen, you land into this screen. You can mention your text format name. Then you can select the roles which roles these roles will be basically associated with the users. So users having these particular your selected roles in this particular section will be able to access to the text format. So that's what the roles are important for. Then you have the option called as text editor. Now, this particular option or the drop down list over here, it is provided to you by the core editor module. Now, which basically allows you to integrate the third party text editors like CK editor is the one then you have tiny mce etc to integrate with your text format. So this is the option for that. Coming to the most important topic or the section of the text formats, it is called as filters, the enabled filters basically. Please give me a moment. So yeah, so these are the filters that are available in the text formats. And I think it will be I'll be able to do more justice to this in the later aspect. So let's get into the filters right away. So filters, what are filters filters are basically the hidden gems that are present inside your text formats. And they actually they really control how the field content on the sides get displayed. Now, if you remember in the second slide, when we mentioned, I asked I told you that do remember that X format does not directly control how the user. Submitted content is displayed on the site or the field content is displayed on the site. So this was the reason I had mentioned hypothetically word in that slide. So the displaying aspect is actually controlled by filters filters basically process the user submitted input or the field content. And they it applies various logic to your user submitted content. And then after processing it, it displays the content. So filters have various options available to it. Like you can enable various filters in the text format. Then, you know, you can basically control the ordering of the execution order of your filters and the text format itself. Then filters have their own settings or the own configuration on configuration form. It provides various things to it. Which we'll be seeing in the demo. So I think it's time for the demo now where I'll be showing you everything that we have covered so far right right from the text formats. The filters and we'll actually create a custom filter that we and we'll go through it the whole functionality basically. So let me come out of the presentation. I'll first of all show you the site that I have created. Now, this is a Drupal 9 instance that I have created today. Let me show you the basic architecture of it that will be important for the demo. So I have created a content type today. It is called as how to and I have added certain fields to it. So I'll click on manage fields. So in the managed fields content type, I have added three text formatted fields. Namely about field, description field and the tips field. After the content type, I have also created a custom module today which will basically create a custom filter plugin for us. The module is called as filters 101. I'll right away enable this particular module. Let's install it. All right. So our module is installed. Now let's start with by going to the configuration page. I'll click on configuration link from the stop toolbar. Now the configuration page has a important link that we saw in the presentation. It says text formats and editors. Let's click on it. Now this is the area or the UI where site administrators can basically manage the text formats that are present on your site. They can create their text formats or they can configure it to the extent till they want to. Let me now show you some content that I have created for today. There is only a single node that we'll be concentrating on throughout our demo. I have created a content of type how to cut a kiwi fruit. Sorry, I have created a content of type how to and the node is titled as how to cut a kiwi fruit. It has three fields to it. The first one is about field followed by the description field. The description field basically has an email address followed by the third field which has tips for this particular content. And we have three email addresses in this particular field also. Now I concentrated or I elaborated on the word email address. So today we'll be talking processing the email addresses that are present inside the formatted text fields throughout our demo. If you see the content right now, the email addresses are displayed as plain text. If you see admin address how to dot com, then you have fruits address how to dot com followed by this particular email address. After that in the above field also we have another email address. All these email addresses are displayed as plain text. Let's go to the configuration page again and I'll click on text formats and editors. Let's open the full HTML. Let's click on the configure link. Now in this particular text format, we have the filters available over here. Now these are the filters that we'll be talking about that we'll be going through today. I have created a custom filter. It says convert all email addresses to the mail to links. So I'll click on it. I have enabled or I have selected the checkbox. If you can see at the bottom of your screen, we have two sections which says filter processing order and we have filter settings. Pay attention to what happens when I unselect this. So I unselected this and those particular settings part specially went away. And we also got rid of another option that was present inside filter processing order. I'll click on this again. So this is basically the execution order of your filters. Now inside filter settings, we have an option which says emphasize email address. By default it is selected when we enable the filter. So we basically save it. So we have enabled our custom filter for full HTML. Now let's go to content page and let's see what happens. I'll click on the link. We are on the node page now. If you see this particular email address, it is getting displayed as the plain text as it was getting displayed earlier. So no change over here followed by the rest of the email addresses that we had earlier. Now if you see the plain text just got converted into an mail to link if you inspect this. Let me right click over here. I'll click on inspect and we have our email address. Now the text field, the text, the email text got converted into an anchor link and it points to it will basically convert it converted into a mail to link. And it is also been emphasized by your custom filter. So that is what our custom filter just did. It converted those plain text to the mail to links. Now the question is why only all these are the email addresses present inside the tip section just got converted to the mail to links. To understand that let's go to the edit page of the node. I'll first of all go to the tips section, which is at the bottom of the page. If you see the text format section over here, it says full HTML. So the tip section was formatted as full HTML. Whereas the description field, it was formatted as basic HTML. Now we only enabled our filter for the full HTML. So that is the reason your custom filter processed the field that has that had the text format full HTML in it and it converted the text, the plain text to mail to links. So that is what your custom filter just did. If you go to configuration text format configuration again, I'll open it in a new tab and I'll basically configure the just a moment before we do that. I'll just go to the node view page. And again, I'll go back to the text formats. Let's edit the basic HTML text format now. In this particular filter, we'll follow the same steps. We'll enable the filter and we'll save the configuration. We are done with saving. Now let's go back to the node page. Pay attention to the description field over here. I'll reload this. So the page is getting reloaded and you can see it that your text on the plain text just got converted into a mail to link. So yeah, that's what the text processing of your how the text processing is done in the filters. I think it was just a demo. Now let's just get into the actual code base where we basically see how we have created this particular filter. So I have another editor over here. Inside this repository, I have the web directory. Then we have modules and custom and filters one one. This is our module for the day that we have already enabled on our site. It has a info file which basically define your module. Followed by a read me file. And after that, the main thing over here is we have this particular directory structure.  Let's see how a custom filter is created to create a custom filter. The very first thing that you have to do is you will have to follow us this particular namespace or your class needs to be present in this particular namespace itself. So Drupal, the global namespace followed by filters one on one, which is our custom module, followed by the keyword plugin, which is present inside the src directory, followed by the keyword filter. Now we have a filter directory as well.  We have created a class which says mail to and it is extending the filter base class. Now, if you pay attention to the doc, the doc structure for this particular class, you will see that it is an annotated class. The annotation name is at the rate filter. Again, this particular annotation is also provided by the core filter module. So yeah, our filter has the filter annotation basically has the ID of mail to then it has title as convert all email addresses to mail to links. Now this particular text was displayed on the text formats edit page when we enabled our custom filter followed by type. Now there are four types of types available. There are different. I'll basically just quickly show you what those types are. Let's open the filter base class and I'll open the filtering interface. Alright, so filter base class that we have extended in our mail to class that particular class extends the filter interface and it provides all the four types. So there are different. So these different types of these different types have different purpose associated to it. We have used the type markup language because we wanted to convert our plain text to HTML. So that is the reason we got the use this if we let's say if we had to like restrict our HTML, then we had to use like type HTML restrictor. And there are some two more types available as well, which is type transform reversible and type transform irreversible. Let's close this and let's understand what the class body consists of our class has a method called as public function settings form. Now this particular function basically provides that provided the text field the checkbox that we had available on the filters page. And it has a default value of this settings and emphasize mail to. So when when you when we save our filter on that, I mean, or when we enable our filter, the settings associated to with our filter gets saved gets saved in this particular object. So yeah, the default value comes from it. After that, we have a function called as process function. Now this is the most important and the only mostly the only function that you will have to deal with while you're creating your custom filters. This function processes the actual user submitted content or the field content and it returns the result or it returns the result and that particular result is displayed to the end users. So if you see in this particular function, I have called to the preg replace callback. Now what this function is doing is it is searching for patterns in our text. Now this particular pattern basically finds all the email addresses that are present inside your text. And once the email, once the pattern is matched, this particular function gets called the function is called as convert email addresses. And if you can see just below this function, the function is available over here, convert email addresses. And the third parameter to our preg replace callback is the actual text, the actual user submitted text. Now when the text, the email addresses are found in the text convert email addresses gets called and in our convert email addresses function we are basically converting the text to the main two links. And if we have this particular setting enabled on the text format, then we are adding the EM tag or we are basically emphasizing the text. In our case, we have emphasized the email addresses. So that's what these things are actually, this is how basically the text is processed and displayed. Followed by we have another function, it's called as tips. Now tips is basically the, you can say it's a help text that is available to your site editors just below the text formats. I'll quickly show you this. Let's go back to the browser. But before that, see the tip is called as convert email addresses to main two links. Let's see how it is displayed to the end users. I'll click on edit of this particular node. Now we enabled the custom filter for basic HTML as well as full HTML. If you can see the text format over here, it has the help text available to it. Now all these help text or all these bullet points are provided to this particular format by different filters that are available or that are enabled inside basic HTML. The help, the tip, the help text that we have created, it is called as this convert email addresses to main two links. So yeah, this is the help text. Now one thing I would like to tell you over here is if you see full HTML, it does not has any tips associated with it. The reason being, it has the toolbar enabled or it has the CQ editor enabled. So full HTML basically does not display the help text. After that, I think yeah, this is how the custom filter is created. Now, I think that's it from the demo. So we basically saw how Drupal provides the filter module which in turn provides you the text formats where your site administrators or editors can basically manage those particular text formats followed by different filters that are available inside the text formats and then we actually saw the demo or the we saw how filter plugins are, how filter plugins basically work. Now, if you have any questions, please let me know. I'll head over to the chat window. So yeah, any questions please let me know. Yes, the example. So the question is, is your example module available and will you make it available. So yeah, the example module is available. And I'll share the presentation as well as the module to everyone. I'll tweet it out or let me just quickly do it right away. I'll paste the links in the chat itself. So my next slide basically hide this info. I'll copy this. And let me paste it in the chat. So these are the slides and the code repository. I have hosted it on GitHub so you can clone it directly. Yes, I have covered all the bases so I'm glad you liked it. Any more questions, we still have like 13 or 12 more minutes to go. Or if you have, if you, if you did not, since we still have time, if you did not understood any slides or any code base, please let me know, we'll cover it again. I'll try to cover it within few minutes. Oh yeah, I see why it gives you 404. So if you see the link, the word code CODE is appended to the very first link. Let me paste it for you again. I'll copy the slides link. Let's see if this works. Let me try it. All right, it works right now. So any more questions or we are good to conclude. All right. Please don't leave right now. I have some more slides for you. The one was resources itself. We covered it. So it was like, all right. Coming up next after the session, we have four awesome sessions or lined up for you. The very first one is best practices for building multilingual sites in Drupal 8. It will be presented by Mohit followed by we have a classic website blunders by Stephen. After that we have facades in Drupal 8. Supercharged filtering of listings. And the last one in the 10 a.m. slot is new CSS tech tell your designers by Mike. So do attend all these sessions and yeah, I'll be also in there. Thank you everyone for attending this and thank you to all the bad camp organizers. It has been a very good experience speaking and attending this particular event. So thank you very much.


Okay, let's talk now about analytics. One feature that has been requested a lot to Android is the possibility of having like local what we call local analytics. This is analytics based on the data that has been stored in your device. And maybe this data has to be synchronized with the server yet. Okay, but this is your device. And then we, when we talk about analytics, we are normally here, referencing, for instance, people table table tables or table or a chat. Okay. So, this is very challenging as we may have some performance issues, and there are a lot of possibilities as well. So, we, the way that we are like attacking this feature is like a step by step. So this means that we are going to have a different time reversions that is that they're going to move be ahead and having more like a features for for analytics. In this case into four, we are just centering in the, in the scope is the enrollment. Okay, so we are centering in that at the TI level. So into five, that's going to release it together with 237 we plan to expand the functionality of analytics product to six and probably is going to take us the whole thing like probably the one year and half from now. So, let's see how it works right now. And so I'm going to open a tracker in this in the type of I'm going to open a TI here. And you see that now we have here a button. This is the analytic button so you can navigate to the analytics. And what they've been rendered nothing new here because we already in the previous session we already could like offer here the feedback or the or the indicators, these are programming indicators programming indicators were was working since a couple of versions ago so nothing new here, but then we can see we scroll down, we can see now the different charts. Okay, in this case this chart is representing how the weight evolution of for an infant. Okay, there's a monthly basis, and you see how this is evolving the next charts represents the, the, the hate. Okay, so how does this work. So, what we're doing is like, whenever you have a program that has a repeatable program stage. In this step, in the analytic tap, we are going to be able to render in in charts or in tables, like all numeric data, data elements that belong to a to a repeatable program stage. So we can see how the values evolves over time. Okay, not only data elements, but also programming indicators, which formula contains a data element that that belongs to a repeatable program stage. Okay, like this is the case of the daily average weight. Daily is no child, but there are many other program indicators. Okay. So here, this is a full behavior so it will show all the possible combinations of all the elements and program indicators that contains that elements of repeatable program stages. In the next 10 minutes, I'm going to show you how you can be more granular with this and have more control about the different charts that you would like to suppose to the users. Okay, just only want to mention here that you can like change the chart type if you click in these three buttons over here, this can change to a table. Okay, and then you can navigate the values of the table. This can change to our chart. Okay, but let me just go again to the value value means like it's going to only one is going to display only the last value. Okay, so I'm going back to line chart.


Hey there friends, thanks for checking in. There's a Marlin rifle that really caught my eye It's part of the dark series. You can see why it's part of the dark series. It is dark But it's this lever action 357 magnum rifle also shoots 38 special This is available in five different caliber chamberings, but check this out Notice the stock is black. It's actually painted wood. It's got a texturing on there That's that's kind of neat little heavier duty than a polymer stock Nice butt pad there Also comes with a paracord sling and a wrap for the lever action So you work that action and it's more comfortable on the hand 16 and a half inch barrel It holds 10 rounds of 357 magnum. I think this really would be a blast At the range just a ton of fun as well So those who want to hunt with it threaded barrel on all of them and it does have a Rail there, which is an excess rail with integrated rear sight Right there. Check that out. It's sort of like a tactical Marlin That I think is super cool. It would be a lot of fun at the range So I'm looking forward to eventually getting one of these and taking it out and showing you guys what it's capable of But I do like it Marlin came out with a couple other rifles this year We're gonna check those out right now. We're gonna bring Eric in. He's gonna tell us more about it Hey, I want to show you a couple new rifles for 2020 at Marlin. This one is very special like that Marlin is turning 150 years old this year. So we built a really special rifle. We haven't done anything like this in many years This one is chambered in 444 Marlin and I'll take you through some of the other features. This is a C grade walnut stock Hand selected hand fitted. It's got a historic engraving pattern or checkering pattern here We thinned out the fore end a little bit One of the things that we did that I'm really proud of is we partnered with a master engraver We gave him some elements of what we wanted to see in this engraving and then he did the engraving all From scratch. It's it looked fantastic. Got John Marlin signature in here I'm gonna flip it over and show you the other side It's got Marlin there with a hundred a hundred the anniversary there and some Kind of a swirl that we did on a few of the older guns back in the day The one cool thing that Marlin is done In the past that we brought back was a half octagon half round barrel That's a really neat feature that we haven't seen in Marlin for many years. This is a 24 inch barrel and This thing is probably gonna sell for around 1700 in the stores Okay It's gorgeous Here's the other one we now we built this gun back eight eight nine years ago And we suspended it because we had on some issues with feeding and that type of thing We took it back to the drawing board with our engineering folks and this is our 410 This is bit built on the 1895 frame. It's got a walnut stock polished finish on the metal 22 inch barrel and it's got fiber optic sights here makes it super super easy to see now We have two versions of this gun one has got choke tubes in it We ship this gun with three choke tubes Light-modified and improved cylinder and a full choke The other one is just an open cylinder choke And this one retails for about you'll see it out in the world for 800 $850 the one without choke tubes is probably somewhere about a hundred dollars less All right, thanks, you're welcome. Hey, thank you for coming by really I've enjoyed this I appreciate you watching you guys be safe


It's the only video I'm gonna get to make today because Monkey wanted me to come with her today because The spare tire that I had put on that I had to put on the truck Was the one that I did where I put two plugs in it so We was kind of leery about that. So we was going to go get a new tire.  So we don't got to use tire through on the front. I Find the parts online that I need for the other side at a fraction of the cost, but The reason why we didn't order them of course was because we needed the truck so I'm going to go and put all the new parts on it before we have it lined up So I couldn't see paying $80. I got I got one mounted balanced out the door I got a good used one for $39 So that's the way to go there any other time I would put two new tires on this thing But as many miles that she puts on it. I'd rather wear out a $39 tire Than an $80 tire Because we're just gonna need tires. So anyway, I'm with her today. I've been with her all day So they can get anything done in the garage Because I'm here and here she comes smiling. I'm here with her So there she is right there. I'm vlogging. Are you vlogging? I'm vlogging.  I love my truck. You heard that song Yeah Anyway, so in the comments she sang her song. I love my truck It's an old country song which I did in one of my first videos. I did that song with my suburban Yeah So I did a music montage about my suburban Because I love my truck. So you love your truck. So anyway, I'm just vlogging kind of hanging out It's hot. You can say it on my channel hell We custom my channel because we're we're the cool kids We're the cool kids. I'm with the cool kid. I do I took my my whole life. I was always with the nerds Yeah, now you're with the cool kid But I got to thank YouTube though YouTube has paid for several of them parts They are butts. Yeah, but I mainly want to thank you guys because if you wouldn't watch my channel I wouldn't be making the money on YouTube. We're rich now We're rich. Yeah, can I quit work now? No, okay. Well, we're not rich, but it did help I just want to say thanks guys. So they just got down with another one How many we got left? I don't know. I lost count now two or three. I think I just got lost That's not surprising. This is good. What's good? Well, maybe not I'm going out the back way. Oh, I can't I Exit for residents only Jesus. So 514 have no idea when we're getting home So Me monkey Bruno Going to this restaurant last night a nice one brand new place Nice restaurant last night. So Yeah, so me monkey Bruno going to the restaurant and of course here comes Mrs. Smartass know it all waitress, right? Walks right up to me and says sorry. I'm sir Sorry, sir, but can't have that animal in this establishment So poor monkey had to wait in the truck while me and Bruno finished our dinner But that's okay because I saved my bone for her. I've got to do with anything I'm like I can vlog then if you're driving driving down there. That wasn't the point What's your point? I can let you walk. Yeah, you let me walk after everything I did on this truck so you wouldn't have to Yeah See that's why she's an animal. You see yourself I'm eating you can't see and chew at the same time you better pull this truck over No, it's really dark I don't know That way I don't know where the hell we're at. So I got speechless, huh? I don't know what the hell's going on but Yeah, some of these gated communities A lot of people are uppity-up and because they live in a gated community, but they're nice This one's got a golf course in it And ain't that the the clubhouse there? Okay, there's a pool there. I'm talking about the building. Ain't that the clubhouse? Yeah So Just messing around. We're almost home 737 so we're getting ready to come up to our driveway now squirrel Up to our driveway. So we made it home uneventful Today's work. Yeah make no money today. I was riding around in the truck But I did get to make a video so We did get it A little squirrel in a yard there. I don't know if they can see We got all kind of squirrels probably about 20 of them around here, don't we? We got armadillos Uh, about a mile up the road we've got um It's rich coyotes up there And they don't come around in this direction Tell them what else we got We got monkeys. We heard him the other night. He was in one of these trees right Over there on the other side of the car. He was very very close And we have a hudao Yes, the hudao's cool, huh? Yeah, we hear him every night. Yeah Well, there's a couple of them because they talked back and forth. Yeah last night. He was real close He was in the backyard or somewhere. Yeah Yeah, and one of them trees in the backyard because it sounded like I mean he was right there He could tell all right, so Thanks for vlogging with me and hanging out with me today. Thanks for the ride mama Thank you for coming baby. You're welcome And we'll see y'all soon monkey wave bye And we'll say she bear them at the middle edge. I'm gone for now. Bye. Bye guys. Take care


As we come to the end of this week, let's try to summarize what all we have learned. We started off with saying that a source computer needs to send a packet to a destination computer somewhere on the internet. And we saw in the first step that it's in the local area. So a packet has both a MAC address and an IP address at this point and it is sent out on the link layer. So switches at this level take the packet from the source computer to the nearest point of the internet for that local network. So this entire local routing actually happens through a network of switches. Then the router takes it from the edge of the network and ensures that the packet reaches the destination edge of the network. This happens through a network of routers in the internet using different routing algorithms that we have seen such as distance vector based routing algorithms or link state based routing algorithms and eventually the packet reaches the destination end on the internet. Now after it reaches here, once again the local network takes over where the switch now sees that okay here is a packet which is coming in for a particular IP address destination and then the switch determines which is the computer which is associated with this IP address, finds out the corresponding MAC address and delivers the packet along that interface. Once again the switch uses a protocol called the address resolution protocol in order to determine which is the machine to which the packet has to be delivered. So if we look at it in abstract terms, both routers and switches actually perform the same function. Their job is basically to get a packet on the incoming link, determine which is the outgoing link to send this packet out on and send it on the appropriate outgoing link. Routers have to largely work with IP addresses because they determine what is the incoming IP address, what is the destination IP address and try to determine what is the outgoing link on which the packet has to be sent. We also saw that in the case of a switch, the construction of this table is a fairly simple matter, it is called the ARP table and the mechanism by which the switch determines what is the destination MAC address is also fairly simple. It simply broadcasts into its local network saying who has this IP address and the corresponding machine responds with its MAC address saying I have the IP address and it returns the MAC address. In the case of routers on the internet, we saw that there are large number of routers and this can go into thousands as a result of which routing table sizes can become very large. Also we saw that there is a need to manage these routing tables, hence there are different algorithms that are used depending upon the types of networks. For small networks, there is the distance vector based algorithms, for larger networks there is the link state based algorithms which are popularly used. Now that we have seen routing at a conceptual level, we have seen it at a demonstration level through packet tracer, you have worked through some assignments, it is time for you to apply your learning and do the next assignment yourself.


I grew up in Congo West, just down the M4 from Blacktown. It's southern Australia. I wasn't born in Western Sydney, but it certainly feels like home to me now. I was born in Blacktown Hospital and I was raised in St. Clair. I spent a lot of time with Michael. I grew up in New Zealand, which is in the west, so yeah, very much a Western Sydney boy. I was actually born in New Zealand, came here when I was six and raised in Western Sydney at six. Born in Barney Hills, but lived out in St. Susie, pretty much my whole life. So, not really a Western boy, but a city boy nonetheless. In Adelaide, southern Australia. I was born in Liverpool Hospital, raised in Wakeley near the Fairfield showground. I grew up in that women's area, literally, now I have quite a few. I was born in Perthville, so it's close to it. I grew up in Perth and then moved over here when I was...


Amit here today. First of all, let's actually give him a round of applause. You know, all the great matches that have been won in T20 as Israeli thanks to his bowling and the hat trick that you made is something that we're going to remember for a very, very long time. So you know, being part of cricket, cricket is a religion to us.  So how did you get into cricket? Was it something that you decided when you were young that this is going to be my life career? Or did it happen by chance? Good evening, everyone. First of all, thanks a lot for having me here, ma'am. And I don't think so. Somebody decided to like to play for India or something like that. Everybody started on the treat or gully cricket. I also started like that. But I have a few lucky guys to play for India and perform there, still playing. And I played 12 years still, keep going strong on IPL also. So let's see. But I don't think so. Somebody started thinking like that, can play for India. It's a long journey, it's a hard journey, but up and down is always there. But yeah, but you do a lot of hard work to reach there. Sure. I can totally imagine. I mean, that's why you're loved by pretty much the all of the country and probably outside also with T20 Games. So how do you think T20 Games have really changed the culture of cricket in this country?  Everything is speedier.  So how do you think it has brought a change in particularly you as cricketers to think the game differently? As a cricketer, I don't like that. But actually for like people wants to finish early, want to go home early and want to see so much of sixies and boundaries. Nobody wants to see wickets and good bowling and some batsman struggle and swinging ball. I like to play and watch cricket test matches basically. And if you ask any cricketer, everybody wants to play test match only. But people demand so we can't do anything. But which one thing is very good for a cricketer because if I came for a T20, for my time, when I started cricket, it's difficult to make money and to reach there and start. You have to perform like four or five years. Then two people know who you are. But nowadays, if people you want to make your mark and you want to know people, people know you who you are. So you just pipel is there for you guys. And one thing I really like to for a T20 for like poor guy and is playing cricket also and getting money also. So that is different I can feel. But as a cricketer, any cricketer if you feel, maybe batsman don't like it, the T20 cricket, but baller never like it to play T20 cricket.  So you have some platform to earn money and make your name big name. So Zypel is there and T20 is there. So I'm very happy for a poor people who are just struggling for a money. Now is platform is there to make your money and make your name also. Sure. You know, I can imagine what you're going through. So how do you sort of, I mean, know fair is always there to lose the match and perform well. Even but there is a profession is always there. And we do a lot of things about it. Somebody like wants to listen to music. Somebody wants to do something. Somebody wants to do jokes. People, but so they always listen something to his mind and relax all the time. It doesn't show that no doubt the profession is always there. But because we all together just go there and give your best.  Believe me, especially World Cup. But I see it differently that cricket is a game of defeat and victory, and they played so well, they lose only one match, I think, that will be semifinal. So, after coming on a big time, it happens, but I can tell you as a cricketer, we feel a thousand times bad, like you feel guys. So, we always think that so many people want us to win and perform. So, to carry forward, it happens that we lost today, it's okay, so many people are still watching us. They want us to win a match, so we try to forget that we have to win a match for them. Whatever wrong we did, we just improve from there and get another match win for India.  So, small enterprises are me and they are very big and they are at a lot of stress levels.  But I feel that the defining moments of cricketers are more stressful than us. So, how do you beat stress?  See, ma'am, I'll just tell you one thing. Everyone's stress levels are different, but I know that stress levels are different. But I can say only one thing. Whatever stress, whatever is there, don't take your home. Just finish there and go to your home.  Don't show them anybody. Just leave it to the next day. Whenever you come, just give you more than 100% like last day you did. Just think what is going on. Just try to give you better than yesterday. That's it. So, this is my final question. I'm sure people out here have lots of questions for you. Who is your mentor? Who did you get to learn the most from? Because he was my mentor and that's why I've been able to reach this strategic point in my life. If you ask me as a cricketer, there are two or three people there, like Sachin. And you can say sort of Ganguly and my favorite Anil Kumbhle, Shane Vaughan. But I've seen every day, every hour in my life to listen. I see people, I went to Himachal for a few days. There is one guy there. I'll just give you one story. How do I improve myself? How do I encourage myself to do well? So, there is one guy who doesn't have a hand. He was working for some factory or something. He was cleaning the cars and everything. So, I just asked him, I just stopped my car. My car was also a little dirty, but I just stayed there for like half an hour. I just asked him how this happened. I thought he was born or something like that. He said, no, I'm working for some company 25 years back. So, I got a current and I lost my arm. And he has two children, one girl also. So, I asked him what you did. He said, I'll never be looked back. I'll just start working something else. And I'm doing this. So, this inspiring story. I put in my, all the tutor and everything for that guy. So, like 25 years, he's retired, he doesn't have any arms. He's got a food for his family and he's done so many things. He's two children, boys, guys that's studying in the colleges right now. And one guy's doing some jobs, some, I don't know, some company. I didn't remember that, but it's inspiring. Like, things like this, inspiring me so much. We have everything and we think, that there's nothing going on with us. Think about that guy, he doesn't have a hand and he's doing so many things for his family. Think about it, but we have everything. So, yeah, we can see everything. There's pressure, everything is happening with me. Yeah, it happens with everyone. But you have to take your foot forward and deal it and go forward all the time. Sure. Thank you very much.