So today is the fourth meeting after GSOC, building Jenkins.io with alternative tools project. And first off, today we're going to discuss about the strategy to tackle the project as discussed in a good chat, let's see. So it's like, I did reply eventually to everyone, which may be a little bit different from what we had discussed before. That's why I want to confirm the strategy. That's one thing I want to discuss. Also, we would like to check on problems. So what do you have to show this week? Well, I have good news. I have reported the user documentation completely. Wait, I can show that. I guess right now. Yeah, sure. So wait. Okay, thank you. Just a minute. Yeah. Yeah, share screen. Okay. Can you guys see this? Very well. Yeah. I was, I'm facing some problems with system administration paid because like they, it has reverse proxy configurations and the like links are not working. The page is not changing other than that. Everything is working fine. Like, I think in some pages where we have work in progress and Nora is not reading them correctly. So what should I do? I don't, I don't, I don't know how this work in progress equals to true things work. If I remove this, if I remove this, the page will be just an empty page without that. Without what we, what we see on Jenkins.io on pages that are actually in work in progress. Yeah. Cause like we have a work in progress. It shows a button. Yeah. Managing like managing Jenkins and. Yeah. Here we have, I guess it was. Script console. No, it is not work in progress. Wait, let me see which one is the work in progress page. Okay. So is this indicating to us? You may not be, oh, there we go. I don't know how this system does like, I don't know how, how this thing is here. I think, but I'm not sure cause like, let me check. So I think I, we can, we can do is to. For in toilet. Let me search for it. Cause sorry. This is, this is just, I can, I can, like we can place this with like, I can just write it here. Like somewhere here. I can write the warning, the warning tag. I guess it's the warning. It's the warning admonition block in Antora. Correct. Yeah. So I can, we can use that on, like I can copy paste that on every page. I don't want to do a copy page. So I want to like use a config for it. So it was like, we can, we can make a component. And we can, we could, yeah, that, that might, we can create a partial in Antora. Oh, that, that works to you. Yeah. And then we can include that partial on all the work in progress pages. Yeah. So does Antora have a concept of that variable that's, that's defined in that ASCII doc file? Or no, it's only, it does not. Okay. Thank you. No, it does not. Okay, but can we define something similar? Like when it's hard to turn on like a flag, we show like the work in progress page. So the, because Antora does not actually read all this layout section, it does it, the, the minimum, the standard page structure is just says your title and start like writing whatever you want. Yeah, but can we, can we customize like if we go back to Antora page? Does it say we can customize the icon? Or is it just a page? Yeah, we can, we can custom, we can customize this admonition block. Okay. But it, it will then, yeah, I can, I can do that. I can do that. We can, we can create, no, wait, I can, I can try updating the UI project and add a warning for work in progress, which will show that on pages where like we have actual warnings on, we'll have, we'll have something like this because I have like updated how the, here, the UI, which I am creating, it, it show, it will have warning here and yellow color. Okay. But how does, how does this work compared to the fact for the work in progress? The question? Yeah. Yeah. So I can, I can like create like I can update, I can update the admonition block, keeping the previous one too and one for the working progress one. Okay. Or we can, we can, we can, let's check that. Have you ever kept a record of all the like the other ones besides work in progress that we need to account for? I haven't like, I see, I saw some work in, I've saw some work in progress files and I just pushed my changes. So I just, I just saw that it was not working like five minutes ago. So, but I think, I think using a partial would be much easier to like add. I think for, for, for work in progress, it's easy to use a partial to like, yeah. Yeah. We can just add a partial. Okay. Yeah, sure. Anything else you want to report on? No, I, I, I will, I will like, put the tutorials and resources tomorrow. And after that, I'll have to like, correct the links on all the pages. So I'm thinking about writing a script. So I'll start working on the script. Yes. After the day after tomorrow. Yeah, sure. Yeah, sure. But I'm just wondering if you, we can use the trouble. I just created. So if do you still like to it? I didn't quite catch you Chris. Trello. Trello. Yeah. I joined, I joined it. Can, can you create some tickets for it so we can track where progress because like we, you're not opening PRs on your like way. Trello. Yep. Yep. I joined it with my phone. I have to see. Yeah. Yeah. Okay. Like I do I have to try creating a card? Yep. Thanks. Oh yeah. Cause I quit some for you, but. Yeah. I saw the existing ones. Update the existing links to Intura. How Intura reads links. And includes. Yeah. Yeah. I can. Okay. Yeah, sure. That's good. That's one thing existing links. Let me add an actual item on the dogs too. So we have that. Let me see. So this one too. At. Square. Okay. Anything else you want to report on? No, this is all I have done after the after Thursday. But can we go through what you have done so far?  In comparison to what we have on Jenkins.io. In comparison to Jenkins.io. First I'll have to like support tutorials and resources. Then. Then how Mark pointed out that special page where we in the pipeline. Like we, where we can like search for things. I do the special pages are the ones which I'll work on later. But I'm constantly checking if anything is wrong with them or not. So like I can, I can research while working while working on other things. Okay. Sure. You show us what you have currently with Antora. Yeah. With Antora, I currently have Jenkins main home page. I still have to put all the images because they are not in the same folder. So like I'll have to search for I'll download the complete project and like put them in the right places. So I think it will, that will be like time taking. So it would be done by next Saturday. Where next by next Saturday we'll have complete user docs and developer docs. I guess. If everything goes well. Yeah. I'm, you may have already explained it to others, but it would help me if, if you could help me understand what's, so what's the difference between the images in the, in the current site, the Jenkins.io repository. And where we're going in Antora and Torah assumes some different things about the location of the pictures or. Yes. Tell us more about it. I'll show you how they organize the files. Images. Okay. I'll just show it from here. In Antora, I have these modules and these modules has the, have these assets where we can add attachments and images. So like each with all the pages in a module will first read the images from the images folder, the assets folder from the images. So I'll have to put them in the images folder in each module. Currently on our site, we have images on like, we have images on different, in a different folder.  Wait, I'll. I think it's on the content. So is that one? Yeah. The images, the images folder. Yeah. I'll have to download all of this. And in this, I blue, like, like I have created the blue ocean, blue ocean part. Blue ocean section, blue ocean section. All the images for blue ocean will be here, will be in here. So I'll download this and put them in the correct, incorrect, correct files. Do you mean like currently within toys by module, right? Yeah. The image folder goes with the module. Yeah, I'll have to follow that structure only. Okay. So, so there and Torah doesn't have a way to augment or extend the search path for images like we use with Ostrich and ASCII doc today. If it has a, then I'll have to like, I'll have to put the part, part of each image, part of each image there. If I show you how, how we like add images in Ostrich content. I think it's content doc, right? It's content doc book. Where, where, where was I, I was in creating pipelines, creating pipelines. Yeah. So up at the top, there is that, that very top of the top of the, what do you call it at the top of the file. There's the images. It's directory, images directory. Yeah. And that's not a concept that and Torah has. Yeah, it does not have, I'll have to like put the complete path. If, like, if I just put all the images in one place and then reference them from there, then I'll have to write the complete path. Okay. Which will be equally like, which will be equally time wasting, I guess you can say. Okay. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. And Torah really doesn't have a concept of look in another location for images. It wants them in exactly the location it's defined. Make sense. Okay. Thank you. Yeah. I don't know a question though. It was like, um, how do we keep track of the current documentation and any changes to it before our project is finalized? Because like, um, I might have, I might have been updated by contributors. Yeah. I, because it is a common problem by like till September, many of the files will be like updated by the contributor. So I was thinking about checking, checking the commits. Checking the comments on all that, like checking the comments. Or like, we can like manage a spreadsheet for that. Yeah, that would be good. Like if, if any of the documentation files are updated, we can like update that there that I'll have. So later I'll just update the updated for one last time. So everything will be up to date. So, so. We can't just, I would have initially thought, oh, manage this as a fork of the repository and use get commands to do the moves so that get would help us do that. I assume your current working repository is not actually a fork of Jenkins.io, is it? No, it is a complete new project. Right. And that's a lot tidier. So, so I think some other means rather than using get to track the changes probably is what we'll have to do. Okay. Yeah, but, but if you, if you like, if we look in for think for the future, when we'll, when I'll start working on the blogs, the blogs have much more amount of images. And the same problem like the same problem problem would be there. Yeah. Well, but, but the blog images are the blog content in general is much less likely to change than this documentation on creating a pipeline or on a tutorial. So because blogs tend to be written once and never modified. Yeah. Okay. Thanks for the clarification. Yeah. We'll have to, we'll have to like track this, these changes somewhere. So like, I can update them later before like, we actually host docs.enter.io, docs.genkins.io. And are you currently watching the Waipo show on GitHub? Nope. I'm, I'm currently like, I, I, I sometimes glance over the issues, but like, like not actually reading what they are about. Okay. Yeah. The reason you found a way to keep track of all the changes. Other than or, or like I said, we can just look at the comments, the more, the more I can, the more recent comments, the files, which will have more recent comments, I'll update them nonetheless. Yeah. Yeah. Okay. That's from my site. I want, I wanted, I wanted your guys and put on the like the look of the site. I'm very impressed. I am really thrilled. I, I like that. I forget, maybe it was even you who did all the work to get us so that the left hand navigation was static was held steady on the current site. And I like this layout even better. This looks great to me. I think you've done a brilliant job there with the, and I, I hope it came for with low, with low, relatively low effort thanks to Antora. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. So the creating dash plie pipelines. I assume those will get a title that's not just the title of the file. Yes, yes, yes. Like I said, I just pushed these changes and I was testing them out. Right. Then I saw like, oh, it's time for the meeting. Yeah. I'll, I'll update all this and send a record. I send a video recording screen recording of how the complete user documentation will look. Like tutorials and solutions. Very good. Yeah, Chris. That's from my site. Okay. So let me stop sharing. Okay. So let me share my screen for the document. So currently I have three action items. So one is to complete the script. Yeah. I kind of think that the first is overlapping of the second. It's to complete a user developer docs. Bye next Saturday. Yeah. Bye. So also for an item to open tickets on trial. Anything you can think of, I should add to it. No, I think it's like, it sums it up. Okay. So why, why are you pushing a code to you? When you're you like, you just, um, it's a way we can keep track of like incremental changes or like, um, What you would, are you working by branches now or not really? No, I'm just pushing to the main right now. Okay. So maybe after you're done with the developer dog. Is it okay for you to work on a branch and stuff like the main. Okay. Chris is, is your concern wanting. Vandy, you're using a public repository, right? So the rest of us could certainly open your repository, build it and look at it ourselves or, or is the build process more complicated than that? No, it's not. Um, the way I want, I want them to host like a version. V a, let's say like in a pages first. If we can do so. I want to go by branches. Yeah, so I'll set, I'll set up GitHub pages for that. So like we can like show the community as well. Okay. Existing. Is it main branch? Yeah. Okay. Okay. And we should afterwards, um, once you have a product to show, we should, um, start another email. Yeah. Yeah. Uh, anything, anything else from you guys for Jeff, you mean? No, for a moment. I like his work. I'm impressed about his page. Yeah. Me too. How about you? Not for myself. Yeah. It's very clean. Also like, yeah. So branches, we'll be making a branches. So I'm going to create a PR, right? Uh, the changes you're doing. Yeah. I think so I can like bring you guys for a review. I should use branches. Oh, yeah. Yeah. Okay. Sounds good. So, um, let's make him next Saturday. Same time. Yeah. Okay. Any, any other questions you have for us? And before you go. No, everything is fine. Okay. I have one last question. Yeah. So, uh, will the, uh, will the poor request be sent to the. Uh, get her. Yeah. Yeah. Okay. Thanks. Okay. I got a question for you though. Like, could you send the final length test again? Cause like, I think you sent out three before, but I think only two are currently in use. Uh, I didn't quite get that you Chris. So, uh, yes, you have sent out three. Yeah. Yeah. I think only two are in use by you. Yeah. Yeah. Jenkins UI is not used. You, I'm not using Jenkins UI. Uh, I'm only using Jenkins, uh, docs and Jenkins UI project. Okay. Could you send those again?  I'll send the links to the, uh, Gitter. Okay. Thanks. Okay. Thank you. Thanks everyone.


