So thanks for joining this micro-kernel-devroom today. I'm Noman Feske from Genote Labs. And I want to go into a pretty technical topic today about the work that has been conducted over the course of the last year, which was bringing Genote OS framework to a state where we achieve binary compatibility between different kernels. And I want to explain to you how this works, but also the motivation behind it. So for the talk, I first want to motivate why we are actually pursuing this kind of multi-kernel framework. Why don't we just stick with one kernel and optimize our operating system for one particular kernel? So what's the benefit that we think lies in this kernel diversity? Ah, OK, welcome. So the next part will be about the kind of key realizations from our side that allow us to do this, to be independent from the kernel, but still leverage their different features. And those kind of challenges are related to these areas over here. I will go into each of those areas. And then I want to give you in this third part more insight into this kind of more recent work from going from a uniform application programming interface to a uniform application binary interface. And given this new perspective, we can look into the future of what becomes possible with this. So first, why do we really want to have multiple kernels? So to be honest, this was not a plan that we laid out. In the beginning, it was more like a necessity. So when we started the project, not when we started the project, but before the project was started, in 2003, security suddenly became into the focus of the L4 microkernel community. Before that, the L4 community was more focused on experimentation, how to get L4 really fast, and host Linux on top of the L4 kernel, and also concentrating on real time. But security was not the main focus. But in 2003, this changed. And in particular, this changed because of a kind of visit of one of these capability security experts in the field. Jonathan Shapiro visited the L4 community and gave us talk about capabilities and about the benefit of the local names, opened our eyes about storage channels, and so on. So we immediately grasped the benefits of the capability based security concept. And this kind of inspired a bunch of new kernels that have been developed since then, a new generation of kernels, actually. And GNOT started as the designated user length for one of these kernels, the NOVA kernel. So the NOVA kernel was the ideal combined microkernel L4 philosophy with virtualization, with capability based security into one kernel, and GNOT was meant to be the user length for this kernel. But when we started, there was no NOVA. So NOVA did not exist. There was just ideas in the heads of Udo Steinberg, but no code. So how to build a user length for a kernel that doesn't exist, that's really a hard question. And so this situation forced Christian and me, basically, to plan in terms of multiple interim solutions. So we want to eventually become the user end of this future kernel. How can we remove stop gaps or stumbling roadblockers, basically? And the approach that we took was we decided to target two different kernels at once. So since we did not know how NOVA would look like, we assumed the worst, basically, and tried to come up with a user length that works with really two opposites ends of kernel philosophies or kernel designs. On one end, we have Linux, monolithic kernel, where the kernel is scratched, executable from a file system, where our memory management happens in the kernel, where you use sockets to communicate, and so on. And on the other side of the spectrum, we use an existing L4 kernel, the L4 flasker kernel, that is completely different. It uses synchronous IPC only as a mechanism that has a page fault protocol in the kernel. So pretty much the opposite end of Linux. And we figured that if we managed to somehow accommodate both of those kernels with our user length, we should also manage to later fit it in with NOVA. And yes, this was actually quite surprising how well this worked, actually. So after just six months, we came up with a prototype that worked on both Linux and Fiasco. And we had graphical applications that we could play with. So this approach actually worked. And we found that it was beneficial in several other respects, other than just removing this road blocker. We found that it quickened our development cycle a lot, because when developing on Linux, we can just use it, start a genome subsystem as a Linux program or a bunch of Linux programs, use GDB for debugging, and use all the convenient Linux utilities. If we go to the hardware, for example, if you have the device driver, we can use the cozy and nice kernel debugger of the Fiasco kernel, so we can use multiple debugging tools that could otherwise not be used in combination, for example. It also stressed the robustness of our own code, because the kernels differed in so many respects. So for example, the scheduling, how which thread is executed, or at which time. This kind of different behavior uncovered some kind of bugs in our code that would remain undetected otherwise. And when it comes to performance or strange behavior, sometimes you want to kind of investigate performance problems. It's always nice if you can execute the exact same components code on a different kernel to see whether the performance difference comes from the way the kernel manages resources or the way IPC communication happens, et cetera, et cetera. So it gives us a way to cross-correlate the behavior of the system between different kernels. And it let us think about user-level requirements. So at the beginning when we started our work, we had not a big idea of what the application-level requirements really are. There are so many applications you can't know, really. But with talking different kernels and seeing how different kernels solve various problems, we somehow got a grasp on what the actual problems are, not just how the solutions work. And obviously, there are many different micro kernels not just for fun, but also for very, very good reasons, because there are very different requirements. So different hardware platforms, for example, also hardware features in some areas, virtualization support is needed, and in other areas, some other things like trust zone, then the kernels have different kernel interfaces, different scheduling policies. These are different security models. And of course, the implementation quality varies a lot and the community behind the implementation. So there are many, many different aspects why kernel exists, why multiple kernels exist. And let's face it, if there was one best or fitting microkernel, this wouldn't be micro anymore. Yeah, of course, it would contain everything. Okay, so the question that always comes up with our kind of feature that we support multiple kernels is how do you manage to maintain all this stuff? So right now we are maintaining support for eight different kernels and some of these kernels are more like historic artifacts, but some of them are pretty recent. And the answer is quite nicely expressed by this slide. So our team is responsible for this code base. So it's a quarter million lines of code that we have to kind of nurture and maintain. And if you look at the kernel-specific code, for example, code that we specifically developed for the Linux kernel, it's just a tiny, tiny fraction of this, like a 1% or 2% or even less than 1%, like in the case for the old fiasco kernel, it's just 1,500 lines of code. And everything else is just completely independent from the kernel. So from the maintenance point of view, that's reasonable. So we can maintain the 10-year-old fiasco kernel for Geno, that's not a big deal because we only have this kind of 1,500 lines of code we have that needs to be maintained. Here in this table, the last number is interesting, the space HW kernel. This is not just the Geno-specific part of the framework, it also contains the kernel code. For this reason, the number is higher. And with kernel code, I also included all the drivers for the different boards, the all the board support packages and tests and so on. So for this reason, the number is a bit higher because there's much more substance in there. Okay, so from this point, from this realization and from this kind of success story from an engineering perspective, we came to a kind of new light motif from a project perspective. So we figured Geno has the potential to become something like projects for monolithic systems. In monolithic systems, you have one unified interface that is targeted by all kinds of applications and those applications can then move from various project systems from one to the other. And with Geno, we can actually build the same kind of notion to have one common ground that could be targeted for applications or components. And those applications could then suddenly run on all the different microcronals. So one example, on Geno, we have now around, let's say 400 different components. And once we enable the support for SCL4 in the last year, all those components, including device drivers, wireless support and all these kind of nice things, they can be executed on SCL4 suddenly. With just writing 3,300 lines of code. This is, I think, quite nice. So this is the vision that emerged and this led to this decision to cultivate this kind of feature. So first, I want to show a bit what are the key aspects of reaching this nice interoperability. So one thing is that we started with just throwing out some assumptions that we found inconvenient. So I don't cite the air invalid, but we found them inconvenient and they somehow clouded our view. So first, in the L4 committee, that's where we came from, everyone was obsessed with performance and scalability.  This was the killer application of L4. And people there are writing papers and papers around optimizing these kind of things. And so if you come up and say, ah, I'm adding a virtual function in this kernel, in this IPC fast pass in the kernel, they would go mad at you and we thought, oh, this is really getting too, we don't want to justify everything in front of these kind of concerns. We just say, okay, scalability performance is fine, but we are addressing this later. POSIX is the same thing. So people expect POSIX because they have so many applications that are based on POSIX, but POSIX has a lot of things that are really ugly. So for example, re-entrant mutex, things like that, where even the creators of these abstractions confess in hindsight that this was a big mistake. And there are other things like thread-local storages or the POSIX thread API, which is full of legacies and full of compromises and we don't want to deal with all these kind of problems. So let's discard them for now. Thread-local storage, we had this topic now in Martin's talk. Martin, ah, Martin. It's a pain.  Thread-local storage is something that goes behind the back of the language. Access is some GS register, picks out a value and once you execute the same function again, it behaves different or the difference thread behaves different. It's just bad. It's really bad. It's really the opposite of what rust, the rust philosophy, what we heard in the previous talk. It's really as bad side effect that needs to die from my perspective. So, so we said, okay, we will live without all these things at first and we consider them later once we have reached a certain useful state. So, the next thing was we drafted a design of the architecture. So this is the third time I have seen this term now on the slide. So, yeah. So, yeah, we really started with a blank sheet of paper and thought, how would our operating systems of our dreams would look like? And we started not with file descriptors and all the notions that we really are knowing from our history, but we just started from what do I really want? And we just want to have components that we want to stick together where one component can control other components, where one component can control the resources it has and assign them to other components. So basically our idea was this kind of hierarchy structure where for each component in a system we can see from a clear picture what are, is the trusted computing base of these components? So like for this component here, this one needs to trust all the chain of parents but it doesn't need to trust any unrelated things like sandboxing on each level. This was our idea but I don't want to go more into the detail here but this was important to focus on this kind of, kind of architectural vision. I don't know, that's too... Okay, so when looking at this kind of user perspective or architectural perspective, we can simplify a lot of things at the API level. So for example, if we look at the construction of processes or tasks or protection domains or however we call them, this is always a really, really tight interplay with the kernel. A lot of technicalities like all the flags that are passed to the Linux kernel when you do a XAQVE or a clone system call, all these kind of specific things you have to take care when creating a new L4 task, setting up a page or and defining whatever configuration arguments RACX and you see it's really complicated. And but from a application level point of view all these technicalities are completely uninteresting. What the user wants to achieve with a new component is it has an elf image or an elf binary. This is the thing that contains the program I want to run. So I want to run this program and I want to control this program. I want to say what does the program, what is the program allowed to do and what not. So I want to impose my policy on the program and that's exactly what our API covered and no further detail was exposed at the API. And so basically we just satisfied precisely those requirements and nothing more. And for this reason, for example, we have one API that when implemented on Linux, it uses a fork and XAQVE but when implemented on an elf kernel, it uses a bunch of system calls, a sequence of system calls, sets up the memory management fills a region map for the new component and so on and so on and has an elf loader and so on. So on Linux, the kernel loads the elf image and on F4, we have an elf load in our base framework and but from a user perspective, everything looks the same. It doesn't matter, the application doesn't care. So the next key aspect of course of microkernel based systems, they are designed around IPC and if you look at IPC on the kernels, you see things like that. The terminology that's just frightening. So you just have to deal with message transfer descriptors, capability to receive descriptors and UTCB user level threat control blocks and hotspots inside the receive window that you set up for your flex pages and so on. It's daunting, really. And all the different kernels, they have different terminologies and these terms were not invented for no reason. They have certain semantics, of course. And the argument was always, yeah, we have all these complicated mechanisms but we can always hide all these things with IDL compilers. So people started creating IDL compilers like in our research group back then in Dresden, we had an IDL compiler consisting of 60,000 lines of C++ code and tried to make the whole thing more convenient but in fact, it failed completely at that. So there are all these kind of technical details showed through at any turn because people wanted to use these features of the kernel like wanted to communicate a flex page from one address space to another. Yeah, and so the IDL compiler tried to accommodate those features. So looking from the application's perspective, so the opposite end, what do we really need or what do we really like to have? We want to have simplicity. So we want to have a simple nomenclature and for this reason, Genote introduced these terms that did not introduce it. It just defined it in the context of Genote. A short list of terms that each of those are very simple and it restricted synchronous IPC to the very, very simple space which is basically a function call. It's completely synchronous. It goes always to a server and back to the client. So you have this relationship between client and server. So these roles have clear connotations. And the best thing is that all these kind of notion of a function call is supported by C++ templates which just generated the RPC stop code for us. So we can always feel like working with a normal object-oriented language, but in the background, the RPCs are realized using system calls to other protection domains. And this is basically what we found sufficient for all the use cases that we had. Then, of course, in the previous talk we had here the benefits of capabilities. This is, of course, when you design a new system and a very, very nice aspect, you always are faced with the questions how to structure your file system or who knows the namespaces of whatever, network cars, hardware and file system types and so on and so on. But with capabilities, all those problems suddenly disappear because you don't have to define global namespaces because global namespaces do not exist anymore. Really cool. And so this took a big burden from us. And on the language level from an application developers point of view, we just used C++ smart pointers to manage the lifetime of those capabilities. So it feels really natural to deal with capabilities. Almost like if you deal with C++ references or smart pointers, shared pointers. Then we also introduced the notion of asynchronous notifications. But without payload, that's important because payload is really messing things up. You have to buffer things and you do asynchronous notifications. So this is basically like interrupts and nothing more. That's really a very, very rigid scheme. But the receiver of a signal can tell different sources or type of events apart from each other. That's important. So in summary, we have just a convenience C++ API with no optimizations, no micro optimizations and thereby we removed a lot of complexities that the different kernels normally introduce. The next topic is virtual memory management. I already mentioned the way of how new processes appear in the system or new components are bootstrapped. It's tightly related to memory management and on L4, a very central piece is this user-level page-fold handling. So Martin, you are now going in this direction. But in my personal opinion, this is really overly complicated. Just user-level page-fold handling, like done by an L4, it causes a lot of problems. Like for example, if you map a memory page from here to there and then you later want to revoke this, you have to, the kernel needs to remember this kind of relationship. But if the kernel needs to remember some things, the kernel needs memory for this. So the kernel needs memory allocator. So the memory allocator needs a backing store where does the memory come from? So you have lots of problems. And so we defined a higher level abstraction for this kind of problem. This is basically our take on the data space term. So data spaces were invented far earlier, like in the S3 system. But in our, but we have a much, much simpler notion of this. Data space is just a piece of physical memory, contiguous physical memory that can be referred to by a capability. So like if you do a, like in Linux, if you open a file and then have a file descriptor for this and use this for MAP. So this is basically what a data space can be used for. So you have a data space and you can attach it to your address space. You can also share it with your peers by delegating the capability and thereby you can establish shared memory. But you don't need a file system, for example, and you have a very simple notion of who owns the data space. So the owner can also destroy it. And so the kernel doesn't need to remember how mappings are established in the system. Really simple, primitive. And the last crucial point in kind of making this kind of inter-kernel work seamlessly possible is of course tooling. So if you discover a kernel, like if you download one of the micro kernels or the Linux kernel or whatever kernel, you have a lot of kind of topics to look at. First, the kernels are distributed in different forms like Git, SVN, TAR, Archive, and so on. The tooling looks completely different. So they're like, okay, four use scones. Some kernels use the GNU build system. Other kernels have handcrafted things. So this is all things you need to, in some point, understand. The kernel bindings, of course, are interesting. And if you're from kernel to kernel, some kernels come with certain assumptions about the user land that runs on top. So there are even kernels that ship a complete libc as part of the system core bindings. And so you have to kind of find your way around it. Then the whole way of how a system is that uses the kernel, is integrated, configured, booted. This is all different from kernel to kernel. So if you step into a land of a new kernel, you have to figure all these things. You read the documentation, and this knowledge cannot be translated or transferred to a new kernel. So you have to just face it. And this leads to certain costs and with respect to the exploration and the self-education. So, okay, it's important to not bother the user with these kind of things. And for this, we spend a lot of energy with our creating tooling. First is, we build a system, a ports mechanism that allows us to integrate a third-party code clean into the system. So third-party code is not hosted in our code tree. It's cleanly separated. It's versioned, content-addressed, like it uses a hash, like the nix package manager. It uses hashes to distinguish different versions of third-party library, for example.  So there's one uniform mechanism that we can use, and this hides all the different details of how sources are distributed. You just have the notion of ports, and the port can be, for example, Nova, which is the Nova kernel, or it can be Lib C, which is the C library that is fetched from 3BSDs, SVN, server, and so on. But for the user, this doesn't matter. Then we came up with a nice tool that automates our workflows. So the whole problem of building components and configuring a system scenario, integrating it on a disk image or on an easel image, booting the scenario, evaluating the results. So this is all kind of formalized using this tool. And these scripts that are written for this kind of tool, they do not contain inherent kernel dependencies. So you can take this script and just execute it for a different kernel, and normally it works. And then another key aspect was to come up with a, or not to come up, but to customize GCC according to our requirements, and thereby remove all this diversity of tool chains, which was a big headache before. So we had to deal with six different tool chains switching back and forth, and each had a different kind of configuration arguments, different GCC versions, was a real pain. But just by unifying one tool chain, this was a big benefit. So the result is this kind of picture. You have these big kind of toolbox of components that are all running in user mode, separated in different address spaces, communicating using the IPC mechanisms that Genote provides. And in the center, you have just various kernels, and you can just pick the kernel that you like and run the components on top, on this particular kernel. At least on the API level. This was one year ago. So basically one year ago, when I presented Genote, I could show how the same kind of scenario could be executed on one kernel, then I could just create a new build directory for another kernel, compile the same thing again, and then run it on another kernel. But now we go a step further and say, okay, we don't want to even recompile the components. We just want to run them. So to achieve binary compatibility for components, we have to look at which kind of kernel specifics taint the components or the application code. The first is, of course, that application code somehow includes kernel headers, not always directly, of course, but indirectly, like for example, if you have included Lipsy header, this Lipsy header includes something like this, this includes something like this, and this includes something like L4 kernel types, then you are basically tainting your entire application with kernel types or with certain definitions that are different from one kernel to the other. And this also is, of course, utility functions and so on. So, but these kernel headers are usually not so big for microkernels. The second reason components are intertwined or with a kernel are, of course, system calls. So components tend to issue system calls for doing IPC or to do synchronizations and for these topics over here for creating kernel objects. And in most microkernel-based systems, what you see in the components code is typically also direct issuing of system calls and the bindings are somewhere in some header files and those header files, they are included, of course, and so the component inherently inherits or the dependence on this particular kernel. So for DPD coupling, the user land from the kernel, we had to remove those kind of things, those kind of dependencies. First, we had to, so this was a lot of engineering work, I must confess. So for example, at the beginning, we defined a common capability type with a defined API but with a different implementation. So for example, on the old fiasco kernel, the capability was basically a thread ID where a message should go and a unique, globally unique value. So this was on the thread ID was, of course, a kernel type, so it included a kernel header. On Nova, there was no global ID needed. We just need a kernel capabilities sector for this. So the kind of representation of a capability was different from one kernel to the other. And on Linux, for example, a capability was basically a socket descriptor and a number. And so we had to somehow unify those capability representations on the API level. IPC message buffer layouts is the same thing. So each kernel has a different notion of how an IPC message looks like. So certain constraints and certain header fields that you need to fill out when you want to send a message. And we just defined our own IPC message buffer layout and which is just a very, very simple buffer where bytes can be written to and which is a size. Thread manipulation and synchronization, like if you would, for example, take a log and need to block, then you issue a system call and we just reshaped our API in a way that no kernel-specific things needed to shine. Okay, the result was that we just managed to get rid of all these kernel-specific header files and moved all these into the implementation of the framework. And the next step was, of course, then that we needed to also address the second part, tainted compiled code. And for this we decided we need to somehow have different elf objects that contain the generic code that's untainted by the kernel-specifics and a different elf object that contains the kernel-specific code. And this is where basically the dynamic linker enters the picture. The dynamic linker is a special component, it's both a shared library and also a program that can be started normally as a program, like on Linux. And the rules are different. So at compile time, if you build a component, the linker is needed because the real linker, like the binutous linker, needs to know which symbols are provided by this library, by this dynamic linker. Like the symbols that are provided by the genote API, they are somewhere implemented in the linker and in the dynamic linker. And the real linker needs to know that so that it can add all the references, reference information into the binary. So if the binary issues an API call, a genote API call, the code would, the resulting elf executable would know, okay, this has to go to the dynamic linker at this particular, and with this particular simple name. But actually at this point, when compiling a dynamic link binary, you don't need the code that's in the shared library. You only need, the linker only needs to know this kind of contract between the shared library and the shared library user. And at runtime, then we need, of course, the code. So, but one point of the other, at first when using it at runtime, the linker is started instead of the actual binary. So in a new component, first thing is that the linker starts living. It bootstraps the actual executable and resolves all the undefined symbols of present and executable with itself. And then loads other shared libraries and finally it starts the real application code. So this is basically the pro, the kind of progress that we did. So once we had this genot API freestanding, and once we had this kind of, the logical consequences that the linker becomes generic. The API of the linker, the binary interface, the contract that the linker offers, this becomes automatically generic. And this is exactly what happened. So let's go to a bit more detail what is that API in a genot kind of terms. So with ABI, I'm referring to the link time or the linking contract between ELF objects. So I'm not talking about architecture, of course, calling conventions and so on. So are also referred to as ABI, but that's not our concern, that's the machine specific thing. But our concern is the link time contract between components. And so an ABI in this respect is defined as a bunch of symbol names, a list of symbol names like what you get when you do NM with an object. And the symbol types and some metadata. Like for example, for data objects, you need the size of those data objects so that the dynamic linker can execute code relocations, for example. So these points are not so interesting. This was just kind of the methodology, how those kind of information was generated. So we took concrete instances of the dynamic linker, aggregated the symbols that were in there, looked at the symbols that we didn't not like, like all the weak C++ symbols. There are so many of them and they are so big. So we removed all those.  And what comes out of this is just a very small file and just a list of symbols with these kind of symbol information. And this is basically, we want to do the same thing for X8664 and also for ARM and so on. And it would be really, really nice to have one ABI, so just one 32 kilobyte file that covers all different architectures. But really, when I started this, I did not know. So there is this kind of mysterious mangling of C++ symbols. It looks really ugly and I don't know how this works and how stable this is. And I just tried it out and for ARM and X86, wow, that's almost no differences. I was really amazed. So this was not so unrealistic in this slide. But then I tried the same for X8664 and it was really, it was a let down really. And why that? This is the reason, size T. This is really something historical. This is a size T is typically defined as underline, underline, size type, which is basically a compiler known type. And every libc and also our genie API used this kind of size type. And now for historic reasons, this size type was defined for X8632 bit as unsigned int. So 32 bit platform, int is 32 bit. She feels good. So we can just use unsigned int. But then when moving to 64 bit, int is no longer 64 bit. It's not the machine word size, but int remains 32 bit. So we needed to, or the size T type needed to have a different type than int, needed long basically. Otherwise, size T would not work anymore. So basically the historic mistake was basically this one. So if in history people had used unsigned long all the way, then we would be fine. But back then there was this kind of decision, long int doesn't matter, we take int. So this was basically, this is biting us now. And the problem comes into the picture not for C code or so, but for C++. So the course in C++ symbols for methods of functions contain the entire method signatures. So not just the method name, the function name, like in C, but also the arguments. So if you look for example, this function here, connection upgrade with the size T, you see that at the linker level, so the mangle symbol looks different just in this small detail. But that's different enough to be different. And so that means all APIs that use size T into some form as an argument, they obtained the symbol information of the code that comes out of this. Okay, so we are quite pragmatic here at this point. So we just decided size type is not so nice for us, so let's not use it. Instead you define our version of size T as an unsigned long, completely independent from what the compiler tells us. And yeah, of course once you enter the libc into the picture, so for higher level components, then we again get this problem of course a libc has its own type definition for size T and this again uses a size type, so this is not a real long-term kind of fix, but we are fine for C code, like all the GNU tools, for example, GCC, Vim and so on, they are just C code and they don't use this mangle C++ symbols, they just used normal symbol names, function names, so we are fine with these. The problem just comes back when we are using C++ code that depends on a libc or these libc types, like for example our code that uses the standard C++ library basically, like QT5. So we need to find a long-term solution and there are two approaches. Of course we could make the ABI's architecture dependent, this would be really bad because if you look for example at QT, if you just do an NM for QT library, like QT widgets or so, you end up with size of like 20 megabytes so and having multiple versions of these in your git repository, now that's not the right way. So the other solution looks much more appealing I think, so just to explain to the compiler that we really want unsigned long regardless of 32-bit or 64-bit. Okay, how much time do I have left actually? Okay, so with these kind of, with these steps, I was actually able to compile one program on Linux, for example a QT program and then take the same program and move it to a different build directory, like a build directory of Nova and execute the same program on Nova. So this worked and this was like a magical moment for me because yeah, that was quite, the idea worked out in the end. And but how, but this kind of brought up the idea to generalize this mechanism a bit more, like to introduce the formal kind of term of ABI into the regular genome build system and for this we extended the build systems a bit. So first an ABI definition comes in the form of this kind of ABI file that contains the simple information and there's a rule that translates this into an assembly file. This rule is quite simple actually, I can maybe show it to you. So for example, if I look into the build system, this is the tool, that's all. So this is the code that the build system support that takes the ABI description and generates this assembly file. And you see that this assembly file is actually not including any assembly instructions, but just directives telling the assembler which kind of symbols to generate and the symbols have actually nothing behind it, okay. So this assembly file is then compiled into a shard object and this is named ABI.SO and this is a shard library that contains no code, nothing of substance, but only the contract of the shard library provides. The actual targets are linked against this ABI file instead of the real library. So if you have for example, free type and you have a program that uses free type, you would not link the program anymore against the free type library, but the free type ABI, just the contract. And for this reason, we can just, yeah, we can do this ABI mechanism for any kind of library. For example, introduce an ABI for POSIX programs by defining a symbol file for the libc. And what comes out of this is that we can now build targets without even having the libraries that depend, that the target uses. So we don't need, of course, the header files, so the API level contract between library and the user, and we also need to have this ABI, but we don't need the library implementation. Okay, the immediate benefits here is that we can optimize our workflows with Genote a bit more. So for example, in the past, Genote had one build directory per kernel and architecture, so for each combination. So there was a huge number of build directories that we dealt with, and if we wanted to reproduce one scenario on another kernel, we had to rebuild the whole software stack and this was taking a long time. So now we introduce these kind of new, unified build directories. So they are specifically created for one hardware platform, but the kernel doesn't matter anymore. So all kernel independent components, which are almost all components, also device drivers and file systems and so on, they are automatically linked dynamically, and there are only a few components left that are specific for the kernel, in particular the dynamic linker, of course, the core component also, and some kernels, the timer driver, and some optional components like virtual box that use special kernel features. They are exceptions to this scheme, but they are always named after the kernel and thereby they can coexist in the same build directory. So the concrete kernel comes into the picture, not before we actually execute a scenario. And I can maybe show this here. So for example, I have here a build directory and I can say, okay, I want this geno demo. I want to run this on Linux, for example. And you see that now the build system visits all the libraries, yeah, it's far too quick now. But I can show you a different view on the system, like for example, when I am opening this window here, and we do a PS, we see that it really runs on Linux. You see here, all the genote components are actually running as Linux processes on the system, and we could, for example, attach GDB to any of them. And yeah, and so this is basically here, you can see in the output, it uses the LD Linux, libSOS, chatlibs, as dynamic linker, and then starts this up. So if I want to run the same scenario on the Nova kernel, I just tell this build system I want to have the Nova kernel, and you see that the build system doesn't do anything, doesn't need to do anything, but only at the last step, if you look at the, yeah, you see here, now the Nova has already started. This is now spawning a QMU instance, so it takes a bit longer now, but you see that in general, you see the same scenario running here now on the Nova kernel, on QMU, yeah. And if you look at the output here, you see that at the beginning, you see Nova hypervisor starting up and so on. And if I want to run the same thing on SCL4, I can just, so this is more like recent developments, it's not entirely stable, but let's give it a try. You see there's no time spent for rebuilding specific things, and all the kind of kernel specific things, how a system is integrated and booted are actually not of a concern. You see a bit more warnings because we have more debug information here, but now the same scenario works on SuperTux. SuperTux, no, SuperTux, SuperTux is a good example. This is another thing that I can just try it out and it works from, I can't, yeah. Okay, SuperTux, so my children can now play SuperTux on SCL4, which is, I think, an accomplishment. Okay, future. So now with this API mechanism in place, we can take the next steps, and I think they are quite exciting, because of the distinction between API and API and this kind of introduction of these kind of terms, we can actually define packages that are really loosely coupled.  And so the system, the updates of systems becomes more lightweight because we don't need to fetch all the transitive dependencies of libraries, but only the dependencies from APIs which are much more stable than the implementations of these APIs. And of course, the distribution of binary packages becomes also much more simpler because they don't need to be, they can just be provided for an architecture, but not for a bunch of different kernels. We can, as I already mentioned, introduce multiple levels of API stability. So for example, if we say, okay, we have another kind of ABI in the system, which is POSIX, we can actually change the genot system including the genot ABI, but retain the compatibility to all the POSIX applications like GCC and so on. So they don't need to be recompiled even if you change the genot ABI. And now this allows us to work in two different directions, actually. First, we can harden the foundation. Now that we have a contract between the genot applications and the genot framework, I have to, yeah, okay. Oh, sorry, okay, so then thanks for your attention.


