So, our next talk will be delivered by Samuel here, but before we start, may I just ask the audience not to leave the room before the talk is over, because it disturbs the speaker and also the people who are watching it. It's not very considerate. I would also like to tell the same thing to the people who are about to come, but unfortunately they are not here. So, it's yours. Okay. So, good morning everybody. So, we talk about the herd in general and in particular this morning the PCI Arbiter, which is something which was developed really recently. So, I am Samuel Thibault, but this is Johan who did all the work. So, credit is for him. So, the herd, basically it's all about freedom zero of free software and the freedom to run the program for any purpose. And the thing is on Linux you don't have that. You cannot do things that only routes can do and things like this. So, for instance, why is fdisk, mkx2fs, et cetera, hidden in slash has been. I have to prepare a disk image or something. Why do you have to get the tools from has been. I should be able to tinker with image. I have a home directory where there is room and I can store things. I have access to the network. I would like to be able to do VPNs and plug the applications I want to the VPN and not the others and things like this. And it's also freedom to innovate. So, if you want to experiment with the file system, well you have to patch your kernel and maybe it will become less stable. If you're on the machine, you don't administrate, you will not be able to do that because the administrator doesn't trust you. So, that's really a problem. Maybe you want to tune your workflow because yes, you have things and the way you prefer and being just in your home directory is not the things you would like to have to combine processes the way you want, et cetera. And one of the things I'll talk about today is giving a PCI card and to process. So, you have, I don't know, music processing software and you want to give it the PCI card so it can really drive the thing as efficiently as possible to read time processing things like this and you want to give it a PCI card. It's also the freedom from software itself. Software, maybe you do not trust it because you haven't read the source code or you cannot read the source code or you know there are bugs and you want to isolate the program from others to avoid something crashing, getting everything with it and drivers of course. I mean, we know that all the bugs in the kernel are mostly in the drivers. So, this is how it looks like. So, it's really a micro kernel layering. So, you have a kernel which only manages tasks, memory and IPC and the rest is in New Zealand. So, we have a PROC server which knows about processes, their PID, UID, owners, things like this. PFI9 is the TCP IP stack. The X2FS manages the file system and OTH is something people don't usually know about. It's just knowing what process belongs to which UID. So, this OTH server is related with all the rest being that X2FS knows about UIDs for files but it's OTH which tells, okay, this shell is allowed to do this with the file system. So, it's a sort of rendezvous point for authorization things. And so, it's all flexible like this. We can do crazy stuff. I can refer you to previous videos of previous FOSDEM micro kernel room sessions just to give some examples. If a server crashes, that's not a problem. So, the computable, the farm error we see on her system, it's just an error. It's not something of the death that takes the whole system away. So, for instance, if the TCP IP stack crashes, okay, all the TCP sessions are lost. But everything else is fine. I can recover a system. I don't have network access to it. But if I have console access, then, okay, nothing is lost. It's easy to debug and tune. You can run GDB on the TCP IP stack on X2FS, things like this. And then you can do crazy things. So, for instance, the console, there is a mark console which is really low-featured. But there is the heart console. It has dynamic front support, text front support. That is, the PCI VGA card only allows for 500 glyphs showed on the screen. But then you can allocate dynamically which glyph you want to show. And then you can have Chinese, which has many more kanjis than this. But since they don't show up at the same time, then you can dynamically choose what shows up. So, Chinese kanjis, emojis, even we don't have to do anything to get emojis on the console, but just load a font which has the glyphs. And that's fine. And the kernel is quite small. It only handles the task memory and IPC. Everything else is on the user land. So, for instance, I have the same things I talked about. And then I have an FTPFS running as a user because it doesn't need any kind of special authorization. It just needs to access the network to connect to FTP. And then there's ISOFS and a shell CP. What is happening? It's actually basically you have mounted an ISOFS which is on an FTP server. And then you can access to the files within the ISO image which is on FTP. And the thing is we don't need to download the whole ISO to do that because ISO is indexed. And so FTPFS just serves the bits of the file that are needed for ISOFS to work and provide the file to CP which can get the file. So it's extremely efficient, actually. So some examples I have on my home FTP column which is multiplexer for FTPFS. And so I can just do, I don't know, VI.Chill slash FTP column and an FTP URL, same for HTTP. And I don't need to implement FTP in VI. It's just provided by the system. So I can mount on my directory the ISOFS for something which is on an FTP server. Then look at it. It just works. The signature file I can put something on it which says each time you open it you run Fortune. And so each time you actually read the dot signature you get a new Fortune. So it's cool stuff. And one thing I mentioned, getting your own environment, there's the map, the remap translator which says you get a new shell in which slash bin slash SH is actually appointed to home slash bin slash SH. And so from then on all the scripts I run, et cetera, do see that shell instead of that shell which might be convenient if you have, I don't know, scripts which want bash as a shell in slash bin slash SH but the system provides dash as a shell. Or you can get everything in a slash bin which is actually your bin in which you have put everything. So this is basically the kind of things that we have with toe, nicks, geeks, et cetera. Except that it's at the operating system level. So how does it work? It's quite simple actually. The idea is that it slipsy which implements this. So everything that happens in the system is interposable because everything is already an RPC. It's how it works from the start. And so you just expose what you want in the file system in slash something slash something and then the user can decide what to put here and there. The idea, if you think about, I don't know, fake root, CH root for instance, fake root is actually something that puts a library to redirect, open, close, et cetera so that instead of opening that thing it opens something else. It does work enough for the use it's used for but it's not perfect. And as soon as you have new system calls then it has to be taught about the new system calls to redirect them as well. Well here since it leapsy then anything that will be added will be interposable that way. So actually it's virtualization at a really fine grain interface. When you see containers, everything like this, it's all very coarse grain compared to this. And so the idea as a user you have your home directory, you have network access then you can do whatever you want with it. So crazy thing, you have open a VPN then your own TCP IP stack on top of it then FTPFS and to get a disk image which is partitioned so you get to one of the partition then you get inside the X2FS of the partition and there's an ISO image and then you open something inside it. And it is not sure to do this actually. Okay, so getting to what I'd like to show today. So quite recently what we did was to move originally we had the drivers, the network drivers inside the kernel and that was not a good thing. So we said okay let's move it to username so that it, eth0 actually leaves something somewhere on slash def slash eth0 so I can see it. It's not something you see in Linux for instance. But here we actually have slash def slash eth0. And what we did was just to take the Linux drivers and to put it in a process and then plug here with PFI net and get it to have access to the hardware to drive the PCI cards. So this is really nice because for instance I know that some of the real tech drivers get stuck from times to times and apparently it's really the driver which has a bug. And so when it's stuck, okay just kill the driver and it gets restarted and everything else continues to work. The PFI net stuck is fine. It just opens the new driver and all the TCP sessions are still there. Nothing is lost. So it's really cool. If you want to do a firewall then just put a process which filters the frames between the TCP IP stack and the actual device and then you have a firewall. If you want to be crazy you can put an open VPN on top of this and then a new TCP IP stack. The idea is that the system provided stack is somewhere here and then your own stack you can put it in your home directory and with the remap translator just tell applications. Instead the slash server socket 2 actually is redirected to somewhere and then it just works. You have virtualization made easy actually. So about PCI, the problem we have which is not too much a problem because we are lucky. The net DDE driver, so this is called net DDE it actually accesses PCI and the network PCI cards and for this it has to access the PCI config space when it starts. But then if you start Xorg, Xorg will need that as well and then if you start a ramp demon for getting sound then you need that as well. So the list can continue. We need something to make that safe because PCI config is not something which is threat safe, concurrent safe. So for now it's fine enough because GNUMA starts first then net DDE and then Xorg. So it never happens that they actually work together but quite soon we will have something like this happening so it's not a good idea. So the idea that was implemented by Joanne is to have a translator that provides the PCI config access and so you would have slash server slash PCI slash the path to the device so the PCI domain, PCI bus, device function etc. And then when you open the file here then you can use RPCs to read, write, configuration things and get the device regions to access the memory and the ROM to map it so that the drivers can work etc. And so basically that was enough to implement libpcexs and pciutils backends. So that way anything that uses libpci access for instance Xorg and things like this just transparently access the PCI arbiter and they can run concurrently. So that's good. So we have this. So we have the PCI arbiter which lives in New Zealand which provides access to so NetDD for the network and then Xorg which is started and then a Rump Demon for sound so PCM and for instance my Firefox opens a network and emits to Xorg and plays the sound at the same time and W3M just uses the network. Okay, good. But then we can go further. Accessing PCI cards as a user, while we are at it, we have files in stashservers.pci maybe I can switch mode a file and then provide access to a user to the device. So just change the permissions. You can say okay on servers PCI you add that is allowed to access to this PCI card. So you can do it on the fly by using fc-sops or you can use setruns to record that on the file system so it's always that way and then the user here can access to get read write config etc. So for now one thing which I mentioned so get dev regions, get dev ROM for now these only provide the address and then you have to open slash dev slash RAM to access the actual memory and you have to be root for this for now. One thing we would like to do is to add operations here so that the user will just mmap the device there to get the actual resources, the memory of the PCI card, things like this and some PCI cards are not only driven by memory but also IO ports, the old IO legacy IO ports. The funny thing is GNUMA does implement the notion of token which allows to access to a given set of IO ports. So the idea is that the PCI arbiter would create a token tell the kernel please make me a token that allows to access to these IO ports which are the ones that access the card and then I can give it to a program and then it can use it to access to the IO ports so that we can have this. That is we have the PCI arbiter which has to be root to access the actual hardware and then everything else can be run as nobody. Nobody on the herd is not a UID, is really nobody, it's processes which don't have any permission. So for instance the NetDD driver can start maybe as a user which is allowed to access network cards so it opens the network card with the PCI arbiter once it has done this, it has the permissions it can forget about its permission it tells the system remove any of my permissions and then it cannot do anything else than just driving the PCI card. So that's extremely safe. And same for Xorg for the Ramp driver etc. and then everything here we don't trust it that's not a problem, it cannot do much harm it cannot even open a file. So that's fine. Maybe I can even move my Ramp sound daemon to a user that is this is controlled by the administrator of the system that provides drivers for the hardware, ok? But maybe the user said I would like to drive the sound card myself because it has special features, experimental features etc. I would like to run this as a user. Ok, why not? But that's dangerous. Why? Because PCI cards can do DMAs anywhere in the physical memory. But you have IOMMU which allows to prevent this kind of thing. So you actually control, you say this card can only access to that part of the memory and then it becomes safe. You just allow the user to access the memory it owns and that's all. So if you know about PCI path passed through with hypervisors that's the same feature and it's just at the shell level instead of hypervisor you have to configure something etc. Here you just configure it in the shell and you have access to the PCI card. And maybe you don't want to give the whole PCI card to the user because others would like to use it. There are quite a few high-end cards like Cisco cards or things like this which actually provides various functions. You have just one Ethernet card but when you do LSPCI you see a lot of functions. It's just virtual cards that you can assign to different domains on a hypervisor system but on the HUD it would be on different users. So each user has access to the same card and they are just isolated one from the other. And you could even go further. The thing is you're a user in that situation if you don't trust this code it's a problem because it can open files maybe I don't know the passwords you have stored in Firefox and things like this. So you don't trust that code. Just start a sub-herd. A sub-herd is something that you can start as a normal user which gets completely separated. It has its own notion of users and then it cannot access the files you can access. So I have W3M which I trust. Okay, I like it and I know it's small. Okay, fine, I trust it. But Firefox, it has Flash, all these things. I run it as a separate user and the driver as well. I run it as a separate user. The idea is that to be able to do this I actually nest the PCI orbiters. There is the system provided one which the user is allowed to access only the sound card. And then the user starts another PCI orbiter in which it says, okay, this sub-user is allowed to access the sound board and only that and maybe something else will do not provide access to it, etc. So this is a way to be able to run entrusted code safely as a user even. Okay, so that was for the PCI part and now the news about the Herd so the status hasn't changed so much. So we support 32-bit. We have a starting of 64-bit support which hasn't moved so much recently because we have so many things to do. It's not so much a priority. For now we have two 632 leaks drivers. We would like to use Rump to get newer drivers, of course. So we have Xorg, we have HCI. So that's fine enough for most hacking use not desktop use but that's fine enough for having fun. We have an experimental sound support through Userland Rump. So you start and player and actually it starts a kernel with the sound drivers and then it drives the sound device. So we had a talk about this last year or two years ago, I don't remember. We don't have USB yet but again it's a matter of taking Rump and then plugging things and that should be fine. So it's quite stable. The thing is the boxes I maintain for a building package, etc. I don't remember when I reinstalled them. More than a decade probably. I don't even remember. So yes, it's quite stable. And the build demons, the keep building packages it's something which is really intensive. You keep copying files, compiling things, downloading stuff. So it's really stressing everything and we don't get tanks or memory issues, etc. after weeks of doing that all the time. So yeah, it does work quite well. It does crash sometimes but it's not so frequent. We have a lot of packages from the Debian archive. So it goes up and down depending on new things that are required and things to fix. But basically we are around 80%. Help is really welcome to make that figure bigger. Usually it's just a matter of fixing a few lines of code in the software because they assume Linux if it's not Linux, it's Windows. But we have some of Firefox numeric. I mean big software do work actually. We have the standard Debian installer. So it's actually as easy to install Debian Herd as it is to install Debian at all. So that's fine. So more recent news. We have Geeks, which is going quite well. So purists, I mean GNU purists are happy because they have a real GNU GNU only GNU system. The nice thing is it's actually bootstrapped from scratch. They have the rule to starting from a C compiler on Linux, build a cross builder, etc. and then build from scratch the whole system from an existing Linux system. So we can trust that thing quite a lot. And it helped us in Debian for the reboot strap effort to be safe saying, okay, we can also reconstruct the Debian architecture, GNU Herd architecture from scratch if it would ever be necessary. So I think there's some work to do so that it's actually bootable, but yeah, people are hacking on it and it's going quite fine. So recently I didn't mention to it the translators, so slash servers socket, slash servers, PCI, etc. It's actually special files and so far we used GNU Herd extension to store them. Recently we put some code to use XATTR so to use a standard feature of X2FS to actually store things. We have optimizations, stabilization, so quite a few things. I won't detail everything, but basically we got the Futex implementation which provides really nice performance. We have high memory support. It was quite something because we are still with a 32-bit kernel so to access more than 4 gigabytes of memory you have to map memory on the fly, etc. This was implemented so, okay, for now we can access more than 4 gigabytes of memory that way, so we are fine on that front. I mentioned the sub-HUD to say a user can start something and be sure that it's isolated, so this is something that one can really do now. Before we had to be root to run a sub-HUD so a different set of notion of users, but now we can do it as a user. The really cool thing about this is that you can really think about containers when you think about sub-HUDs. The difference is that from the ground it's safe because actually it was difficult to implement because it's safe. It's deep inside the construction of sub-HUDs that it is safe because it cannot be not safe. Instead of Linux which keeps saying, oh for containers we forgot to isolate the sound card or we forgot to isolate this part and that I don't know where it will end because there will always be somebody which adds something to the Linux kernel which needs to be contained, while on the HUD it's not so easy to implement something because from the start it's contained and so you cannot do something unsafe. We've worked on using the LWIP TCP IP stack because for now we use an old Linux stack which is fine enough but let's get something which is maintained and put it in a process. There's somebody who also worked on a distributed system so you do PS and you see all processes running on your machine but also another machine. They have a current view of what is a system. For now it's really experimental but you could think that you can migrate a process from one to the other and everything works fine because everything is interposed so you just need to push the messages through the network to get things working. We had releases, so there's that old one which is still fun. We used to have Arc Herd, it's not really active nowadays. We have upstream releases from time to time and we have Debian Snapshots. So we had last one one year ago and within one year we will have another one normally. So we have stable sets of things you can have a try. So future work, I think the one thing that we would like to have a look at is drivers to get support for sound, USB, et cetera, but going through Rump. As Jean-Lucas said, Rump is something which is maintained, Rump is mainstream which is flexible and we should really leverage this. So it's just a matter of plugging things, fixing a couple of compilation issues and it should be working fine. And with the PCI arbiter it's fine to have the disk, network, et cetera in separate processes so if one crashes, no problem. So 64-bit support, sometime maybe. A read-ahead is still missing so the performance may not be so good but for now it's fine enough but at some point we should really work on something.  So for instance somebody said, well the startup scripts, it's all in C, it's complex, you could do this in scheme and then everything from boot up to the shell would be in scheme. Why not? I mean the idea of the herd is that it's flexible and there are crazy things because you can plug things together. You just have the file system to plug things together. So you're welcome to have any kind of hack you would like to have in the system. So thanks for listening and everybody that works on this, I really welcome help because there's a lot of things I have to do just to maintain the system so that it works stably, et cetera. I would really like to welcome help. For instance the 64-bit support is still post just because I don't have the time to do it because I'm working on something else. So if people want to have 64-bit support then help me with that stuff I have to do and then I'll have time to do the 64-bit support. So thanks and I welcome questions. I've heard of the patches. I haven't read them myself on the Linux kernel to mitigate Spectre and make it meltdown. Would it have been easier on her? Or would it be easier on her? Do you mean running Apache? No, no, patches. There are patches on the Linux kernel that have been published a few weeks ago, one month ago, right now, to mitigate. Ah, you mean meltdown and Spectre? Meltdown and Spectre. So meltdown and Spectre are really awful in that. I mean, yeah. So the question is, would it be easier to patch against meltdown and Spectre on the herd? And the problem is no because here managing memory is relying on the CPU to do things. The thing is, it's always a problem of performance versus security. Ideally the kernel here wouldn't see anything and any memory and it would always copy from here to there and then from there to there and then what you would be able to see would be with meltdown would be only what the kernel sees, that is, the message is currently being transferred. So not everything, so that would be less of a problem. But for performance, we prefer to make the kernel see all the memory so it can copy directly from one process to the other. And then with meltdown, you can see everything then. So yes, meltdown is really awful in that. You cannot trust even the hardware, the isolation between processes. Okay then, we screwed. Yes? You talked a lot about contributing and getting help. What I found from the contributing pages on the herd website is there's a lot of kind of pastes of IRC conversations and not very much kind of description of tasks and some of these new projects are getting involved. So the question is about the contributing page on the Wiki. It has some things, but it's not so easy. The thing is there are so many things to do. I could spend time on doing this. I welcome people doing this for me. I agree. It's like a bottleneck to get people to do some things. Well, one issue we have is that people come and say, what can I do? And the answer is what can you do? In that, what are you able to do? And what you are willing to learn to do? And these are really different things which make what you can actually do then really different. So on the contributing page, there are a list of small hacks. They are not so small in that. It means, I don't know, for somebody who knows what he's doing, maybe a few days. For somebody who doesn't know, then it will be a few months because he will have to learn a lot of things. But that's cool because, I mean, really almost everything I know about the printing system, et cetera, it gives me a job in the United Kingdom and things like this was because of things I've learned due to pet projects. So, yes, there is that list of small hacks you can have a look at. If you don't understand then ask on the mailing list, we can describe what's required, give pointers, et cetera. The idea is that it should be something you would like to work on because you are motivated to make it work. So, I don't know. But yes, we should work on that part, indeed. Yes? You said that for the 64-bit support, you are also working on the 32, 64-bit RPC translator. Yeah. Is it just to... This is necessary for being able to run 32-bit user space applications thanks to 64-bit? So the question is about 64-bit support. So, for now, we have just the kernel support. The idea is that you don't so much need 64-bit in New Zealand because 4 gigabytes of memory is quite big. I mean, when I see Firefox taking 4 gigabytes of memory, I say, no, it's not really normal. So, for now, the idea would be the kernel sees 64-bit so it can manage memory the way it prefers. And then we just have to translate the RPCs, the parameters, the addresses and things like this. It shouldn't be so hard because it's really just the layer and then everything else will work, all the RPCs, et cetera. And at some point, we can bootstrap a 64-bit architecture. It will be just a matter of defining things, porting the assembly snippets, et cetera. That's not too much of an effort. Sure. My point was just having this translation is an additional work to do. So, switching to 64-bit user space from day one might actually save you some time. We just need to recompile or maybe not. So, either to implement translation between 32-bit and 64, or just go native 64, maybe. The thing is we have a 32-bit distribution which exists, which we know is stable, et cetera. We like to leverage on this maybe. Myself, I prefer 32 to 64. If somebody prefers to bootstrap 64, then yeah, go for it and you're welcome. Yeah? Just last question. Yes, because we are out of time then. Yeah. Is this a general mechanism or is it implemented as a special case? So, I mentioned that you can have a token which gives access to IO ports and you can give it to another process. So, is it something which is general or something just for this case? It is something really general. Actually, when I mentioned the question of discussion between X2FS and OTH, here, the arrows I put is actually a port exchange. The idea is that SH actually gets a token from OTH to X2FS and then X2FS can match it with the token it got from OTH, which is a proof that this process is actually allowed to access the file. So, yeah, this is something deep in the system. Okay? Thanks, everybody.