Welcome back to the channel. In a previous video we were able to create a new course that added to a sub-toto and created a new total in about 5 lines of code. So this time around I'm going to do something different. I want you to imagine that we had created our products and they included the prices with their taxes in them. But at the end of the day we want to show the custom how much they're paying in tax and how much of money was charged before the taxes. So that's what we're going to dive in and that's what this question was asking from the drone who asked in the comments on that particular video. So let's jump into that. There are two ways of doing this. One is by using the add action and then you target this particular location and add some code to it. But I'm going to show you another way that deals with the theme and also just adding different template files from Wukamas. So Wukamas allows us to edit the themes. If you come to the docs you will see that they allow you to edit the themes by adding a new file inside your theme. Add one of the files from the templates from the plugin and that will work very well. So what do I mean? Let me show you that. We're going to open our editor here and I'm going to go and open our plugin inside WP content of our site. Now inside here I'll open the Wukamas plugin and I'm going to look at the templates folder that we do have here. So inside here, since we're on the checkout page, you will see that most of these templates are well named to the areas where they are attached. So we'll go to the checkout and we'll see the part that talks about reviewing the order because this is the part we review. The order will open that up in our editor and I'm going to just go down to the part where we have the total right here. And I'm going to duplicate this table row and I'm going to add something new and call this information. And once I save this and come back and reload, you will see that we have a new section that's talking about information and it's not affecting our total even if we have a figure thrown in there. So this is how we do it but unfortunately we can't edit that in the plugins itself because once we update to a later version of Wukamas, all our changes will be lost because this particular file will be overwritten with the new file that comes from Wukamas. So what do we do? We just need to copy this file and then we're going to come back to our active theme inside our themes folder. Go to 2019 which is our current theme, create a new folder called Wukamas and then inside this we'll create a new folder called checkout because in our templates we went into the checkout folder and then we're going to paste our review order. Please notice that we don't add a templates folder inside here. We'll go straight away from Wukamas and start adding the different templates and layouts. So from here we're going to edit this file and because we copied it directly it will still have the information we had added but I need to go back to my plugin and restore what was originally there. So if we try to reload this here you will see that we still have our information working out here and that is coming from our themes and let me show you if I just make a small change or add a new word and say here and you'll see information will be here. So since we have this I'm going to now attach something we don't want this to be bold we want it to be like the subtoto. So I'll copy the class that comes with a subtoto and that is just cut subtoto here copy it then paste it here and save. And we're going to change the functions that do work in the PHP in this particular file. So let's create some space here and we're going to say we're going to get we're going to get our subtoto is equal to WC which is a global from Wukamas and we're going to get the cut and we're going to chain on get subtoto function to get us the subtoto. Now what we're going to do in this particular case is we want to echo the taxable amount and what do I mean by taxable amount that is how much tax we're going to pay. So you can say taxable amount and here the taxable amount we usually get it by multiplying our value our tax rate and our total. So we shall also get a value of rate and we're going to say it's 18% but remember 18 out of 100 is the same as 0.18. We don't add this percentage sign because a percentage sign means something different in programming. It's a modulus. It means you're looking for a remainder after dividing an odd number with an even number. So we'll just make our tax rate as 0.18 for 18%. So what we're going to do now is we're going to echo the subtoto times the rate. And then we are going to set this so when we come back here and reload we'll see that our taxable amount changes and we have the value written right here but of course it's not adopting this currency. We need to get that currency symbol right here and we shall get that symbol before the 162 by using this function which is a get wukamas currency and then we shall just chain I'll just add our math inside some brackets to make sure that it goes through. So let me reload this and you see that we have a figure here and it's still not affecting our total that we had here. So I'll just quickly go and turn off that flagging that shows the extra costs when I reload here you'll see that we have our 900 as subtoto and our taxable amount is still this. So let me push this a little step further and I am also going to show the client the amount before the tax so we have amount before tax and that we usually get by getting the subtoto and then we remove the taxable amount so we're going to do some more math so get the subtoto then we'll subtract the subtoto times the rate and so if we save this we're going to see that we get this value but of course we can also chain on our function which is a get wukamas currency and then we'll use a dot to do that I can also wrap this inside the brackets just to make our code more readable so I'll say this when I reload you'll see that we have our amount before tax we have our taxable amount and our amount is still 900 and it's the one that will get paid so if we place our order you'll see that our order goes through and we are charged 900 for cash on delivery so that's how you can also use the theming in wukamas to make your whole experience of your shop unique so you can actually end up doing a one page shopping site so that people order only on the front and then they go to the checkout so we're going to attempt that in the near future I'm going to come and show you how we can do a design a whole complete design of our one page shopping wukamas site so keep blue to the screen keep watching the channel subscribe if you haven't and click the notification bell to always get the latest coming from the channel share the video with your friend if you enjoyed it give it a thumbs up or just simply leave a comment with a question or an answer thank you for watching and cheers


