Next talk we have is from Grace about the AOSP build system. What do you Grace? Okay, thank you. So yeah, welcome to this talk. I'm going to try and demystify the AOSP build system. Don't guarantee that I'll succeed, but I'm going to try. Let's skip that. So I'm going to start off with a kind of high level view of the AOSP build system for those people who may not be totally familiar with it. And then I want to break it down into the various components. I want to talk about Soong, Carti, Ninja, and then I'll finish off with Basil. So let's see how this goes. So Android is a large chunk of code. I counted, well, I used a C lock to count the lines of code, 50 million lines of code, mostly C++, big chunk of Java, bit of Kotlin, bit of Rust. And you need a build system to build all this thing. So this is Google, so they wrote their own build system. But the way it works, if you're familiar with, for example, open embedded or build route, you'll see that there are a lot of similarities. A build system is a build system is a build system. They all basically have to do the same thing. This talk is based on Android 13. And so big warning is that, first of all, the build system does tend to evolve release by release. And we know ahead of time that Android 14 is going to have some big changes in it as they begin the transition towards Basil. But we'll come to that later. But the full details of that aren't really apparent to me at the moment. So like I say, you'll have to invite me back next year to talk about the Basil version of this. Notes at the bottom there in small text. So the ASP build system only builds the ASP operating system and the kind of upper levels. It does not build a kernel. It does not build a bootloader or any other bits and pieces. Consequently, when you get ASP from your favorite Silicon vendor, they will have bundled with the ASP build system, their own build system on top of that, which is going to build a kernel and the bootloader and resulting in some truly weird stuff. I wrote stuff. You can make up your own word. So yeah, it's not entirely ideal. However, so first of all, going through just the quick top level thing, just a quick recap to make sure we're all on the same page. So the ASP source code is a large collection of Git repositories, over 1100 now. So you begin the process, you get repo, of course, and then you use repo init to go get the manifest, which is an XML file which lists all the actual Git trees you want to clone. So we do repo init, all that kind of stuff. Optionally, given a tag and in this case, Android 13 release 35. That just downloads the manifest. That's a fairly quick thing to do. And then you do a repo sync and that will then go through, iterates through the manifest and is essentially a Git clone for each one of those 1100 trees. So it's going to take a while and in Android 13, it's about 150 gigabytes that you download. Yeah, notice the contrast here to say build written Yachto. We build on Yachto, basically it downloads on demand. So as you download, as it goes to build a module, it will first of all download the code and then combine it. A repo and ASP don't work like that. You basically go get everything in one go. Even if you don't need those things, you're going to get the entire thing, including BSPs for stuff you may not be going to touch. So that's one reason why it's so big. Then you set up the shell environment. So you source the script build M setup. And this includes a whole bunch of shell functions, one of which is lunch. And so the lunch command allows you to select a build target, basically a BSP. So in my example, I'm actually building a Cuddlefish target for x86 phone. But the procedures are the same, whatever target you choose. These targets, then, they're defined in Android product.nk files. So if you go looking through the device directory of ASP, you'll find there's a whole bunch of Android product.nk files. That's what populates the lunch menu. And so the particular example for the Cuddlefish phone I'm using, that actually comes about because of that file there, device Google, Cuddlefish, Android products to mk. And within there, you'll find common lunch choices equals da-da-da. So that's how it becomes selectable as a product. So you run lunch, select your target, and then you build it. So building is very easy. You type M return. That's the easiest part of the whole process. And then have a coffee and have another coffee and take a vacation because the build is going to take, well, if you have powerful hardware, it may take about an hour. If you have more normal hardware, it's going to take four hours, six hours, whatever. So plenty of time to take up a hobby and learn some crocheting or something. So when it's finished, oh no, sorry, step back a little bit. Yeah. So how did it know what to build? So you selected a target, Cuddlefish in my case, and the packages that get built are all bundled together into this makefile variable called product underscore packages. And if you look through the various components that make up the entire build, you will see things like product packages plus equals and then a list of modules. So Cuddlefish service, Vsock input service, blah, blah, blah. And if you actually, you can actually dump out variables. You can use the tool get build var, for example, get build var product packages. That will then list all the product packages that are in your product. And it's not particularly easy to read because it's basically one big long line because the names are just separated by spaces, not by new lines. But if you do that on a typical product, you're going to find that it consists of somewhere between 900 and 1000 individual packages. So when you type M, it's based, amongst other things, it's iterating through product packages and it's doing a build on each one of those modules. And then it all finishes eventually, and it generates stuff in the out target product, product name directory, which in the case of Cuddlefish, turns out to be Vsock x8664. And if you look in there, amongst other things, you'll find these are the image files. So there's the boot image, there's the vendor image, there's a system image. And then typically you use fastboot or something to flash this onto your target device and then you go and test it. Okay, so in a couple of slides, that's essentially how Android build works. These Android modules then, there are currently defined in two different ways. You can either define them in android.bp files. So BP stands for blueprint. Blueprint is a language specific to ASP as a way of defining a module. This is basically a recipe. So if you want to think back into Yachto terms, this is somewhat similar to a BB file. And in Android 13, we have something in an excess of 8,000 Android BP files. There is also a legacy format, android.mk, which has been deprecated for quite some time, but there are still a lot of them around. I counted them. There's just a little bit less than a thousand Android mk files in ASP at the moment. So you'll find both of these things. And when you do the build, it basically will iterate through all of the BP and mk files and it'll build whatever it is you specified in your product packages. So now I want to dive a little bit and look under the hood or behind the curtain or whatever it is and see what actually is going on when you do this build. So it turns out that there are three components to building ASP. There's Soong, there's Carti, there's Ninja. It's kind of complicated. So I've got a graphical example to kind of help you and kind of put this all together. So first of all, start with Carti. So Carti is a genetically engineered augment and she is a follower of Khan Nyunian Sing. Okay, this is Khan Nyunian Sing, but he has nothing to do with the story. So instead we need to talk about another Nyunian. How many Nyunians can there be? This is Dr. Nyunian Soong. So Dr. Nyunian Soong is a AI genius inventor of data. Okay, this is data. So data is an Android, but not as we know it, or at least we don't know. I mean, does data run Android TM? I'm not quite sure. It's not made clear in the TV series. The other thing is the same actor. I mean, that's cheap. They could at least, they could at least employ a different actor. Anyhow, data is also not part of this story, so we can forget about him. And then the third character is Ninja. So Ninja turns out that well, the Ninja are a cast of Japanese soldiers, most notably known for assassinations and spying and all the other kind of daring do's. So those are three characters. We have Carti, we have Soong, we have Ninja. Okay. And so essentially, Carti and Soong are passing information to Ninja. And then Ninja with some deft sword play is creating for you an Android from maybe a tree stump and quickly carpet. So there you go. I hope that helps. Everything becomes much clearer now, I think. So how do we get here? So if you look back to the first publicly available source code release of Android, which was the Cupcake 1.5 release, 2008, actually maybe in 2009, strictly speaking. So originally it was all done driven by Gunnu Make. So the Android build system was a bunch of Makefile fragments, .mk files. And there's a whole thing about whether it's recursive mate or make or make file fragments, go Google or search using your favorite search engine, recursive make files considered harmful. Anyhow, initially it was just being file based and it was fairly simple and not particularly surprising. But it turns out that make doesn't really scale that way to really large projects. So as Android got bigger, the limitations of Gunnu Make became apparent. So slow to start up. The processing of the internal logic is not brilliant. There's no progressing indication. So you may remember in the early days, you type make and then you had no clue as to how many cups of coffee you had time to go drink. So you had to keep coming back after each cup of coffee. Has it finished yet? Oh, god, no. And then another coffee. So now we do have progress indication, which gives you some ideas to whether it's nearly time to stop drinking coffee. So in Android 7, Nougat, they introduced Kati and Ninja to overcome those particular problems. So essentially with Kati, Kati basically parses the MK files. So Gunnu Make is no longer involved. Kati parses all of the MK files, generates a Ninja manifest, and then Ninja works to the manifest, does all the work, and it gives you a nice progress bar. So that's good. And then for mysterious reasons, in 2017 in the Oreo release, they added Insung. So Asung is its own thing. It has its own format, blueprint, but it still generates Ninja manifests. In fact, it also actually doesn't quite even do that. It actually generates a make file, then Kati processes the make file into Ninja manifest, and then Ninja does the actual work. I think the original intention of Asung was that Asung would take over the entire process. But for various reasons, which I really don't understand, it kind of stalled and hasn't quite achieved that. So here we are in 2023 with the upside down cake release, Android 14 coming along in a couple of months time. And the big idea now is to add in a fourth component called Bazel. So how do you solve a problem with software? You add another layer. So hopefully the Android developers will follow through and actually use Bazel to replace all the other components, which as I understand it is the is the aim. So let's see what happens. Okay, so like I said, I want to go through not in particularly great detail, but I want to give you a little bit of an idea what each one of these components actually does. Starting with Soong. So as I said, Soong reads Android dot BP files. They're written in blueprint, which is a quotes Jason like language. And they are also quite similar to the format of Bazel build files. One of the key things about blueprint and Soong is that the blueprint files do not implement any logic. They are quotes declarative and quotes.  That's that's all you get in the blueprint file. So the logic is actually implemented separately in Soong modules, which are written in the go language. And we'll come to that in a moment or two. So the code for Soong, you find it in the build Soong directory. Don't ASP by the way is just my shortcut for wherever your ASP code based route is. And there's some documentation. This bit is looking at the startup. And actually, the main thing that I was have been worried about for a while is when I type make, how come it runs Soong. So I eventually dug this out. It's a little bit hard to read. We don't need to read all of it. But the main thing is that there's a bit of logic there that says, if you're at the top level, then when you type make, it actually runs M. What actually runs Soong UI and Soong UI actually does the invokes the build process. So if you're at the top level, if you're in dollar ASP, M and make are identical. If you're in any other directory, then make actually does do make, which is confusing. And we also have these variants. So as well as M, we have MM and MMM. So if you type M or make that will build the entire thing. And it builds seeking towards a target called droid. So the default target is called droid. If you just want to build a single module, then you can just change directory into the directory which contains the Android BP or Android MK file. And you can type MM. And that will then run the build system with the target of just that one module. So usually that's much faster than doing a complete build. And then we have the three M's kind of similar, except now you can give one or more directories as parameter. And it will essentially CD into each one of those directories and run MM in each individual directory. So the driver for the whole thing is Soong UI. So when you type MM, MMM or make, you always end up in Soong UI. And that is what actually then runs the various jobs. Soong UI takes a command line parameter. So you can actually run it from the command line if you wish. But it has basically these three modes. It has make mode, which is basically what happens when you type M. It has dump var mode, which is what happens when you type get build var. And it also has dump vars mode, which is actually used internally with to generate the variable list, which CAR T uses later on. Quick complaint to anybody who may be listening from Google, for example, it'd be really great if dump var mode will take a wild card or something. I'd really would like to type dump var mode and give some kind of regular expression. But it doesn't. Okay, help with make or M. You can type M help, and it gives you the list of possible... Well, no, it gives you some hints about possible targets. Common goals are. So you can do M clean, which just deletes the entire directory. We have droid, which is the default target, and some other things which you can read from the slide yourself. When you run M, if you don't give a minus J option, it will choose as many jobs as you have processors plus two. Again, the plus two is a little bit mysterious. But if I run this, say, on an eight core machine, it's actually going to run 10 jobs. So it's equivalent to minus J 10. Here's a very quick look at an Android BP file, just in case you've never seen one before. So this is a CC binary. So CC binary. So this is the type of module we're going to build. So it could be Android app is another one or Java library or whatever. So that is the type of thing we're going to build. In this case, a binary compiled from C and C++ code. Every module has a name in this case log cat. And as somebody was talking about just now, that name has to be unique throughout the global namespace. So you cannot have two modules with the same name. Kind of makes sense unless you name spaces, but that's another topic. List of source files, list of libraries, list of C flags. So that is going to invoke the cross compiler. It's going to build log cat. And it's going to install it by default into the out directory into system bin log cat. So at this level, it seems pretty simple. A quick note about dependencies. So when you write Android BP file, first of all, there are implicit dependencies on any libraries. So since here we are linking with lib base, lib process group. Those are implicit, implicit dependencies. So the system's clever enough to realize that we need to build lib base and the process group before we can build log cat. And then you can add in explicit dependencies using the required keyword. So you get a list of modules. These modules will be built before it builds this module. So I said that the CC binary is a type of module. And here are some other examples, which I'm going to skip over. Oh, yeah. If you want to see the information, the documentation about the various modules you can build, then you can type m soon underscore docs. And that will then compile the documentation. And then you can go read the file. If you're looking at soon docs, soon build HTML, that then lists all the various module types and all the various attributes each module type can have. So these module types, like I say, the logic is written in go. So here's an example. First of all, the source code for soon is in build slash soon. If you have a look through that, you'll find things like this. So have register module type, CC binary, and then binary factory is the subroutine that's actually going to do the processing. There are, by my count, there are over 300 module types in Android 13. And the fact that there's been quite an explosion of different module types over the last several releases. And somebody was discussing just in the presentation before about the possibility of doing certain things with Android BP files. And yeah, if you actually want to do anything other than just the simple stuff, then you would have to add in a plugin and define your own module type. So when you run soon, so you'll see that it's running soon. It actually appears as a line on the one of the first things you type after typing M. Essentially, it is writing this file called build.ninja. And it says analyzing BP files and generating ninja file at blah, blah, blah. So this is a big file. So it's a text file, but it's usually between five and 10 gigabytes. So that's why it takes a little while to complete this stage. And also, it has to regenerate this whenever you change anywhere in the system. If you change a single Android BP file, that is going to force it to regenerate the entire build.ninja file. Now, the interesting thing, then, if you go look into that file, it basically has build rules for every single Android BP file. And that's because at this point, soon doesn't know what the target is. Only Carti knows what the target is that we're trying to build. So soon just blindly goes through every single Android BP file it can find, puts some build rules into this build.ninja file. So even if there are components that you're never going to use, it still has to generate the build rules for them. It also generates a .make file, Android dash, whatever, which uses input to Carti later on. Oops, I meant to delete that slide. Okay, so there are some, let me just skip. Yeah, okay. TBD, describe what you can find here. I didn't do that bit. So there are some log files. I'll leave you to work out what's in them. I mean, the thing is extensively logged, but the contents of the log files is not 100% obvious. And I was trying to find a kind of definitive reference as to what is in the log files, but I couldn't actually find it apart from reading the code. And I ran a design reading the code. Okay, so how are we doing? Okay, I better speed things up a little bit. So that was soon. Let's talk about Carti. So Carti is a new make file clone. It parses these .mk files and generates the Ninja manifests. Here's a typical Android .mk file. This is similar to functionality of the BP file we looked at a couple of slides back. And oh yeah, comment at the bottom, looks a lot like build route. Yeah, this is essentially how build route works. Again, there are dependencies, there are implicit dependencies, libraries and such like, and you can add in your own explicit dependencies in this case with a required local required modules. Oh yeah, we think because of the way it works, you cannot have a dependency from an Android .mk file to an Android .bp file. So you can do it the other way, but mk files can't have dependencies on modules defined in BP files. So when you run, I've confused Ninja and Carti. This should say Carti outputs. So Carti generates a Ninja manifest called something.Ninja, for example, build ASP CF blah blah blah. And this contains the build rules for all of the .mk file stuff. It's still quite a big file. So it's less than a gigabyte, but it's quite a few hundred megabytes. So that then brings me to Ninja. So Ninja is basically stitching all this stuff together. Let's get that. So Ninja is its own build system, although the Ninja rules are not intended to be kind of written by humans. They're mostly generated by tools such as Ninja. But there's a quick idea as to what is in Ninja. So we have some variables such as C flags. We have a rule called CC, which tells you how to compile a component. And then we have a dependency. So build food depends on food at C, and it's going to use the CC rule to build it. That's basically what it is. So Ninja is started from suing UI. And I dug this out because it's kind of interesting to see how this kind of rolls out. So you can see the target there. So the default target is droid. You can see the parameter, the minus j parameter I gave because I wanted to limit it to 16 jobs. And it is going to process the file combined ASP, Cuttlefish, whatever, .Ninja. If you go look into that file, it is this little file that lower down the slide, it is running a sub-Ninja on all the other Ninja files that have already been generated. So the first two were generated by Carti, and then the last one, the build.Ninja, was generated by suing. So in that way, it brings all the Ninja files together. It knows what the target is. It's droid. So it can work out the dependency tree. It can build the whole thing. The interesting little thing that I discovered is that you can actually run Ninja directly. Ninja has some useful tools. So one of the things that I've always wondered is how do you generate, how can you see the dependencies? So you can do this by calling Ninja minus t, minus t query. In this case, I'm doing a query on logcat, and it gives me the dependencies on the logcat module. So we have two lists. We have the input dependencies. So these are things that logcat depends on. And we have the output dependencies. So these are the things that depend on logcat. So that's quite useful. Pushing a little bit further, you can actually get it to draw a graph of this. So minus t graph, generate dot dot file, then you convert the dot dot file to, for example, a PDF. Not as helpful as I had hoped. Maybe I could tweak this a little bit, but yeah, send me patches if you know a better way of doing this. And oh, we're doing quite well, actually. Okay. So that was Ninja. Final thing. I've got a couple of slides on Bazel. Like I say, Bazel is still a little bit upcoming. So we don't know for sure exactly how it's going to be deployed because it's not released yet. However, the eventual goal, as I understand it, is to replace all of those things, CartiSoon and Ninja, with one tool called Bazel, which in theory should be a good thing, as long as they actually do that. And it should speed the build time up a little bit, particularly the start of the build. So all this messing around, generating dot Ninja files, most of which you don't need, and then generating make files and then reprocessing them in Carti, it's a little bit crazy really. So if this works, then this will be a great improvement to the Android build system. So my understanding then is that we will see the first deployment of this in upside down cake. And it's going to be gradually rolled out, I believe, over the next few releases. So maybe in three or four years' time, we'll have a completely Bazel-based build. Right now in Android 13, the only bit of the build process, which is completely done in Bazel, actually is the kernel. So I kind of skipped that a little bit. But if you go down, download the Android common kernel, the ACK, there is a Bazel, set of Bazel files there, and you can build it using Bazel. And there are some references. Bazel in one slide. So this is as much as I managed to discover in the short time on the plane over as I was writing this stuff. So how do you know it's Bazel, first of all? If you look for these two files, if you see a workspace file in uppercase and a build file, you're probably dealing with Bazel. So the workspace file, this defines the workspace, basically the top level directory. And then the build files, these essentially are the rules. And then the, sorry, these are the equivalent of the BP files. And then there's a Bazel logic is put into BCL files. The language is called starlock apparently. So, yeah, looking at the master branch, if you do a build of the master branch, you'll see that Bazel has replaced Ninja, but we're still using Soong and Kati to feed information to Bazel. And I've got a couple of minutes free. Yeah. So there you go. So that is my interpretation of the Android build system. Does anybody have any questions? At the end, you said the kernel will be built by Bazel. Will it replace the scripts for the GKI when we want to build your own kernel? There are lots of scripts based on the GKI architecture with a common kernel and specific kernel. Yeah, basically it will. So in Android 13, the official way of building the kernel is still to use the build.sh script. Yes. But there is also a Bazel build mechanism and you can invoke a Bazel build, Bazel blah, blah, blah, and that works as well. I think in Android 14, the build.sh script will disappear and then Bazel will be the only option. But the GKI will be the same. GKI will be the same. The GKI is the same. I mean, in theory, it produces the same binary. It does the same thing under the hood. Is Soong actually built as part of the build process? So if you add new rules to that, do you have to rebuild a custom version of Soong and invoke that or do you just change it in the source tree and it will work automatically? Yeah, how do you add modules? Okay, I'm going to have to say I've never actually done this. But my understanding is you can just add in the module and it is controlled. I mean, it's essentially Soong being built Soong. So you should be able to modify the, or add in your own .go rules, .go files, add them to the appropriate Android VP file, rebuild everything. It should rebuild Soong with your changes in. Has anybody here actually done that? Can you confirm that I've got this right? Okay. Okay, right. So answer from the audience is, yes, that's basically how it works. Anyone else? Thanks for the talk. Quite interesting. As someone who's also patched some parts of the Soong things for some special tasks we had in another project, you talked about the modules and you quoted plugins for Soong. Do you know if there is something similar in Bazel plant or actually there? Well, you're stretching my knowledge a little bit. But again, my understanding is that the logic that used to be, or is currently implemented in Go, is instead implemented in Starlock in these .bzl files. And it says Starlock is a Python-like language. So it's a scripted language so that there's no compilation part. I guess it's the important bit there. So yeah, I mean, these are a little bit like bb.class files in Yocto. Do the BP and android.mk files live in the various source directories as downloaded as GITS? Yeah, so when you write a module in Android, the BP or mk file is in the same directory as the code you're trying to compile. So does that mean you have to maintain multiple build systems for your component if it's used outside of Android as well? It depends which Android versions you are targeting. But assuming you're targeting anything since Android 8 ish, then an Android BP file should be sufficient. But if I want to build the same code outside of Android? Oh, sorry. Yeah, I'm a miscellaneous question. Sorry, you can't, basically. So the Android build system is hermetic, meaning basically the Android build system only sees the stuff within the Android build top directory. So you can't separately compile a module without building the entire thing. That just doesn't work. What probably what do you mean is if you have an external application, what I did in the past on the external library, you usually have, for example, the classical mk file there. And to build inside the Android, you pull the source code in and add something like an Android mk, an Android dot BP, and then call the mk file itself, something like that. So you have to add an additional build system if you want to have an existing module, if you want to build it inside the Android and outside. Yeah, thank you. Yeah, that helps. So typically that kind of stuff is done in say Android Studio, you build an APK in Android Studio, then you include it into ASP as a binary. That's typically how it works. And you said that you cannot have dependencies between the mk target and BP target. Is this bidirectional or only one to the other? Because there is the droid, the first, the last dependent one is droid, and then you have, should have dependency on both of them, something like that. Yeah, I only know that it doesn't work. So if you have an Android mk file and you want to have a dependency on something that's declared an Android mk file, that definitely doesn't work. I haven't quite got to the exact reason why that is so. Maybe because there are two different tools that calculate the dependencies. I think it's something to do with the way that Ninja, you know that that sub-Ninja slider slow showed. I think it's something to do with the order in which those dot Ninja files are included. But I've not had chance to verify that. Okay, thanks. Thank you, Chris. That's it. Okay. Oh, and don't forget to come along to the bath two o'clock this afternoon.


