Well, I start okay great. Yeah. Hello everybody. Good afternoon. This is Adam gear. I'm Fiona Traja We're from Intel. We work in Shannon on the west coast of Ireland and we write a device driver for a hardware device an accelerator device for the Linux kernel So we're gonna talk a little bit about what we learned as we've done that So I'm gonna give you a bit of background on the quickest is just device itself That's the hardware device that we write the driver for Then I'm going to talk a little bit about entry versus out-of-tree driver And our journey in getting from one to the other And then some things we did in terms of reviewing how we design stuff how we analyze implement and validate and Some threat modeling we did And then negative testing Okay, so just maybe a little bit of background first on the whole concept of acceleration So if you've got a computer intensive workload, and it's running on your CPU on the left-hand side here It might be fully utilized in your CPU 100% no cycles available for anything else And if you design some special hardware as we've got in the quickest device to do compression for example or cryptography These things are quite compute intensive Then you can offload the process from the CPU and that frees up the cycles on your CPU So your CPU then can do other things So it'll allow you to either complete your workload faster or to have your workload taken less of the cycles of the CPU during the The time it's running and that makes it available for something else. So that's the point I guess is that for acceleration you've got some compute intensive Workload and by design and the silicon and the firmware it can be optimized and how that's done So the quickest device itself that we have as I said it optimizes cryptography and Data compression and for cryptography. We're talking about two different types. There's symmetric crypto We usually call that bulk crypto Cyphers like AES and and Shaz and so we do the authentication and and Cyphering and then there's public key. So asymmetric cryptography There's a bunch of engines in the hardware and they do digital signature There's elliptic curve. There's some of the basic primitives like point multiply point Inverse inverse and multiply sorry for that in the name of that one So there again, they're compute intensive on the CPU and then the third area is data compression compression decompression and there's some Check sums that go with those as well So so far we've talked about the hardware and this has just shown what software modules we need to do to enable that hardware The focus today is on the the green linux kernel module, which is over here Yeah, but if we start at the bottom of the diagram just to give you the bigger picture We have our device at the bottom and the device has Firmware that we need to download to the device Then there's a bunch of stuff in the linux kernel that we use to enable the device may need the kernel driver itself It plugs then into the linux kernel crypto framework and through that crypto framework There's symmetric and a symmetric crypto can be accessed by either other processes in the kernel itself or by Processes in user space over here to the left that are kind of grayed out that they can come through actually They might be not the right ones. There's ones that can come through. Yeah, and into the AFL APIs into the linux kernel framework and then into the device driver and the device driver will mediate The descriptors and build the descriptors to send the data off to the hardware to do the work we have a second path so on the the the kernel driver Enables SRIV in the device at well SRV is built into the device, but it enables SRIV and that enables virtual functions so the physical function is what the kernel driver deals with itself and and Offloads the data to that physical function interface but in the user space side of things we want to enable virtual functions and they're smaller or more and It allows you to scale the device up so that you're going to have more processes in user space each having an independent Seeing it as an independent device so so that that's enabled up through some through vfio For security and then the vfio enables the CSRs from the device up into user space and in user space These we've got a set of these blue libraries. These are a set of libraries be exposed in github Called quad lib and then above quad lib There's different applications that can use The APIs that we provide the quickest APIs and they can do compression or crypto And just to complete the picture in this diagram some of those user space applications that we have like quad engine and quad zip They can also upload to a software Software libraries that run the same type of workload on the chip itself on the on the processor in that case It wouldn't be offloading to the hardware But it's just an alternative path if you want to run the same workload on your software that on your CPU Okay, so we've talked a little bit about the whole stack So now just the purpose of this talk is just to talk about the the kernel driver itself So this is a more detailed picture of the kernel driver and the kernel driver has a bunch of different work it needs to do and and different Components that it interacts with so when it wants to Those areas are on the left-hand side here. We've got some ccfs interfaces This is where we do some basic configuration allow the user space Process or person human person to read what's how the device is configured and also to reconfigure the device We also have an interface to the PCIe Framework because it's a PCI device and to handle errors that the PCIe framework would detect We register some callbacks and those callbacks get called if a PCIe error is discovered Then another job of the kernel driver is to download firmware to the device And so there's some CSRs there in the the bar That it uses to download that firmware Then this path is quite an interesting one It goes all the way from the quickest driver in the kernel to Whatever is used in the VF and that could be something up here in user space using the VF The virtual function or it could be a kernel function as well that could use the VFs at the moment We don't expose it We have some kernel drivers for VFs, but we don't do them for our latest one But mostly it's user space access that wants to use that VF path Then we have the data path. So on the data path here The the data path is is In that case what we have is a lot of data usually because if you're going to encrypt data or compress it You often have a large amount of data So that's not passed by the kernel driver directly to the device What happens is it's put into a place in memory in DRAM and then the chip will you will DMA it in from that point in memory and There's two different types of things that are DMA'd in and out of the device one is the data itself that needs to be worked on and the second is some descriptors and the descriptors are built by the Driver to tell the chip what it needs to do So both of those are in DRAM and both of them are DMA'd into the device and the way the kernel driver Tells the chip that it needs to do work is is this doorbell, which is effectively just a right to an into a CSR So you write your register and then the chip will Read in the descriptor over DMA and then we'll read out any associated data work on it and put it back out again with the response into DRAM And so this data path I guess what's interesting about that is So it's used in the case of any process that's coming through LKCF and wanting to encrypt or decrypt data The quickest driver itself will build the descriptors and and send them down to the hardware in the case of user space This isn't the highest performing path So there's a if you've got a user space process and it wants to do this kind of encryption And it hands over to the kernel driver and the kernel driver has to pass the data on you've got a change of context So in the user space processes, we have a separate path which is exposed via VFI OPCI And that's that provides a direct path to the hardware So the VFI OPCI enables the CSRs that are in the kernel driver here sorry in the device itself in a VF to be visible in user space and And once they're visible then the process in current in user space can actually directly access it on the data path So there's no there's nothing in between to mediate the the data or to build the descriptors It's the user space so the user space process itself that builds the descriptors We'll come back to that data because it's an important point. So just the name of the path we have So that's that sorry, that's that's the data path and I've covered the other paths if you have comms and the other paths Okay, so we've talked so far about the hardware the stack itself and then What the kernel driver needs to do? So just a bit of background on the driver itself So we've always had kernel drivers and this family of devices has been here for about 10 years Maybe 11 or 12 actually since the first one since generation one But around 2014 we put the first driver into the Linux kernel And at that point we had what we call our out-of-tree package and that out-of-tree package is something which has firmware kernel driver user space driver sample code and Installation scripts all wrapped up in one package and you have to go to an Intel website to download it That's great for a lot of our customers. That's what they wanted in the past and it was much more targeting comms customers Building networking devices often appliances who have full control of their system But we recognize the value of entry of being in the Linux kernel And so we also started to move into the entry Into the kernel in around 2014 and then with the second generation devices 2015 And we base that off our out-of-tree driver and we read you know change We had to change coding standards because they're obviously different in the Linux kernel Then we would have necessarily had and there was some other things we changed like configuration But basically it was kind of similar to our out-of-tree driver Then in 2020 we have the next generation device, which is going to be released later this year It's not released yet, but we are getting ahead of it with the software and getting the software into the Linux kernel And that Driver that device is targeting a broader market. So it's a more cloud-ready device. It's targeting So that the the previous devices were targeting trusted environment So we expected that whichever process built the descriptors be that in the kernel driver or a user space process That those would need to be trusted. They would they would need to Send not not send malicious data to the device because the device wasn't designed to handle that use case But when we you know from about 2020 onwards and in our next generation We're targeting a cloud-ready device and that cloud-ready device means that you can't trust What's the process running in the VF because it could be anyone You know, you don't know who's going to get your your device in the cloud. So the silicon and the firmware were redesigned to to cope with untrusted applications and So we then had to take a take a step back and look at our entry driver and say, okay Is that also suitable for this tout ready? Marketplace and so we kind of re-reviewed how we did things we didn't change everything we did But we certainly made some changes and we just with that hat on of thinking. Okay. This is now Potentially untrusted process is the new space that are accessed in the device. What do we need to change in the driver? So I think I've probably covered all that here Yeah mentioned so in kernel space of the aval users or that the kernel driver mediates the To the device so it actually builds the descriptors whereas in user space It's the user space process that we now can't necessarily trust is building them So we we looked at our our whole stack design really not just the kernel driver But from usability extensibility robustness and then security Okay, so some of those things you might think well They're still valid for an out-of-treed driver. So, you know, are the customers have the same end requirement They want to be secure and robust So what why why is it something different? That's that's kind of the question that it took us a few years to come around to this to realize that but I think the subtle difference is because when we have an out-of-treed package and an out-of-treed driver and Kernel driver, we we have a relationship with customers. So our customers talk to us They typically have a PA or a field the platform engineer or a field engineer that talks to them They read our documentation and actually we've even designed the driver for them often So they would have told us their use cases. We'll have built for those use cases and we'll also validate those use cases and In that we may have missed other cases We also have in some cases Had to make trade-offs. So for example, if you take the out-of-treed driver It uses UIO to expose the device up to user space and UIO is in turn inherently not as secure as the FIO But if it gives more scalability so it allows us to break the device into actually smaller Smaller granularity than just vf. They can actually break a vf into multiple channels and access the hardware Directly with multiple channels. You could have multiple processes using the same vf. So You know when you can have that conversation with your customer and they're aware of how to use a device and you've done all your testing around their use cases You know, that's that's one model once we were in tree. We kind of realized after a while Well, you know, we really don't know all our customers We know some of them and obviously we talked to the big ones But anyone could download the device anyone could handle the driver and they could run it and they may end up running it in For example a norm trust environment even though they're not supposed to and even though they didn't read the documentation But then you know who reads documentation. So we needed to kind of think okay How do we make the driver so that they can't even accidentally use it wrongly, you know make things programmable Programmably clear that they can't actually accidentally use something in a way. It wasn't designed to be used So they were some of the you know the things that we kind of thought about and with that hat on then we went to Did some reviews Actually go back to that one Yeah, so just to point out as I've already said a lot of these things that I'm going to mention aren't things that only apply to our Intro driver there are things that we do anyway with our outro driver But we kind of thought about them again with a different hat on so Just keep that in mind as we go through the next few slides Okay, so in terms of design I guess those three different areas we looked at first of all We looked at some design areas some implementation details and some validation so in terms of design We did some threat modeling just identify where the vulnerabilities might be or if there are vulnerabilities We simplified configuration again We know that our users of the device now once we're in tree might not know You know might now want to either read complicated things or also what to understand really how the device works so for our outer tree we have these Configuration files which have a bunch of parameters in them you need to understand how to use them and you can change them to make the device to break up the device in different ways have different services like data compression on one vf and Symmetric Group on different vf So we knew that customers don't necessarily want that level of complexity. So we got rid of config files and We used CISFS So instead of so we expose a file and CISFS that explains that expose it to the user how is the device configured and we allowed some very Simplified actually at the moment we don't have what we're going to push patches in To allow us to do some very simple configuration there But we're keeping that to an absolute minimum and spend a lot of time trying to think what's the most simplified interface We can expose to customers that they can easily use and again in that configuration. It said we're using CISFS rather than Ioctodes so we have Ioctodes where you can do some of that stuff in our other divide in our other driver in the Auschwitz driver But Ioctodes again mean that the user space and kernel are more tightly coupled. They're sharing the same header files You don't necessarily want you know an Ioctodes They can break I guess it's hard to debug as well. So we've tried to Separate out our kernel new space components because again, and this is maybe a slightly thing that took us a while to cop on Well, we have this out of three package. I mentioned it has all the parts together But that means they've all been tested at the same time and there's like one version of kernel goes with one version of the user space Library now once we started to get into the Linux kernel We're shipping our kernel driver through patches that we send up when we have no Control over the time frame that released, you know, they get in whenever they get in We're separately shipping with the completely different release process a user space library and those use base libraries have to work with Whichever kernel they happen to be loaded on a system with so we we tried to decouple the user space process from the kernel space process as much as we can and keep that a very clean interface with very clear a bi requirements between them and in CIS of s for example, there's documentation going with CIS of s In the Linux kernel in the a bi documentation and that says how stable your a bi's are how stable your CIS of s is And you can say it's experimental if you want to but once you say it's stable Then you should keep it stable and not break it forever more for a very long time anyway So yeah, so we tried to decouple them a little bit We also moved to this capability query approach and again we actually we are doing this in our out of three drivers as well But we're more kind of This is a journey. We're not even fully there with the entry driver, but previously we have code in our user space that's saying Make an assumption so, you know, I know I'm a gen 2 device Therefore, I assume I'll be able to do data compression with the deflate algorithm or I know it's a gen 1 device So I know it you know can only do 2k pke keys instead of 4k or whatever So we wanted to remove that type of code We want to make it very much based on a query coming from the user space to the kernel driver to say okay Tell me what the device can do What does this BF do does it support this algorithm of that algorithm and to do it on a functionality based query instead of assumptions based on the hardware and That also allows us to deprecate algorithms because things like you know sha one You know becoming less less well at an MD5 say are becoming less secure, you know as they get broken We don't want them exposed anymore But our library is out there and it might say well I found it I found a device and I assume that that device can do sha one So I'm just gonna try to get it to do that So we have no mechanism for deprecating devices when we don't do a capability query approach Or sorry for deprecating algorithms Okay, and the last thing here is is to make this trust environment requirement more explicit So I mentioned already that the previous devices gen 1 and gen 2 these are Built for a trusted environment So what we did was we added in the vfio PCI so not in the kernel driver itself not in the entry kernel Sorry, not in the quickest this driver, but we added in the vfio PCI driver a new feature Which was the denialist and that denialist allows you to specify a set of hardware modules of PCI modules that shouldn't be exposed if they're found by default and and we put our Devices into that list so the PCI device IDs for the gen 1 and gen 2 devices are in that list And so by default in this kernel you won't get access to those devices and so So a customer can't accidentally now find those devices and just you know offload crypto to them They don't register automatically with that case yet But somebody can use them if they want to but they have to kind of program actually go in They'll have had to read the documentation to realize that that's possible and then they can Remove the denialist and take that or take our devices out of it And our gen 4 devices so our next generation devices They don't need to be in that list because they are okay in a trusted environment Sorry in a non-trust environment. Okay. I think I've probably covered everything there Okay, so that was the design areas that we looked at and then we also looked at implementation So, you know our actual code what what can we do differently there? Code of use we were doing all over the place anyway for all of our modules or all of our components But in this case we first review within the team, but you know, we're a relatively small team We're growing we don't have a whole lot of expertise We have you know some some great expertise in the group in the Lillis kernel, but we have lots of new people join the team so One way to get the experiences that we have a code review team a PDL in Intel of people who write other kernel drivers And have expertise in the kernel, you know come back for years So before we send our patches out to the mailing list we send them to this internal mailing list and we get feedback there from to help us And then once we've done that obviously we send them to the external mailing list Our goal generally is that when we send them to the external mailing list We don't actually want feedback. We just want to know accept it.  So generally that's our goal I guess is to get all the expertise ourselves into the team and with the rest of the Intel organization wider organization and to To get things accepted for easy to be kind of some in good quality code And the other area we do code views are secure code of use So we have like a checklist of things that we check for a secure code of use to make sure that there's nothing there That can expose any vulnerabilities And that's part of the the SDL review So we have an SDL process within Intel which is secure development lifecycle and that That has a whole series of of checks and we run through that maybe every quarter there abouts for our our entry code And it has a list of things that we have to you know double check Are we making sure that we're not depending on third parties that we don't that were if we are have we checked Their security status do they have CVs open? There's a whole whole bunch of other things. Do we invalidate all the input? Do we code review that we validate? You know in the code views have we checked it and do we also actually test for that? So there's a bunch of things we go through when we do that periodically walk through it as a team to make sure that we're covering security Yeah, also in the lens kernel. There are a bunch of managed device Resource API's so probably you're aware of these they we used to have with a dev underscore now with this DevM and PCI M and DMA M and they're all managed resources and the main Advantage of those is that it cleans up on a failure path. So as soon as you if you fail for any reason It's going to clean up the memory that you've used So we've changed to use those as much as possible and there's also some functions We're aware of and again this comes from our code of your our secure code checklist, but the one example is string copy We don't want buffer over on so we use sdl copy or maybe sdl and copy sometimes mostly sdl copy We make sure we've got parameter checks on the input paths and we refactor the code This last one is maybe it doesn't sound maybe a lot to do with robustness, but at the end of the day When you've got a bunch of devices and in our case we say with our gen2. There's three different devices in our gen2 stage of the devices a phase of these devices and And so we found we were duplicating code we had code per device in our in the repo So we looked at what's common and we took the stuff that was common and tried to put it together So we created a generation structure. So some code that's common to every device in the generation. We put that together You know that helps to make the code more maintainable I suppose we're constantly trying to make it as maintainable as possible Because if you got code duplication, then you end up fixing a bug in one path You don't fix it another one. They diverge from each other a little bit. It's it's generally not as as robust Okay, and the validation review then we had already done a threat model So we use the threat model to identify some possible attack vectors and and to locate how do we watch we focus our validation efforts on and We made sure we had some Robust error handling on the for invalid input and Adam's gonna talk a little bit about this in a minute And also some error simulations that we did. There's some tools out there. We used for that and Then we run static analysis tools on all of our code And we build a different compiler. So we build with GCC. We build with C lang We make sure that we use the warning minus w equals one on for both of those to pick up any warnings and address the warnings We run check patch With the minus minus strict option to make sure that we pick up anything there So we basically try and find out what tools are available and use those tools Yeah, and the one last thing we have on this internal mailing list that I mentioned We have some server set up in Intel so that as soon as you send a patch to that mailing list It automatically goes to server farm and does a regression build on it and lets us know if there's any regression issues in that Okay So just a little bit about threat modeling I can't share the threat model with you that wouldn't be something we would normally do But just in principle just the idea of doing a threat model is that we you know look at what Assets are there that need protection? That could be the device itself and we make a list of what those are so the device itself The DMA the memory that's used that we DM in in out from the firmware that within the device So we look at what are all those assets and then we you know We have an Excel spreadsheet where we go down to each one of those and then say okay So what's the attack surface free to those is it possible to get at those somehow and look at where then the trust boundaries are crossed so You know is it on the data path or or from CISFS? Is there someplace where you've got an untrusted? Process that has access to these assets that need protection and then some of those You know the answer is actually no there isn't really and it's impossible to get to them But we you know we look at where they are and then what's the potential impact if you could get to attack those those assets And and how likely is it and and what mitigation is going to put in place? So that kind of informed in how we how we validate and some other things that we changed Okay, so Adam's going to talk about a couple of things that areas that we looked at so these were some of the areas where we We wanted to focus some efforts. So one was CISFS So we're exposing some files We just want to make sure that nobody could manage to cause a denial of service attack or anything by by writing bad data in there Another interface we wanted to check was this PCIE when it calls a callback to make sure that we would handle the callback correctly and That the device would recover as expected And a third area just we want to share is is how we tested this PFEF comms interface here Which is where the user space is trying to send a capability query for example to the kernel driver Okay, so I'm gonna hand over to Adam. I think he's going to talk a little bit about some of those some of those testing tools that we used Thank you Fiona So I guess you don't mention CISFS already, but I'm just going to do a little bit more detail of what it is So CISFS is essentially a pseudo file system that can allow kernel subsystems or a Device driver to expose information configuration or functionality to user space and it does it by using a file That can be accessed by either a user process or a user So for this what we need to do is we used a an open-source tool called redamza We're damsel that us give it an input and it'll give us a fuzzed output You can see some examples of that there on the top Some of these are going to be things that you might not think of Entering into CISFS yourself and it's a handy way of getting generated inputs for that And because redamza is a CLI What we can do is we can write a batch script to just constantly send a text over and over and over again until maybe it goes down Maybe it doesn't but hopefully it doesn't So we're using this tool what we're able to do is is validate a range of boundary conditions And ensure that our driver or CISFS interface was robust enough to be upstreamed And as well as that we learned that we need to tighten up the validation over input strings And as well as that because we don't exactly know who's going to be access in our driver. We should probably have pretty usable So pretty usable Inputs so for example, we have The state of the machine which is exposed or the state of the device which is exposed And this can be either up or down very simple and for configuration of crypto. We have Symmetric and asymmetric or both So quite simple easy to understand for anyone that doesn't read documentation like me So, yeah, so moving on to PCI the PCI interface So what we're going to be doing here is looking at the AER Advanced error reporting which is supported natively by quick as this so to kind of get at this what we need to do is have a machine that supports they are natively and We can do this by enabling in grub and In the kernel as well as self We also need to have a driver that support they are as well and quick as this does We can use an open source tool called a or inject And what we can do is we can inject certain errors into PCI A or framework And we can see we can observe how our driver responds to those errors So just kind of two Categories of errors that you can inject One being fatal errors and one being non fatal errors Um for the fatal errors what you might want to see from your driver as a function level reset and that driver returns to a usable state And that you can you can test using functionality tests or integration tests to just make sure that everything returns back to a usability usable space and for the non fatal errors Essentially, you should just return to normal kind of the same as the fatal errors but you might not even see any sort of pick up at all and um Yeah, the driver should return to a completely normal state Using this tool what you do is you type a or inject and then you pass in a file And you actually make the file yourself And you can pass in the pc id of the device and as well as that The error that you want to inject there's a bunch of these And you can kind of pick if it's correctable or non correctable or fatal or non fatal and yeah So what do we learn from this what we learned that we need to reset or change the reset flow of the device And that's for one as well that this tool a or inject was quite easy to use I think I set it up in five minutes And I was able to just test if the device was responding correctly to these a or uh errors And um, yeah, it's pretty handy for any developer that wants to check this Yeah, and I think I'll pass you back to Fiona. Okay. Thanks Adam Okay, so yeah, so the last area we want to talk about was um the pfv of comms. That's the physical function to virtual function interface um So I might just jump back to this Somewhere here the diagram. Okay So this is the interfaces that already that I've talked about between the kernel driver and something in user space that's using the virtual function and I guess well the first thing so we've got this already in our gen one and or in our gen two Yeah, and gen one Drivers is that we realized early on that if a user space process Just pass correct data in On this interface, which means it would write into a csr here. That's just a 32 bit csr And as soon as it writes triplicular beta and that it triggers an interrupt over here in the kernel driver um So one of the things a used space Device could have done or driver could have done in the past is it could have Just created lots of perfectly valid requests But had a flood then of interrupts on the kernel driver and caused a denial service attack by doing that Um, so we've got some talking that's in the kernel driver here So it won't allow that to happen so it prevents a flood of interrupts being handled um from any particular vf And then the other thing we wanted to do was to make sure that what we wanted to this time was to make sure That when you write into this csr Random data rubbish, whatever the no matter what you write into that the kernel driver is going to behave itself And not get not have to reboot Either the platform itself sometimes you can actually in the past we've been able to pull down the platform with this But um, we've made sure that that's not possible anymore So let me go back a little bit to the ways we thought about doing this Okay, yeah, so said we've already done functional testing and to do the functional testing of that interface There's a protocol with kind of timing across that interface So we had a homegrown test tool that we were using for that And that test tool focused on passing in correct messages like get the version or get the capability query The testing we wanted to do was to extend that testing and to focus on corrupt messages invalid messages putting rubbish into the different Fields in the csr. And so we had to trade off between using the fuzzing tools Or using the the in-house tool that we had and this in-house tool we had As I said it it was a quick ramp for developers. We already know how to use it and We found it faster to get there because the the other tools like afl or or kfl. So afl is a A kernel version of afl, which is american fuzzy lop, which is a fuzzing tool um, and afl both of them what they do is they Generate data something like radamsa does they can generate a data set and they can fine tune that data set And then they can also add code coverage in whatever you're testing as well So inside and the kernel driver can put in code coverage So when it sends in a particular piece of data it can then see the path that takes to the code And it can fine tune that data to find that to make it go through all the different paths in the code and try and get full coverage um The tool that we used we we had we had a tradeoff between you know, which do we ramp on this and use it and because of the complexities of our protocol and because The the data would be injected in user space Whereas it's the kernel space driver reading from a csr's where we're actually trying to trying to break essentially They were two different Domains, so we found it quicker to get up and running with our own tool. So that's what we did And and it was effective It was effective, but I guess we can see also the limitations of it So what we've done a lot of fuzzing using that tool. We are also looking at using the actual fuzzing Off-the-shelf tools as well because I think they're quite useful and so the advantage of them is that they do I said it's a more comprehensive set of data and and just to give a kind of an example from Looking at what they can do if if you as I mentioned you can get code coverage by using these tools um if you took An example of say you're passing in the number 10 and that's the parameter that's going to be passed into the to the to the process of testing And if that goes to a path, which is saying, you know, it's it's a it's an error It's a greater than whatever value you're supposed to have Then if you pass in 11 it goes to the same path and you pass in 12 and it goes to the same path And you pass 13 it goes to the same path. You're not really learning anything new So the algorithms in afl and in the the tools that are available are actually quite They're able to tune for that so they can you know They can recognize that you're you're regenerating the same kind of data going to the same paths And so they throw away those data sets and and generate other you know using the fuzzy logic generate other data paths And I can get a condensed set of data eventually that you can use that that fully tech checks all your paths to the code So we use the homegrown tool the advantages that got us to results quicker It's a bit more limited maybe in in how your your reporting is done And it's not and and the data set that you've got is quite random in the end We just randomized all the fields So the recommendation we would have is to use the fuzzing tools rather than homegrown tools You know Use one to get there faster with your homegrown tools But fast track the learning curve by getting help from others in your organization So we have people in it who have used these fuzzing tools before So we're getting some support from them to get up and running and re running the test using fuzzing tools Okay, so I think that's pretty much all I have I guess the main points I want to get across is just that you know Code in the Lillis kernel driver code isn't exactly the same as out pre code You do tend to have to kind of have a mind shift if you're if you're in the kernel and your your audience is the world Then you have to maybe think differently in how you validate How you design things how you implement things to make sure that you're keep making Everything as programmatically secure as possible that you can't accidentally use something in the wrong way And that's you know a good learning from that we've had and that there's plenty of open source tools available to help You to do any kind of validation you need to do Any questions Ready, we do have some online questions. Okay Um, forgive me if I do not pronounce this correctly as well Is qat infrastructure ready to be used by kernel file system will be efficient to use qat for delta encoding compression or deduplication by kernel space file system to accelerate file system operations Um Yes, not deduplication though. Sorry the other ones were data compression So delta encoding compression or deduplication by kernel space, right? So The first one i'm not sure about the delta And not the deduplication but the compression in kernel space. We haven't upstream jet. It's going to be upstreamed Have we sent patches? I don't know if this week we're not there this week. So In the it's imminent We have working versions in-house and they will be upstreamed very soon Okay, okay, and then one more is qat device is ready to be sorry Is the qat device ready to be offloaded? computation I mean access to storage device directly and to execute decompression for example not to use cpu resources So I'm so sorry. Let me see. Yeah. No. I mean it it is so for It sounds like the same question or just a variant of the last question. So is it available? It's our talking about in kernel. Okay, then the entry driver then As again, it you know, we're going to plug in so compression the kernel comes through the linux kernel crypto framework And so far we've plugged into the crypto parts of that But compression also comes under lkcf and we it's on it's It's a compass the api and The algorithm deflate is the one that we're going to expose very soon In the next few weeks, hopefully So yeah, so that that that is available. Um, it is available already in our user space Libraries, so you can access the device if you've got a user space process and use qatlib, which is on github Then that you can access it, but if they're talking about in the kernel then two lkcf patches are coming in the next two weeks Okay, wonderful. That's it from the virtual attendees Okay Oh, okay. We do have time for one question What sort of static analysis tools you guys use and what do you what are the common things you normally find when you run a Static analysis tool on your drivers. Okay, so I think there's coaching l and Sparse was sparse and I haven't used that one, but I think you did or one of the other guys in the team did Spatch And I think there's a third one we use we've kind of pulled down whatever's there and try them Some of the other people on the team the common things we find um You know uninitialized pointers or at least ones that say they can I mean to be honest a lot of times It's not that they're false negatives um, sorry false positives, but that You know you can look at the code sometimes and know that actually you probably can never get to that point But the tool will throw up something saying yeah, I can get you know that there's a false positive here um So yeah, they tend to be fairly quick to fix I mean and they're they're generally that kind of level of pointers uninitialized are Paths not followed through the code or paths followed through the code with some data not initialized before it was passed into it Okay, sorry got to stop now, but happy to take questions afterwards for anyone. Okay. Thanks everybody