All right everybody, we're gonna go ahead and get started. I'll let y'all sit down. So just a few notes. First of all, I'm Joseph Bassick. Welcome everybody. It's been a few years. We finally made it happen, so hooray for that. I wanna go over a few things. Clearly this is a bit weird for us. We're on Zoom call right now, so we have remote attendees for the very first time ever, I think, for this conference. For anybody that's presenting in this room, stay right here. This is where the camera's pointed. This is where the microphones are. So if you wander down the stage, the people in the Zoom call are just not gonna hear or see anything. The microphones are on the table. Please use them. We have this every year, but this year it's particularly important because again, people on the call will not be able to hear you if you're just yelling at each other. The other fun thing is that this is being recorded and will be put up on the YouTube for Linux Foundation. So people like me need to watch your mouth. So this will be a very fun three days of seeing how long it takes me to start swearing into this thing. Other than that, I think everybody has everything. The schedule, I've gotten a lot of questions about. It was in the email. It's on the website. If you go to the website, you click on schedule. You can see the schedule. It should take you to Google Sheets, which will be changing constantly as we move things around. It has all of the Zoom links. So if you have to like bug out and watch from your room or whatever, you can click on that. The Zoom password was sent to your email for both in-person and virtual attendees. If you can't find it, you don't know it. Find somebody on the program committee. That is me. Omar right here. I don't have my glasses. I can't see anybody else. Why don't the program committee stand up? So you know who you are. So you got McCall. Got Dan Williams back there. Alexi's around here somewhere. Those are me here. Alexi, Daniel. So these are your program committee members. Thank them profusely because they've been doing this for three years. We've been trying to do this for three years. These guys have not, we've not rotated. So we've been doing it for this long. We are done. Maybe they're not, but I'm for fuck's sure done. So. I thought you left the five minutes. Yes. I want the full.  Anyway, so yeah, this has been a long time coming. I am super excited to see everybody here. I am super happy that everybody has managed to stay safe and relatively healthy. That is awesome to hear. Also Martin unfortunately had an emergency. He is hopefully on the Zoom call, but he's okay, but he's obviously not here this week, but he'll be on the Zoom call. Other than that, yeah, let's get started. I think BPF is in their own room. So BPF guys can leave if they want. And Willie, you wanna come talk about folios? Thanks Joseph. All right, I wasn't expecting this to be got from YouTube, but oh well. So. I was originally planning on skipping straight to the so future work slide. These are actually the slides I'm going to be using in Austin in three months time, but I'm just gonna, I'm not gonna do the talk I'm doing there. I'm just gonna skip around and use this to illustrate to primarily file system people, I think in my audience for this, but because file system people don't know about memory management. And I asked a file system person earlier today about compound pages, and they said, is that like a compound fracture? Yes, multiple things are going wrong at all at the same time. They are exactly like that. But yeah, seriously, this is what a, when you say to the VM, hey, give me a compound page of order three, this is what it looks like. Each, it allocates eight consecutive pages. And each of the last seven pages all point back to the first one and say, hey, that's where all the real information is that you need to know. And so when you call something like lock page on a tail page, it actually locks the head page. And then you start asking questions about things like, well, okay, so is this page up to date? And it doesn't actually know the up to date status of each individual page. It actually knows the status of the entire order three blob, the compound page. And so you can already hear, I'm having trouble talking because I'm using page to mean two very different things, right? There's page size bytes, which is 4K or 8K, whatever. And then there's the size of this, whatever this page happens to be. And so because I'm having trouble talking about it, that means that we need a new term. So this is why I came up with folio, right? Anyway, I kind of skipped over the why are we doing this? We're doing this because we really want to be able to manage memory in larger chunks than 4K, right? You, on your laptop right now, you've got what, 16 gig, 32 gig, right? That is millions of pages. That's millions of four kilobyte pages. It is a pain, see Joseph? That's how you don't swear on YouTube. It's a real pain to deal with that many pages. We really need to manage memory in larger chunks. We are wasting so much time, we're wasting so much energy, just trying to understand, oh, you know, I'm moving all these pages around onto these lists and that list and it's stupid. We just need to manage memory in larger chunks. But in order to do that, we need better infrastructure. We need the folio. So this is, I'm just kind of talking about the, some of our bad interfaces, right? But fundamentally, if you see something that takes a struck page, you don't know what happens if you pass a tail page of a compound page to it. We pass a head page of a compound page. We have all kinds of functions, all kinds of crazy things and you start asking around, well, what is this supposed to do? And nobody, chances are nobody actually thought, well, what if this is a compound page? Because for so long, file systems have been dealing with order zero pages. There haven't been, other than for TempeFast, there has just not been the case that file systems see compound pages. File systems have always seen order zero pages. So, we have a new type, struck folio. And a folio refers to the head, it is essentially an alias for the head page. So, if you see a struck folio, you know you are talking about the head page of it. So, you don't need to say, oh, is this a tail page? If it's a tail page, go and get the head page. You just forget all about that. You just use the folio interfaces that exist. And they do now mostly exist. I've been kind of dribbling them into the tree over the last few corner releases. And I won't say we have complete coverage yet, but certainly as I go and convert more and more code to use folios instead of pages, there's less and less places that I have to convert first. I can generally go to any given file system and convert it from using a struck page to using struck folio. And all the interfaces that I need already exist. This is kind of a timeline of when stuff went upstream. I should probably do a 519 with all the stuff that's currently sitting in next.  So, we decide, right now large folios are only allocated during Read Ahead. We don't yet do it in the right path. So, if you are writing to a part of file that you have previously read, the Read Ahead will already have created large folios and may have created large folios. And it will see the opportunity to use the folios which were already in paid cash. But if you're writing to, if you're appending to a file, or if you're writing to a part of the file which happens to not be cashed right now, then it will create all the zero pages. And we need to go through and figure out, okay, so. What criteria should we use to start creating large pages in the, yeah. So, this is really what I wanted to talk to this audience about. Where do we go from here? So, some things are obvious. Like, there are large chunks of the M.M. which don't use folios today and should file systems. What I really want from file systems is that they take a look around and see what they could not write themselves. That is, Dave Howells has done a huge amount of really important work creating common code for network file systems. It was done in aid of making cash FS work better, but it's really created a common layer that any network based file system can use. And even some file systems which aren't technically network file systems, like I think Fuse can use it, and maybe a couple of other file systems can also use it. It's really pretty neat and it's worth looking at. But a lot of the inspiration that we took in order to create the net FS layer actually came from my own app. It's not a perfect replication, but a lot of the inspiration for it came from my own app. And what I'd really like to see is more file systems moving away from using buffer heads and towards IOMAP. That's for block based file systems, of course. It just makes everything better. It really does. It would technically be possible to create, to convert all of the buffer head stuff from using pages to using folios. And we're probably going to do that anyway. I've made a start on that. Some of the patches for doing that are in 5.19, or will be in 5.19. But there's some stuff that, there's some code paths like making things up to date and making things dirty that are actually ON squared in the number of buffer heads on a page. And that's manageable when you're talking about 512 byte blocks on a 4K page because you've got eight of them, so that's an order of 64. But when you're talking about, oh, I've got a two megabyte page and I've got one kilobyte blocks and all of a sudden you're talking about orders of millions, and it's a linked list walk as well. So approximately you've pessimized for a modern CPU. People need to move away from buffer head. Those same kind of operations, by the way, are a bitmap scan in IOMAP. So you've got one bit per block and so that's clearly cheaper for a CPU to do than trying to walk a linked list. Do you want to take comments now or? Sure, yeah. Sure, so you've already talked to the EXT4 community a bit about this subject and I was wondering maybe be useful to maybe go into some of the discussions we had over how to actually convert to IOMAP as in read path only or the happy easy cases first because switching to IOMAP as a file system developer can seem rather daunting and going to IOMAP can be an incremental process and maybe that's worth a bit of discussion now perhaps. I think a bit of discussion now is a fine idea. Do you want me to kick that off or do you want to kick it off? Sure, why don't you kick it off? I could do it, but I would be repeating what you told me, so. Well, that's fair. All right, so, right, as Ted said, he and I have had discussions and not just he and I, of course, Jan and others as well. So IOMAP is currently missing some features that other file systems like EXT4 have, right? There's DM Verity, not DM, FS Verity, a few other things. So the easy thing, the easy start to this is to say, okay, we'll define one set of address-based operations for the easy cases where those optional features aren't enabled and then we'll have our current, we'll keep our current buffer head ones around for that. And it's not too dissimilar to how EXT2 had the no BH mount option, except it wouldn't be an explicit mount option. It would be like, okay, we're going to choose the right path for, we're going to choose the first path for you. And so if you didn't enable things like FS Verity or what are the other features IOMAP doesn't have yet? FS Crypt, FS Verity, I think compression tends to be handled by individual file systems. I think the other thing that's probably worth mentioning here is that at least at the moment, a lot of the value add for folios is on the read path because of the read pages being able to create large folios. And if a file system is doing something special on the right path, in terms of how it handles reflinks or delayed allocation that don't necessarily fit yet into how IOMAP does things. There is an alternative to trying to get it into IOMAP first is you could just simply do the read path and keep the right path in the file system specific buffer head approach, even if what that means is on the right path we have to break up the folio. At least on the read path, we'd be able to get the benefits of folio. Yep, absolutely. Everything Ted said that, I agree with that. Yeah, but and to elaborate on that, obviously one of the things that does need to happen is that IOMAP needs to grow support for the things that it doesn't currently have. And that could come from any of the file systems which happen to implement that feature and it doesn't. So if ButterFS wants to do the... So I'm working... I suppose you can hear me. So I'm working on converting ButterFS or at least making ButterFS use IOMAP and some of the problems which I faced of course was the way ButterFS does its rights in the sense the way it is written to disk. So there were hooks which were added, at least it's in the code, in my temporary code right now, which does submit IO primarily for the BIOS. So it basically pulls in the BIOS from the IOMAP and does the rights accordingly. We are doing something similar for direct rights already and we'll have something similar for Buffered Deeds and Buffered Rights as well, which would basically do all the compression or see some checks and all those stuff internally. So yeah, wait for the code to come in. That's fantastic. Thank you. I really appreciate that you're doing that work. That's marvelous. The more of us who are doing that, the better. Good job. Is this one working? There we go. So at least for ButterFS, we have this kind of like really annoying thing where we have to order the page lock before our internal file system locks because of page reclaim.  And I know it's not super easy, right? Because you have to lock the page to know that it's on a mapping, so then call into the file system to whatever. So I know it's not, hey, yeah, can we just not have it locked? But having a way to do this, so maybe we can order our file system locks above the page lock, especially because our range locking is kind of problematic. It makes it annoying because we had to do allocations to do the range locking. Are your file system locks sleeping locks? So yeah. Are those sleeping locks? Your file system locks you from right here? Yeah, they're sleeping locks. This was totally not on my radar. Because I don't use ButterFS myself, so I wasn't aware that this was a specific problem you guys had. So yeah, let's talk about that afterwards and I'll put that into my pot and do some things I think about. Yeah, perfect, thanks. So Joseph, actually, are you talking about the extant locks? Yeah, yeah, yeah. So technically if you do the extant locks and IO map begin or in case for write back during the map blocks, if you have to submit IO hook, you can do it when the end IO is called. Right, so more what I'm concerned about is release page and invalidate page where you call in with the page locked and then we have to lock the range to make sure there's no IO outstanding? Yeah, so if you have something like release pages and all you can always use. So I tracked down release pages and invalidate pages and it was primarily for truncate operations and I've put it around that but if there is anything else I would probably I should know about. Yeah, well I think the MM will call us like for direct reclaim, right? They'll let people want to chime in here. For like direct reclaim, they'll call and say like, hey, chuck this page right now and then we have to tell it, yeah, we can or no we can't and we have to take the lock for that and that's outside of the truncate path. This is like, this is one of my kind of pet peeve. Not pet peeve, it's not anybody's fault, right? It's just the way it's designed is that, you know, MM wants to do something and they have to tell the file system to do it and we don't have a real great way to handle that and like you have to understand the intricacies of how the system fits together. I've found this particular problematic is I'm training new people to work on ButterFast. They're like, why does it work like this? Well, sit down, do you have an hour? Explain it, it's like a huge gotcha and I would love to make that interface especially a lot more simple. Yeah, I don't think these problems are specific to ButterFast. I think, you know, extended four and extended three had a lot of problems with ordered IO versus using pagecast versus using buffer heads and a lot of that work was fixing this locking cycle so it's all of us in different ways. I mean, you could always take the same approach that XFST did and delete your right page operation. Yeah, that's becoming increasingly attractive. Yeah.  Hey, I'm not supposed to be starting till 9 30 so we've still got seven minutes of bonus time. Perfect. So, like the way page reclaim happens is really kind of problematic especially for like low pressure systems. We see this all the time with like XFS, you start to go do like XFS has the shrinking thing and that's where they start writing pages, right? So you do like a low level, you have some memory pressure and then it just like stalls the entire system because it decides it's gonna write out some pages because we don't have a great interface to say like, hey, file system, maybe write some stuff back, other than balanced dirty pages, right? There's not a really great interface for page reclaim, like just hey, give me what you can right now and also hey, write back so you can reclaim because it's all kind of based around this idea of like the MM tells us we want this page specifically right now and maybe we could rethink file systems. Yeah. I mean, honestly, this sort of part of the MM is something that I'm very much still learning because it wasn't important to me until just recently and then I started trying to convert it to use folios and it was kind of like, hang on a minute, why are we doing this? Like how much does even still make sense anymore? I mean, I think back when we had less capable file systems, sure, it was fine, right? Because we're in reclaim, everything is going to suck anyway and then I started talking with Dave Chinner about what XFS was doing and why XFS got rid of its right page operation and it's like, well, competent file systems don't do that anymore, competent file systems don't let themselves get into a situation where the MM is saying, I need this page written back right now. A competent file system will have all the spindles available to it running at maximum speed doing giant write backs of the stuff that the file system knows makes sense to write back and if a page happens to get to the end of the LRU and it's still dirty, the MM needs to move on and try and put that page back on the LRU somewhere and try and reclaim the next page off the LRU because there is nothing the file system can do because the spindles are already running at full speed creating new clean pages. Yeah, looking at it from the file system point of view it's like just not just one page because it's almost a range of pages. So whenever you write in butterfs you kind of write the entire extent. So if you need an information saying that, okay, this page needs to be written it should be probably a range of pages rather than just one single page. Well, so from the VM's point of view it doesn't know that. All it's got is it's got an LRU and it's pulled one page, it's pulled the last page off the list and it said, oh, this one's still dirty.  And I think it just needs to stop doing that. The problem is that we still have less competent file systems in the tree, right? But I suspect that for a competent file system and the three file systems who've been speaking or competent ones just delete your right page operation. See what happens, right? I mean, if it blows up I think that was also very important information. But yeah, delete your right page operation and see what happens. Yeah, I removed it from AFS. Yeah. And it still seems to work. So it's not, that hasn't merged upstream yet but I've taken it out of my own tree it still seems to work fine. 9p is a bit harder because it only has a right page operation some of them do. So those need converting to right pages first. But with the network file systems I'm gonna try and get rid of all of that from the file system anyway. I'm gonna talk about that later. That sounds fantastic Dave. Good job. It seems to me that there's multiple problems that sometimes MM is trying to solve when we talk about right page, right? There is the global memory pressure problem, right? Where I just need free memory tell me where I can get it and I'm not particularly picky. There is the C group memory pressure where we're trying to release relieve memory pressure on a particular container, right? And then we've got the compaction problem where we're trying to actually free a specific page because we're trying to reassemble a two gig huge page, right? And maybe we need to think about different mechanisms for those different scenarios as opposed to assuming that like one solution is gonna fix them all. And I suspect if we actually tried to, you know explore all of those we're gonna rattle so maybe now is not the time to do that but I just wanna point out that removing right page might solve the global dirty memory problem but there are other reasons why I suspect MM might want to say I'd like you to clean that page. But you could call right pages with arranging that page. But the difference between right pages and right pages that right page they've been has already locked page. And that's been proving a problem for me to try and get around you. So I'd love with is how you just get rid of it. I mean, one of the things a lot of the more advanced file systems do is they will actually, I think we were taking right page and just implementing it in terms of right pages and right pages would be free to write more pages than what are actually requested by the MM, which sort of addresses that problem.  Yeah, because. So, yeah. It was one of the scenarios I've seen is I need to write the page before the one that's locked by the VM. And that has all sorts of nasty problems of another bit of the VM is saying oh, can you write that page? And I've got a deadlock situation that I can't easily get around but just get rid of right page works for that. I do think Ted highlighted a lot of the right ideas in terms of like peeling out exactly why the memory management subsystem wants a particular page written because the huge page case and the container case, those are gonna be a lot harder to solve where the container one I would hope the containers are shuffling memory around and all the same optimizations we do globally tend to work as long as your containers are fairly large. But the huge page case will be different. So we should probably break it out. Yeah, yeah, I think that's good. Yeah, I did want to touch on the fragmentation compaction kind of angle to all this which is that if we are using larger pages then there's actually going to be a lot less of the problems that we currently have because it's much easier to find 60 pages and 16 contiguous order five pages than it is to find, yeah, 16 contiguous order five pages than it is to find 512 contiguous order zero pages. So some things are gonna get a lot easier with this. I've seen some people being sending me some interesting benchmarks that they've been doing and clearly they're not particularly representative workloads but I do see reductions like by a factor of 1,000 in number of pages on the LRU list which is just insane. So yeah, I mean it's great to see but it's like that's at least twice as good as I thought the maximum was going to get. How on earth did that happen?  That's been known to happen. So I really know about some of the problems that we are going to see. One is that we now only track dirtiness on a folio basis. We don't track it on an individual page. So if you have a workload that reads in 128 kilobytes, we're going to create an order five page and then we write to one byte in it. That's going to mark that entire 128 kilobytes as dirty. And so that means we're going to see an increase in write bandwidth but on the other hand, particularly for a copy on write file system that will reduce the fragmentation because all of a sudden you're writing out 128 kilobyte blob and updating the points to that rather than writing out a four kilobyte blob. I don't think it's going to be a serious concern. I haven't seen any workloads that significantly suffer as a result but Chris. I know Jens has put a lot of time into making it possible to do much smaller granularity of writes through IOU ring, specifically to resolve the memory bus utilization concerns of even writing 4K or 8K or 16K. Yeah, that's mostly been on the read side and Keith actually posted Patrick for this very recently. So I'll pass it to Keith. Delegation, isn't it grand? Yeah, I did post the patches but I never saw them hit the list so I have a configuration problem. So nobody saw them unless you were CC'd directly. Yeah, so on the read side it's a bit protocol specific if you can do subsector reads. So I'm focusing of course on NVME and that's going to, it's using the bit buckets in order to do partial sector reads or straddling two sectors. So this is going in the other direction where folios are being bigger, this is going smaller, so I'm not sure if this is a good spot to talk about this, but yeah. I think we want the big pages and the little IOs. Well, do we?  So, you've got less than opportunities to create a checkerboard pattern in your file system layout. I know it's certainly not a definitely a bad thing. I don't disagree with you, I just know we have workloads that are massively memory bus constrained. And so writing 128K when we need something very small will be significant. Do we have any stats Chris on? I wonder even for 4K pages, right? How much do we dirty for the 4K we're writing out? I could easily see even medium-sized pages, right? You're going to be writing a substantial amount of data over the bus, they don't really need to. So in ButterFS, I would have been taking Matthew's position of, just write it who cares. So I don't know, it's going to be very workload specific I think. I guess the big question is if you do a kernel compile. Because I know someone who cares about that a lot. On my laptop, the kernel time goes down by like six seconds for a kernel build, but the overall isn't particularly effective. No, but it's probably a trade-off, right? So you're saving some CPU, but you're using a lot more bus bandwidth. And as Chris said, for some applications, they're bound by that currently, right? So if you add 25% extra bus bandwidth, you're going to be running 25% slower. I don't think I am, because think about what a kernel compile does. It does a lot of reads. It always reads the entire file, because you've got to read the entire header file. And then it does writes, but writes don't create large folios, because it's always writing to a new file. And it will read back what it already wrote, but that's probably still in cache, and then it's creating a VM Linux at the end of it. I don't know, it all sounds to me very much like it's, it shouldn't really be. But for a kernel compile, most of the files are being created, written, front to back, and closed, so it really doesn't make any difference in that situation. Yeah. In any case, I think it'd be nice to have some statistics or metric right for this, so we know. Because for some people, it will definitely make a big difference. Yeah, if we're overriding. And maybe this is somewhere, another place that IOMAP needs to be enhanced. Maybe IOMAP needs to be keeping track on a sub page, a sub folio level of exactly which blocks are dirty. Isn't it doing it already? Because I saw it writing partial bios of, or at least offsets and lengths. Yeah, okay. So IOMAP does have already an optimization, which is that if you are doing a right, which is aligned to, and a multiple of the block size into a page which is not up to date, then it will not read the parts of the page which are not being written to. It won't do any reads. It will just say, okay, we've allocated a page, it's not up to date, but these parts of the page are dirty. And so then if that page is synced, it will do a partial page right. So that's what you've probably seen. I don't know that it's a particularly common thing for users to actually do, but it's a particularly common thing for benchmarks to do. So I think that's why the optimization's there. But I mean, it's software, we can change it, right? If it makes a lot of sense to actually track the dirtyness on a per block basis, even if the page is up to date, then let's do that. We should just do that. There's probably some code to be written around if the file is M-mapped and we take a page fault. If somebody does a store, then we need to make a decision about whether we're going to make all the PTEs that cover that writable and dirty the entire thing or whether we're going to just flip that one PTE to be writable and make that one page dirty. And that's kind of its own set of interesting trade-offs because some CPUs, actually, no, AMD have published this. It's in the AMD public documentation. It's something like 16K or 32K. If it's aligned and the PTEs are all compatible and it includes the writable bit and it will use a single large TLB entry instead of using a 4K TLB entry. I don't know how much that optimization is really worth. It's not something Linux has actually supported today, and I was talking to them about this because this is something that the folio is now enables. Page is actually just being naturally, coincidentally in order, which actually happens more often than you might think, but folios make it much more likely and it certainly makes it easier to detect that we're in a situation where that could be of use. On the other hand, perhaps if somebody's doing an M-mapped store, we would like to only keep the dirtiness to that one page. That sounds like something that we would need to benchmark across a wide variety of workloads and a wide variety of CPUs to figure out which optimization is worth more. But now it's a discussion we can have. We're in a situation where we can choose which of those optimizations we want, which is fantastic. I think that that's a good idea, by the way, this is getting some metrics on it, so you have wildly different file systems, some with long latencies, some with short latencies, right? So if you're going over a network or if you have a long latency file system, you want larger IOs in parallel, right? Because the round trip cost is too expensive. So how do you measure that? Well, file systems have their own stats, NFS, SMB, all this, right? But looking at how many IOs in parallel on their average size is objective and starting with the boring workloads, you know, your kernel compile is a good boring workload, copying a file is a good boring workload. But, you know, stepping back a lot, how would we tweak bullios to kind of try different strategies? I don't know, well, not that easy. There's ways we could, you know, have two different patches that we could apply or a PROC setting to experiment a little bit because I don't think we're gonna get it right for a while.  We have to figure out what's the best way to do this. And I guess the last question I would have on this is some of this is confusing because we haven't all looked at the MM code like is, are there some sample change sets, some sample patches that are examples of the boring, easy stuff that we as file system maintainers can do? Sort of like, you know, the cleanup when people went to x-array. Give me an example, and then it'll be like, oh, I can do that. Because I think that some of these are just cookie cutter repetitive kinds of changes, and if we could just give some examples, that would be fantastic help. Yeah, so to that last point, see the patches that I've been posting for the last week or two. What I've been doing for file systems is I've been converting all of the address space operations. There are two left that I need to do, which is my great page and right page. But other than that, all the address space operations now take a folio as their first, instead of a struct page. And for most file systems, what I've done is as the very first line is struct page star page equals address of folio arrow page, right? And anywhere that you see address of folio arrow page, that is a bad code smell, right? That indicates somewhere that needs to get cleaned up. And it's not that the code is bad, it's just nobody's got around to cleaning this up yet. But to be absolutely clear, my intention is that every file system will be converted to using folios. It doesn't necessarily have to support large folios. It may not make sense for some file systems to support large folios, but they should all be using the folio interfaces. And the reason for that is that I am looking to get rid that first chunk of the union of struct page. So the LRU, the mapping, the index, the private, that is all scheduled to go away from struct page. And this kind of gets into something that I had very long discussions with Kent and Hannes about. You know, what is the future of struct page? Because I know the falsely some people aren't going to care about all this, but you're sitting here, so you're gonna hear about it. From a memory management point of view, there's a whole bunch of stuff that we want to put into struct page. But keeping the 64 bytes is incredibly important for performance right now. When it starts to exceed a cache line, I guess expensive, really expensive. So what we would like to do eventually is shrink struct page. Kent says we can get down to two words, I say we can get down to one word. You know, the details aren't important, but if we can shrink struct page to just be a pointer to the struct folio or a pointer to a bunch of other things which are currently all, you know, these various different unions, really they're their own types and they should be treated as their own types. And the reason they're not is, of course, because it's easier just to put a, you know, dump another thing onto the top of this than it is to refactor the entire world. Here I am refactoring the entire world. So yeah, the idea is that, this is kind of what you need to understand. This is the high level overview of struct page, right? So there's a per purpose union, well two per purpose unions. There's a ref count, there's the flags and there's some other gunk. And I think we can get rid of basically all of it and just have per four kilobytes we have a struct page which is just a pointer to the real data structure. And then when you go and allocate an order three page instead of having eight times 64 bytes, you have eight times eight bytes, right? And everything, you know, things become less special, right? And actually you end up using a lot less memory. And that was Johannes's big point and I hadn't really been thinking this in this direction at all because I didn't think it was relevant, but he convinced me, no, this is really important. But there are essentially giant pallets of money being set alight in parking lots every month because people have to buy extra RAM in order to provision various services. And if we can get back the 1.6% of memory that MemMap occupies, the entire world will be a better place. Or at least our employees will make more money, which, you know, well, perhaps it's the same thing. They'll be able to afford to send us more conferences. Yes, that's how it benefits us. One thing I'd like to get rid of is the right beginner right end properly without that. Yeah, right beginner right end. Okay, so those are two address-based operations for the very management people. I think the file system people all know about right beginner, right end. My impression was that right beginner, right end were designed for EXT3's model and then everyone else kind of squeezed themselves into EXT3's model. Perhaps it's time to overhaul how we do right beginner, right end. Yeah, if you're using our map, it doesn't use right beginner, right end. It's basically a different function called all together, map, blocks, and yeah. Yeah, yeah, I own map, doesn't use right beginner, right end. And neither does NetFS. Well, when I finish writing it, the NetFS won't use them either. So, all the network file systems that use NetFS they won't be using those anymore. So clearly now we just need all the block files that's supposed to be right beginner, right end and then we can delete them and we can shrink out the address-based operations. So, right beginner, right end are very much the old, pass a bunch of callbacks back and forth level. And this is actually my big complaint with IOMAP is that it's a much cleaner version of that old model of we're still passing callbacks back and forth. And I'd like to nudge people to think more about how do we pass data structures back and forth. My big thing with the bio iterator rework and bio-ovi-iter get pages is now called is that we can now just from say the top of the DIO path start by allocating a bio, pinning user pages directly to that and then pass that down instead of calling back and forth through indirect clunking calls which we want to get away from anyways because of specter and up and down. Yeah, I'm also not a fan of exactly how IOMAP does it but at least IOMAP is only doing it to itself and it's not infected the entire VFS. So yeah, I think there are opportunities for improvement. And actually, when I get round to converting that path to doing folios properly rather than just coping with folios, I think you'll like where I'm going with it but I'm not quite ready to show the code. It's, I've written this and abandoned it three times already, so the next time it will work, I'm sure.  Like I just, I want to focus on BlutterFS and I really, really don't want to have to wander out of it and understand how anything else works. And so like, I know we like to get in these kind of like shed, you know, like shedding conversations or whatever but like take it from the guy who's got to do a lot of this work. I really don't care guys, just pick a thing and do it and I'll tell me how to do it and I'll do it. Like, I really don't care.  But like in the end, I don't care enough to argue with anybody and I don't care enough to like want to argue for the interface. You tell me the interface that you want me to use and I'm just gonna make it work. Like that's all that's gonna happen. So I think that like these kind of conversations need to happen with people that like actually care about that stuff. Like I know Derek should be here. You know, like I think that it's a valuable to have those kind of conversations but I just want to make it clear from the file system at least my file system perspective. God, I don't care. Like I just want it to work, man. Do you tell me what to do?  I didn't have to write it so it's fine with me. You know, I love file systems. I've written three. Fortunately, none of them have escaped into the wild. I don't have to support any of them. But everyone should write a file system or multiple file systems. It's the most fun you can have in programming which is why I want to make file systems easier to write and everything I do to the touches the VFS is in terms of how can we make file systems easier to write? Like how can we shrink the interface so that file system authors don't need to learn about all of this complicated stuff? And you know, I hope I'm succeeding with folios. I really do. I hope I'm giving you an interface where it's like, okay, unless you're talking about the page fault path, there should be nothing in the file system that cares about pages.  I would like you to fill it with the current data or I would like you to, it's dirty. I would like you to get that to disk, please. Like I'm really trying to make it as easy as possible for file system authors because I think file systems are awesome. Yeah, I can't agree enough with that. What you just said, that was it. Absolutely, as file system guys, our life is miserable anyway with thousands of different weird problems that have nothing to do with memory management. So like from my perspective, I would just say I would love an AC, I'll give you an async write interface and a synchronous write if you prefer, you can have both. And I'll tell you my preferred IO sizes, view a clue as, we have to be able to throttle, right? So file system has to know when it needs to throttle back on reads and writes, read ahead, right behind that kind of thing. So some measure of we can have more IO, we can have less IO, we need to throttle, we don't need to throttle. Beyond that, I don't care. This is all memory management. So I just, while you were talking, I was grepping my great page, trying to remind myself what my great page did. Maybe you guys should care a little bit more though, because a lot of, we're in a state where a lot of this, a lot of these core kernel interfaces have kind of like rotted and not changed much over the past 10 years and become really painful for everyone to work on. And they haven't had any clear owner until like Matthew came along and started redoing a lot of this stuff. And maybe if we talked a little bit more about this stuff, like what our pain points are, what, and took our experiences to figure out, okay, what is the clear model for it? What do we want? Then maybe we could share a little bit more code and have like a little bit less painful. Well, I'll toss out my example. I don't know if it's still, I don't know if IO map does page at a time internally for copying the pages out of the user's page into the kernel. Like it does, yeah. It does still. So, ButterFS not using right begin, right end.  They're giving us a bunch of pages.  And the number of bugs I made in that code is was unbelievable, right? It was exceptionally hard to get those specifics right. And so if we're talking about making interfaces that work well with folios, like that's one thing that you can do to make it much, much better is make some framework for safely, you know, copy from user. I stole that. Yeah. It's so bad. It took me so many tries. Yeah. And thank you because having the ButterFS idea to work off of that made my life so much easier. My Buffered Write Path looks basically like yours. And maybe we should collaborate and promote some of this stuff so that other people are following down the old path and can benefit from our experiences. Yeah, well, I would love to just pile it into IOMAP. I don't want to be special. I just want not a page at a time. Yeah, and I think like, you know, to your point, Willie, like this is a really good point is there's a lot of this stuff that just isn't owned. Like I think it's really great that we have like Derek is like IOMAP maintainer, right? Like we have to have people that care about this stuff because I am constantly at the edge of burnout because of the massive amount of things that I got to keep track of. I'm like adding more and more and more and more and more things that I got to keep track of is not a recipe for success.  Because there's an owner. And like, you know, we can argue and we can complain and we can, you know, bike shed and stuff. But like at the end of the day, it's important to have somebody that actually like cares about this code, cares about these interfaces to make sure that they are well maintained. They're keeping up and keeping track. And that is hard work. Like it's hard work and it's oftentimes thankless work. So I mean, thank you, Matthew, because it's not being missed, right?  So we're thankful it's you and not us. But this goes like to Kent's point goes for everything. IOMAP is great. Derek's in charge of that. You, and this kind of goes for all of these like things that we just sit around and kind of do ourselves. We really need to like kind of put an effort into the community as far as like, okay, not only do we need somebody in charge of this, but we need to make sure that like they don't hate their lives trying to make this stuff work. Thank you, Joseph. I really appreciate that because one of the things I'm conscious of with Folios is that I am imposing a cost on all of you. I'm asking you all to learn to retrain your fingers to no longer type page dirty, but a folio test dirty, right? Like that's a cost and I'm imposing that on everybody. And I feel the weight of that and some people have made that point to me, some in more polite ways than others. And I, so it's really important for me to hear you feel the cost, but you also see the benefits that you're willing to pay that cost. So thank you, Joseph. Okay, that's my time. Thank you all so much. As you know, I'll be around for the rest of the conference and I'm sure some of you are going to grab me in the breaks. Thank you.