Everybody, Jason LaDuke from Evil Genius Leadership Consultants here. We're doing our favorite thing of walking around downtown Las Vegas. And we're talking to people who have business opportunities. The important thing to remember about opportunities, especially for business, is that they're all around us, but they aren't just going to fall into our laps. Every day, we've got to be looking for that new opportunity. That new product we could be trying out, talking to our customers about, seeing if they like it, that new service we could be offering, that new variation on what we're currently already doing. But always looking for that opportunity to find something that somebody needs and fill that gap, find a way to serve our communities. But it means we have to actively be looking. Standing by or sitting on your desk, waiting for the phone to ring, that an opportunity is going to come. It just doesn't work that way. If you're really lucky, maybe it does. But for most of us, we've got to be out there looking for those opportunities.


Look, today's show will be a little bit more explicit than some of you are more comfortable with, so just letting you know, that's how today's show's gonna play it out. So viewer discretion is advised. Ladies and gentlemen, welcome aboard. This is Loverhost featuring Mia Malkova. Mia, why don't you introduce yourself just in case they don't know you already? I just want to say hello to Slick. How are you, Slick? Oh, hi. I mean, I'm good. I'm good. You look really sane, you think I'm good? I'm good. You look really cute today. Thank you.  Y'all forget about that. I'll see you guys. I'm gonna take off. Yeah, the show seems pretty settled. Hey, Slick. Slick, what's up, man? I also wanted to say hi. Slick, you're looking mad cute right now, bro. You're looking pretty breedable, Slick.  Wait, what?  Yeah. Literally right before we went live. That's why I was late. Isn't that right, Rich? I love your dreams. I said something like that. I think you might have chopped up a few of the words a little bit, but I think Slick's a very good looking dude. And I think that me, Slick and Mia would all have a lot of fun on a vacation if this doesn't work out.  You're not making alliances, motherfucker.  Yeah, thank you. That's what I had to say. Thank you, Stavros.  Thank you, Stavros.  Absolutely. Yeah, give it up, S-Fan. Go ahead and introduce yourself. I'm excited to be here. I've gotten a chance to get to know everybody here quite a bit. Some for 10 minutes, some for 10 years. Really only Mia for 10 years because, you know, the videos. But no, I'm really excited to see how this is going to go. I think this is going to be fantastic. And I can't wait to see who won this cast is going to be right for me.  I really am. I'm very family oriented. I love my dad. Yes, she loves her dad. She loves her dad very much, which, Mia, you may cry during this one, but we have your dad has sent a message for this show. Hey, everybody. Mia Malkova's stepdad here. Wanted to know, since one of you could be vacationing with my daughter, where would you take her and what would you do with her while you're there? And by the way, Mia, sweetie, when you get home, there's some laundry that needs to be taken out of the dryer. Just make sure you don't get stuck this time or do. That was Mia Malkova's stepfather, everybody. Giving the first question of the day.  I love him so much. I do. I do anything for him. Great. Awesome. Stepdad wanted to know where you would take Mia Malkova on a dream vacation. Let's roll with that question. Here we go. I think it's an easy question. I'm Greek. I would love to take you to the Greek Islands, baby girl. You know what I'm saying? We're out there. We're on the beaches. We're grilling up calamari. We're feeding it to each other. A lady in the tramp style. I think that's a home run and I think you would look incredible in the beautiful beaches, crystal clear blue waters. Nothing better.  Thanks. S-Fan, go ahead. I would take you. This is on a dream date, right? Mm-hmm. I would take you to the beautiful shores of Syria and we could watch the sunset and, you know, they say it's beautiful this time of year and there's a lot of good scenery and it's very exciting there and I think just going through to check out the local cities and the different cultures across the world would be very exciting and I think kind of opening our eyes or a horse to that would be very good for both of us to do together. Could we feed each other pizza? I can feed you pizza. Thank you, S-Fan. That's all I want. The meat lovers though. You'll get the meat lovers. Don't worry. Right? You know what we were talking about? Austin, you missed the conversation. What was that? For about 45 minutes before the show, we were all talking about poop methods. Wow. Wow, really? That's interesting.  What happens when you give these animals freedom, Austin?  One second in this motherfucker wants to talk about shitting himself. Why don't you just stand me a little bit more round? Can I clear something up? Can I clear something up? You said that I was, that being bald, no hair was a disadvantage. However, your stepfather, I feel like we're pretty similar in a lot of ways. I mean, not always. I don't think that. Slime, I feel like there's at least a 4-inch difference somewhere. Okay. You would think that. But let me tell you, I have been told, and this is true, by many partners throughout my life, that I have one of the most aesthetically beautiful penises.  It does not mean it's little. It does not mean it's little. It means it is no size. Has anyone ever said the word big? Like once? I want to ask you, Mia, it's a genuine question.  No. Really? No. Really? No, never. I got to be honest. I don't think I would.  Wait, doesn't you prefer a bald guy over a virgin? I would. I'm both, man. So I'm feeling really good. Why are you trying? He is a virgin, just so I know. Me? Oh, there's a lot of hands right now. Jack is stealing both bald and virgin valor right now.   No, man. Let's all sit on the table. Let me make my choices. Look, I shaved my head. I choose to be bald. I choose to... I chose this life. I chose the life I'm seeing.  You know?  But let's ask the cast here. Just to get it, you know, juiced up a little bit. Who here do you think is the worst choice for me at Malcova? Who do you think would be the worst decision? The worst choice? Easily slick, I would say. What? Yeah. I mean, look. You need to... Wait, no, you're underestimating him. Okay, slick. No, no. That's not that. It's... You've already been there. You know what I'm saying? Like, do you not want to explore uncharted territory? I thought we were friends. No, I know.  You don't want to be friends? Tell me you don't want to be friends. Tell me you don't want to be friends. No, I want to be friends. But I'm just saying, like, we could be more than... We could, you know... I'm just talking about the situation. Espen, I hit on you and you didn't want nothing to do with me. Damn. No, that's true. No. No. Hold on, let's expand on that. I changed my mode to Espen. All right, let's expand on that. So, tell everybody how you hit on me.  I don't know. No, I don't either. I don't remember either. That's why I was asking. We can play rock band if you come over. I'm down. Do you like rock band?  Me too.    That's true. Yeah. Shit, I just had a memory. Mia, I have to tell you the craziest thing in the world. Okay, wait, wait, wait. Espen is talking. Oh. Oh, wow. Okay, let's just leave it at that. Oh, let's leave it at that. I love that.  You can proceed, Espen. I was playing World of Warcraft, and this was, I was playing World of Warcraft on the new fresh vanilla servers randomly. And I get a message from somebody, and they're like, yo, is this the real Espen? I'm like, yeah. And he says, I'm Mia Malcova's brother. It might be. Oh my gosh. Yeah, he's huge into World of Warcraft, and he plays vanilla. Yeah, he was telling me. He's like, dude, I'm a huge fan. I found out about you from, I saw you on the Austin show with my sister, this and that. He's the one who got me into World of Warcraft. Oh, okay. Yeah. I bet it was really him. Yeah, so I didn't look. He's like, no, seriously, it's me. And he linked his Instagram and said whatever. And I was like, what did he look like?  That's damn an Espen. No, he doesn't look like me.  You make it all the time. Are you seeing your brother? No, I swear, ask your brother. Text your brother right now and ask him. I'm going to ask him. Text your brother right now and ask him. Hello? Hello. By chance, you're on stream. Have you contacted Espen on World of Warcraft? I just speak to him for a moment, yeah. Oh, see, it was my real brother. That's super cool. Espen, you should play with him. He's really good. You're really good, right? I'm good. He's good. But Espen doesn't play anymore. Espen, you don't play anymore? I play Burning Crusade. I don't play vanilla. So you might still play vanilla. But I play Burning Crusade. Espen, who's that? Wait, who's who?  Oh, thank you. What is this? Did you just have a hot girl bring you food? Look at this. Espen. What is that? That's a pizza. I made it. It's pizza? Espen. Cool. What is that? I wish I was there. I wish I was there, too. What is your name? That's awesome. Very good. Who is that? Espen. Hi. Why is she in a cheerleading costume? No, this just happens sometimes. Does she live with you? Oh, there's three cheerleaders here who are making food downstairs. What should I say? Yeah, they just showed up and they just started making food. Wow. Okay, taste test. Ready? Three, two, one. Ooh. That's really hot. That's really hot. We're getting outside by Espen right now, dude.  It's almost good. Espen live. It's almost good. It looks good. It's so funny. It's almost good. What's wrong? It's... No, I'm just saying it's almost good. The onions is wrong. Yeah, tell her what's wrong with it and why you don't like it. Yeah, onions are dance game. What? Yeah, onions are dance game. Julie, if you're eating bulgogi, there is tons of onions. Well, it's better. Is that a gogi in there, too? It's really good.  Then how about another? Almost good. Thank you, Espen. Espen, you're a blessed man. Thank you. Thank you. Thank you, Espen, for defending yourself by having somebody come in and serve you food. Thank you. Thank you. Even though you're not in the bottom three, so it doesn't matter. She just put french fries on this one.  Stop gloating, motherfucker.  Hold on, Mia. Why don't you believe I'm a virgin? Because you're hot. And you got game. Nice. That sounds cool.  Yeah, you got ladies. You're the man, Espen. Cool. All right, continue. Espen fucks for sure. For sure. Yeah, 100%.  You know what I mean? He's just... And I know Espen hasn't asked a question here, but I'd like to pull some lore. In 2019, Espen, on this show, you said, given some time, you may be... You also said... This is three years ago on this show with Mia Malcoba. You said, given some time, you may be willing to show Mia the hammer of justice. I want it. You probably said that. No, Timmy. The question I want to ask you is, has enough time passed that you are willing to show Mia the hammer of justice? This was July of 2019, almost three years ago, two and a half years ago. Almost enough time. What? Almost enough time. Yeah, it's close. Wait, what? What else do I have to do? Just time. It's been two and a half years, not three. Everybody thinks my weiner is huge, but I don't even know. I don't know what's going on. Because it's covered in hair. You can't find it. It's just like a jungle. Well, you know what? Good thing his hair is beautiful. I know.  What's this alleged clip, Espen, of you of 8.1? What's this alleged clip? No, don't know. No, it's not true. It's a miscalculation based on lighting. Okay. All right.  Is that what you're saying? Yeah, I was going to say. I didn't mention the shadow. It's much smaller than that. Okay. All right. Rich, Jack Manifold and Espen. One of you is on the chopping block. This is huge. This is big, actually. Wow. Hey, right now, Mia. You say goodbye to me. You can say goodbye to this. What? Keep it short. The person getting eliminated, Rich. Thank you so much for coming out, but you're going to have to endure more. Espen, it's the end of the road. You have been eliminated from the show. I'm so sorry. Whoa. I'm so sorry. She is going to have to say goodbye to this. God, I'm not happy about it. Challenging decisions have to be made at this point in the show. Espen, you have been eliminated. Mia, what led to your decision? I think he chose host. When Espen DM me, and I'm sure he's looking at them right now. He chose. He chose love. What? What? The guy. Espen. Espen has now chosen love. 60% of the time. No.  You did. I thought you would choose host on me because you've done it before. Yeah. Yeah. I also chose love before. It was a 50-50 shot. You hate to see it. Yeah.  I'm going to tell you again. Say goodbye to this. No. No.