Hold on, okay. Glenda, welcome. Oh my God, I think we're ready to work. Hey, techie, techie, I love it. Oh my God. Hi, how are you? Good to see you there. I know, same here. Yes, so on my phone. Yeah, this is way fun. Is it so fun? This is the first. Like, oh my gosh, how we can all connect with each other. This is so cool. So I appreciated the young lady doing a shoutout. Like, I thought Lori would come in. I thought Lori would come in, so I'm like, all right, somebody's like twisting my arm, Lori. Let me see if I could do this. But let me say this. I can tell you that the responses were amazing. And I'm not going to exaggerate, but I know at least 20-something people contacted after that. I love it. I'm still waiting for a new contract. But nonetheless, a lot of folks was just very interested in having. And I think I talked to maybe about five or six of all those people because some of them, their questions were things that we talked about. And so I let them know that because some folks want to be handheld, you and me on real talks or we'll bring real talk. Some people want to be handheld. But what you are doing is providing a means for them to get educated from other people's stories. So they really need to not just listen to it, but sit down with a pen and pad. No different than they would be if they were sitting in a class. Exactly. That's what I do, baby. That's what I do.  And in my case, there were a couple of them, though. They were asking, well, how do I get started? I'm like, no, no, we're not going there. I tell them, don't call my people waiting. Listen, we all busy people out here. We don't have to find them.  Right. And so, but there was a good five people so that I have spoken to one out of Chicago, which was my hometown, a fantastic group of a family. And we had great conversation, and I know that we had some target things that we talked about and we expect to follow up because, of course, I have a huge interest in doing some work in my own hometown. So leaning in on them in that area. But it was outstanding responses because it let me know for real that people are following you. All of a sudden, ding, ding, ding, ding, ding on my LinkedIn. I'm like, whoa, who are you and what do you want? I saw you on Gumpcon. I'm thinking, oh, I mean, and of course, we had such a good time, but they didn't see us because now they can see us, right? They don't even know. And I'll even share this. I have a cousin in LA. He's an actor. He's been doing that basically all his life in real estate. And he said, Lori, that was an amazing interview. I learned so many things about you. And I thought I knew you well. You know? You know, many people say that.  Do you think these people know you? Yeah, exactly, exactly. But if he goes to speak to your level of how you know how to do what you're doing. So you're bringing out what is needed to be said, that needs to be shared. And of course, it's a compliment when they're saying they're hearing things that they never knew before, but it helps to find the individual as an entrepreneur in doing all that we do. So I mean, it's just, you did a great job. You really did a great job. And so I want to compliment you for that and tell everybody they need to follow you. So I'm like, so I was like, what is he doing on here? So I just popped right in. You know, I just showed up on my phone.  Great, thank you. Can you just give your own elevator pitch? Let's see, okay, yes. My name is Lori Sales. I am president and CEO of Civility Management Solutions. We've been in business since 2012 and we're growing. I want to really announce something, but I can't. But we are growing and yet at the same time we are inside of the federal government space. We have a little local as well as commercial work and we're doing program project, financial grants management. We're always looking for teaming partners. And we are in the A&A program as well as being woman-owned and a service disabled, better known small business. So look up Civility Management Solutions and see if there's anything we can do together. Because I love to take your life. By the way, Lori's not a startup company, okay? Lori's got people, she got people working. She's not just getting started. She's not going to graduate, like, I'm trying to figure this out, A&A. She's like, A&A, they going to kick me out if I do any more contracts type of program. And I am so into that. Graduating early, I've said it from the very beginning. I says, I don't mind graduating early because the end result, especially, what's a huge reflection for us all to look at the data and what's coming out in the news is that we as a people really need to strive to do better. And so part of that doing better is that me thinking to be mid-tier size, you know, I'm glad I had that kind of thinking now. I don't think small. And way too many of us that want to be business owners and entrepreneurs, we think too small. Absolutely. You know, keep reaching for the sky and then watch it open up, right? No, I agree, I agree. I go, why would you want to stay small business? I don't know. Why would you want to stay a small business?  We need, look, it's time for to have some old money in our community. What about that? Oh, I like that. Woo! I like that. I like that. Like, I know I like that. I was, we were actually, I was driving my son the other day and it was funny for all those people that maybe it was little Wayne said I have money from 2002 that I haven't seen since 2002. That's the kind of money we need. That's exactly. That's the kind of money we need. Because then we have impact, right? And we have power, we have influence. So how do you think that we can start doing that? Like, what are some of the things that you think we can start doing? Well, for one, we need to make sure that we're hiring talent, you know, for talent, you know, and remove all of the what other people say and how I feel and all of your, you know, judgmental thoughts, you know, you constantly need to be looking for talent. And I'm not talking about people that just come to you as gifted. Because as we discussed in my podcast with you, is that I hired people that I knew had a lot to offer and I trained them up into their jobs, you know, so their loyalty toward the company is that Lori gave me an opportunity. I've grown into it.  And this young lady left the lifestyle of basically homeschooling her kids, even though she had worked in her previous career. She was homeschooling her children and her husband was taking care of them as a family. I brought her in because she was a customer managing the house, the home, the life of her family. And, you know, as operations manager. And so she's been trekking along, trekking along. I was able to give her like a almost $30,000 increase. Because she's handling her business and doing her job. And she is like sitting back going, did this just kind of happen for me? I was like, yes, because you're doing your job, you know, and it's all about finding people that have talent and have skills and opening a door for them, giving them an opportunity.  You're like, that's it. I didn't think you were going to be able to do all that. Now, where'd you find her? How did you find that person? She was a friend. She's someone I've known for a while and we just have been friends. And the better news, she knows how to separate the two. You know, there's a friendship and then there's me being President and CEO of the company. And she knows how to do that as well, which is also to be applauded. But again, she was a grateful person to like, let me just try this. And now she's in here, she's banging it out and she loves it. That's the better part.  Hey, man. I do that. That's some good stuff. I know me too, I'm with you. I do that. Yeah. And so for you to open up those, so that would be one of the things I'll give as a nugget.  And then in the end, everybody's growing. It's not just them, everybody's growing, right? So that's some two cents I have for the day on that note. No, I like that. I like that. You know what? Yeah. I have, you know, one of the first hires that I remember that we hired to help me with federal stuff, like through my market research, was a girl that I met on a welfare to work program. See, well, look at that. That's what's up. That's, that's- And you know what I like about her? Because she didn't have any, the prerequisites that people thought. She did exactly what I told her to do. She learned exactly the way I taught her. She didn't come in with preconceived notions about how to do things. Yes! Right? She did exactly the things that I did. And she was a nervous person. We practiced and we ran through. And by the time you know it, we can leave that office, go to lunch and come back. And she'd be like, Eric, I spoke to a couple of contracting officials today. She don't even know what that means, but she would- I love it, I love it, I love it, I love it, I love it! You know, it's like you say words and you don't really know the name. Like kids, you know. And so she said, I spoke to a couple of contracting officials. And that's when we set the call to get forecast lists before they were put on, you know, the list on the internet and things like that. We had to call and get them. So I spoke to some people, they emailed me some of these lists that you talked about and I have them all here, right here, printed out for you. It's impressive. I loved it, I loved it, I loved it. And that's what it's all about. It really is about that. And, you know, some of the problems that we have in the country is that people want to judge folks in advance and not give them the opportunity. And we definitely, I see somebody wrote down here, coachable, exactly. Be coachable, no matter what level you're in.  And I know when they're talking. Yeah, I'm listening, you know, when they're talking. And I've had one in my life, six of the eight years and now we have a joint venture together that's about to go through, that's going through the process of becoming an 8A joint venture. So we get into land of some technology, work cybersecurity and engineering. I'm on my way into that land now. So it's about sitting and listening though and taking it all in.  You say, exactly. No harm done, you know?  And so, but you have to have a mentor, several. Not just one, because you can wear that one out. You need a few of them, you know? Okay, that actually brings me to a really good question. People always ask, how do I find mentors? People always ask that question. Eric, how do I find mentors? Or they'll say, well, Lori, can you be my mentor? Well, Lori can't be, first of all, Lori can't be everybody's mentor. So don't, y'all don't go behind it, hit Lori up after this call and be like, Lori, I thought you were gonna be a mentor. No, no, to me, I did.  And I said, I am a mentor, right? I put out a lot of content, a lot of information. Yes. All right, like, there's very few people that have actually absorbed all of the stuff we put out. And my goal is actually for you not to catch up. I don't wanna- I love it. Honestly, I don't. In fact, Maria was one of our other guests.  I said, good, that's what I want. I said, I'm doing my job. Yeah, dibble and dabble in it, but you have some great people out there that have come and participated in your show. And so I know that that's only gonna bring about more people. And I definitely need to think about this as the things go with the joint ventures, an interview with my mentor. She would be pretty powerful for you as well. Woman-owned, service-disabled veteran. She was a Marine, aura, you know, so I got a big shot of her, but she's held on now 20-something years. So, you know, that's good nuggets to share to somebody because as you also know, especially people that get into the AV program, they come in, they climb, and then there's that decline and then they're just off and trying to sell their company and old money just went out the window, right? But I guess that's over with. And so, you know, it's wonderful when we have people that get in this business and have some, you know, time, some tenure in it. Yeah, long lasting success. Yeah, yeah, because I'm not in it just for the money. I'm in it to give people jobs. You know, money just flows along with that. That's the good news. No, it's true. You know, I know, I agree with you.  You don't have to worry about the money.  So, Maria said, make sure you center that person. Yes, indeed. Maria said that person. But it has been a pleasure to just drop in on you. This is pretty amazing. No, I'm happy. I, you know, after, obviously, with all the things that's happened, I thought, I requested from Maria, I said, can you give me all my past podcast emails? Because I was thinking about, maybe we should put together our own, like a conference event type thing for our people. Right, we can get together. If you look at my show list, we can put together our own virtual conference. And I have my marketing team that can organize the whole thing, set up the whole, all you gotta do is show up like you did today. I love it. I love it. You know, because like you said, with everything that's happening out here and people are struggling and people are having a hard time, we, you know, we have something to share and we could definitely put together eight to 10 of us and host our own. Motivate people to not give up, you know. Yeah, we can host our own event and give people ideas out here. Because, look, every time I turn to the news, I spend a lot of money. Yeah. And let me tell you, our phone hasn't stopped ringing. Yeah. Yeah, I love it. I mean, our phone hasn't stopped ringing, you know, speaking of joint ventures. We did a joint venture a few months ago with a company. I personally, my company did a joint venture a few months ago and we raised nine figures. Stop, stop it. Yeah. I love it. Woo! That's a shout out. I need to put some hearts or whatever you can put on this. Some stars and thumbs up. That is outstanding. It's a great show of your leadership. Yeah, we know. I mean, we, Lori, we're out here. We're doing this stuff. And I mean, honestly, it is a lot of work. It's a lot of work. Yes, of course. It's a lot of work. But, you know, we're putting ourselves out there. And like I said, even when I do the podcast, we walk the walk. Okay? We walk the walk. And it helps me to also be relatable to the people, right?  I, you know, I go into the meetings. I get beat down on negotiated contracts. In fact, I just, on Monday in my YouTube live, I talked about with one of my guests, he said, hey, sometimes I prefer a full and open bid versus negotiated because they're not cutting down my price, right? Like people don't understand it. Like they want soul source, soul source, soul source, sort of thing. I said, sometimes that's soul source, man. They beat me up so bad on my numbers. I wish I had three, four people to compete against me. You know, the negotiations are so hectic back and forth. But I understand if you've never been in that position and you don't do it every day, right? You can't say that. You can't articulate that because you don't know what that feels like. Only thing you know in here is like, a soul source is just gonna give me something. And I'm gonna get my price and my number. And it's just not. That part is not guaranteed at all. Right. She didn't came and turn my light off. I would have thought she would have turned my light on but she didn't. It didn't darken, dark over. I apologize. It's like you in a club. They tell you to go home. Yeah, no, I know it is. It's like, okay. And then thinking like her entry would open the light up. I think she turned it off. Yeah, but that's powerful what you're saying. And it's true and it speaks to, again, the level of people that you have that want to come on and sit with you and talk through these things is that we all admire you for what you're doing as well as a business owner. And so that's key. Somebody's doing a Instagram for, okay, that's something else. This is also new. I'm like, what is that coming up on the screen? It's new to me as well. So did your new marketing team introduce you to this? No, they didn't. We, no, what they did is they're basically taking all of the content that we have and like I said, putting out to all the platforms. They're taking like clips like from you and then they'll grab, they're grabbing content that we said, messages that we talked about, maybe a quote from you, put your picture with a quote and then put it out to people so that people can identify with that. A lot of times, and again, we know how it is right now, right? Everyone's buying for your attention. And it's hard to sit through an hour conversation. But if we grab two or three minutes snippets, four minutes snippets of something that was pertinent or relevant at specifically, again, like at this moment. So I'll give you an example. Michelle Burnett from the Hubsone Council, they grabbed a snippet of her saying that I like the Hubsone program because of its equity and equality. Think about how powerful that is in today's time. Right now. She said that last year, like a year ago. But- That's powerful, you're right. Right, but to grab that now and insert that into today's world, right? Something she said over a year ago, that's what they're doing. And that's what's happening. And what's powerful also about what you're saying on the flip side of that is that this showing the necessity for having a team to help you get out your message, to help you promote what you have to offer is if you're not able to do it on your own, I mean, if you're able to do it on your own, first of all, to start off your business, you must. I mean, I was doing it all.  If I, I mean, whatever I was doing, I showed my activity as the presidency of Civil Engineering Management Solutions. And now we've gotten to a point, we just brought somebody in, she's been with us about a month now. And I'm just amazed at seeing some of her work. I'm like, wow, that sure is a lot better than the stuff I was posting. But you know, because I've gotten to a point now, that doesn't need to be part of my day of putting all that stuff out there. And the good news is that we're doing a lot of stuff. And so you wanna get the information out because this is a way of marketing. It's not gonna change. No. It is here to stay. I mean, if anything, they're just gonna keep advancing it like what we're doing like right now. This is gonna keep growing. But you're making a valid point for those that are in business, as business owners, you have to be out here putting your face and your name in the place. Otherwise, people don't know who you are. No, I know. I'll tell you something interesting also that we brought up. I asked one of my guests, he's an Alaskan native.  And it was so funny, Lori, right? He goes, you know, when I used to go to the conference, we could sit around, look at the room, see who's there on business, who's there to get off the office, right? Who's not interested, who's on their phone. He said, I can look at my competitors if they're talking to the agencies, right? You can look at that and see who's doing the one-on-one sessions. You can see which agencies, nobody's at their table, you can run over there. But on the virtual side, right? It's a much harder to do than it would be, right? I have done a few things and it's a little bit challenging.  You know, you're like, turn the volume up, turn the volume down. You don't know which way to go but you're trying to hold on. It's like, I need some life to come across. So that could be a little challenging, but it's about staying focused, right? In the end, do you need that information? Then sit there and endure it and believe for the best and try to get some information at the end, like names, phone numbers, contacts. Not often. And hopefully that's listed at the end. You're waiting for the end. And then of course, the other value is you can get to them later because they're recorded. I like that part. That's true. I'm slowly fading away.  And I really believe that this woman, she did.  She turned my light off. Yeah. The cleaning lady came in the office. Yes, you know who I'm talking about. I'm trying not to say nothing. I'm not trying not to say it. I'm trying to say the cleaning lady and jacking me up. But yes, she turned the light off and said bye. And she can see I'm sitting here looking into a phone. By the way, I don't think anyone notices that Lori is still at her office. Oh, yeah. Did y'all notice that, ladies and gentlemen, where people over here talking about, oh, you can do four hour work weeks time. And don't get me wrong, I like my wife Tim Ferriss, but Lori's still at her office. Yeah. Get me there, exactly right. And need to get off of here with you so I can get out of here because I got a couple more projects. This was the unexpected part of my life. This is good. This is good. It's wonderful. Again, I'm proud of you unless somebody else jump on and share some wonderful stuff and let some follow up. Talk to you soon. Hey, don't forget about my idea. We're talking about putting together something. Just let me know. Email me. I'm all in. All right. Thanks so much. Hey, Maria, hit Lori up for her contact. That's free on the show. OK, great. And now, X out. All right. Yes, I'll ask you out. All right. That was good. That was a good first start. I like it. I like it. That was a good first start. Love it. Good stuff, man. Yeah, no. If you have not already heard the podcast, but Lori Sayles, she's pretty amazing. She came out of a high regard. And she has a fantastic story of how she started her business and built it up. So definitely that was a good first run at my IG live. I like it. All right. Let me know. Who else? Who else is out there? What else we got? What else we got? Yeah, Lori is in the office, man, getting it in. I was in the same position two weeks ago. We were in the office as well, cranking, cranking it out, cranking out, and finally. And for me, the Navy had some extra money. I'll share it with the store, because I don't think I shared it. I shared it inside my private group, but I'll share it here. By the way, if anyone has a question you want to jump on, just let me know and we'll bring you in the chat. But yeah, a few weeks ago, the Navy reached out to me. They even had some extra money that came down. And literally, they called me and said, hey, we have some projects. Are you interested? And it was fast turnaround. We had to put together the numbers and weeks, like literally weeks. But at the end of the day, this was the month of June. We ended up negotiating like $7 million in projects.  And now, we're getting closer to the end of the fiscal year. So I don't even know what else is coming up between now and September. I can't wait, because the one agency that we did about $5.5 million in negotiations last month says they got more stuff. That was not part of the end of the year budget. I thought it was the end of the year budget. But it wasn't part of the end of the year budget. So it's like, all right, well, what else they have coming on? So I understand what Lori's going through. And this is one of the reasons why, back in 2007, 2008, I learned that, again, when the recession hit, I was in the midst of the recession. I was bleeding money. In fact, I remember my girl at the time, she called me a money pit, because money was just going out the window, going out the window, going out the window. And I remember, I think, I made, I don't know what it was. It was like right about $100,000. And I was upside down. Like, I was literally upside down. I couldn't pay my bills, even with $100,000 in income. So that's when I made the decision to come over to the federal marketplace. And obviously, today now, when the economy fell and the recession happened, all this stuff, we're actually going full speed ahead, right? We're actually putting on the gas, as opposed to putting on the brakes. I'm investing money, putting money out, we're starting new projects, we're winning new contracts. We're hiring people, bringing on people. And that's the same story that one of my podcast guests recently we talked about just on Monday was the same thing. He was in that same market when it crashed. He switched over to federal around 2010. And everything's been up. And during this particular pandemic, he actually hired five people as opposed to having to close his business. So another thing, by the way, again, anybody wants to jump in, talk, ask questions, we'll probably run to nine o'clock and then I'll jump off. And again, if you've got to go, I understand, we'll be back next week at the same time. So if you've got to run, that's fine. Another thing that's happening that I want to just kind of let people know, the last time when the recession happened in 2007, 2008, the state and local agencies, right? They took a really big hit financially.  The states are struggling to pay their bills. The cities are struggling. They actually are asking the federal government to bail them out and to give them funds. And we're not gonna make this political, but Mitch McConnell was quoted as saying, let the states go bankrupt. So I just want to be warned, everyone out there, be very aware, be cautious when proceeding with a state