Now check this out today We're gonna do choreography video 17 Dream now heads up I'm gonna have to change the format a little bit how reviewing reacting YouTube is attacking my page a lot of videos I did for y'all They're being blocked like all territories around the world So I don't know what that's all about, but if you see the way I'm doing the video is a little bit different I apologize.  So it's all good y'all But just continue to please hit that like button share and seriously ring that bell and share it to your family friends Because I truly appreciate y'all, but without further ado, let's get to it 17 dream choreography video. Let's get it So the music won't be too loud, but I am gonna react. I promise All right, let's see what we got It's been a minute since I did a 17 to This they set up. Let's go Really simple Okay, real quick question for y'all. Do you think this was for a music video or Concert, I mean, yes, it could be both, but you know how to get down on the concept of concerts Choreography kind of change make it bigger make them more explosive. So let me know your thoughts It's very clean and simple right now. Nothing really too crazy. Just stand in space Just letting it build up Hold on with simplicity though, there's little things that people can appreciate Let's go back just a little bit Two three four five six seven eight boom Go right into that and slow turn. Okay. Okay Yeah, a lot of the moves right now. I'm just really clean real simple. Nothing major. Nothing. Oh, and I What you can appreciate though is how clean they're very really are you can definitely appreciate that right now And when you're doing movement like this, you know, yes, it's not a ooh, I know it's not But you can appreciate how clean it is because even though you got a simple move You can still look raggedy like for real for real People will be doing choreography and they be trying to do it like a simple move and it just be like Just be moving. That's like no clean boom. Boom. Take your time No need to rush Like you can be clean like that Let's go. Okay Of course, they gonna take it up a little bit more not surprised. Ah Nice transition. We have to go back. I want to see that transition. I'll just learn something Three four five and six seven eight Ta-ta-ta-ta-ta-ta-ta-ta-ta boom boom boom boom boom boom. Oh, so he went into that nice Great, that was great. Okay One and two and three and four boom up dot dot dot. Okay, so as they're coming And I'm saying right up stage down stage when it was coming up stage cuz they're coming towards the camera Okay, did you notice how? How flowing was how they was coming up stage look like they were just flowing to you this time Watch the feet watch the feet Check the feet out. I think let's let's start right here. Okay, check this out Got this part here cool cool. That's cool little slides. You know I'm saying can't go wrong with that But watch the back Beep beep beep beep beep That that that that boom Ta ta ta so it was like these little creeps as they was coming up with that and still looking like they was coming here That was cool See what I mean, even though it's simplicity of the movement It still has an effect of still being just clean and not sloppy because you can try to be clean And you actually still sloppy because your lines is not matching your arms is not matching with everybody Let's see and you can tell they went through this choreography fast Even though I mean, I don't I don't see this being a choreography.  This is something that they could walk through. I Like this though. I was all watching them make that transition in the back. Let's go back. Let's go back Let's go back. I was all watching them in the back setting up Have a distraction here boom when they went right into it Yeah, I like that Yes, hey, I know that wasn't like a spectacular ooo and I But seriously though just the same way when you watch choreography from Blackpink It's death this type of feeling and texture is Basically just real nice and clean Have a little moments of little level changes level changes dealing with the body. Yes Slides. Yes. Can we agree to that? That's what I'm seeing as a dancer and that's somebody that just watching also as a spectator It's still clean But if I was if I was thinking from a perspective of being on tour. Oh, that was funny. I Know he was gonna do right there. I was watching him the whole time be right there The that's like that's goofy. I like that though. I Lost my thought process. I'll tell y'all later One and two and three and four boom Can we go back so let's talk about this But you see how clean That is when you have a group 17 we have a group of 17 you literally can really make illusions And and make people go. Oh It just depends on what they're doing. So when they did this right here It's a smart idea Like the transition I like that but I really like what they did with the hands Yeah, I like that Cuz it's just feel like they're making these Slides. Yeah. Yeah. Yeah. Okay. I'm not tripping. I'm not tripping. I know a little bit y'all. I know a little bit Mm-hmm. I like them pansy. I don't so don't joggers. He was those this that green green joggers Let's go Yeah, they did this on tour this would be kind of be one those songs in between where they get some rest Get that little singing on, you know, I'm saying get a little grueled people vibe out But I can see that I can see a lot of the fans doing this choreography for real I Could see y'all doing this like the fans of this I could see y'all doing this choreography And it's not because it's just like oh my god. It's good. It's so simple, but it's also for the fact that it's actually fun It's actually fun you gotta admit some choreography by the way can be very difficult some choreography You can be absolutely a headache. It looks great, but imagine the headache to do it and execute it With this I can see y'all doing this like I I expect to see on Instagram tick tock Y'all doing this choreography. I can see that and I can also be wrong So but listen, I I rock with 17 17 is also one of the one of the first videos My youtube channel, so it's like I got nothing but love for 17 But I've been watching their work straight kids 17 to BTS with like the main three and then it was someone so on But yeah, I appreciate this for me. I think this is a in my opinion I will see this choreography being something far as In a in a moment up after the explosive choreography, you do this on a calm your body down Transitions on offstage to get ready for another big moment And then I can see this also being a dope ass music video get the right outfit get the right color gray Like I'm just assuming so I'm just guessing everything And then I put this on YouTube look real good when I do it get a billion views on it And then y'all do it as a challenge That that would be me That's how I would think about putting that all together, but that's just my thing like So but other than that y'all listen I got more videos and I hope that this video doesn't get blocked I'm gonna have to figure out a way to do with these videos being blocked from all territories But if you're watching this video We made it on YouTube without being blocked and on copyright claims But so please hit the like button share ring that bell and I will see you on the next video peace