You'll experience patient care that is specific to you with exceptional follow-up care that ensures your hearing and balance needs are being met. Audiology Associates at 1428 Northlake Drive in Prestonsburg. With the holidays quickly approaching, many are doing their holiday shopping online and receiving packages at their doorsteps. The Pike County Sheriff's Department provides tips on how to avoid having gifts stolen by porch pirates. If it's a small package, put it in between the storm door and the main door. A lot of people have cameras these days. That helps. Tracking packages, that helps. If it's something important and no one's going to be home, maybe ask a neighbor to keep an eye on it and make sure it gets dropped off. Along with stowing small packages between storm doors and having trusted neighbors pick up packages for you, increasing home security is not a bad idea. Even using something as simple as a trail cam to survey your home goes a long way. Ring doorbells is good. Any type of video, even if it's just a game camera, any type of video put out this time of year is good. During the holidays, it is better to be safe than sorry. Being vigilant and careful during this time will ensure a better Christmas season. For Mountain Top News, I'm Kelcey Fadell.


I'm David and I'm here to talk about monitoring the monitor, or if a primitius falls, does it make a sound? In primitius to monitor your service, but what monitors your primitius? So probably the first query you come across when you've known primitius is something like this. Is primitius up or actually is it down? So this is an alert that if the metric up with a job label matching primitius is zero then the query will return results. So you can use this in an alert with something like job down with an expression of up job primitius is zero and then it will raise an alert with the annotation primitius down for example. So that's quite simple but that's not enough to actually monitor primitius itself because well it's not a cartoon it's not that simple and you can't monitor yourself with yourself. So going back to basics again the architecture of a normal primitius setup is something like this. We have primitius talking to an alert manager sending alerts to some kind of alert receiver. So we only have one of each of these. Now the receiver is maybe something like page duty where someone else takes responsibility for actually making that reliable for you but primitius and alert manager unless you're using a managed service are probably your responsibility. So a common setup is to run multiple often. So a pair of primitius instances monitoring the same target and then also alert manager in a cluster mode of some kind and these ideally running on different machines. So there's now some level of resiliency there which is good. But what happens if the receiver is down or unreachable? Well alert manager tries to raise an alert but it can't go anywhere. So for example primitius raises an alert like this saying jobs down and then can't go to the receiver. So a common approach in the past was to have some kind of backup device connected to your server directly which meant you could use the internet and also SMS for example. Obviously it's a bit difficult to connect a phone to a server in the cloud. So how people often do all this is rather than alerting when something is down have a particular alert that exists as a heartbeat that is always expected which then is always sent to the receiver and the receiver somewhere on the internet knows that it should expect to receive an alert and if it doesn't then it raises an alert. So it inverts alerting essentially saying if there isn't an alert then start raising an alert. So there are many ways of doing this. Healthchecks.io provide a service that does this which is written in Python. You can run it yourself or there's a cloud hosted version of it. Devman snitch integrates with pager duty and is cloud hosted. Karma which is a web-based UI for alert manager can also display an alert when a particular alert isn't present. So that obviously doesn't page anyone but can show on a screen or something that there's a problem which if you have a knock or something could potentially be useful alternatively to do something entirely custom. So let's look at how we actually set up alert manager to talk to our heartbeat receiver. In the alert manager config we have a route that matches a label of severity heartbeat and then sends that to a particular heartbeat receiver and you'll see in this example the URL has an ID in it which would be team specific or specific to each Prometheus instance that is monitored by the receiver at the other end which unfortunately then means that this alert manager file needs to have every ID for everything that is monitored in it. Also that's not too difficult it can be templated or various other approaches but it still means that this is yet another thing to configure and the configuration needs to be managed and so on. It's yet another moving part essentially. So instead with PromMSD we have the same alert that we have before but in this alert you'll see that there are some annotations that have MSD at the start of them which essentially tell PromMSD how it should behave. The activation is the activation time, some blame was to override and then the alert managers to send the alert to which is unfortunately the one thing that PromMSD compromises on. It can't support dynamic alert manager discovery because the alert managers have to be actually specified in the alert itself although potentially we could fix that with some changes elsewhere in the future but this does mean that all the configuration for a team's alert is actually contained in the alert itself and nothing special is needed for heartbeat alerts. Obviously they probably would have team specific routing in the central alert manager but they don't need separate configuration for heartbeats which you know might get forgotten or so on because it's not used all the time and so on. So what then happens is this in this case raises two alerts for each of our high availability pair and those go to PromMSD. So let's actually see how this works. So over here I have some of the example conflicts that come with PromMSD so it's just a conflict directory and I'm running four terminals here. First of all I'm just running a netcat listening on a random port. This is going to be the normal alert receiver so we'll just see the HTTP requests sent to that. So inside PromMSD this conflicts directory has an alert manager conflict and alerts and a Prometheus conflict so what I'm going to do is I'm just going to run alert manager using that provided config. I'm also just going to run Prometheus and Prometheus will then be running. So you also haven't yet started PromMSD so I also just need to do that. So we now have Prometheus, alert manager and PromMSD all running and it's just first of all go to Prometheus here and if we look at the alerts UI we now see this expected alert heartbeat is active and we can see as I discussed all the activation things. You'll see in this case though that I've put the activation at one minute. They also notice this alert for now is not actually active because there's a full threshold of 30 seconds just to make sure that the previous instance isn't flapping. So this alert is still pending hopefully I've spoken for long enough I have and that alert is now firing. So that now means that we have an expected alert heartbeat that is firing. So what's happening to that? Well that is going to alert manager which conveniently I have running here and we now see there's an alert for expected alert heartbeat over here that we have the relevant annotations on and if we check where that's going that's going to PromMSD and actually our page has no alert going to it. Okay so then if we go over to PromMSD over here we'll see we just have a Prometheus and in this case it's not running Kubernetes so there's no manifest or anything it's just Prometheus which obviously in a real setup you would have a few more labels there but this for a demo this works. So you'll see that that is saying it will activate in a few seconds and I've actually got this set I think to repeat every five seconds so if I just see it reloading this page you'll see it actually never gets below about 55 seconds. So now let's just go to where we were running Prometheus and I'll just kill it. Okay so that was Prometheus yes so I've now stopped Prometheus so actually that's interesting because I see this alert is now still active and that's because alert manager over here still knows about this alert for now. I've actually set the in the Prometheus config the evaluation interval to 15 seconds so if I carry on talking for about four times 15 seconds we should eventually find that that alert stops being sent. Luckily this demo isn't live so if this fails I'll just edit it. Okay so it's now about to activate I'm just hitting refresh here so you can see what's happening. There we go so it's now gone red and says it's sent an alert so if we go back to this alert manager and have a look yeah the heartbeats disappeared and we now have a no alert connectivity alert and in theory if we go here we should actually get an alert delivered to us. So we've now been told we have no alert connectivity so that's how Prometheus works. So obviously that's a very simple setup and in reality you'd have a few more components involved so I thought architecture of deploying it might look something like this you have three teams running Prometheus instances for applications which talk to an alert manager cluster the alert manager cluster routes to Prometheus D as well as things in the cloud for other alerting as well as an infrastructure of Prometheus for example that rather than using the Prometheus D running locally in the cluster uses something in the cloud which could also be another instance of Prometheus D running elsewhere or it could be one of the mentioned cloud monitoring services and you'll also notice if you follow the red line that if Prometheus D here detects that there's a problem it sends it to alert manager but it also sends it to a where put receiver which goes straight to something elsewhere which means Prometheus D doesn't need to depend on anything other than a where put receiver which could run on the same machine or you know even in the same pod as a as Prometheus D in Kubernetes and yeah as I mentioned the infrastructure Prometheus has a separate monitoring that is potentially in a different cluster or elsewhere so the infrastructure team can be notified if everything is broken application teams can be notified if their Prometheus is broken by an explicit alert but if they actually are running in multiple clusters maybe they don't need to be told about their actual application being down if it's an infrastructure problem because the Probers don't fail and it means that you know you don't get a critical alert everything is broken when actually it's not all broken so there's flexibility in how you how you set this up that means you can make sure that the alerts are actually actionable and so on so privacy is now open source and it's available on our GitHub there so thank you to do research for supporting my work in open sourcing this and thank you for going to this presentation