Just in this last year, there have been a lot of big updates to Elementor, new features being added, some we love, some we don't. But one thing that I found happen sometimes are small little things slip through the crack without really getting noticed. And one of those things slipped through me, slipped by me. I didn't realize it was there, but when I found it, I was really happy about it. And that was adding a link to your container, not before with columns. If you wanted to put a link that wrapped around your column, which would be great for a card. You could build a card, you could put all of your elements in it, and then when somebody clicks on any part of that column, it links out to whoever you want to link out to. Well, we needed an additional plugin. It was quite a frustrating, I felt, because I felt like this should be something built into Elementor. I don't like adding plugins for something like this, but we had to. Not with the containers though. So this is going to be a really quick one. I just want to show it to you in case if it slipped by you as well. All right, let's check it out. Now this is going to be a really quick one right here to get started. We need to make sure we have containers on because this only works with containers, not sections and columns. So that's back here in your Elementor settings, then over here in experiments, and over here to your flexbox container, putting it on active. Now Elementor 3.8 is coming out this week, supposedly, hopefully, you know, we're waiting on it, but I've been testing the latest version and containers is ready to go. I am going to be using that for everything going forward. All right, let's go ahead and edit with Elementor. Now this was all built with sections and columns right here, and let's go to this section right here. You can see we got these inner columns. Now if we wanted to, say, add a link to the whole thing, that way, if you click on any part of the card, let's say right here, I want to give this card some padding and add a background to it.  So that way it can make it look like it's clickable, like the whole card is clickable or tapable. Well, if we wanted to add a link before to the column, we'd have to add an extra plugin for that. But let's go ahead and turn this into a container. We're going to go over here to our section and we're going to press convert. Now most of the time this will convert, well, you can see it just replicated it. Sometimes it does mess up the layout and we got to fix it. So keep that in mind, but we're lucky on this one it worked. So I'm going to delete that right here. Now you can see when I click, oops, it's hard for me to get that when I click on it. Now it's a container. In fact, let me just pull up the navigator. And we can see here, these are all containers. So we could click on any of the containers in here, and we can make this clickable. So we could go here and make the whole section clickable. Let me close this. You know, we click on that if we go to additional options over to our HTML tag. Now we have this option of the a link, turning the whole thing into a link. And then we could put our link there. And go ahead and turn that off. I'm going to turn it back to a section. Here if we want to make this card a link, we would go to the container that is wrapping around it, select on edit container, go here to your additional option, and then select on a. And now we have a link on the whole thing. And now we could go ahead and we could make this clickable. Let's take a look in the front end. But you can see the whole entire thing now is clickable. So this part right here is cool that we have this option now, but there is a caveat to it. And that is let me go back here to the container because there's a warning. That is we cannot use links inside of it. So elements are even put a warning here says don't add links to the elements nested in the container, it'll break the layout. And let me show you what I mean, we're going to take this button right here. Let me copy this. I'm going to paste this inside the container. And it looks okay right over here, but let's take a look in the front end. And we can see here, you know, is broken. It's all weird. So what's what happens here is when we wrap the container with the eight tag making the entire container a link, well, it's messing up any styling that is happening to any other link inside that container, you just can't use a boat. So it is a trade off. This is great if you want to make a card where you don't have a button and not have to rely on a third party plugin. So I just found this in case if you missed it, I hope it helped you out. Well, I hope you help this out and 3.8 is coming out any day now containers, well, it's ready. All right, I've been using the beta is good to go. And in fact, going forward with my tutorials, my teachings, my trainings, and even our client work as well, we are going to be using just containers because well, that's a feature of Elementor. And it's important to stay ahead of the curve and not stuck behind while I'm interested to hear your thoughts and what do you like about containers? Do you feel that they are ready to go drop them aside the comments, get back to everyone and don't forget to do that all that good YouTube stuff, you know, like and subscribe. It does help to support this channel and I'll be back again soon. All right, thank you for watching.