Hey everyone, it's EJ from iDesign and today I'm here to tell you about a preset for Cinema 4D that I've been working on and Gonna unveil today. It's called text edge effects, and it's gonna be a must-have tool for you if you do a lot of text 3d text inside of Cinema 4D or logos 3d logos inside of Cinema 4D. It's gonna save you a ton of time It's gonna make it give you a ton of really gorgeous results. You're gonna make some really cool Things with this and it's it's a snap It's a quick and easy way to add Custom bevels to your 3d text or 3d logo and really give it some pop Here's some examples that I made To demo it. This is some really cool really cool looking text and you know this rope free Effect that I got as well and if you if you look on my on my blog There's all these images there for I mean, it's really endless amount of options for you really cool Text looks and logo looks so let's dive right in Sure, this thing works First off when you when you get the product you're gonna download a dot lib 4d file And you can see it right here. Basically all you got to do is just go navigate to your Cinema folder Wherever you wherever you have it applications, whatever Go into your library Go into browser and you just drag the Text edge effects dot lib 4d file in there restart your Cinema and go look in your content browser it's already got to open over here and Should be you under your preset list here So and what you're gonna see is you're gonna have a spline edge Effects and a text edge effects the text edge effects works with just The 3d text and I'll show you that first The spline edge works with custom splines that you can add You can extrude and add bevels too, so I'm gonna show you the text edge effects real quick and Right away you can see you have all your basic text options that You are in your normal mode text object So you can go and it's already got a bevel applied to it. So right away you can you know type in whatever And automatically you can see that the edges update and go right along the edge of that font You can adjust the height you can adjust the depth nice thing about this is We have an option where you can have a front and a back bevel if you decide to go with both Bevels and you do the depth the back bevel follows real nicely You also have cap settings which you're familiar with as well where you can add your filet caps adjust that So nothing new there if you go into your bevel options now you start and get in the meat potatoes of What what you can do with this thing? so you have your whole list of You know spline objects that come with Cinema 4d if you go through some of these you can get some You can start to see some really cool bevels Going on already Do a render real quick So literally with a few clicks in your mouse you're already getting something that looks pretty pretty cool so far and with each of these Native through Cinema 4d spline objects you have full control over all the options for each individual Spline objects, so you know you have this flower object control the petals You have the inner radius outer radius Another thing is for each for each object you can control the overall scale Which is nice and you also also have an option for a z scale so say you just want to You just want to use Let's turn off go into visibility options You can see all the visibility options also the subdivision settings, so we're going to turn this back bevel off I mean go into our bevel options, and we're going to go to our offset and just push this back and so you using that z scale Comes in really handy when you just want to use one bevel and kind of stretch it out and Get some cool effect Like that so render this one out So like I said, you know really easy to get really cool results really fast and an endless amount of options You can spend days and days and days and you can use this tool for a year And probably not even get all the even close to scratching the surface of the The types of bevels you can get with this tool, so there's the There's the flower object And you can use you know your normal Simba 4d objects, and I also threw in a bunch of custom bevels as well. You've got this frame One that looks like a Z scale up So I mean this looks like an edge of a picture frame basically So there's the kind of picture frame kind of look and you can see that we have this Breaking up of the geometry we need to add some more detail to it So whenever you want to do that just go to your visibility options And you can you can choose between all of these different, you know uniform natural But if you adjust the angle you can see you're adding more subdivisions That's going to smooth out that geometry Leave it high for now Let's go into the tech of a lot of options again, and you also have a rope function Which is really nice in conjunction with If you really jack up this end scale really high And let's go back to our visibility options and Whoa Don't want to go that far But you can already start seeing that you're getting a kind of rope Effect or like an old-school phone cord remember those And I also made it where If you play around I mean this is just a This preset if the more you play around with it them like you'll find out some really cool options. So using the flower object, I've found that if you throw like a Like a steel looking kind of texture on this you can get You can get some like a almost like a drill bit kind of look to it. So there you go. You got the drill bit effect So if you use the Fong angle you can get some really the lower the Fong angle the shot sharper the edges You can get when you render it Bring this up again Okay, so That was using the end rotation Which is comes in pretty handy. You also have Normal rotation you can actually rotate the entire Spline object so Using that So using that kind of drill bit kind of Look you can actually start to animate that Kind of spinning which is pretty cool One other thing is you know if you want to get that drill bit or the rope or whatever Whatever cool kind of thing you come up with Nice thing is you can turn off the text and just have that That Devil-showing which is a really cool feature So let's turn everything back on There's that So there's you know a ton of a ton of really cool options to get really cool looks Cogwheel I've found some really cool Looks as well You got your offset for front and back Independently so you can have like you can you can layer your bevels as well and change the colors By just you know simply you have your bevel Color you can change in it You have different color you can do different colors for Both the back and front if you want you can change them manually up here as well and also the Front cap back cap and the actual text color So change it to gray Change it wherever you want Change the back bevel to orange. You got the front of the front to yellow Really simple really easy Real intuitive if you're I mean it's just Working the way you normally do inside of cinema Nothing too crazy So you also have individual scale spline controls so you can change the scale If you hold down control you can add another point to the spline so you can so if you want skinny in the middle and Large at the end you can see you have that kind of like tapering effect going on as well Okay and we have this growth option as well so you can Animate the spline coming drawing on Or have it in you know ice an isolated Letter right there. You can also have multiple instances instances of this Preset so if you want to just have So you just want to work with one letter and get a kind of Effect where you only have bevel on part of your letter you can do that You just have to make a different text Edge effect instance for each one to get that really fine-tuned control for each of your Bevels on your letters like that which is back so And same thing with the scale you can have the rotation I Have different rotations Along the spline as well So I mean that's a ton of options right there that'll keep you busy for quite a long time so in Visibility options you have your text visibility just front or just the back bevel or no bevel at all Which is kind of pointless considering that's the whole point of this thing is to have a bevel so you want one of those on so Said you can just have the bevel on so you can have a really cool like I made this rope Look so that's how you go about that you have your angle limit on your phone So you can get really sharp edges say if you want to use To use a foreside that'll get some reset that So you have a sharp edge If you bring this out you can see that it's the shading on it. It's kind of Rounding out. It's kind of smooth. So when you're working with or if you want to have really sharp Bevel edges make sure you bring that pretty far down to get some really nice sharpness on The on the bevel here, so I'll render this out real quick and you see the sharpness So there's the sharp and you can see how it looks like if it's a Low rounded the shading gets kind of all wonky So you can see it's a little bit smoother there. So something to be aware of but Use cinema 4d a lot. You already know what Fong angle does so So you have the the fillet caps For each of the For each of the front and back of the text object I'm going to show you a really nice effect to actually get bevels look flush to the text like like I did here Or you just have the same material on the Bevel and the object itself on the text object itself. So it looks like a just one whole object with a really Nice bevel on it So I'll show you how to do that.  We just need the front bevel on right now And so usually you'll have to go in and kind of fine tune with the bevel offsets to make sure that and also mess around with the Bevel scale a little bit to make sure you whatever your Whatever Bevel shape that you have four side right now that it matches up pretty flush And now we can go in and change the change all the Text elements to the same or the Yeah, to the same material So we did that and like I said make sure this this works best when you have The the fillet caps on That adds that if you turn it off It doesn't it doesn't work so well. So you want to have that on do a quick Render here So that's looking pretty good. I I need to just bring it just a little bit in a little bit more to get rid of that That edge. Let me try this with a Show you a different option. Let's go back to the flower shape I Like the the flower object gives you some pretty cool results. So let's just go back in here and Make sure we adjust Bevel really nice and flush to the actual object Let's bring the Bevel scale down So as I said before it's it's really helpful to have Uh the fillet cap on because then you can really start to see how It's working Let's bring this should work I'm out a bit Render So they could go nice and flush against there. So it looks like you have just one Uh whole object here Really cool So you just got to make sure that you go in and make sure the uh the bevel That you choose is flush to the object and just kind of scale it down to match the edge of your font so If as if all that wasn't enough to keep you busy for a while We also have we're going to delete this. We also have Uh spline edge Options as well. So i'm going to drag drop that in there. It's basically basically the same exact of settings as the uh the text uh Text edge effects except you instead of the text you bring in your spline And right now that's set to a cog wheel But uh if you go into say illustrator I made uh if you work in local news you get the cheesy local news Channel station logo.  Uh out of illustrator That you go and you save it as an illustrator eight file So that's okay And go back into cinema Let's lead the cog wheel we're going to import that Uh that four that I made I'm going to go merge go find the file. There it is Hit open you want to I need to connect splines for this case. So Go comes in I'm just gonna Zero that out so it's in the center And I am going to go and then Drag the four logo into The spline set it into the spline custom spline Field and there you go boom you got your extruded with a Cool-looking bevel on it And all you had to do is throw it in there go in and you know change the colors All that good stuff. I'm going to actually clear clear all this stuff out So we only have the materials for the caps Spline and bevels So like I said, uh, you know, you have your same fillet caps options here Um, you can still go in here and let's use uh Let's use Let's use a cog wheel This time we're gonna do our little trick where we Make the bevel flush To the object so it blends It's just these settings I'm holding down Alt option key to get the Fine tune controls of just going by point one Each clip each time I click So that's looking pretty flush. I'm going to then change the The text color to match the Spline so we got some crazy orange going on render Zoom out So there you go already you got You got that Nice bevel going on Same settings in the text edge effects Settings you can adjust the z scale Move that back you can go into visibility turn on the back turn off the back bevel You got your subdivision fong Same exact setup the only thing that's different is you're just using a spline instead of a text spline so So with so all in all it's pretty pretty powerful preset. It's going to save you a ton of time I'm working with text every day and I basically built this out of necessity to just speed things up And it's helped me out a ton. It's going to help you out a ton. It's going to be Staple in your work from from this point forward Guarantee it so Go play. I mean I've been playing around with this thing and been coming up with some really cool looks to add to your Logos or your your text and you can make some really cool stuff really super fast really easy So have fun with it and uh, thanks for checking it out