Keir Starmer has been Labour leader for 12 months now. Many have been assessing his first year in charge. We did so on Friday's show and it was happening all weekend. Now on that topic, this is former Labour Home Secretary and Blair Wright, Alan Johnson speaking to Tom Swarbrick on LBC. I think you have to be in the Labour Party to really appreciate where we were in December 2019 compared to where we are now. I mean, I thought we were finished. You know, when you see us losing Redcar, Bishop Auckland, Sedgefield, Grimsby, Scunthor, Bolsova, it really looked as if it might all be over for us. Not because of that election result, but because this cult of the far left had virtually taken over the party at all levels and it looked as if the only successor to Corbyn would be a Corbynista and then we would get more of the same. For Keir Starmer to first of all be brave enough to put himself forward for what is an awful job, even more terrible in the circumstances Labour Party was in, and then turn that around, you know, in June, we are talking about where we are now, but in June he reached the highest rating for an opposition leader, any opposition leader since records began, since they started to record that in the early 70s, and now it's not too bad, by the way, there's been a boost for the government with the vaccine, of course. You think 10 points off is not too bad? But I feel, oh, 26 points off when Keir Starmer was elected, and you can sum up where the Tories are now in one word, which is vaccine. So, no, he's had a tremendous first year, more than anyone could expect, and I think I caught a bit of Jack Straw earlier on, as Jack Straw was saying, we've had a long period of leaders who haven't been popular with the public and have been less popular than their Tory counterpart, going right back to Gordon. Now, a few things to mention there. First of all, he says, you know things are really bad when Labour loses red car. Now, Labour lost red car in 2010 when Alan Johnson was the home secretary. So, a bit of an odd example. Obviously, the 2019 election wasn't particularly good. No one's going to pretend it was. Anyway, a few other things he says. He says the Tory lead is all down to the vaccine. Now, this is the story that the Starmer stands, like to say, he's doing brilliantly. But how could anyone possibly be popular when Boris Johnson is rolling out one of the most successful vaccination programs in the world? On one level, that's a reasonable argument. On another, it doesn't really fit with the the facts. Because as we talked about on Friday, if you look at when Starmer's satisfaction really tanked, it was way before the vaccine was rolled out. So you can see here, Starmer, as Alan Johnson says there, people were very satisfied with him at the beginning of his leadership. I think partly because he looked like a Prime Minister. He's knighted. He wasn't Jeremy Corbyn and the media were very nice to him. But once they sort of started to see the decisions he was making, that's when they changed their mind. So you can see that the biggest drop is between October and December last year. That's when he goes from 15% net positivity to 5% net positivity. And the big drop there is among Labour voters. So he goes from 50% people saying he's doing a good job net to 31% saying that. And what happens then is not that the vaccine was rolled out, is that he kicked Jeremy Corbyn out of the Labour Party. He's basically set a big FU to a huge section of Labour's base. And guess who else is saying a huge FU to huge sections of Labour's base? Alan Johnson on LBC. If you want to be cheerleading for the Labour leader, which is fine, you know, he wants the Labour government, that's good. He's on LBC telling people Keir Starmer's a good guy.  One in five Labour voters thinks he's taking the party in the wrong direction, basically because he's been incredibly insulting to anyone who supported the previous leader. And now that is just being reinforced by Alan Johnson calling everyone a cult. Right, so it seems like these people in a way have a death wish for the party. They would prefer to insult the left and kick out the left than have any chance of entering government by forming a broad coalition which includes, yes, both voters in the Red Bull who voted Brexit. By the way, Alan Johnson ran the Labour Remain campaign, one of the worst campaigns we've seen in the last 20 years, right? He's one of the reasons we're in this mess. But you also have to have left-wing Labour voters. We saw in 2017 there's actually quite a lot of them. Ash, what do you make of people like Alan Johnson constantly coming out to basically say a big FU to the Labour left? What do they think they're achieving here? Well, that's the things that they actually don't want Keir Starmer to succeed at the helm of a kind of soft left, right-ish coalition. That's not what they want. What they want is for Starmer to not do so well in the local elections to panic for there to be some backbench jitters about losing confidence in the leader and then what that creates the space for as a Labour-right coup within the Shadow Cabinet. So they're already making those noises of dissatisfaction about Annalisa Dodds. There have been talks about a lack of joined up thinking between himself and Angela Rayner, Angela Rayner who was drafted in to talk to the parties left. I think that there are those like Alan Johnson who would look at it as a chance for return of some of those Labour-right figures, in particular the likes of Evette Cooper. What that shows us is two things. One, these people aren't serious about winning elections and winning over the public. They're simply not. What they want to do is reassert control over the party and they don't care if it's in opposition for 20 more years. The second thing is that they also are completely out of ideas. Now, I don't want to define my politics by Jeremy Corbyn. I didn't even want to do that when he was leader, but it's certainly not a healthy political culture now that he's not leader. And to the left's credit, while I think there are still huge amounts of people who are quite rightfully very wounded by everything that's happened in the last few years, is that you do have those aspects of the left who are looking forward and thinking about what are the really important policies you need to get people moving on, what are the kind of movements that we need to draw together to make those things happen, whether that's around a green new deal or a nurses pay rise combined with rolling back on privatisation in the NHS. You do have people who are out there doing that thinking. Alan Johnson, I don't know what he would say if you go, okay, what's your solution to the most pressing political, social and economic crises which face our country today? He would probably just say, I don't know, Yvette Cooper, I don't know, kick Jeremy Corbyn in the head one more time. These are people who are completely defined by an animated, their own petty squabbles within a party that nobody particularly cares for anymore, the country at large being a core component of that. One of the reasons why people don't really care for it anymore is that people just see it as a vehicle for infighting. This is a mistake that the left makes, is that sometimes it gets so caught up in its own experience of the infighting, which is of course really awful, that it goes, oh, this is what people will be really interested in, is how we've been introduced and betrayed and vilified by the right. No, actually, people don't care about that. But it's also a mistake that the Labour right make, which is the go, aha, well, we heard that you don't like Jeremy Corbyn and guess what? We still don't like him either and we hate everybody that ever liked him. The public don't care about that. They don't care about your petty internal beefs. And so the more that you have this kind of story out there and just getting air time, I think the more turned off people feel from politics. What we've learned is that there's a Conservative Party in power, which is able to capitalise on that sense of apathy, cynicism, and lack of faith in politics's ability to do anything good for you or the community that you come from. The Conservatives are actually best placed to capitalise on that feeling. So no, I don't think it's going to be good for Labour. But the point of Alan Johnson doing these media rounds isn't for it to be good for Labour. It's for it to be good for the Labour right in terms of the progression of their own careers within the party. That's it. That's why it was so striking that he said, and I wrote this down in my hand to make a note of it, it's not because of the election results. Because I think even Alan Johnson recognises that in all those places, Red Car and Bolsova, that the Labour vote share was in decline and had been since 2001. It's about the results of 2019 offering a lifeline to a dying and discredited set of politics, because it allows them to define themselves against Corbyn rather than having to make a case to the country. I'm going to say now you should support Navarro Media so we can get Ash a pad so she doesn't have to write the notes on her hand when we're showing videos live on Tiske Sauer. Also, what I want you to do is hit the subscribe button. We go live every Monday, Wednesday and Friday at 7pm and we put out videos every day. We have a little bit more of that interview. We're going to subject you to apologies in advance. It's Alan Johnson. The criticism would be that for you Blair right lot, it's looking good because the hard left cultures you've described have been pushed back. Jeremy Corbyn is no longer a Labour MP in Parliament. He's an independent. He has to sit as an independent now. But there are huge percentages of the Labour membership who are much more left-wing brought in by Jeremy Corbyn and who, for instance, 66% of them want the Labour party to campaign to return into the European Union. What does Stammer have to do to address that? Just ignore him. No, well, I mean, in a sense, you're right. I mean, me endorsing Keir Stammer, as same as Jack endorsing him, is kind of old Blair rights, kind of looking for a repeat of history. When I'm looking at, I can only look at it from my point of view. And the biggest poll, 7,000 people in the opinion poll in December. I've got to remember we're not even 18 months beyond that general election, by the way, when, you know, a huge boost for conservatives. That opinion poll in December went into the figures, you know, in the language that you and I will understand at many listeners, one, the C2DE votes, which is the working class, coming across to Labour and leave voters coming across to Labour. And so I think in terms of all the big issues, the big calls that Keir Stammer has had to make, he's made them right, not least of all on Europe. Remember, there was a lot of internal disagreement that we should oppose the deal on Europe, and Keir Stammer faced it down. And he was absolutely right to do it, because we can't go through those arguments over again, all over again. And for the 66% of Labour people who want us to go back into Europe, that's the 66% of Labour supporters who voted to remain. So they're not going to change their views. But, you know, the politics of this isn't that they're going to vote for another party to get Labour back into Europe. You're never supposed to say that. He said the quiet part out loud. The truth is, they're never going to vote for anyone else, are they? Now, I actually, you know, I agree with Keir Stammer and Alan Johnson's latest position on Europe, even if it's evolved over the past few years. I don't think Labour should be talking about going back into Europe. I actually didn't think they should have kicked up a fuss about Boris Johnson's deal. I think that's one of the things that Keir Stammer kind of has got right, even if it is a bit of a U-turn from his position when he was in Jeremy Corbyn's shadow cabinet. I mean, also an issue there was the question. It's not the Corbynites in the party who want to return to the European Union. That was not the contours of the battle over the past three years. I want to go to you, though, Ash, on that really important thing, which I think is Alan Johnson there basically saying, look, I'm coming to this from a position whereby we only have to appeal to people in the Red Wall and people in the so-called Red Wall, which were traditional Labour seats, which went conservative at the 2019 general election. Everyone else, no one else has anywhere to go, so we can completely ignore them. He's being quite explicit, isn't he? Well, yeah. And he's also displaying the attitude which lost Labour, the Red Wall, and was responsible for their decline, at least in part, which is this idea of, you've got this cohort of voters, they've got nowhere else to go, and somewhere else in the country there are swing voters, and they're the ones who you have to appeal to. Now, when Tony Blair was leader of the opposition, that thinking was centred around London and the cities. There are swing constituencies here. We've got an opportunity to turn urban blue constituencies red, and so that's who we focus on when it comes to the North and the Midlands and formerly industrial areas while they've got nowhere else to go. That wasn't true. And I think whether a myth or whether in truth, there was a narrative which emerged of a patrician distance and somewhat disdainful Labour leadership, which didn't care very much and took for granted all of those voters. And that's a narrative which the Conservative Party, having rebranded itself through the lens of Brexit, and indeed, you know, parties further to the right of the Conservative Party, first GKIP and then the Brexit Party, were able to wield to their advantage. There's also, I think, a fundamental lack of curiosity about what is it that the Conservative Party do so well? Who are their voters and how are they appealed to? Because it's not simply through narrative about, you know, disdainful patrician Labour because, you know, the Conservative Party have actually served some voters within those, you know, formerly industrial heartlands very well. There's homeowners and there's pensioners and there's people who live in relative privilege in deprived areas, right? And that's who the Conservative Party are relentlessly focused on. And I think that there's a lack of honesty, both in terms of the Labour Left, who want to homogenise these areas as just sort of, you know, bastions of, you know, authentic working-class decency. You know, it's like they're watched brass off once and they're like that's everybody who lives in the North. And then there's also a fantastic movie, but then there's I think, you know, there's a lack of willingness to explore the kind of other cohorts of voters which exist within the same place and who've been very cannily appealed to on a material basis by the Conservative Party, both the Left and I think the right struggle to deal with that. And also those in the Left who say, well, you know, that's fine, just focus on London, London will see you through. There's also a lack of honesty there about having to have a, you know, values-based container and a policy platform which can appeal to, you know, there's quite diverse coalition. But Alan Johnson's not interested in having that conversation. And very few people are because it would mean interrogating some of your core political assumptions about who the working-class are, where they are and how is it they live. And you don't want to ask those questions because actually conjuring up a, you know, straw man of the working-class and the most convenient shape to you is often a very good, you know, ventriloquist dummy for the thing that you always wanted to say anyway. It's very rarely got anything to do with how people live what they actually think.