There are two kinds of power so this is where if anyone wants power you can get power powers available to everybody There's two ways to think about it where you have hard power.  This is kinetic We're not at a stage where we have Hard power so much maybe on a personal level within the space that you live in But I see there's not a chat of stand barbarian army I wish there was you got guys go sign up go fight. It doesn't exist right now. So we don't have hard power Yeah, but hard power is the way we usually think about power. We think about loss We think about being oppressed and we've seen this Abuse we've seen people we've seen countries like China where they're they're building their hard power They want to have that military they want that might people do what they want with that kind of force You know the irony to this actually if I go back This is actually in a way like hyper patriarchal You know, it's like it's a strong oppressive father where you're gonna do what I say when I say it However, I whatever I tell you to do and you don't have a choice of the matter Yeah, and sort of in a weird irony like the United States is actually much more masculine nation And sorry China is a much more masculine nation than the US is at this point That's why it's keeping head. That's There we go. This is Australia. You can see Australia. This is hard power Pandemic people are this person Didn't wear a mask, right? So now they're gonna get you know handcuffed and beaten and this is gonna protect people keep them safe You know, they're exercising hard power Yeah, they can do that because the population there. Well, they don't have any guns because they got rid of them and Apparently they like to follow rules.  What are you doing here in America?  You have hard money. So I said money's not real money's not real money's just a mutually agreed upon idea that we you know, we engage with But we can come let's make it real we can have something that's not inflationary Finite supply it can increase in value Bitcoin's a great way where you can actually assert power yourself because you can completely separate yourself from my natural system almost You can do business with people whose values you agree with because if you're using Bitcoin We all kind of believe in the same thing and we don't have to conform to the narrative You know these idea that there's rules and this idea that well, this is what the this is what the banking laws This is what legal I like no No, we can actually do this ourselves And this is open to anybody So the ability to create your own systems always exists You know if you're intelligent enough create enough and if you're willing to take a risk a lot of people think of cryptos It's big, you know, it's like what is it? I don't know anything about crypto. Well, you can research it. You can educate yourself It's not a complex idea to think that what if you got hurt people together and we use our own kind of currency Just amongst ourselves Okay, I could see that happening multiply that by a thousand people a million ten million a hundred million Trains of dollars value There's nothing stopping you from embarking from one hard power system into another into another one.  They just I guess now they're canceling Dave Chappelle after saying they wouldn't cancel Dave Chappelle that that's really important It's not that important, but it's an example of soft power soft power is culture soft power is persuasionary soft power is The social Boundaries and the social conventions you're supposed to conform with Yeah, soft power has a lot of pull obviously, but you can always defy it. You all defied it coming here You all did everyone in this room is probably defying it in some way where you've made separations between people that you agree with and people that you don't Maybe upon very harsh ideological lines So you can always make a stand for yourself this way and most of the power that the United States has of this point of soft power Yeah, the president we currently have toothless Not really in reality like it is Biden the power president. No, maybe in Washington, DC, you know within certain spears Yeah, no no doubt about it But let's stay to Florida. Is anyone following mandates here really is he when is anyone doing the president says? Florida West Virginia, Texas. No We're doing it stuff the way we want ourselves our leaders are making our own decisions The United States no longer has the ability to project hard power broader internally So now it's relying upon soft power and social convention And certainly some people are gonna get dragged and some people might get targeted, but the system is breaking to your advantage Our lives are shaped by symbols One of the interesting things about not just Netflix.  What's a logo? A logo is a symbol Something that the general right spear has lacked for a long time Our symbols we have the American flag. That's one symbol. We don't have much else Yeah, when I was talking with my friend Arthur Kwan you know about art about the credit ability to create art to create beautiful things to Pull out of your soul something that people look at and they feel and it inspires any night something of them The general left the general narrative. They've got a lot of that They got all the and these these symbols are aligned with companies obviously a lot of it's just it's just logos That you all engage with they have a lot of that and that's very persuasive because it seems very omniscient your mind So when you see something like Yes, I mean like Netflix or anything else. It's not just That word it's not just that company. It represents this whole spear of soft power semiotics symbols always stand for something else You have to create your own symbols A lot of what I've tried. Okay, these are out of order. There we go a Lot of what I've tried to do with my own inner circle is create symbols give them something to follow. I Got this tattooed in my arm right now You got from Jack Dove and strength courage Mastery honor. Do I expect everybody to get tattooed? No, but I expect it to mean something when you see it for the guys in their Group it means something even if I go back. Where is it? There we go. Chaston Barbarianism.  No, it's not I Have the means to create an entire digital country. I Can do that. I can create a Dow. I can create an LLC if I want to I can create online community I can create social conventions. I can create a culture.  You know me Chaston Barbarianism as I have so goddamn many Most of them are probably made by Devon and we laugh at this and we're like, oh, that's ridiculous No, that means something because that got a lot of you fit that got a lot of you in shape I got a lot of you living your life differently and now you're going to create community runs amongst yourselves That group of an itself was from a larger group Create the world you want to live and create the networks Also, this is this is great.   Let me go There we go back back there we go So as much as I want this to happen and I don't vote. I don't really believe in democracy as it exists right now anymore I'd love this have an instruction.  That's fine That's fine, but we do have is you have all the tools shape the world What does The United States have was the federal government have that you don't have Do you have social media? Of course you do. Do you have the means to create your own banking system? You do Can you create your own networks? Absolutely. Can you arm yourselves yourselves? Of course you can You have tools to reach people to broadcast No, let's see Instagram live that you too. Oh, yeah, I do You have all the power that a media conglomerate has you you have all the power the individual country has You can do this yourself. You can create the world yourself If you want to talk about being a man of action, what can you create? What can you create? You have all of it. You know, so why aren't you using it? What I've tried to do the last five years, especially this past few years. I've tried to create I've created groups. I've created network tribes cultures. I've connected with other people Yeah, and whether and there's so many groups now they exist online. They're all valid. They're all useful. What appeals to you? Yeah, well my good friends Jack Murphy a liminal order. He has a group I've got my own air and tribal group jazz. I'm barbarian zone group, you know war room tape brothers They're their own group for turn off, you know fraternity of excellence. They're their own group Every one every group serves somebody. But what were they all creating? What are they really doing? They're creating the substrate for a new world. They're doing it themselves It's men doing it themselves the way that men have always done They're not relying upon the external order They're pulling it out of them and their brethren. You can do that That in my mind is what being a man of action is You know Mishima from Japan talks about this in a lot of his books, you know son of steel The dividing moment in his life was when he realized that he had for the first half of his life He'd been a writer He's written books written novels. He'd been very intellectual man. He's been a scholar been a man of the mind But then he got to this point the sort of life crisis see and he writes. He's not a man of action He's very good at thinking a lot of people are very good thinking a lot of the political sphere the political right very good thinking Think pieces national review. Let's talk about how we got here. You know, let's talk about moving forward This is gonna be terrible. This isn't constitutional. This is a violation. It's alright.  We can deliver commentaries and missives. It doesn't mean anything unless you're creating something You're not acting. You're just talking We have things like tradicon movement. You know, they want to have this very idolized world's idolized image Valor, you know, the golden man this man of virtue, you know fair maiden We're gonna make a return to the past. This is nice to think about. This isn't a bad mental model necessarily But this is not complete either That movement Those kinds of movements that kind of thinking where we're just gonna simplify down to this romance romantic little You know fairy tale box and like that's what we'll say the world. No, that's not gonna say the world The world is bloody and violent and it's beautiful and it's complicated all at once You know getting a hypothetical virgin wife and then looking on a farm Good for you. That's a nice idea. That's great. That's a beautiful life I won't say that's not but that alone is not going to change the direction of history So you reclaim your values and you live them and you recognize everything I just talked about everything that you were gonna have Happen to you going forward. It's going to be a process. It's not an event. It's not any one thing It's not a war. It's not one final battle.