The narcissist cannot hear you, they don't pay attention, they don't make an effort to hear what you're saying, they don't respond to your advice or request, they are very unattentive, they are unable to attend to your comfort or wishes, very inconsiderate, they thoughtlessly cause hurt or inconvenience to you, no matter how clearly you speak to them or how valid your opinions may be, it feels like they are incapable of hearing you, when you speak to the narcissist, it may seem like they are listening, it may seem like they are taking notice of what you are saying, they might even be looking right at you, but then they respond to you with something that has nothing to do with what you just said, it's like you're having two completely separate conversations, this is a real problem for people who are in relationships with narcissists, it leaves you without any opportunity to state your case, the narcissist cannot hear you, so you feel as though you're never being heard, you feel as though you don't even exist in a relationship, existence is the ability of an entity to interact with physical or mental reality, it is the state of being known or recognised and when you are left without an opportunity to state your case with a narcissist, when you're not being heard by them, you lose that ability to interact with a physical reality, you feel as though you are not known or recognised, like you don't even exist, even the narcissist is unhappy, disappointed or worried, this will determine how much they are able to listen, if they are really upset, there will really be no point in talking to them because they will be completely unable to hear you, you may think that this is done consciously and intentionally and sometimes it is, but it's also because their emotions are so overpowering that it blocks or denies everything else, sometimes it may seem like they're trying to change the conversation or they're trying to ignore what you're saying and sometimes they will do this if you're not validating their false self or the illusion that they are trying to portray but often they are not even hearing what you are saying, they are not even capable of listening to you because their emotions are so overwhelming and this leaves you unable to state your case, this leaves you unable to be heard, if you look closely into the narcissist's eyes you may notice that they're not even paying attention, you may notice that they're not even listening to what you're saying, it can often seem as though they are listening to someone else that no one else can hear and actually they are, they are listening to their own irrational inner critic or inner dialogue and the intense emotions that come along with it, they cannot hear what you are saying, they cannot listen to you because what you're saying is an important, what you're saying doesn't have any significance to them, what does have significance or importance is their feelings, they see their feelings as facts, they cannot view their feelings in a way that is not dependent on the mind, they cannot view the situation in a way that is not influenced by their personal feelings or opinions, they cannot identify that their feelings are temporary reactions that may not be logical or reasonable and that is why they see their feelings as factual, however they feel that then becomes the truth, rather than reacting emotionally to the facts, their emotions become the facts, an emotionally balanced person would not feel unhappy, disappointed or worried until something has happened or until something has been done to them, but the narcissist already feels this way, that is why they believe that you must have done something to them, you must have done something to them to cause them to feel that way, this occurs because they have spent their entire lives dissociating from their feelings, they have spent their entire lives avoiding any self-reflection or denying how they really feel, this was something they used as a coping and defence mechanism, rather than owning how they really feel, they chose to project their feelings onto someone else, so now they see their feelings as coming from other people, however they feel about themselves, that's how they think you feel about them, if they feel a hatred towards themselves, they see it as though you hate them, they cannot identify that their feelings were already there, they cannot identify that their feelings have nothing to do with you or the situation and this is why they become triggered so easily, this is why they are so easily offended, because any little thing you say or do could potentially arouse feelings or memories that are already there, it's not because of anything you have said or done, it's because what you're saying or doing is associated with a past traumatic experience of theirs, but then they blame you for making them feel that way, although that's how they already felt, it's just that they were denying those feelings, if you bring a fault or mistake of theirs to their attention, the shame that they already feel will then force through their denial, and even though their feelings of shame have nothing to do with you, it may then trigger them to lash out at you, but they don't see it as though they're attacking you, they don't see it as abuse, they believe that it is justified, they believe that they are acting in self defence, because in their minds you were trying to hurt them, you were trying to make them feel bad, this is all going on in their minds, it has nothing to do with reality, it has nothing to do with what you said, it's because of their shame, you might have meant no harm by saying what you said, maybe you thought that by bringing it to their attention you could be helping them, but once you have brought their deep rooted shame to the surface, there is no persuading them, there isn't going to be an understanding, they're only going to listen to what their feelings are telling them, they see their feelings as facts, they're not consumed with any evidence that conflicts with their feelings, they're not interested in anything based on or in accordance with reason or logic, the only thing that has any significance or importance to them is their feelings, no different to an emotionally immature toddler, they are very weak fragile people, they don't want to deal with the truth or reality of the situation, they would rather exist in the safety and security of their own little fantasy world, where they can use their imagination to use objects, actions or ideas to represent other objects, actions or ideas, and assign roles to people or inanimate objects, they live in their own little bubble where people and things could be whatever they want them to be, and anything that does not validate their fantasy is bad beneath their consideration, anything you say or do could potentially pull them out of their fantasy world, it could potentially pop their little bubble of magic and make belief, and that is where they become hurt or offended, however they feel dictates their reality, rather than their reality enforcing how they feel, and since all they ever feel is misery and pain, that's all they ever experience in their reality, it's an ongoing cycle that never ends, and they can't figure out why, everything is interpreted through their feelings, and your actions and motives will be reframed to suit however they feel about themselves, this is why they always assume that you're against them, they always assume that you want to do something wrong to them, they're very suspicious of people, they have the idea or impression that someone is questionable, dishonest or dangerous, because they take things so personally, and they believe that everyone is out to get them, this is why they will often accuse you of hating them, or wanted to hurt them, they will accuse you of things that you didn't say or do, but you cannot argue with them, you cannot give them a cause, explanation or justification for an actual event, because they do not think, understand or form judgments logically, their thoughts, understanding and judgments are formed by their emotions, they cannot hear what you're saying, all they care about is their own feelings, that's all that really matters to them, most of the time they don't even understand what they're saying, so how could they possibly understand what you're trying to say, when you're arguing with a narcissist, you're trying to talk them out of their feelings, when their feelings are not based on any logical reason in any way, it is not possible to talk a narcissist out their feelings, even if you try, they will only feel as though you were trying to manipulate them, they're not going to believe you, they don't see you as being reliable or truthful, they cannot put themselves in a position where they could be tricked, they cannot put themselves in a position where they might be wrong, so they have to completely block out whatever you're saying, and at times it can seem as though they're completely delusional, you could have all of the evidence in the world, but they will still twist it around and betray you as the bad person, evidence does not matter to them, logic and reasoning does not matter to them, all they really care about is their feelings, they are very weak fragile people, would rather live in denial and to accept that they are wrong, and that is why they cannot hear you, that is why they cannot hear anything you say that invalidates their false self or the illusion that they are trying to portray, being in a relationship with a narcissist can be very confusing, you could often feel as though your opinions and ideas do not matter, you can often feel as though it doesn't matter what you think or how you feel, it's like the only thing that matters is the narcissist's way of seeing things, and this could be very invalidating to you, you feel as though you're not being heard, you feel as though you don't even exist in a relationship, because it's not really a relationship, a relationship is the way in which two people are connected but they're not connected to you, they're not connected to your thoughts or feelings, your opinions or ideas, they don't listen to you, they don't care about what you want or how you feel because they're self-absorbed and they lack empathy, thank you for watching, I hope this video resonates with you, please like, comment, share and subscribe, click the bell icon to receive notifications for my future videos, if you like it tonight, my PayPal link is in the video description, coaching inquiries you can email me at nagsforvacoachin at gmail.com, thank you for watching and I'll talk to you soon