That messed my head up because I've never seen nobody. That's the hardest episode they ever done because of it. No, I don't know them, but I know they, I seen it. So it was hard and I just wanna commend you for bringing black people together and trying to do it not only in Texas but just all over the world, man, I appreciate it. Thank you. But it's, you got serious fads.  No, but it's true though. You know, I think that's what make it, make the show, you know, like, man, so we here with Mike Fresh, man, you been on Boss Talk 101 numerous times. You family over here, you already know that.  How did you end up linking with HHF, bro? Man, so my boy Cass right here, he invited Pimpy Keene to one of my shows. So this, one of my shows is, it's a crazy first impression.  So that's basically what just happened, you know what I'm saying? Pimpy Keene came to one of my shows, he was trying to figure out where I've been all his life, basically. Wow, so did you take the top off chain off? I'm not trying to be messy, but like you still top off as well. Yeah, I learned a lot of my people. You know, that's just, that was who you always been with. But I noticed even when I talked to Halfpaint just a few days ago, he'll be here a few days too.  Yeah, yeah, yeah, yeah, yeah, we tried to bring everybody together. But now it's kind of like everybody doing their own thing. Yeah, yeah, yeah, for sure, that's what it is. But love for all that. I talked to Pusha Man today. For sure. Everybody out over there, but man, just good to see you with, so what it can, what made you find a decision like I want to be with HHF, I want to rock with them. For sure. I want to sign with them, I want to be with that group. Yeah, nah, he was just telling me when he found out that I didn't have no manager, he, you know, he gave me a management offer, so he said he wanted to help me out. Like, man, you doing this by yourself? Like, what's going on? So. Wow, that's hard, man. So what did you see in him that made you, Ken, to feel like, okay, he should be a part of the whole, you know, HHF? The first time that I went to a club and it wasn't all about me. It's always like, hey, you know who you with? Y'all were Ken. So they said, who were Mike Fresh? I had to raise my hand. I said I would. And they said, okay, you were Mike Fresh. Come on, stand over here. So I was just good, did you know?   Sometime your ego could be your worst amigo. You feel what I'm saying? So in my situation, I tried to co-mingle and try to co-habitate with people and still remain my normalcy, you know what I'm saying? So I'm coming as a normal person. Cash, of course, invited me. He said, man, you gotta check this dude out, check this dude out. So we seen all these cars. So who was these cars for? He said, if it ain't another club, they all here for Mike Fresh. I said, look, dog got to pop in there. And then so when, you know, they said, Mike Fresh, Mike Fresh, Mike Fresh. Everybody was, even in the interview when I was having to do a drop for the HHF Awards, they was just Mike Fresh, Mike Fresh, Mike Fresh. And so we went in, that's when the real demonstration got all the little kids were there for like, it was a team party, so it was like from 18 to 25. So everybody was like, just Mike Fresh, they was all the girls was running, jumping on them and stuff and like that.  And everybody was singing a word for word.  Because you don't think, okay, I'm thinking views, right? I'm like, yeah, I need that, right? So I'm thinking views. And then we actually did the interview at his house and kind of find out he didn't have no management. Now you know me, I'm always an executive looking for artists. He's an artist looking for an executive. So it was a marriage made in heaven. You know, I said, wow, man, then I got to look into all his body of work and all the songs that he featured on and the songs that he had and looked at all the TikTok action that he had. I seen the 16 billion streams.  And that's when we did a media run. We went to all the major podcasts.  Because what I've seen in him was that he was a talented young man. He had great skills, but he didn't have the visuals. You know, he need the optics. So what I can do for him and what I've done for many of people from Pepsi, the boozing, all of them is I can provide the optics, you know, and I can connect them with the people that he need to be connected with. Because me and you both know that this business is all about relationships. You know what I'm saying? So I have the relationships. I don't care how talented he is, how much money you got. I have dudes that I met that had keys on top of keys, you know, hundreds and hundreds of millions of dollars and tried to buy the rap game. You came by this game. This game is based on relationships. So I said, man, I got the relationship. You got the talent. Let's go. Wow, man. So, hey man, what's going on with you over here? Man, you was here before as well. What have you been doing since you was here? Man, I had been traveling the world. I started touring with Mike Fresh and Bon Amat. And we went around in the world. I got to see it for his hand. So I was trying to figure out it's kind of hard to get Ken to pay attention when we ain't in the same city. So since we was in the same city, I had head fresh up. I got a new project coming out. I'm still pushing brick by brick. It's going crazy right now. You know what I'm saying? That's hard. We had 150,000 plus streams, you know.  Like what, how did you end up, you know, linking up with Kevin Ken and HHF and just the whole movement? Well, originally I was on the Ugly Money podcast. Okay, okay. Yeah, the Nietzsche. Shout out. Yeah, shout out Ugly Money. Ugly Money Nietzsche. He invited me to come to his podcast.  So he was just like, yeah, I need you on podcast.  And I met him there. But then I ended up meeting you somewhere else. I invited you to the HHF Awards. Yeah. I mean, HHF meeting. For the HHF meeting and HHF Awards and stuff. And so we chopped it up and basically like the same thing with Mike, like I ain't got management and stuff. And I kind of just been doing it by myself for a long time. And I'm just really passionate about it. So he saw something in me. Well, I like that, man. You know, it's big when you can get with the people. Now, but let me do the singing first. Just give the people out there in the world a little bit of singing. Acapella. Acapella. Love you like to me Said you'd always be around Love you like to me Left my chest vacant no sound You ripped out my heart You tell me apart It sticks in your stones Breaking my bones But it's signant to say You won't leave me alone And do some rapping. Man, I love it. Come on, do not take the rap out. This is the song. Do your song. You won't leave me alone, bro. She sound good, don't she? Now, but here's the song that caught my attention. Give them that song.  Yeah, yeah. You know I'm really beating up on the beat.  No Rocky bottoms up to the sky with that drink. No Rocky, she say I think I'm big and hard. Too cocky, make a nigga body shake. Oh, yeah, no socket. No, I got a best friend in my pocket.     Cold as winter flows it like I'm sippin' also free, huh? Steppin' on these bitches underneath me cause I'm beyond. Better watch a maca, bitch, you don't know what I be on.   Nigga with no money, I just tell them leave me alone.   Real, real, you got real in the mode. I didn't know if I was gonna have to try to grab my pistol. I didn't try to get me, I thought we was into it with somebody.   So we just got to unify. And there's power in numbers, you know that. So you, you know, I think, I think that's live, man. So what's the first, we all, we're in March. Is it 20 of it? Cause you know, we did have a 29th today. Oh yeah, we did. Yeah, yeah, it's gonna be gone for four years. You know what I'm saying? So, but then, but- I don't know if somebody would lie about that. No, no, no, no, it's gonna be gone. It's gonna be 29th. Yeah, but think about that for a minute. Once you, once you, you do your thing, like for the first quarter, what's going on in the second quarter? What's about to happen? What, what are we doing with HHL? I hear the chant, it sound good. Man, like, like, so what, what, what are we doing in the first, yeah, for the first quarter? Okay, so I'm a, you know, business is Latin, you know what I'm saying? So a lot of people- For the second quarter. A lot of people don't understand how business really operate. Like, you know, when you look at sustainability, right? In a company, you know, you have to be able to generate enough interest in that company where people would be willing to put seed money and eventually from seed money to venture capital, from venture capital to angel capital, ultimately an IPO, which is an initial public offering. So we move in that capacity. So we have the HHL Awards, we have the HHL Magazine, we have the HHL, radio, we have HHL social media. You know, we have a lot of things, HHL clothing, HHL films, you know, we producing Boosie film, Ice-T film, and Rick Ross film. So that's what's up next, you know what I'm saying? We just got to deal with Homestead. So we're putting some major projects out. Now, which Rick Ross is, Freeway? Freeway. Okay, we'll make sure. So that being said, right, you know, we're developing a situation where in the case of cash money, when it was working with Wendy Day, and it was able to get $30 million because of the work that they did, the proof of concept, the prototype, right? So that's what we're in the process of doing, showing the world that we are self-contained and we got sustainability, right? And so, like, the company's already got a valuation of some millions. If you Google Pimp and Ken, you look at my net worth, it's gonna say 16 million. Not because I actually have 16 million, but because of all the things that we accumulated and acquisitions that we acquired through the hip hop fraternity, right? Now, you know, being on all these platforms, it raised the value of the name. The name actually is worth more than all of the companies up under itself. The holding company is worth more than the subsidiaries, right? But also, you know, building that brand and HHL being, you know, radio, TV, everything, it's all rose lead to HHL. So we acquired somebody like Mike Fresh, you know, who already got 16 billion views. Then that takes our valuation up a little more, right? So we value at 16 million now. So, and, you know, when, you know, the people who watch the metrics and stuff like that, they see what we're doing with him, then they're gonna come with a higher valuation. So we don't want to under-leverage ourself. We don't want to over-leverage ourself, but when the time come, we'll leverage all of that accumulation of, you know, a value into a profitable situation where we'll be actually able to get maybe 100 million, 200 million, you know, and they don't understand this because this is business, you know, a lot of people don't understand this.  A lot of those liquor deals, a lot of those book deals is I'm the man behind it. So me understanding Latin, you know, which is not regular. Again, example, if you went to the court and you said, hey, my name is E, CEO, and I represent myself, the lawyer. The judge gonna say that you got a client for a fool, you got a lawyer for a fool, because in law, they speak Latin, so I represent myself pro se. Pro se mean you represent yourself, but you have to use the proper terminology and they can't give you legal advice. Well, in business, you know, a lot of people say, give you example. I got a limited liability here, people. I got, I'm limited, I'm limited. Well, actually that's a bad thing when you're dealing with scale, when you're dealing with big business, because if I seen a pretty girl, we use my sister over here.   She's limited. Well, that's how the banks look at it.  You know what I'm saying? So if you feel C corporation and you get what they call, buy companies actually, like you buy trade lines, you can buy companies, shelf companies that've been in the business for years, somebody that incorporated, but they do know what you, but you can buy it and that's what the bank look at history. So if you don't understand all these mechanics and you understand the machinations of business and you understand how to scale business to the next level, then you just start here like, hey, man, I got an LLC, I got my own record label, I got my own this, I got my own that. Well, in any business, you got to have what they call diversification and oververtification is gotta be, it's got to, it's not coming out right, but the word, I know it like I said all the time, but it's got to be definitely, let's just start with diversification. So diversification is when you have, you know, all these different entities connected to the hip hop fraternity, right? You know, and you know, you look at any race of people that's really winning, that's exactly what they have. They have diversification. You see what I'm saying? So that's what you see. You see us, you know, mounting and building our sustainability and building our assets as a company. So when people look at the, I thought you said, can't nobody be on the phone? There's a man, you ain't gonna be on the phone without my interview, man. This boss talk, man. We don't do that, man.  I got to listen to, you know, I would just basically, people be calling me trying to get on this show and I have to tell them, you know, don't come up here and stuff like that. No, no, no, don't come up here, why I'm up here. Don't come up here. But see, that's what you see. We're creating a prototype for the business, right? And when you get assets like, you know, Imran Cash and my son and Mike, you know what I'm saying? It's easy for us to do what we have to do. How many members do you guys have in HHL? We have a collective 10,000 members and we count our members by what we call emails. So I have 10,000 emails that has been through our portals or joined on our, on our national site, thehiphopfaternity.com.  Wow. What do you guys stand to do? Like you already had your brand.   What's going to be different now that you joined HHL? I'm going to be able to use his resources. I ain't never really had no help, like had too much help doing what I do. Now I got a team of people behind me. I'm able to use his connections. He introduced me to TI when I came out there.  I was on Beehive. I wasn't doing all this as Mike Fresh. Everything, I was just standing behind my own name, creating my way. Now I get like co-signs and being able to get introduced with people, being able to be on these podcasts, like stuff like that. That's hard, that's hard. And what about you? You, you, I know you was doing your own independent movement at first. Like, what do you stand to gain in doing it this way? How do, what do you want to do to leverage?    Like, so I definitely want to like have my face and my name out there a lot more. Wow. That's hard.  I was like one of the first artists, you know what I'm saying? And I'm working with Ken, you know, when you work with a boss, you turn into a boss, you know what I'm saying? Boss of all bosses. So, you know, I'm sort of like a HHF A&R for real because I hear a lot of the new music out here. I connect to a lot of the artists, young and old. You know what I'm saying? It's a bunch of people that's in my inbox so they calling me, man, can you listen to this? Can you listen to this? Can you let Ken hear this song, this song, this pimp song I got? They want him to hear it bad, you know? And I'm one of them persons. I know what's going on around the world. I'll be checking you out. I might send it to Ken. Yeah, yeah, yeah. You know, I'm one of them. So I'm a team player and I'm so unselfish, you know what I'm saying? So like for us to have Mike on the team, other artists probably won't want other artists to take they shine. But I know that we're gonna prosper, you know what I'm saying? With him on the team. Wow, and that's what it's all about, believing in each other. Well, you know what I got to tell you, man, you have me on the phone, Universal, they're interested in signing me, stuff like that, bro. Wow. Just that fast. It ain't been two weeks since we even known each other, but I just went to Atlanta last, we got to hit all these podcasts, introduce them to the tip, got me on the phone with Universal, which I'm not going to the White House, there's so much stuff being done already. Wow, that's why you got, and I want to say something. I want to say something like, it wouldn't like that these things weren't happening, you know what I'm saying? We was already trying, you see we was pushing people all the time. Of course. But see the issue is with a lot of artists, right? When they get a celebrity manager like myself, somebody that's well known and well respected, and we go on the podcast and they see the interviewer might be interested in talking to me, they think that it might be like I'm trying to outshine them. And in reality, you know, that's something that's out of my control. You know, I cannot tell an interview, who, what question asks if I bring you to the interview, then you know, that's what, and then that's a lot of things that happened in the past. A lot of the guys, you know, they don't realize how big I really am. They don't know that I've got about 15 plaques with some of the biggest artists.  So we're not competitors. But a lot of artists that we didn't have in the past, they thought that it was a competition thing, but it really was a collaborative thing, you know, and that's where, you know, me and Mike kind of go cool together because he don't need to, you know, compete with me for fame. He already fame, he don't need, he already done that. Our relationship is based on business, and that's what HHF was missing. But, you know, everything that we given Mike Fresh, we gave to, you know, we had Richie Rich on Drink Champs. You know what I'm saying? They did six million. So six, almost seven million. So we have the ability to get artists on these platforms, but the artists have to match my rhythm now. So he's the first artist, and you might not even notice that I actually signed on paper. I decided anyone else because, you know, I always say the thing, because I'm Pimpin Ken, everybody think I got so much gain, my game is no game. So I don't run no game. So look, man, it's like it is what it is. You understand me? I'm gonna give you all this for free.  You can be a buster. And once I see that buster in you, that sucker in you, I'm never gonna forget it. You know, it's like I tell people all the time. And I told Mike this, I told everyone this, and I tell a lot of people this, you know, in the alphabet, you got A, B, C, you got X, Y, Z. Those are characters.  Zero is nothing until you go back to get the one and put the one on the zero to make it 10. And it becomes a character. They never change. Since you was born, since I was born, those characters never change. So those are principles, right? And so individuals, people in life what they need to do, they need to establish principles and forever live accordingly. If you tell me that I might do this or I might do that or I think I'm gonna do that, that's not a man of character. You don't have principles because you unstable, you know, one minute you will, one minute you will not, one minute you don't know whether you will or you will not. That's not principles. That's not stability. So, you know, that's one of the things that we have to have is care to always say that your gift will take you when your character can't go. In other words, you can take the nigga out to get him, but you can't take the nigga out. You can't take the nigga out to get him. So that's what we're looking for, the hippopotamus. We're looking for people who got principles and care to say what they mean and mean what they say. And Mike, you know, he won't know what type of dudes. Your artist here is a young lady. Your name is Emeril? Emeril Envy. Emeril Envy? You know, I don't know if you got a, what is this on your face? You got a little Christian Rock stuff going or what? I mean, what's that tag, what's going on? What is that tattoo? Nothing, nothing. You don't want to talk about it? That's that Christian Rock. It's going through the, it's waving through all our people. All our young people, huh? It's hard, I was dating somebody. Wow, that's that Christian Rock. It's going through, I felt it. I could feel it in the, you know, I could feel it. Yeah, I don't know if that's real, but he damn sure got it something on there showing that he might do it. I'm gone, I might do it. You know? That's crazy. But the one thing about it, that's the phases. We say it's crazy right, Kim, but it was crazy when Niggas was wearing bell bottoms and tom walkers. Now they calling the bell bottoms, what they call them, the, you got some, you got some bell bottoms on there. Stacks, they call them stacks. But it's really bell bottoms. Same thing. But, but I'm just saying, like you got to realize the times change. People going to look different.  But then everybody going to ride with it. So y'all getting tattoos.  I was, had left the gunplay on here last, last week up in LA. Everything tatted, tatted to the game. You know what I'm saying? I thought that was crazy when them Niggas was doing that. You know what I'm saying? So it's just the phases that these people go through, you've seen this before. You know, the word of God saying nothing new under the sun. Man, I've been in the clubs in Atlanta and they letting people in there with masks on. I'm looking. Yeah. Yeah. Like, dude, I don't want you close to me with no mask on. Mask on? I don't know who you is. I come from the streets. The mask, man, you going to arrive, you going to do something to somebody. You got something sneaky going on about you. So it's just like today's world, the mask and the bag. You started with that COVID. Everybody carrying the bag.  Oh, that thing. He's been carrying the bag. Yeah, he's been carrying the bag on the other street. Got that pop, pop, pop. Oh, yeah. Yeah. She got that thing on. You know what I'm saying? You got something that'll clap back.  A book bag, man. A book bag, huh? Hey, did she know? You know that he was a mystical cousin, right? I knew he was a mystical cousin. We talked about it. How's the mystical doing? Have you heard from him since he'd been locked up? Yeah, I heard from him. Is he coming home or he's still waiting? He's still waiting. Hadn't been sentenced to nothing. Nah. Okay. And that's good. So like the thing about it, Ken told a story on here. Ken told a story of how it was something about some jury being taken, right? Yeah, well, so, you know, you want to talk to him?  Well, the relationship, mystical is my man, you know. So, you know, we did a song. What's that song what Lil John mystical did? When they were in the club? I don't give up. I don't, if you don't know, do, do, do, do, do, do, do. So that's when we got close at Lil John. What was the big truck drive?  The big truck drive was on. Okay. Okay. That's all.  What do you say? My man married. Big truck drive. Do, do, do, do, do, do. Nah, nah, nah, nothing to want.   Nah, but uh, but uh, but uh.  I know what you all talking about.  So when they took the jury from him, you know what I'm saying? They called the town. He called me. He said, say, man, these people from your town, they got me. So I had me, if I made a phone call and I made a phone call within 24 hours, I had this jury back, a hundred thousand off a jury.  The guys that had it, anybody that know what 28, in the 27, the actresses know who I'm talking about.  Over the years, you know, I did a lot of time in the penitentiary. So I established myself in the town, you know what I'm doing, you know, I'm from the East side. So my brother JD, you know what I'm saying? You heard him on Pepp, I'll probably say I'm game affiliated, so you could do the math. You know what I'm saying?  And so we got it back. He came and got it back. He left 50,000 in the car, my brother Marvin Carr. I said, he's slipping again. So my brother hit the rain in the car and gave him the 50,000.  He celebrated, he was just so happy, man.  So we got the jewelry back for, you know, and that's what connected me to him. I said, man, you know what I mean? Your uncle, cool. And then I was telling him about BG. I said, BG, you know, he promoted my book. And then he said, my mama, no BG. I let him tell you about that story. Oh, yeah, yeah, yeah. I done rolling the call BG in his Dodge Magnum before. She had BG was at the crib in the living room before. Shit, I was at the bling, bling, bling video shoot, the baller block in movie set. We was at the mall one time. They had like a hundred girls on the tour bus. I was little, I had to go on there to go pee. And I just went on there and stayed on there. I was sitting on there talking to the girls and stuff. Like an hour later, my mama and BG and them come get me off the bus. But like, I was around then when I was young for sure. Wow, that's heavy because, you know, being from New Orleans, man, like you've seen a lot of things happen, you know what I mean? For sure. And I think that I love New Orleans. You know, I'll be down there. I got to go down there this year. I love going down there and setting up doing the interviews. You know, when he was surprised that I knew all the streets because I used to stay on, I stay on Veteran Boulevard in Kenner, who's Anna.  Man, I hooked him up with him and baby, both of them. You know what I'm saying?  He wanted the pimp gang so bad. He tried to knock one of my bitches, you know what I'm saying? Yeah, yeah, yeah, yeah. Cause she had my name tattoo on her titties. So baby told her, hey, if you take that and put cash money, I can get you X amount of dollars.  You know what I'm saying? I mean, we can get another tattoo. You know what I'm saying? I said, go get the money if they didn't want to get it. But you know, you know, me and baby, man, we've been cool. But how I met baby, this is some players named Tim and Tarell. You know what I'm saying?  That was their cars. So those brothers, you know what I'm saying? They gave me 30,000 back when Pimp's up, Holtz first came down and it was an explosion. And so they gave me 30,000 to be with them for a week. And the part of that was we did a concert with Jay-Z and cash money at the atrium. Actually, we have an award show on April 7th. So it was almost like a reunion, right? So they paid us all that money to do the, to do the, you know, the party. And then they wanted me to go to New Orleans. So I went to New Orleans.  And at that time, you know, a lot of people don't know.  Yeah.  I brought her to the can. Wow.    He went crazy. You know what I'm saying?     You know what I'm saying? I mean, but I was getting money on the low. You know what I'm saying? I was a part of those record budgets. Wow. You know what I'm saying? Wow. You know what I'm saying? So, but the New Orleans connection was me and my man. And I said, bro, I know, I know a club, Ram Port and off of a, we just got to name it streets and canal streets. The bourbon, you know, French Quarter and all that.  That's crazy, man. Like the one thing I do know that the universe will connect people. You know what I'm saying? It'll put everybody, everything together. You know what I'm saying? Like, so like when did you, did you know what we just said? Mike, I mean, let it breathe. He signed to HHF management. He's the biggest thing since the Toothbug, since Listerine. This man has demand 16 billion views. Wow. That's big for HHF. Can I get a clap? Come on, man. Come on, man. Yeah, that's big. That's big shit, man. That's big. That's huge. You imagine what's going to happen with HHF and then we got Emerald and Cash and Supreme. I got four of the coldest motherfuckers on the planet right now. Wow, that's hard. Do they work together? Like, what? Yeah, we could go to Studio Bash, who's our CEO when he runs the hip hop fraternity Dallas.  He live actually five minutes from you. Wow, that's crazy. That's going to be hard. I'd love to hear the music once everybody put it all together, man. It's going to be lovely. You know what I'm saying? So let me, how can people get a hold to you if they're trying to reach out to you? Turn that mic for me. Speaking to the mic. By email and social media, my email is emerald.envywithtwowise at gmail.com and then y'all can follow me on all social media platforms at emerald.underscore.envywithtwowise. Wow. Follow me on IG at Jet Boy Cats Underscore 19. Make sure you go brick by brick and go to www.hiphopfraternity.com. Follow me on there as a friend too. Wow. Make sure y'all vote for me. Bow, bow, bow, bow, bow. MYK Fresh on everything. MYKFRESH. Type it in. Bow, bow. And y'all can find me at HHF4. HHF4? April 7th. HHF4. HHF4. HHF4. HHF4. Let's go right down. Bow, bow, bow, bow. And if you want to book any one of these artists, you can hit me up at 404-790-627. But we got a special right now, you know what I'm saying? So you can get four for one. Oh, they forgot the four for one. Yeah, because Mike is the headliner. So if you book Mike, then you're going to get the team.  So it's four for one. And we ain't cheap, neither. So let's make that clear.  Pimp and Ken. And you can follow me at realpimpken-underscore on IG. And my books are also available. My books are available at audible.com. Type in my name, Pimp and Ken. And you get Pimp, I'll give you 40 Laws of Game. And you can catch me every Wednesday on Triggler. I wanted to co-host with Ugly Money. And we just be talking. If you're a red pill brother, you know what I'm talking about. Wow. I got a new Twerk record coming out with Bow and the Mack, too. Hey! Keep it up for that. Man, thank you guys so much for coming on the show. It's been another great segment. A Boss Talk 101, what up? Boss is talk.