The original Brothers Grim crew came out at a time when there wasn't very many non-Dutch readers doing things publicly. So a lot of their work got heavily spread amongst the community, especially the early forum community. Just like DJ Short, I just said, became famous. Brothers Grim became pretty famous.  And the Apollo 11, the Apollo 13, the genius, there was a whole bunch of stuff. So again, when I was going to those parties of Ron's, a lot of the things that were, it was the stuff that was the most common to be crossed with was the Blue family, the White family.


Now, one single so-called cage has been constructed by the Trump administration. Not one. During the presidency of Barack Obama, we didn't see outrage from the Democrats then. We didn't see prominent Democrat members of Congress condemning the, quote, concentration camps and, quote, torture. Then, again, President Trump has not built a single cage, the cages you see in the news and on Twitter were constructed by President Obama's administration. Do you ever get the feeling that no matter how often or how effectively we call out the DNC's deceptions, the media will always be there to run cover for them. This is one of those instances where I feel almost helpless to combat the misinformation. As anybody who watches this channel knows, the claims of concentration camps and kids and cages is pure propaganda. Before we get to that, I want to take a quick moment and give a shout out to Bore Creek Ranch. This is a family owned and operated ranch that provides Russian wild boar hunts. If you're interested in a thrilling yet affordable adventure, check this place out. Visit their site or contact them at<PHONE_NUMBER>. If you want me to give a shout out to your website or social media channel, simply make a purchase at ribt.com-4-slash-drone-tech and use the promo code DRONE-TECH. Email me proof of purchase and I'll give you a shout out. Thank you. Back to the DNC media propaganda. We know that this is propaganda because during the eight years of the Obama administration, all of these conditions existed and they were arguably worse because more people were coming across the border between 2014 and 2016. I've pointed it out before, but if you go into a search and you refine your parameters to between 2013 and 2015, what you're going to find are a bunch of articles about overcrowding at the borders but without any of the hysteria that we're seeing now. In many cases, the articles talking about the problem don't even mention Barack Obama. The media clearly planned to disconnect Barack Obama from any negative news happening in his administration so that later they could claim it was squeaky clean and scandal-free. You didn't see prominent Democrat members of Congress condemning the quote concentration camps and quote torture. Then again, President Trump has not built a single cage. The cages you see in the news and on Twitter were constructed by President Obama's administration. Let's look at some articles between 2013 and 2015 and see if Representative Jim Jordan is correct. The headline of the first article we have here is from NPR and it says, surveillance stills from border patrol facilities show crowded, trash-filled cells. As part of a lawsuit against U.S. Customs and Border Protection, new images from surveillance video have been released to the public that show detained immigrants crowded into cramped concrete holding cells in Arizona. So there are a few things you might notice in this article right off the bat. No hyperbolic claims of concentration camps or brown shirt guards. You might have also noticed there's no mention of Barack Obama. This is odd considering he was the president and this is the result of his immigration policy. The article links to the author's Twitter, so I decided to reach out and find out why she omitted Obama's name from this article. I asked kind of strange that you write an entire story about these kids, but don't mention Obama a single time. Why is that? Surprisingly, she responded with this completely ridiculous answer, saying, quote, the lawsuit I was reporting on at the time didn't name Obama and to my knowledge, he didn't comment on it. Oh, so all Trump has to do to avoid being tied to his own immigration policy is just not to comment on it. This is the type of tactic that corrupt fake journalists use to protect Obama and Democrats from negative press. How about this article from The Washington Post? Central American migrants overwhelm border patrol station in Texas. These are examples of the detention conditions captured on a surreptitious video obtained by The Washington Post that prompted President Obama to declare a, quote, humanitarian crisis this week. As illegal immigrants, including thousands of women and children, stream into South Texas. Every day, hundreds of Central American migrants and groups as large as 250 people are waiting across the muddy Rio Grande and turning themselves into the border patrol as helicopters and speedboats with mountain machine guns patrol the river. Speedboats with mountain machine guns? Surely the Democrats in their media were disgusted by this fascist show of force to these helpless immigrants. Right? Wrong. It continues, Obama has pledged $2 billion to construct temporary housing and has ordered the Federal Emergency Management Agency to take charge. All right, would you look at that? Would you look at that? That appears to be at least part of the cages that were built by Obama, which Trump then inherited. And now the media claims are Trump's concentration camps with kids and cages. The article continues and portrays Obama as just some guy trying to deal with this overwhelming situation. Not the cause of it. Also notice that when Obama calls it a humanitarian crisis, the media goes along with it. But when Trump calls it a crisis. Well, locals will tell him on the border, even conservatives, is that there isn't a national security crisis. The notion that we have a crisis there, security crisis, is absolute nonsense. This is a manufactured crisis and a crisis that manufactured by the Trump administration. This artificial crisis of the president isn't going to justify his appropriating money for a wall that Congress is unwilling to give. Is there a crisis at the border? The president said there's a humanitarian crisis at the border. Is there? Absolutely not. More like the Democrats wanted to deny the crisis so that they could use the ensuing overcrowding and detain illegal immigrants as a weapon against Trump going into the 2020 election. The Democrats in their media aren't interested in fixing any of this. They love the division and they love having an issue that they can use against Trump heading up to the election. All we can do is continue to call them out on their double standards and hope that we convince enough people to just turn off their TVs and stop putting so much trust in these media organizations. That's all I got for you today. Please hit that like button and smash that bell notification like it's a fash. As you may know, my channel has been re-monetized, but it's all just a cruel joke because they still demonetize everything I upload. If you want to support this channel, please consider subscribing to me on Patreon or SubscribeStar. Or you can just send me a quick donation over on PayPal. Either way, I really appreciate it and I won't let you down. Thank you.