Hey guys, here like a boss here, Daniel Techo with Matt Backout in here in Pennsylvania for free salon education. We're going to be going over my whiteout process and what we'll be covering is integrity of the hair, why or why not to take clients, and formulation when you are done full bleach process. A lot of my followers always ask questions on why or why I don't take certain clients because the attraction to my page is the white hair. What I find is that at a level seven and above is where you'll obtain that clean healthy white hair in one session. In 90% of my clients, as far as most clients, they want their hair to be done in one process. Can it be done at a level two and above? Sure, but you're gonna have to do a double process. So the number one thing I look for is integrity of the hair and if I'm going into the hair and it has a lot of correction going on, then I usually won't take it due to the fact that this is only lightening and if you have many bands in the hair, 90% of the time you're going to still have banding. So when I'm talking about white from the root out, I'm talking about white only from the root out. And if you have a lot of correction going on, it's never going to happen. I've failed and learned that it will not happen. To start my process, I always go over the canvas. I always look through the hair. I make sure again, integrity of the hair is there, the clean from the root out. So say if she has a whole bunch of highlights going on, then more than likely when I go to lighten the whole hair, she's still going to have highs and lows. That might be an issue down the line. It might not be. The second thing I will do is clarify her hair. If I feel like she has product in her hair or if her hair is the type of hair that I need to have wet saturation, then that is something I do. Do I do it all the time? No. But by wetting the hair and letting the hair clarify, it lets me to have the sanity to know that the hair is clean, has no mineral buildup, has no alcohols on it, has no gel. It is clean, damp hair for me to go in and do an extensive lightening process. To start my application, I will section into four sections, front, back, just the typical hairstylist four sections. I have the whole back section and then I create sections out of that area. The tools that I tend to use is a color board, a wet brush, and give or take one of the combs that have teeth on one side and a comb brush on the other side so I can brush through to make sure the saturation is even throughout. I went with a bigger bowl because I always found myself moving and having to mix up new bowls. So if this bad boy will hold comfortably about 10 ounces total of lightener and I believe those little bowls, average bowl color bowls hold maybe six ounces. Those four ounces are going to help you finish a whole section of like the head.  So approaching each section, the main thing that you have to be concerned about is saturation. Saturation is key to lightening the hair. The hair wants to absorb all the product that we put onto it. About half inch sections as I move up and then I'm staying about a half inch away from the root and just going through and really making sure the hair is soaked with the lightener. So the foils I like to use are a heavier based foil so I have more control. They almost act as a barrier and a board for me simultaneously so I can move up the head. I like to section probably about every two to three sections going up. I like to incubate it somewhat. The foils that you see me use there is actually a paper side and a foil side, aluminum side. Obviously we know that aluminum creates or generates heat, incubates if you lock it up. I do not use heat or the aluminum side at first because I know that the back section is going to be sitting there for the longest period of time so I don't need to have that heat work. I know the lightener and my saturation is going to do that for me by itself. So you can see my client's starting level is about a level seven, virgin. So I usually go to a 20 volume just to be safe on the hair because with the short top blonde me I've used it for so long that I know 20 volume is going to get me to a level 9, 10 with no problem. So I like to start off with just the amount that I know is going to allow me to cover the whole back of the head with 20 volume and allow that to sit and then moving forward I will mix up a whole new bowl of lightener at about a level maybe 25 so I'll mix half 20, half 30 and bump it up slightly just to catch up to the back section being at 20 volume. So once I finish the back now moving forward to the front I will then see almost like the hairline so a lot of people have different recession in their hairline so I like to keep my application in a very much of like a row. You'll see me separate her front section to her row of her hair, the mid row of her hair which I call the front still and I just like to make sure that the section is very clean and organized so I can just move up the head to keep the speed at the same rate rate I guess you'd say. So I just move to the front same type of application I just reassess her recession to her hairline. Here's the tip when you hit that front of the hair you want to really analyze and look at the client's hairline so all along here we all have a recession so you don't want to be trying to pull these little hairs to the side so what you have to do or you'll see me do is clip almost her money piece area because the the shape of the head is getting wider as I move up and I don't want to compensate or pull that hair in I just want to leave that hair out so you'll see me moving up the hair and then going back to the very end and doing like foils going forward just to make sure I go directly into that hair. So now the whole head is covered in lightener what do you do you have to reassess the hair is or the lightener is closer to the scalp what's going to happen is going to generate heat with that heat the lightener is going to work faster so you have to what I do I go through and now that I have the foils I can open and close a lot easier you or I like to take and run my the saturation from where the scalp or closest to the scalp that is warm and is already getting to that level nine inside banana pale yellow and I will pull that saturation down that is warm and run it over the ends because the ends aren't closer to the root so it's not getting that heat to allow it to lift evenly so I reassess and reapply towards the end of the hair shaft to bump it up so after making sure the whole head I take all the lightener from the root area drag it to the bottom I let that sit for about 10 15 minutes I check them sometimes I use heat sometimes I don't again this service in this process is very customized to what that client's hair is going to do you just this is not uh something I write down I hand it to you and you just do this exact situation it is you have to babysit it after I let it sit for about 10 15 minutes and assess that the fact that everything is now even from that half inch root out to the ends then I will go in I will remix 20 volume lightener again and start doing the root and after I apply it to the root and good saturation like dripping saturation like lightener is going to be flying it should be then I will let the client sit again for another 10 15 minutes I might do heat for the first five to 10 to really kick up the lightener and have everything be even after that five 10 minutes I really reassess make sure we're at that level nine that the whole head is at and then again I will let everything sit for full for another 10 15 minutes depending again on what I see so once I find that the client is even level nine 10 uh from root out I will obviously bring them to the bowl shampoo them nine out of 10 times I will use a very uh pigmented purple shampoo tips and tricks little things that many people don't do um bottle applicator I use a bottle applicator for toning but mostly what I do is at the sink I will put the purple shampoo I'll put about this much warm water and a good amount of purple shampoo just mix it up instead of going to the sink putting globs of light or shampoo on your hand and then just like kind of you know how we do we just pat the top of the head and hopefully we saturate the whole thing if you have it in the bottle applicator then you can smoothly go from root to ends and you can apply directly just like you would a toner from from the root of the head to the ends of the hair uh that is just something I learned I picked up because it didn't make sense to me as I was shampooing clients I felt like I wasn't getting even saturation throughout the whole head because of a lot of our purple shampoos are very dense and thick so it wasn't I wasn't able to confidently know that I got full saturation of our whole head even saturation of that purple pigment in less time the purple shampoo allows me two things obviously it's going to tone as it sits with that purple pigment but it also allows me to see if that hair grabs uh that's something I learned from using the purple shampoo if that hair grabs that purple or violet hue then I know I can't go into her hair shaft with a lot of ash because it's going to grab dark like not dark but it's going to grab gray or hue I don't want and white oddly enough has a lot of gold into it if you put ash that's why and every and everybody ends up with like gray silver flat color because you have to have the gold you're taking out gold from the hair when you're lightening you have to put it back in to have a happy medium uh so when I see the hair grab that tone I know to mix up maybe 10 10 g maybe 10 n maybe 9 g maybe 9 n in my formula along with like a violet or an ash it again formulation is all custom to what is going on uh at that point in time to give a formula I could give you favorite formulas but there is no formula I'm going to give you that's going to nail your client every time so now we've we've told the client at the sink with the purple shampoo I analyze the hair I see that it grabs nowhere the hair is in great shape not porous at all pulling no tone so I bring her to the seat uh bring her to the chair sit her down and then section front to back again now after I've mixed up a toner that is heavily I would say it's more of like a pearl violet that I'm going to be using on her I will section again front to back and apply from root down the root is always the area that I'm worried about first because the ends I can either pull down that color or blend it in or saturate again with the remaining color but the root is the area you need to saturate the most because obviously that being at the scalp it could either create spotty work uh poor saturation will leave bands like where you could either have yellow hair or perfectly pigmented white hair uh saturation is key at the root so I always go heavy at the root and if need be I will pull that light that color down that toner down and then reapply but I always mix up more like if I have no color in my bowl after I've done my process that I'm scared that I didn't have enough product product I always make sure to over mix lightener toner whatever it is I'd rather know that I'm throwing some away opposed to not putting enough on so now that I have her whole head covered in toner this is when it gets scary the number one thing I learned with toners is do not take them off prematurely even though you're freaking out and every bleach out that I do every wet out that I do I freak out every time because you do not know if it's gonna be white underneath that violet that blue that purple tone that you're probably gonna say uh so do not remove it until you get scared that's the number one tip that I would say wait till it gets scary because once you rinse it off you're good trust the manufacturers rules everybody that's attempting even the service should have very strong knowledge in toning anyways before you attempt this um but the toning aspect is scary and it's always gonna be scary no matter how good you get I'm scared every time so another tip of toning if you are scared and you want to push a little bit more but you're not sure when she's at the sink since you have the whole head saturated just take a little section from the very bottom of her hair wherever the bottom may be if she has long hair short hair medium hair just have good lighting over the section where the sink is and just rinse out the ends and assess like what you see from rinsing off the toner at the ends because you can still if if it's not ready you can still then go to the top of the head and because you have good saturation or you should you should be able to pull that toner back over and reapply toner over that section that you just took off the hair and depending on what you see you can either rinse the whole head because you're happy or pull that toner back over to re-saturate and re-tone that area that you just removed so now you can see our end result clean healthy strong shiny white hair from the root to the ends and in a matter of an average about three to four hours depending on assistants or no assistants thank you for your time thank you for your support uh hope i gave enough tips and tricks or knowledge for everybody to go out and start banging out their own perfect white hair if you guys ever have any questions something that you're trying that is working out for you that you can help me i'm still learning so i think this is always about and again what matt's doing here with free salon education it's just all of us having each other's back and having this community community that we can share knowledge we can go back and forth through each other because something i might do is is what you might not be doing but you might have a trick for me so if you have any questions or concerns hit up here like a boss and i'll get back to you within two three days oh wait i have an app go download made emergency it is going to be the best thing to hair since sliced bread does that make sense yeah we'll go with that either way the purpose behind made emergency was the emergency factor of cancellations the original idea about this app was a push notification that all your followers would get say you have a cancellation you have no way to reach out to people and that is money lost uh this app will allow you all your followers to get a text message saying hair like a boss is availability at nine thirty you can call or text to take that advantage of that appointment if we don't fill our cancellations average cancellation i would say about three a month uh say two fifty appointment so with that amount of cancellations you're probably going to lose about eight thousand to nine thousand average a year that's with three cancellations at two fifty the next thing is consultation so it blows my mind that there was no app or no function for a client to hit you up in book an appointment with you and already provide what their hair looks like and what they want all of us say text message me your pictures of your hair then we have to wait or we ask for emails there's just too many steps so what my app offers is this immediate knowledge or indication of what this client's hair looks like and what they want so when they go to book to book you for that either partial highlight or partial balayage or partial baby light but then they're showing you a full picture of a full head baby light then you can go back and reassess or or give that information to that client and right fit them into a better appointment so both you as a stylist and them as client are happy so obviously a booking app will have for scheduling scheduling on this app is much more organized i would say and understood one of the apps i was using before just let clients book whenever they wanted in any spot without being having a confirmation from me my app allows the client to go book but it is simply a request they know that they do not have that appointment yet that you will get back to them you send a confirmation text to them after again seeing what their hair looks like seeing what they want and if the time frame they selected in that scheduling works for them and if it doesn't you could easily just meshes them back and say hey you're looking for this but you're you're yeah you're requesting this but you really need this much time say an extra hour and a half so you have to right fit that client so stop wasting time go download the app the app is available for both the android systems phones and ios so android samsung iphone being ios so it is available for both platform it's free for just search engine just being on the app and if you want to utilize all the functions which i highly suggest it is 25 a month thank you have a good day