I'm a sucker for ancient history, sue me. Hello everyone, Dylan Schumacher, Citadel Defense, and we are back with another edition of the Tudelage in Blood, Lessons from the Past, where we review battles from the past to learn modern tactical lessons. As always, I'm not gonna give the full context for this battle and the historical implications and all that stuff. I really enjoy that, and if you do too, I'll link to a video down below that you can watch for further viewing and geek out and nerd out about the history of it, all you like. But for today, let's talk about the battle itself and what we can learn. So this battle is the Battle of Lake Trezamine, a very famous battle that happened on June 24th, 217 BC. Rome comes into this conflict, or this battle with about 30,000 guys, and Carthage, led by Hannibal, comes into this battle with 50,000 guys. You may not have heard of Carthage before, but you have absolutely heard of Hannibal. So, for this battle, here's one of the first things I wanna say just to set the stage a little bit, because it is gonna matter when it comes to lessons that we learned from this battle and how the battle plays out. Basically, the Romans were in this fort, Hannibal snuck over by them, they didn't know it, started ravaging the countryside, and the Roman general, who was known to Hannibal, this is gonna be important later, known to Hannibal to be aggressive, eventually got mad and started chasing Hannibal. And that's where we pick this up. This Roman general picked up his entire army, moved out of this fortified town, and started to pursue Hannibal in an effort to bring to battle. So, what we have here is we have the lake Trezemine. This is gonna be our lake for our battle. There's a bunch of hills up in this area of the lake. You can actually go on Google Maps, and you can see where this battle happened, and you can see the hills. It's actually kind of crazy and it's kind of interesting, and I did that, and I would probably recommend that. But it's important to know that there's a bunch of hills on the side of this lake. So, what Carthage did, what Hannibal did, is they set up a fake camp over here, with all their fires burning and everything, as Rome is pursuing them along this route of the lake. That's where they're pursuing them. So, Rome is coming down here in column formation. That's obviously gonna be important. And what Hannibal did is he baited them with their camp, with all their campfires, whatever, and he set up a blocking force right here. Another thing that I need to make sure to mention is that one of the things that's always noted about this battle is that on the morning that it happened, it was very foggy. There's a lot of low-hanging fog coming off the lake. So, for the people walking along this lake, it's very hard to see. You have to remember that, that they can't see super well and it's foggy and it's at early morning. If you've ever walked through an early morning fog, you know what that's like. It can be fairly disorienting. So, because of that, the Roman vanguard, which were made up of their hardened legions, stumbled directly into the Carthaginians. The Romans are famous for not putting out scouts when they should. We're gonna talk about that more later. So, the Roman vanguard gets here and hits the blocking force. As the column continues to approach, to join the battle, all of the Carthaginians were hid up in these hills. So, as the column is stretched out, coming to the battle, the Carthaginians come down out of the hills and smash into the Romans. Now, again, if you're stretched out in a long column formation and someone has already set and they're coming in to ambush you, that's what this ends up being a very, very large-scale ambush. They basically, you're pinned between the lake, the battle in front of you, right, and then getting ambushed from the side. A lot of Romans ended up getting driven into the lake and they tried to swim with armor on. Anytime you're gonna try to swim with armor on, that's not gonna go well and you have a very high chance of drowning. So, that's, of course, exactly what happened. So, the Carthaginians come along, they smash the Romans, drive them into the lake. Again, they can't see. They couldn't see as they're moving along the fog here, but from up in the hills, they were able to see the Romans pretty well. So, they can track them as they're moving. They're down in the fog. They can't really see much. They come in, they smash them into the lake. This Roman legion here, to their credit, eventually knows that their only way out of here is forward and they actually fight and break through the blocking force and escape. They're captured later, but credit to them what credit's due for not dying that day. The last thing I want to say, and then we're gonna start talking about lessons, is that Hannibal set all of this up at night. So, he was traveling along here, learned he was being pursued. He brought his guys around and set them up at night in the hills with, you know, tens of thousands of guys. That's important, obviously, because imagine how difficult that would be to do. So, at the end of this battle, the Romans end up losing their entire army. Half of them, about 15,000 are killed. The other half are captured. Even these guys who break out and get out, they're captured, you know, a couple days later. So, the entire army is wiped off the map. Let's learn some lessons. Okay, the first lesson we want to learn here is deception. As Sun Tzu says, deception is central to all warfare. Ooh, I butchered that quote, but it's something like that. Deception is a very, very important aspect of warfare. So, the reason I bring up deception is they had their camp down here. The Carthage set up a fake camp down here to lure the Romans down the line. They wanted them to follow, right?  So, they're able to lure the Romans over to the Carthaginian camp and then set up a blocking force to kind of surprise them, right? Again, foggy, remember you can't see, but they could see those burning fires and they could see where that camp was at. Number two, know your enemy and learn how to, in this case, taunt your enemy using that knowledge for your advantage, right? If, again, Sun Tzu, you have to know your enemy and know yourself and you'll never lose a battle and Carthage or Hannibal, I should say in this case, knew his enemy. He knew the Roman general whose name was Flavius, if I remember correctly, he knew his enemy. He knew that he was aggressive and he was known to be aggressive and he was going to look for a battle. So, Hannibal taunted him. He taunted him by burning the countryside. Then he taunted him by running away. Then, like we said previously, he deceived him with a camp, right? He knew his enemy, he knew his enemy was aggressive and wanted to look for a fight and so he was able to lure them into the fight that he wanted to lure them into. Number three, fight your way out. This is just a side note. Sometimes the only option left to you is to fight your way out and credit to those Vanguard Romans who were there who decided the only way out of this alive was to fight their way out and that's what they did. That's a really, really bad day for you but sometimes that's your only option and what else are you going to do? So, I think that's an important lesson to learn is that sometimes your backs against the wall and the only way out is forward and you got to fight your way out of this trap and that's happened before in history. We're going to see that again in other battles but I wanted to note that sometimes that's all you got left.  Number four, met TC, mission, enemy, troops available, terrain and weather, time, civilian and other considerations. Okay, sorry, I guess the terrain and weather is the first tee and the troops are the second tee but whatever, you get my point. If you're not familiar with this acronym it's an acronym to help make sure you understand all the factors when planning your mission and I bring this one up specifically because I wanted to talk about weather, terrain and weather and again that played an important factor in this battle. Hannibal did a very good job of understanding his terrain. He understood he could hide tens of thousands of guys up in these hills which he used the terrain, right? This is my topographic map, that's what that's supposed to be. He had tens of thousands of guys up in these hills so that he was able to use that to hide his troops and then ambush the Romans. He also had the added benefit in this case of weather and he was able to use weather very effectively. The Romans could not see being down in the fog. The Carthaginians could see being up in the hills. Use the terrain and weather to your advantage. It's easy to forget how much weather and terrain can dictate battles. However, weather and terrain make significant impacts on battles. Go look at the battles between the Germans and the Russians on the Eastern Front in World War II. When the temperature starts getting 40 below zero Fahrenheit and engines start failing and nothing will start and nobody has winter gear, all of a sudden that's a huge, huge deal. I've had multiple cars die in my own driveway when it's 30 or 20 below out, let alone 40 below out with technology that's 75 years older than it is today. So you gotta understand that these things play a significant factor in the outcomes of battles and the tactician who's going to use those factors who's going to realize those factors, who's going to adapt his plans to those factors is more than likely going to be the victorious tactician over the one who does not. Number five, speed. I bring speed up because speed we're going to define as moving faster than the enemy or moving faster than the enemy anticipates you being able to. I bring that up because remember, Hannibal set this up at night, right? The night before he knew he was being pursued, he sent his guys all the way around here up into the hills. Why didn't he just send them straight up into the hills? Well, because then you'd track all through the terrain, right? If you're moving tens of thousands of people up through these hills, that's going to be pretty noticeable the next day. So he sent them around and set up his ambush, something that it was very quickly done that if you're the Romans, you may not even be able to anticipate, hey, we're hot on their trail, they're running, they're not going to be able to ambush us because we're moving too fast. The other lesson that's very closely linked to that is coordination. To be able to coordinate the moving of tens of thousands of guys in this huge, I'm going to call it a flanking motion, but you know what I mean, at night to get them into the right position in the hills, you've got to remember, this is 217 BC. There are no flashlights, right? There's no night vision. The only thing they would have had would be torches and you can't use those because then they'll see you moving. So it's very, very impressive that Hannibal was able to coordinate this. That's only going to work with an army that trusts its leadership and with a leader that is extremely competent and has good control over his guys. You have to have both those two things. If they trust you but you're not competent, well, that doesn't do any good.   There has to be a high level of trust and competence in order to achieve that team cohesion and coordination to be able to pull off a maneuver like this again with the added factor of time. Number seven is a lesson for the Romans. Scouts listening posts, right? If the Romans for the life of them, they never can get this right. We're going to see this in other battles as well. They do not send out scouts. They have no forward feelers at all. And because of that, they just run smack into problems. This is a textbook case of where scouts could have saved their life. If they would have had scouting forces rather than just a full vanguard up here to be able to see the blocking force before they ran into it, then they could have potentially avoided this disaster. If they had had some kind of flank security up here in the hills or some scouting security up here in the hills, they would have discovered that ambush before it crashed into them. Instead, the Romans, being a classic bull in a china shop, just ran in with the full army, ready to rock and roll, and then got steamrolled because of it. I just erased this whole board and then I remember there was one more lesson we forgot to talk about. When you have an inferior force and you're going to attack a superior force that is commanded by an extremely competent commander that's usually a very bad idea. So being able to plan your attacks effectively and not looking to engage in a full scale battle against a known competent general with an inferior force would have seemed pretty common sense. However, let's be honest, the Romans weren't known for their common sense. They were more known for just full steam ahead and damn the consequences. Point being, I think the lesson we should learn there is what troops do you have available and what does the enemy have and how can we use what we have most effectively against the enemy. And sometimes that might mean attacking or skirmishing or raiding or ambushing or whatever, but what it probably doesn't mean is charging full steam ahead with everything you got and risking the entire army against a superior force with an extremely competent commander. I hope that was all helpful. I look forward to continuing to learn some modern lessons from ancient battles with you. Do brave deeds and endure.