Isabella and today I'm here on site to go to talk about misophonia. Have you ever felt angry when eating near someone and I don't know the sound of this person eating just irritates you? Have you ever got angry with someone making noises? Well I get angry about it every day all the time because I have a condition called misophonia. If you don't know what misophonia is that's completely normal. I went to doctors and psychologists that didn't know how to explain what I felt. But thankfully I got to a psychologist that diagnosed me with misophonia and today I'm here to tell you what it is. Basically, misophonia is a condition that makes you feel triggered by specific sounds and feel very angry and irritated and sad and all negative thoughts and emotions and oh everything it's so horrible. I just lose control of my brain when I have a misophonia attack. It's basically a panic attack. For example, to me that the sound that triggers me the most is people sniffing. When I am in a room with people sniffing all the time like from five to five seconds I get so angry so sad I have so many negative feelings that all I want is to go out of there and when I can't go out of this place I just feel like crying and screaming and inside of me I am so angry and thinking about how I want that person to That's what you feel when you listen to the sounds that triggers you. So it's very complicated and hard for us the people who suffers with misophonia and the hardest part is that anyone understands us. My family for example in the first place they thought I was crazy or I was just being dramatic or picky and things like that. People with mental illness hear this all the time. This is the hardest part of having a mental illness especially a rare one but hey nothing is lost okay we have hope. I've been trying therapy for a long time now and we just found out me and my psychologist that probably my misophonia has something to do with my anxiety and obsessive compulsive disorder which makes a lot of sense. We don't have a proper research or cure yet but I think the more we talk about misophonia and rare mental illness as misophonia the more the chances that we will soon have proper research and specific treatment. That's why I am here today. I am here today to try to bring awareness to this mental illness that makes a lot of people around the world suffer a lot including myself. If you have misophonia, if you know someone who may have misophonia, a family member or a friend please tell us this story comment down below. One thing for you who have the misophonia try meditation try therapy seek for help don't face it alone by yourself suffering because we're all in this together and there is hope for you to have a better life quality talk to your family talk to your friends about it tell them how you feel and make them understand that it's not you just being dramatic over stuff and it's an actual thing it's an actually mental illness. Send this video to your friend send this video to your family member that I have something to say to them. Misophonia is real and it's serious and it makes us suffer don't think that we're making this for attention don't think that we're being over dramatic don't think that we're being picky because we don't have control of our brains when it comes to those triggers when it comes to those irritating sounds. I know it sounds crazy when I say to you that your breathing is bothering me but it really is it's not something personal it's just that I have a condition that I have no control of we need support we need awareness we need to be together to face our mental illness so let's share experiences and let's try to have positive thoughts and I don't know talk about it just because the world needs some positivity right now right that's what I had to say for this video I really hope you liked this video if you did please give it a thumbs up comment as I said comment your story with Misophonia comment I don't know if you don't have any story with Misophonia you can comment oh I like this video all this video is very helpful or I want to see a video about that if you want to see more videos with my face you can go to my personal channel and my personal blog the links will be in the description below thank you very much for watching subscribe to sight to go because they have a lot of cool videos about psychologists and it's an honor for me to be here today to talk about my Misophonia. Tell me what do you want to see for the next video I hope you have a great week and bye