What makes for excellence in heart care? It starts with one of the most amazing teams of heart surgeons and cardiologists that I've seen assembled under one roof and the region's leading technology in a new $40 million facility. This is the nationally recognized Heart and Vascular Institute of Eastern Kentucky at Pikeville Medical Center. With the Super Bowl just around the corner, many will be looking forward to watching their favorite teams and partying the night away. However, some tend to get carried away and mix alcohol with driving, becoming a threat to anyone on the road. Pikeville Police Department has some advice for those considering driving under the influence. DUIs are the most avoidable thing you can do. Just don't get behind the wheel of a vehicle or any machinery while you're impaired with something like that. So as a police department, we just want people to make wise decisions. Stay where you're at. The host, who's ever hosting the party, needs to make sure that they have a place for people to stay or keep people at their house, get people and they're partaking in alcoholic beverages and they're watching the game and they're going to eat and they're going to have a great time. Don't end the night with a collision, a fatal collision or anything like that. Pikeville PD's objective is to spread awareness and keep our roads safe. Conn advises those who are unable to drive to either stay put or have a designated driver. Make arrangements before you go. Taxi services, there's friends, there's family. If you think you're going to do that type of thing, make arrangements before. Say, hey, you know, I'm going to be intoxicated and I don't want to get behind the wheel of a vehicle. First wise decision. Second one is this. Custom make them get you or stay there. So that's what we want you to do. Don't get on the roadways.  Destroy your car, things like that for no reason other than drinking and driving and that just that's unexcusable. So we see fluctuations with it up and down, but the last few years, a lot of people have used a lot of common sense and they've stayed where they're at. They stayed home. Let's keep it like that. Let's keep, let's keep the roadways clear and have a good time and watch your favorite team win or lose, but just make wise decisions. So reporting from out in top news, I'm Nick Colum.