So today guys, I bring you 6 incredible options for character creations within the world of Cyberpunk 2077. These allow you to basically play as NPCs. These are obviously PC only and require you to install modded files, but if you want to play as one of those amazing NPCs within your playthrough, it's totally possible. As it gone guys, my name is DPJ and if you enjoyed this video leaving a like really helps out and if you like what you see and want to see more Cyberpunk, be sure to subscribe. So these creations are amazing, and they just add something new to this game for those looking to do more playthroughs. Now over the past week or so I have seen these mods take another step in terms of a level and I feel things are only going to get much much better. So let's get into them and we'll start with the one I've already covered in Blue Moon. This mod created by AverixPT and guys this won't be the last time we hear this dude's name today. So this guy created the perfect Blue Moon. And this isn't just a preset people, this has taken a lot of work. Now I have this on one of my other playthroughs, on one of my other saves, and I think it looks incredible.  We then go on to do a couple of side missions with Blue Moon, and well she's quite the character. So for those out there who want to look exactly like her, playing through the entire game, you'll find this mod linked down below with a video description. Ok so next up guys we have Judy. Now I have seen in the past many attempts of getting Judy right, and although some have been decent tries, this one here I believe is utterly perfect. Then guys credit to AlvarexPT for this creation. This one also rocking the unusual attire, but also showing off those amazing small shorts I know loads of people love. And with Judy being a fan favourite I'm certain you will appreciate this one, if it piques your interest you will find the mod linked down below. Ok so next up people we have in my opinion the best NPC in this game, in Panam. Now here we have two mods, the first one I covered in a video already, which allows you to actually create Panam with the character creation stages of the game, but you will have to add in the hair, the complexion and her clothes, and this makes the perfect all-round playable Panam character. But it does like I said take a few installations of a few different mods. The second Panam mod here just uses her head, which is equally perfect. This one made by Pantoristi and looks incredible. Basically Panam, but you guys will still need to install the hair and clothes for the finished product. By me and who does not want to play as Panam in this game, well details to both of these mods can be found down below. Again, credit to Pantoristi, lowcraft001, SilverEzruders and willyjl for the combined mods for the perfect Panam. So next up guys we have another creation by AlvarexPT and this one is LizzyWizzy. Now let's not lie to ourselves here. There just isn't enough of LizzyWizzy within this game. A couple of side missions and you are done with this high profiler which is bizarre. But hey, want to take a round Night City with you now you can thanks to AlvarexPT. Now I've covered the cruel mud in the past, but this one is kind of next level, as you also get her clothes to match. So yeah guys another great mod here with your final link down below. Ok so moving on guys and next up we have another mod by Pantoristi and this one allows you to play as Claire, yeah the amazing NPC, who knows loves a smell of burning, rubber and petrol. The video may as well be called amazing playable NPCs by Pantoristi and AlvarexPT, but you know guys I was actually going to do a standalone video on this one, but I thought I'd just add it to this compilation. And although I like many feel we should have got more with Claire, I feel the romance options should have definitely been there, but hey guys this is how you play with her. And lastly people another creation by AlvarexPT, and this one is for no one other than an actual romance option in the game in River Ward, romanceable only to females without mods. River Ward is actually a great character and provides some incredible side missions. With this mod it includes his attire, clothing set, so you can go full river with your playthrough if that's what you want to do. Again thanks to Pantoristi and AlvarexPT for the amazing creations we have seen today, all of which you'll find linked down below in that video description, but guys that is it for another Cyberpunk video. If you enjoyed it leaving a like really helps out, if you're new around here and want to see more Cyberpunk on a daily basis be sure to subscribe and hopefully people I will see you on that next one.