The Director-Channel, Excellencies, Honorable Ministers of Able Cultures for Member Countries, Distinguished Delgates from Countries and Ladies of Nices, Ladies and Gentlemen, Talofa and Worm Greetings from Tuval. It is indeed an honor and great privilege for me to join all of you, Excellencies, and Distinguished Delgates to this 35th session of FAE Original Conference for Asia and the Pacific. I extend my deepest appreciation to the APRC's Secretary for Organizing this Federal Conference to allow members and organizers and to deliberate, cooperate and collaborate on issues of common interest, food security, and agriculture. I must acknowledge that the unexpected outbreak of COVID-19 has created an unprecedented level of uncertainty in its challenge every aspect of our lives. As leaders and Christians, let us all remember in our thoughts and prayers those who have perished properly due to the spread of COVID-19. Tuval's food and agriculture sector is already under threat by multitude of factors such as insecurity, climate change, infectious diseases, natural resources, de-critizations, natural diseases. The outbreak of COVID-19 failed compounding this with its impact generally spread across different countries. Excellencies, apricot is an important sector for Tuvalu as it is the main source for the livelihood of communities. Tuvalu's apricot sectors relies on innovative best practices to ensure sustainability of local food production, to minimize the impact of climate change on food crops and livestock. The outbreak of COVID-19 and the declaration of health state of emergency by the government on the 20th of March 2020 directly led to the establishment of the COVID-19 task force and the development of a comprehensive response and preparedness plan for the country. Unsurprisingly, end of great concern was the issue of food security. Governments recognized that providing sustained adequate food supply change for the people of Tuvalu will be challenging if trading holds due to the risk of spreading COVID-19. On that note, I am delighted to share the issues and strategies that has been activated by the government of Tuvalu to minimize disruptions to food security and agricultural services. Fatang of Yefea on Fungafala stepped up its effort to supply fresh vegetables to the public on Fungafudi and distributing seedlings to the public for on-patterns. Fast-tracking the planting of root crops at the new apricot forestry site in Fungafala to enhance food security and better integrated traditional farming practices to sustain local food production. And carried farmers on the outlands to plant more root crops and promote traditional ways of preserving methods to prolong lifespan of food items. Control selling of basic food items in socks by instigating a food voucher system to limit the number of basic food items a household can purchase within a two-week period. A strict monitoring of stock on other food items like canned food, frozen food, cleaning soap and detergent, insorpt and developing a threshold system to trigger the pressuring measures and working closely with importers in ordering adequate supplies of food items to avoid food run-out. Excellencies with that I call upon all members countries in the national and regional partners in the Misingen to come together and discuss practical and effective measures to compact the impact of COVID-19 on food and agricultural services. To wallow is fully committed to continue working in partnership with FAO and SPC to addressing national and regional needs to reduce food and agricultural insecurity. Governments and the people of Tuvalu underscore and appreciate the unprecedented supports to receive from FAO and SPC and welcome future supporting ensure that food security and agricultural issues in Tuvalu are appreciated and adequately addressed. Excellencies, I wish you all a very successful conference and fruitful celebrations. It is my hope and prayer that the decision taken over the course of this meeting will lead to a real and lasting positive changes. Fafida y lasi, Tuvalu no de Tuvalu.