Snow's melting It snowed yesterday. I went searching around looking for cardboard boxes today packing up the office and There was a dumpster right outside the office that I've never seen before and it was full of cardboard boxes. Hey Sometimes you save money. Sometimes you save time. Sometimes you don't All right, day is done Onward we go next event Oh, I better explain what's happening here. Basically The landlord the owner of the office that we were renting from Sold it and the new owner wants the office. So We're getting out It's unfortunate But in the modern world you can work anywhere. So we're definitely gonna get a new office soon Hopefully but in the interim it's gonna be a lot of travel to coffee shops travel to Storytelling Anyway, that's the situation. That's why I'm packing up. It's unfortunate. This just happened like so it was a month to month lease after a year and The year has come and gone So anyway, that's the situation. I'm gonna read you a text here that I just got that kind of connects to this and So, you know what I do for work you'll get this this is a text from my dad on on Tuesdays My dad grandpa watches the boys. He wrote Okay, Joseph is working on a make-believe tree for it. I asked him how many stories or levels the tree fort will have He said one billion stories Well said Mail time You go back. I don't know I want you to open it feel box 1779. Thank you. Thank you. I don't know it's from somebody in Denver What is this Enjoy these we were giving a bunch of them by a friend and would like to pass them on to you and your family But the boys will set a little we'll get a little deserved treat now. I think it's not a miss your family and your Free vanilla vanilla or chocolate cone, which is what we get. We just get it in a cup. My goodness Are you kidding me date night for kids Schmitz? This will be the date. I know we'll share with the kids made Seven eight nine ten eleven twelve fifteen fifteen sixteen seventeen eighteen nineteen Honey, well, it's almost one for every week. They were Denver one for every week of the way. We may never know Set come look somebody mailed 20 I probably miscounted Ice cream Joseph Joseph Joseph. Can you say thank you YouTube? We love you and you have no idea how much joy you have brought to this house today Just seeking beauty as we walk into the restaurant or I should say I walk into the restaurant drop to bridge it off because parking for sushi is a No, we come here are crazy all the time. This is amazing All right, have a good one. Thank you so much Oh, thank you to whoever sent us the coupons we love you. We don't know you while we love you