Hey guys, so we're here in Somamedh. I'm here with the Wart training for some special tests and The place is pretty much unrecognizable Someone took down all the bushes, so it's a completely different track and actually the course itself is completely different It rained the whole week, so it's super slippery, so let's see how the training goes Back wheel slipped off So that's it for today. Hope you liked it. It was a pretty fun day And don't forget to subscribe, like, comment and most of all give me your feedback about the videos, okay? Cheers


Hello, and welcome to ST's booth at PCIM 2023. Today I want to present you our solution for heat pumps. To tackle the abundance of fossil fuels and thus to phase out of oil or gas oils, a new way of generating heat is needed. One possibility is to use the heat pump principle. Of course, the principle is not new, but what's interesting is its fast penetration to the heating market. Heat pumps are complex and contain a lot of electronics, and their performance is a key contributor to system efficiency. Space and time to market are very important factors for competitive heat pump design. On this part, we are showing a reference design consisting of an active PFC, a compressor inverter and a fan inverter. Now, to reduce the inverter size, the compressor and the fan inverters are based on our intelligent power modules which are known as SLIMP. These intelligent power modules contain power switches, gate drivers and protection to drive a three-phase motor all in a single package. This integration greatly reduces time to market. They are equipped either with IGBTs or MOSFETs. In fact, ST has a wide portfolio of SLIM IPMs between 600V 1A up to 50A and in 1200V to optimize performance for each application. OK, let's talk about the other features of the demo. The interleaf-tooth PFC is based on our H-Series IGBT and PASS diodes. The PASS-tooth PFC IGBT combines our high-speed silicon-based diodes achieved very high efficiency. The PFC and the two inverters are controlled by only one STM32 microcontroller. Beside these products that have just mentioned, ST has a wide portfolio for power management, analog and digital products that complete a heat pump design. If you want to find out more, please contact your local sales office or ST distribution. Talk to you soon!