We must recognize the role of women in science. Women represent about half of the world population. And although the number of female science graduates has increased, through equality and parity, in science has not yet been a shift. Becoming a scientist is not always just gaining knowledge and information, it's gaining the power to help people. My father was a doctor in Colombia, and since I was a child, I witnessed his passion for medicine and helping others, and I was inspired by him. Girls who don't like science or think it's boring are maybe just looking into the wrong type of science and they should give it a chance. More than ever today, the world needs science and the science needs women.


Every day is like a battlefield. You go in, you don't know what you're going to get. You get patients who are fighting you.  You know, there's all kinds of stress you're dealing with. People did lose their lives. Colleagues, people that I used to work with every single day. And so when people don't take it as serious, it really hurts the people who see people die on a daily basis. The past two years have been incredibly difficult. The first wave, it was terrifying. Pretty much every single day, we would have at least one patient die. I tell people that aren't in the field or may not understand COVID. Honestly, dying from COVID is like being buried alive. These people are completely alone. We are their only lifeline. When they ask you, am I going to die? And you don't want to lie to them, but you also don't want to scare them. And so all you can say is, I'm going to do everything I can to help you.  I don't think I'll forget some of those people's faces for the rest of my life. It's not easy to come into work, risk your life. Even though you may walk out of it nine out of ten times all right, but what if you're that one out of ten? The best you can do is put a smile on your face, do your job, and hope that the next day is better. We had people behind us rattling behind us. We had people banging pots and pans outside. This time around, I do feel frustration at times because I feel like people just, they think they know more than healthcare professionals and they yell at us and scream at us just for recommending treatment. Some of the sentiment that we were once heroes and now we feel like we're against them now. It becomes hard when we get people lashing out at us stating that we're trying to kill their family members. Some people go as far as that. People throw punches at me. I've had people spit at me. I've had people scream at me. More than one occasion, I've had protesters outside of the hospital scream at me for going into work, which makes no sense. If I could talk to the public, I would say to them, be patient. Pray for the nurses who are constantly in there taking care of your family members. When we put rules in place, it's for everyone to be safe. I really wish that the public could see what's really going on with COVID patients because if you saw what these people go through, you'd be first online to get your vaccine. It's horrible. I feel like at the end of the day, as difficult as it is, I am called to be a nurse and it's my duty to come in every day.