When the family gathered instead of talking we'd all go around the piano and we'd sing Mama She's a little tough one Whitney Because she knew what Whitney had She was daddy's little girl All the decisions were about the money London daddy turned around and won a sewer for a hundred million dollars That would break anybody's heart They showed up at events together play acting the perfect family You're my brother we took care Whitney, but both of them were doing drugs Whitney believed that if she got married she'd live happily ever after The things Chrissy had to endure no one would ever imagine Everything began to spiral out of control She was a little girl trying to find her way back home All that praise All that money But it still wasn't couldn't be enough They were always the last secrets you don't resolve things We either got it or you don't have it. She got it when you hear it. There's Whitney Houston


Russia recruits Crimean locals for its African operations. Moscow is actively recruiting so-called military instructors in occupied Ukrainian territories for subsequent deployment to Africa to expand its influence on the continent Ukraine's Defence Intelligence reported via Telegram. The Persistent Recruitment Campaign is ongoing in occupied territories of Ukraine, including Crimea. Military reservists, air defense specialists, sailors and others are offered lengthy, high-paying contracts. The opportunity to avoid participation in the war against Ukraine serves as another incentive to sign up. Ukraine's Defence Intelligence notes, Moscow views dispatching this force to Africa as a step towards expanding its influence there. The message said, Ukraine's National Resistance Centre reported in December 2023 that the Russian military was developing a programme to recruit fighters in Africa to participate in the war against Ukraine. In that time, on Telegram, the African Corps said it's prioritising the recruitment of Russians who previously fought in Ukraine as well as current and former Wagner mercenaries who make up around half of the corps personnel. The unit said it's looking for personnel who have various combat specialties including operating tanks, artillery pieces, drones, air defense systems and armoured fighting vehicles.


So a while ago, I was working on this boat and I had to make bearings for these propeller shafts to go through down here. I've got one for pedals and then another one back here that has a motor. Now for the bearings, I was deciding between having a rubber sleeve like they usually do or making plastic roller bearings. And I ended up going with the plastic roller bearings and I guess the point of this video is to give you an update on how they're doing. They're doing spectacularly. I've gone at least a couple hundred miles in this boat so far. Not super far, but you know, definitely a test. So these things have been running for hours at a time and no problems at all. And when I built them, I made them a little bit loose. This jiggles a little bit in there so that any sand bits that get in there can go through without getting crushed into the plastic. And I have a couple little holes up here that let water run through. Hey, let me just give you a quick drawing of what all is in there. Oh, I should mention that one of the reasons I thought I could get away with the roller bearings is because the boat is not always in the water. If it was always in the water, I'd probably go with the rubber sleeve. But usually it's out of the water so it's not going to get barnacles, you know, gumming up the works. Alright, I've got my propeller shaft and then back here there's the propeller.  And then here there's a PVC pipe that's covered in fiberglass that goes all the way up inside. And then on the inside of the PVC pipe is another ring of slightly smaller PVC that goes around and that's glued in really well. So the rollers are held in, they're held from going this way by this and they're held from going that way by this.  And there are a couple holes up here that let water get in and it runs through and out there. And yeah, I've had no problems with these at all, they work really, really well. I think I'm going to use these more often so anytime I have any spinning underwater stuff I'm totally doing these. But like I said before, I don't know if I would do them on something that would be permanently underwater. Because then it might get barnacles growing up in here and mess things up. And there is a video of me making those from scratch somewhere in some fairly recent boat making videos. Awesome. Someone reminded me to put the link in the description. I always forget to put links in the description.