Condoms for the beautiful game the backdrop here picturesque idyllic no doubt one of the best days of the footballing calendar And it has added to a really jovial happy mood in the stands Helping to raise the level of sound by more than a few decibels shirt sleeve order very much the dress code Truly this is a remarkable stadium the Allianz Arena a symbol of cutting-edge technology and There are plenty looking forward to seeing this a capacity crowd here. Yes, Peter. It's a shame It's only a friendly but then again that may help us see a more expressive attacking contest and I'd be prepared to settle for a clash of lesser intensity in favor of lots of flair skill and plenty of tricks and a few goals I suspect I've probably overstretched my my level of greed here Just joining us we are already on the way Jim you've played in games of this nature. You could make the difference Yeah, burnt Leno. I think his presence might make all the difference for this team He's got lightning fast reactions and a coolness under pressure that allows him to make the big one-on-one saves He's also very reliable under the high ball or when he's dealing with crosses And I'd expect the whole defense to play with a bit more assurance with him in place Okay, interesting The last match Is it over to the other flank? But it's heck to bear in It's Urzel Out to the left it goes measured Urzel Just to point out Peter that the fullbacks are quite high. What are they trying to achieve? Well, it's obviously a move to push The opposition wide men back and give them more to think about measured Urzel Obama Yang time to deliver That is terrific skill measured Urzel Obama Yang The first half is done So the most perfect day for you a warm hello in every sense of the word the Sun is out and football has a special place on this most idyllic of days a Fixture ahead of us to which we've all been looking forward for so very very long and it means so very very much The scene could not be more beautiful the pitch looks terrific The players are ready to get started and we cannot wait for a contest that lies ahead Question that this is one of the most striking structures in all of sports the Allianz arena There are plenty looking forward to seeing this a capacity crowd here Well on the face of it Peter we would appear to have a high caliber meeting with Very little at stake But then you consider a chance for one or two of the fringe players to get a look in and this becomes a big incentive It changes the dynamic So there's plenty at stake for them which will do no harm to the energy levels and the overall conviction and hopefully the style of contest And already we're on the way here To back up as this high-class rage It's not hit its target Luis drives it forward it's Urzel Relic Chaka It's it over to the other flank on an adventurous run from a defender Hector Bellarine He's had that put on a plate On a whistle score. What's he given? No, the referees judged that the offense took place outside the area The referee has shown him a yellow card Take the lead that is a bit special


Distinguished guests, all the experts, ladies and gentlemen, good afternoon. I come from Guizhou province, Leishan County. It's my great honor to be part of the symposium today. So on behalf of our county, I'd like to give my gratitude to all the organizers and your considerate arrangement. So I have the opportunity to share with you about our ecological resources, our experiences, how to realize the value of our ecological products and services. About two years ago, New York Times published the 52 most popular tourist attractions in China in Guizhou, Hangzhou, and they are listed on the list. So Guizhou is a very authentic ecological reserve place. We retain the natural beauty of the place. And my hometown, Leishan County, is one of the beautiful and unique counties in Guizhou province. So first of all, I'd like to give you an overview of Leishan County in terms of our ecological products and our efforts taken as well as the challenges and infusions we have to share with all of you. So first one, Leishan County is situated in Guizhou provinces. It's in the white part of Guizhou. And the population is about 150,000. And the Miao people is about 84% of the overall population. And the forest coverage is over 70%. It's also a national level comprehensive ecological demo zone. UNESCO used to consider Leishan as a beautiful place that is good to back for the future, a back to the nature, which also a future destination is a good place for our spiritual growth. It's also a minority cultural museum. And first, the beauty of Leishan, first of all, we have very strong minority culture. For the county of Leishan, we have very strong Miao minority cultural heritage. We have very beautiful Miao villages. Xijiang, thousands of Miao houses is the most famous. We have Miao embroidery and other intangible cultural heritage on the national level. Very special minority Miao cultural heritage. So we have the most, we have the richest Miao cultural heritage. And also for the Miao people, they have very special minority festivals. For example, their special new year and their special banquet festivals. So the Miao minority is considered a minority of dancing and street culture. And all the Miao people, they are really good at dancing and singing. And they are very artistic people. So the Miao fling of song is world renowned. It's considered the treasure of the Miao minority. At Leishan, we have very beautiful nature. Leishan is a mountainous place. And the peak of Leigong mountain is very famous. So the Leig mountain is at the center of the place. And also a lot of people rely on the mountains to grow plants and make a living. So for the Leig mountain is enormous and very beautiful. And it's very seasonal as well. We have very rich ecological resources. We have diverse biodiversity. We have very strong biodiversity. And per cubic centimeter, the native oxygen is over 5,000. It's considered the natural oxygen bar and also a biodiversity data bank. It's a very special region protected. So the beauty of Leishan rests upon the very authentic village. Leishan is in the south west of China. We have a lot of intangible cultural heritage because we retain the ancient villages. We have delicious food and very strong cultural components. Leishan has a lot of ancient villages with strong historical treasures combined with beautiful scenery. This is the first one, Xinjiang. We have 58 traditional villages represented by the thousand Miao villages that I mentioned earlier. 58 traditional villages have been recognized as the national level traditional villages. And is the county that has the most traditional villages. Now which there are three major Miao villages recognized as the world-level cultural heritage. And also we have great minority cultures. We have wood character dojo building. And it is in good value and high level value regarding agriculture and agriculture. So in this special kind of structure, you will be able to see the mountains and the river area. And secondly, for many years, we wanted to make sure that we will be able to protect our ecological resources and our cultural heritage. And we have to make sure that to protect our green mountains and the waters, we will be able to transfer those into invaluable assets. And also we want to make sure that the natural capital is of great and significant meaning. And we want to make sure that we will be able to recognize the significance and background of natural capital. A lot of places have recognized natural capital. In China, we are doing the same thing. We want to make sure the harmonious coexistence of the human and the nature. And we have to recognize in our current civilization process, we need to know and to make sure about this concept. Since 2011, we wanted to make sure that we make sure about ecological development in industrial areas. And we have made great efforts to achieve great outcomes. We want to make sure that the green mountains and lucid water will be able to be transferred into the invaluable assets. And this is a great relation for the practices of this. And so we need to make sure about the value of the ecological products as well as to do a better accounting. So we're talking about the fresh air, clean water, climate, and very rich in abundant cultures. So these four human beings are of great value. We need to further protect and better use of these precious natural resources to recognize that once being destroyed, it is very difficult to restore precious values. And if we can't, then we have to pay a great price for that. So Qianlongnanzhou is a pilot place. And we are really located with the research center for ecological science of China's Academy of Sciences. So we have the problem of better combined the natural resources, the natural value, as well as to better, better accounting. And right now we have been able to protect about 50 to 5 billion RMB on an yearly level. And also we need to significantly recognize the value of the biological products in the company. We have to make sure about the value. After that, we can make sure that ecological efforts will be able to put in places with the economic development so that we will be able to realize the value of the biological products and make sure, and we will be able to make sure that we'll be a better user of this assets without further destruction. Just like our efforts in protecting the environment, we need to make sure that we will plant more trees than plants before we cut them down. We have to make sure to protect these efforts by ourselves. Because protection will be able to create for us more sustainable development and value. So we need to make sure to design a model design for the ecological protection. So this is the key point. In order to make sure the relation of the ecological products, in recent years we have made great efforts in our agricultural products. And we established a great model to do that. For instance, the Xi Jiang model. And we established the largest Miaozhu village in Miao houses, the Xi Jiang thousands of Miao houses. And based on this, we established many tourists and established the so-called Xi Jiang model. The missions are further contributed back to the local communities and can be shared among all the village people. So that we will be able to establish this model of wealth sharing and evaluation. To make sure that we will be able to protect the traditional culture. And the 71% of the admission has been jointly shared in the national culture of Xi Jiang, that unprecedented inheritance and protection and its development. And in our establishment of the Miaozhuai, we combined the cooperation mechanism. And we further managed the harmonious situation, the coexistence of the local community and the cultural protection. And right now the admission revenue accounts for 25% of the local revenues. And also we have the agricultural tea leaves production. So that we are cultivating the long-term development of the green products. In 2017, the area of the tea leaves production is over 10 acres. 160,000 acres. And right now our tea level has also been recognized on the national level. And this has been recognized as the model area for the national tea leaves production and be recognized by the national standards. We need to pay attention to the exploration and formation of institutional arrangements. Realizing the value of ecological issues is a very big obstacle in issue. It requires long-term government efforts. And also in this process we have to make sure to use ecstasy accounting measures and to formulate strategies and models to realize the value of ecological products. So to make sure that we can better protect our ecological areas. And we will give rewards and incentives to local communities that conduct conservation efforts. So that local people will be able to recognize the value of ecological products. And we need to have a well-rounded platform. And this is truly crucial. Especially we need to establish marketing channel and investment channel. Right now we have a lot of investment or money that do not have investment channels. Whereas a lot of places with abundant resources cannot have and find matching investors. So we need to match and bridge these different areas. For instance, without a model to work at, to go with multi-use wine will not be recognized. And therefore, in our development process, of course, we met some issues. First of all, how can we better transform ecological resources that is into economic advantages? So that we can make our green mountains into gold and silver mountain. And how can we bring benefits of ecological resources to our residents? And how can we replicate this model? And secondly, how can we establish a long-term mechanism of this value chain or interest chain so that between the government and local communities and residents will have a virtual cycle? And third, how can we further protect minority culture? Because we have to make sure that different ethnic villages will preserve different aspects. Fourth, for ecological products, value relation usually require a long-term and low benefit so that there's no strong witness for investors. Fifthly, how can we further share our outcomes with other like-minded people? Through many years of efforts, we use ecological sources and cultural sources to establish our Xijiang Liao Shai, our very proud brand. And we established this very famous green brand of Leishan County. In the future, we will further cherish our natural resources. We'll make more efforts in protecting and conserving our natural resources. And we will make sure that Leishan will be able to always embrace green mountains and waters so that we'll have even more ecological products and further promote the value realization of our ecological products. And I'm now here to sincerely invite all of you to join in our efforts in protecting our natural resources. I want each and every one of you to visit Leishan County in Guizhou Province in China to first-hand experience the beautiful scenery and the abundant cultures in Leishan County. All the well-done happiness in the future. Thank you so much.