Have you been to it? Yeah. Thank you, guys. OK. So before we start the topic, I mean, Emery came all the way from San Francisco and we've been friends and doing investment together for a long time. Why don't we talk about our own background to let the audience know why we're entitled to talk about the topic? Yeah. All right. So first of all, thanks for having me. It's a pleasure to be here. It's a really, really cool setting. It's super exciting to see this community of supporting startups here in Tokyo and attract people from around the world. So me personally, first of all, Emery Cronin, I'm French, but I've lived overseas my entire life. I grew up in the US, Scotland, England, Brazil, Norway, Singapore, spent a lot of time in China in a prior position. And I've been doing corporate venture capital and business development for over 20 years. First for a major telecommunications company, both wireless and internet. Then for a consumer electronics supply chain company for Sandisk and now Western Digital. So my background historically, though, is in software engineering and systems and management. And over the years, I've backed startups who are doing some innovative hardware, like server appliances, one of the first generation smartphones that had its own app store way before systems from Symbian and the iPhone and others was been involved in companies doing wearables, internet of things, drones, semiconductors, a bunch of those areas. So it's a really exciting time around the hardware renaissance that we're experiencing. And a little bit about what we're doing at Western Digital, we're investing in anything that pushes the frontiers of how data is generated, stored, and managed. So that goes from components that improve the quality of data being gathered or how fast it can be processed. It can be software. It can be systems. It can be cloud service as well. And we are touching on AI. And as far as deep tech, we ourselves are a deep tech company in the sense that we design our own semiconductors. We have a lot of time and money spent in material science. We have thousands of patents. At one point, we had more patents than employees on the flash slide through Sandisk. So it's an area we're very excited about. Cool. So what you're saying is basically that you do not invest in Uber or Airbnb, because they're not PP now, I guess. Yeah, exactly. Yeah, where we're investing in, you know, those can be great. And to a certain extent, actually companies like Uber, when they start getting into self-driving vehicles, they're involving a lot of storage and a lot of data generation, right? The test mules on these self-driving vehicles are generating gigabytes of data per day. They need black boxes to analyze and record all that data for testing purposes. And historically, you would see flash technology be deployed on those, in addition to hard drives, in some cases, but flash is a little bit easier as you're driving around. Yeah, cool. OK, so my name is Jerry Yen. I'm the general partner of the Highway Club. So it's kind of funny, because Emerick was born in France, but then pretty much grew up in the States. And his French now has an American accent. And on my side, I worked in the States for a couple years, and I moved to Paris, so in the reverse direction. And then so my English now actually have a French accent, so it's kind of like interesting how the past crossed. And myself, I spent 12 years in semiconductor, so doing design of chips, analog chips, Wi-Fi, 3G, 4G, and all the interconnection. So, you know, semiconductor is a very, very heavy industry that VC has been shunning for more than a decade. But then now, VC are back in the semiconductor business. Now they are doing new kinds of chip investment, which is kind of exciting right now. And so both Emerick and I were both investors in a lot of hardware technologies, and so this is going to be a very interesting talk going forward. So the topic today is really something like from Lin to DeepTech. And so I'm not sure if it's already quite well known here in Japan, but last year, especially in the second half of 2016, that's been the talk of the shop, which basically is the first resemble. We all know that from 2004 to 2015, there was a big boom of Lin startups. Everything that you start with an idea, you iterate, and you roll out the MVP to your users, try to acquire users, and try to grow as fast as possible. Personally, I saw that kind of pick out in 2015 when you saw all those crazy valuations. I don't know what's your opinion on that one. Yeah, the valuations, it's interesting because you're seeing some companies struggle for a while to see those valuations, and you've seen some companies that turned out to have pretty good exits afterwards struggle for years, including doing rounds where most of the equity got wiped out and early investors took a bath. In a way, one way of looking at DeepTech sometimes is essentially it's long tech because it takes quite some time to actually design systems, iterate through them. Sometimes you find dead ends, and that burns money. And if you're doing things with semiconductors, in fact, it's really, really expensive, even if you're doing things around FPGA early on, and you're always looking at the milestones. In a way, it's also similar to because DeepTech isn't just IT stuff. It could be medical devices, genomics, drug discovery, and those face similar issues of needing to raise a fair amount of money to get to the point where they have proof points. And occasionally, you do have circumstances where it's so promising, and the potential of the team that is working on a technology is so massive that someone swoops in and does a preemptive buy way before the company is essentially ready for it. And they're not really buying it then at that point for what the company's accomplished, which is a usual way of looking at a lot of the M&A. But really, they're buying it for what they could do in the future, especially once they're inserted into the larger corporate players. So you can think of some of the automotive players, the larger companies buying the upstarts around self-driving technologies and vision processing and things like that, because they wanted to grab that before those teams got too mature to be too expensive and have a life of their own. Or sometimes, you see that with semiconductor makers branching out into new categories. So you've had pretty good examples of the major CPU players buying specialized chip makers around computer vision and other aspects because they really felt they needed to be in that area or buying FPGA makers as FPGAs become more common or being used by a bunch of people like Microsoft and others to do some really interesting things on the processing side. So I think it's fair to define, if we define deep take, back in the 90s, I remember the boom days, almost everything was like big take. It seems like Yahoo, by the way, I did not call Fang Yahoo in 1994. I just happened to have the same name with Jerry Yen. But back in the late 90s, yes, there were a lot of dot-com companies that died after the bubble. But if you look at the leading companies, many of them were doing like my previous companies, servers that went IPO late 90s. So there was a very, very deep Wi-Fi leading company, building chips. And so maturity of the technology back then was heavy. Then we transitioned into a big boom of leading startups that everything was starting. You have a leading team. You try to deploy things to the platform. And now we've seen the new re-booming of the deep take. So we're seeing things like, if we define that, I think it's fair to say, artificial intelligence, machine learning, deep learning, and robotic drones, which you yourself as an investor in city robotics, one of the igniters of the drone boom, seems like heavy new type of sensors, seems that scale in a systematic way instead of going to consumers and trying to acquire them. So I think it's very fair to say that whatever the reason is, it could be because the variations are too high for the startups. It could be just, OK, now the competition is just too competitive on the other side. Let's go back to technology. It seems to be very clear that now we're going back to the narrative where your defensive ability now has to shift back to technology. There has to be an entry barrier, something like that. I don't know if you're sure. Yeah, exactly. I mean, if you look deep tech, some of the attributes are complexity of technology and the problem there is attempting to solve. Natural barriers to entry because of that complexity or sometimes a combination of the complexity of what you're trying to do plus some regulatory challenges, especially in the case of things around pharma, life sciences, and others. And when you see startups taking a lead star methodology and trying to disrupt with air quotes the pharmaceutical or life sciences regulatory environments, you get things like Derenos where that is not ending well for the investors or for the company itself. And one of the inner bunch of meta-phenomenons that are affecting why people are able to do more deep startups. Sometimes these things take a long time and it's finally paying off now where they're on the right approach. You have a lot of people who have had successful careers and some of the large players in and around the valley. They've been able to generate enough personal fortune to launch and set themselves up and bootstrap themselves and some of these early technologies. You've seen enough acquisitions to fuel the fire. VCs for a while started shying away from summing up their companies because it was too challenging. There weren't exits. No one was investing in it. But he started having a couple billion dollar acquisitions or really quick multiple hundred million dollar acquisitions and all of a sudden that encourages people. They realize there's a market for it and it's worth putting money into it. And now you're seeing a lot more VCs. For a while it was just kind of basically two, three value VCs plus a ton of corporates who were investing in semiconductor companies.  But even the self-driving boom is kind of interesting because when I went to Carnegie Mellon in 1990 we already had a self-driving truck that would drive around Pittsburgh. The Carnegie Mellon is the AI sort of like hot spot. Exactly, yeah. The robotics institute's been doing phenomenal things around robotics and artificial intelligence and you had a van that would drive around Pittsburgh by itself. The difference was the sensors took a massive roof rack. You still see a little bit today of small roof racks. The entire van just had racks of hardcore servers and CPUs. That processing power is essentially available here. And that's one of the reasons why we saw drones take off, no pun intended. All of a sudden you had massive computing power that could handle the avionics, the controls. You had the communication protocols. You had long distance wifi, which we didn't have before. In the old days you have phenomenal accelerometers, gyroscopes and all these different tools and all these different sensors that are available are inexpensive. And it's really, it's a payoff from the smartphone component wars. Where these things are done in such volumes that you have a lot of critical components that make it much easier to do some of these large holistic systems that are deeper. And you're seeing that same reason why you see people doing space. The phenomenon around CubeSats and microsatellites, those are essentially cell phones in space with a couple of things around it. Drones are flying cell phones with propellers and software specialized. So I mean, basically as in the many topics we can talk about, I think today we can just want, because I think in Japan people are talking about AI a lot. And I have my own views on sort of like AI startups, what startups can do and what startups cannot do. So let's just focus on one thing. I think there's a missing link on many of the pitches I heard from AI startups, which is the input data set. So I mean, today when we talk about AI is actually more about deep learnings which is part of the machine learning, which by the way was pioneered by a French guy, also a French guy called Yon Lecombe with Professor NYU, but he's French and he has a lot of students that did the deep learning sort of researches and there are many of them are French. And so deep learning is about feeding into database into your algorithm and train the system, recurring eventually build a network, neural network that can representative, that can take new inputs and have an output. I think a lot of the startups that pitched me, they're missing the input data set. When I question them where does it come from, that's actually the main problem. What do you think? Yeah, no, I totally agree. And that also makes me think of one of the other aspects of AI that got really over-hyped last year and a little bit of the year before that are essentially chat bots. People got taken away and like, hey, we can have conversational agents and you can chat. I'm like, that stuff's been around for years.  You can still find on YouTube, John Scully keynoted that at a presentation and you had the notion of an intelligent agent interacting with someone and it demoed a lot of other technologies that weren't quite around then. You saw some of it with a Newton, with Apple data detectors where you could write fireside chat with Jerry in the afternoon at two o'clock and it would enter, it would find the right Jerry, make an assumption on the day and do all this stuff and it was gathering a lot of information. You had General Magic, which was an Apple spinoff that pioneered the notion of intelligent agents that would go do work on your behalf with a scripting environment and that also pioneered things around virtual machines. The idea of the cloud, you would send these agents out. They would actually do your bidding on across different machines, interact with others. So you had the beginning of web services, APIs, and that was very, very, very basic, pre-machine learning and everything, artificial intelligence, and now it's just you just have this phenomenal resource of data that's been out there and the compute power and the specializations to make this to extremely useful stuff and specialize applications. Yeah, I think for chapels, that's still kind of quite relatively easy because it's basically based on rules, language rules. Exactly, yeah. And it's text-based, you don't need to do a lot of analysis, so that's why it's like... And that's trivial, that's been done before. Yeah. The real difficult one, for example, let's take Amazon Echo, for example. And when Amazon Echo was launched, people saw that that was just about allowing me to buy things and using my voice without using my hands, so that's just Amazon trying to sell more things. But then over time, people realized, no, this is like a Trojan house. The main thing is so in the world of AI, there's one problem that hasn't been solved, which is what we call the cocktail party effect, right? So when you're in the cocktail party, you can understand the guy's talking to you, you understand the content, but if you put a machine there, you can put a microphone, but you would pick up all the conversation, you wouldn't be able to discern which conversation was directed toward him. So that has been one of the holy grail for at least on the audio side of AI, how to develop a system that can do that. But one of the problem of that is that you do not have a database that's big enough, that you can train the system, but then now people realize that by putting an Echo into American households, all my American friends, like their children, they're not talking to their parents now, they're talking to Echo, because Echo always replied, Alexa. It's turned into almost more a toy for the kids than something useful in some cases, yeah. Yeah, so I mean, you have children, I mean, when they're asking you all the question, what's the longest river in the world? Okay, what's the second longest? Oh no, when it gets to the, what's the seventh longest, it's really, really bugging. But Alexa is not tired, it will always answer the question. But during that process, Amazon is also continuing to get in all kinds of voice data, I continue to train its voice recognition software. I think it will be the first one I really solved the cocktail effect party. It could, yeah. And it'll be interesting to see where they go with it, because right now, you know, we're seeing better results out of, at least personally with our family out of Siri, in terms of informational queries and things like that. Wow. But in the case of Siri, it's actually quite limited because you're talking to the folks, so it's just one voice going into it. And so, Yeah, correct. Yeah, absolutely, it's different. And because of the nature of the way, you know, we've seen Apple do things, a lot of the information's done on the device itself, or there's more protections around it. And that also gets into some differences between sometimes European startups and US ones in terms of how they treat things. So, for instance, there are some companies doing connected video cameras in the IoT space that are doing visual recognition, face recognition on device in the camera itself, rather than sending things out to the cloud. A couple of reasons for that, one is out in the cloud takes a long time to process. And there you can do more efficient processing because you have a larger dataset. But there's a lag, which is not good for security if you have some unknown person or someone in person that you think might be a bad character you want to know sooner rather than later. But there's also privacy aspects that are very nice. The fact that it's only in that device and it's captive in there and it's not in some database that someone can hack into or some government can have access to legally or otherwise. And that's a significant plus. But that takes, that startup made the decision to have basically dozens of PhDs around optical processing and they took, instead of going and taking the easy solution of taking your classic kind of video processor chipset, they actually took a really, really beefy processor that normally would end up in high-end tablets and did a hard work of coding for that. Not first people kind of overlooked that, but now it's a significant competitive advantage for them as all these other companies in the space don't really have differentiating factors. And why do you want object recognition or facial recognition for a security camera? You don't want the motion noise alerts because that's just garbage data. Motion detected, motion detected, motion detected. You get that a hundred times a day for a shadow or bird or something like that. You ignore that. But if it's something in your driveway and a car pulls up and it tells you, a car pulled into your driveway and it's not yours, you may want to care about that. Someone walking towards your door, are they wearing a uniform of FedEx or UPS and from the colors or is it someone you recognize? Is it someone from your family, is it your cleaners at home, something else you can choose to record or not? So all the things are important. And now it goes towards basically taking advantage of actionable information, contextualizing that and deriving greater value. So I think I guess my suggestion for my advice for AI startups is that when you start an AI startup and okay, you can be the smartest person on earth. Okay, let's put it at IQ of 240. Very good in mathematics, very good in writing code, writing conversion network. But then always think about where are you going to get the data to train your machine? Because when we talk about for example, if we go back to the echo narrative, Amazon is not going to give you that audio library. You can have a very, very good model, but please join Amazon as an employee because Amazon, that's the reason why they roll out echo, they want to monopolize that. So same thing if you're doing self-driving software.  If there's a dog coming out. So if you want to do AI startups, you shouldn't be starting as if I can do this part of the algorithm. All I need is an input. Then I go find someone to give me them. Nobody's going to give you that input. There's some public, you know, database like ImageNet, which is open source by Stanford. But then by now all the battlefields have shifted to getting the data, which is why a hardware company are bidding on full-deck AI startups. Starting from sensors, you build own sensors, the kind of contextual environment data you want to get and then you process all the way up. And so for that kind of startups we're bidding on and for there's no way we're going to let them give those data to other pure software startups. Yeah, I mean, data has so much value. I mean, that's one of the reasons why you've seen people band together to do things around, for instance, collecting better next generation maps because they need it for their own GPS purposes or the in-vehicle systems, but also they really need it for self-driving. The more accurate data you can have out there and sometimes you can do it on your own. Sometimes it takes alliances, big corporate giants to kind of cooperate around developing those data sets depending on who they are, especially if they're trying to catch up. And it's also an interesting thing around deep tech is because of the reticence some people had of investing in chip companies a couple of years ago, I've seen a number of cases where companies had a chip, they had a value proposition for them. They're looking for buyers and investors and people said, ah, not sure. And they said, all right, well, we'll do a use case. We'll show you what we can use this for, whether it be stuff around power management, speed of response for things like visual identification. And some of these startups have actually had, they're actually commonly known now under the brands of their consumer products or their enterprise products using their own chips. And they've gone to the point where they're so successful just selling the end devices that they're gonna keep those chips to themselves as a core intellectual property and they're raising money off the back of this new product category. And it's really kind of interesting. And these are things where at first BC said, ah, there won't be use, someone's gonna want to buy that. And then the sync took off and they're proven wrong. So sometimes these things are overnight successes that take five, six, 10, 15 years. So we still have three minutes and I want to talk a little bit about access. So what's interesting, I think I'm seeing two things. So for example, Machube famously said earlier this year that if people, if the first trade-in dollar company is gonna be the AI company, right? So he said that trade-in dollar market cap, you know, beyond Apple. But what I'm seeing is that actually no, so a lot of the new deep-take, they say AI side of startups, they're being picked up by Aquarius very fast. So like Intel already acquired a couple of them, Google pick up DeepMind, which by the way is a European startup based in London for $400 million. So they're doing that. So I don't really see what Mark, you know, Machube is one trade-in dollar company growing up because they're going to be picked up by the cash-raised companies. What do you see? Is it a good thing that the startups are being acquired by big guys for $300,000, $400,000 instead of trying to grow to a billion dollar company themselves? Yeah, well for some of those, I mean, I think it's a right amount of money at the right time. Sonya have been struggling for a while and then we're on a curve. Sometimes, you know, for an engineer, it's not always just about the money now, but also the long-term incentive packages people have when you're acquired. But also it's about maybe about seeing the impact your technology can have on the world. There's only so much you can do sometimes as a startup. And sometimes you look at what the corporate parent can do with that technology and the additional reach it can have and how much it can be iterated and progress in conjunction with other corporate resources. And that really is a force multiplier. And for someone who is creating technology, all of a sudden having this massive distribution potential can be really exciting because you can have even more people using it. And I think, you know, to jump back, it's a riff on the Mark Cuban thing. Maybe the first trillion dollars, because the AI is going to be a financial services AI that's going to run rampant and mess up the stock markets and jack itself up. Or maybe, yeah, I see you're right. I tend to feel, because I also study economics, I tend to feel that if you have something that is very powerful, it's going to get into complete competition unless you have a natural sort of monopoly. And if AI, so AI is also democratizing, right? So I think the one trillion dollar company, it might be through MMI. It's probably not because you're doing something great and you become one trillion dollar company. And any kind of technology always back and forth. You remember, 10 years ago, so to wrap it up, 10 years ago, we're seeing like ImageNet, so people are using ImageNet, but they're getting like 20% only correct rate. Now they're competing on 6.7% versus 6.5% error rate. So you see that happen. It's not like five companies. Like 20 companies competing on that kind of thing. And that margin of sort of benefit you can get from competing in something that is quickly democratizing, it's going to go away. So as an AI star, you have to rethink about your long-term sort of value, where that is, and how do you view the defensive ability? I don't know what you're saying. Yeah, I mean, we've got like 20 seconds. I don't think I could address it, but maybe also going back to Trillion Dollar, I mean, AI now is kind of permeating a lot of companies, right? You have a lot of the classic companies in Silicon Valley from semiconductor, from systems, to smartphones, doing a lot under the covers with AI. They don't always chat about it a lot because they will see that as competitive advantage in terms of what you're going to apply it towards. So I think from that perspective, it's going to be very exciting going forward. Cool. Well, I think our time is up. Thank you very much, Eric. Thank you. It's great to have you.


Yeah, this was my first meeting and I'm quite a beginner in this area. So it's nice to see the other experts work and how these Meetings going on. So it was nice. It was nice to be here Particularly Hungary is a member of the European Union. So I'm here to support our previous Meetings and the agreements and to learn more. So that's why When it comes to pesticides and the use, I would say the most challenging part is the proper use or the correct use of the pesticides. I think the most successful thing here is to create a common system So there will be just one standard throughout the world that can apply to every country and it makes the goods and And the foods safe for the consumers. It matters to me because it unifies nations and Probably makes a word or food and agriculture in better site and in better interest.


Hi, everybody. Thanks for joining my talk. It's great to be able to talk to you about the CertManager project. This year, it's virtual, but hopefully, in the not too distant future, we'll all be able to meet up again soon and meet in person. I'm going to be talking to you today about all the various ways in which you can use CertManager beyond Ingress. I'm Matt Bates. I'm from Jetstack, with the original creators of the project and together with now 280 contributors in the community, we've got CertManager to where it is today. CertManager is effectively a Kubernetes add-on or extension, but it extends the Kubernetes API and adds support for certificates and certificate authorities. It means that you can manage X599 TLS certificates. That's the complete lifecycle, the issuance, and renewal, and use those certificates in your applications. It has wide adoption and lots of contribution from the community. And as of last year, we donated the project to the CNCR. So it's now part of the sandbox. It's got integration with a variety of different public and private PKI providers, both in the core of the project but also in so-called external issuance. And we're going to look at that in the talk today. Briefly, how does CertManager work? As I said, CertManager is an extension or an add-on. It provides a number of additional resources, so-called custom resources, CRDs, and provides them on top of the Kubernetes API. These represent certificates and certificate authorities. We can refer to that as an issuer. This provides first-class support for those in the Kubernetes API, and you get all the advantages of being able to manage those resources declaratively, much like you manage pods and deployments. CertManager has a controller that manages the lifecycle of those resources and, importantly, is able to provide the automation of those certificates, automating the fetching of those certificates and, importantly, the renewal of those as well. CertManager is most commonly used to secure ingresses. And you can see here it's really quick and easy to add a TLS certificate to an ingress, simple and boot-by-adding. In this case, the annotation, which references where you want the certificate to be obtained from. So in this case, it references the Let's Encrypt staging issue that I have in my cluster, and it also requires you to specify the secret name there as well. So the secret will store the certificate that's obtained from Let's Encrypt in my ingress. So really, really simple. How does this work under the hood? Well, CertManager watches for ingresses using its ingress shim component as part of the CertManager controller. And it's then able to create a certificate, which is backed by a point-in-time certificate request which encodes this certificate signing request, which it then submits to your CA of choice. So in my particular case, it was the Let's Encrypt staging endpoint. And that's the point in which CertManager is able to automate the ACME flow. There's additional resources that you can see there, ordering the challenge, but effectively all of that is automated for you. And it results in a signed certificate from this certificate authority, which is placed into a secret and then consumed by your application. The case of an ingress, of course that's most likely to be an ingress controller, something like NGINX for instance, and it's then able to serve your application securely. You can also use these resources more directly. So the ingress shim automatically provides that automation just based on some annotations that you add to the resource. But you can indeed tap into the resources that CertManager provides, that is that of the certificate and the certificate request. So the certificate effectively is more human readable if like representation of the certificate. And that's the one that you can see and use the API for indeed use the shell. This difficult request is like a point in time request that's made for an X509 certificate from an issuer. And this is typically consumed by as I said here, by managed go by controllers or other systems. You see the CertManager controller there is responsible for reconcilating these certificate and certificate request resources. But of course, there are lots of other certificates to managing Kubernetes, it's not just the ingress certificates, there are many certificates across a cluster typically that you may wish to automate using CertManager. And I've just highlighted some of these and we're gonna talk about a number of these different use cases in this talk. Ingress, as I mentioned, pod to pod, which might be with or indeed without a surface mesh and we're gonna look at both in this talk today. You may also wish to secure a cluster and the control plane and the data plane. There are also a number of web hooks that you may have that are used for admission that you wish to secure. We'll look at how CertManager can be used in almost all of these cases. We often get asked in the community how you can use CertManager in order to secure pod to pod communications effectively that kind of East West traffic in a cluster without a surface mesh at this stage. And this is particularly useful if actually what you've got is a really small handful of microservices and you can really just use, you need certificates, you need those to be automated and you wanna be able to consume those in your application and this would be preferable to the operational complexity of having that kind of full mesh. Here's an example of actually how you can use a CertManager certificate resource directly. So you can go and create this in source control of course and apply it directly via CI CD to your cluster and CertManager will automate the issuance of this certificate and put it into a secret that you can then consume in an application in a pod. And so a couple of things to point out here making this particular example is gonna be very short live certificate, we're gonna put it into a secret that I can specify much like we did with the ingress and it can then consume that secret in my application. It really is a set of files in a volume mount that I can then sort of put into my application and start serving TLS. We've got some DNS stands here and I'm also making reference to my CI. It's just gonna be like a private CI so this would obviously not be a public CI if you just really want something local to the cluster. And we're gonna see how you can sort of set this up in some slides to come. Here's a bit more YAML that shows how you can effectively take the secret and then make it available in a volume and a volume mount and the files will be available to this ping service or this ping pong service at the mount path Etsy SSL private CI, there's the key pairs and the CA certificate as well. There's a really simple way of being able to use the underlying if you like resources and sort of measure programmatically. We have a number of end users that do exactly this at scale, you may also want to have certificates obtained from a private CA. So rather than just a public CA such as let's encrypt if you're trying to get certificates for that use case where you're trying to secure pods that are communicating within the cluster you may wish to use a private CA for that purpose. And there's actually two issues that have built into set manager that are really useful and convenient for this purpose. They're the self signed issuer or so-called self signed issuer and the CA issuer. And you can see here what I've taken it's a number of snippets of YAML to show you how you can combine these resources in order to create what effectively is a self signed CA. There on the right hand side, you can see there is a certificate called my CA have used the is CA flag to denote that this is going to be a CA certificate. It's got a 90 day duration specified the secret the common names and subjects. There's a number of other properties that you can specify and an issuer ref in this case, I'm referring to that sort of self signed a key that I generated that on the left hand side. This is just sort of an out the box relatively simple if you're like private CA that you can configure using set manager and it's a little known people don't know that you can do this. You can also of course plug in if you're like a more robust and more secure private PKI if you wish. And so we've got a number of options here both built into the core of the project but also those that are external to the project as well so called external issuers. So you can use VOL, you can use small step they've got an ACME and ACME CA server. You can also use the cloud providers. So we've got support for Google and certificate authority service. And there's also an external issuer for AWS is PCA. And if you're in a more of an enterprise environment that you can also integrate it with Venify and there's an issuer for TPP. So in that previous example, we were looking at how you could use the certificate resource in set manager in order to obtain a serving certificate but how about if you wanted to use that manager to do inter pod, pod to pod mutual TLS and obtain both a serving certificate but also a client certificate. So I've got an example here of a really simple example of a ping service and a pong service. And we open source this lab. If you wanna go and find it if you follow the link down the slide it sort of hooks up this ping pong service simple go binary that you can also use in some of your own examples. In this example, we have is the two services as I said ping contact pong verifies itself for the client. Pong replies that secures using the servicer. And yeah, it actually replies back to the browser. So you can see the contents of the pong certificate. And importantly here both ping and pong they're only gonna trust certificates that are signed by the same CA. So how does this look? How does this look in YAML? Well, we have as before we have the we use this certificate resource and we've now got ones you've got to basically two certificates but both the ping and the pong and you can see here in the certificate resource we're able to specify the key usages that get passed down when creating the certificate. And so, you know, you can sort of use here by client or server off and set those appropriately. And both of the certificates here both are both ping and pong use the same issuer to the point out that private CA that I created on the previous slide or showed on the previous slide. So using the certificate resource in this way you can configure it to create certificates in order to do things like for instance authentication to a database. And so we've got this blog post the one of our team put together in which we used, we talked through how you can use cert manager to create certificates for client authentication with MySQL. And there's been lots of examples that we've also seen the community of where users have used it exactly for this type of purpose. Rather than manually having to create and manage those certificate resources for applications in the set manager project we have developed a CSI driver in order to make it even more seamless. The neat thing about the CSI driver is that it means that private keys can remain node local. It's rather than being put into a Kubernetes secret as is the case with some of the integrations that we've already seen. In this particular case you can keep the private key to the node where it's generated by the CSI driver. It means you can provide unique key and certificates for each of your applications. So if you're using a replica set as part of a deployment, you've got many pods each of those pods can have its own unique identity and that identity that X509 identity can be obtained at the point of application runtime. It also means that these certificates are renewed much like the other use cases that manager will know when to renew the certificate and provide a means to do that for you. So this just makes it really super simple in order to get those certificates to each of your applications. How does the CSI driver? Well, the CSI driver resides on each of the nodes in the cluster is deployed as a daemon set and just stepping through how it works. First of all, the pod is scheduled to a node. The Kubler of course is responsible for coordinating the runtime it works with the node driver, the CSI driver by calling the node published volume. At that point, the driver kicks in and it generates private key and it generates a certificate request. That's a certain manager certificate request which they effectively encodes ACSR. That certificate request is submitted to the API server on your behalf. The CR is then reconciled and a certificate is obtained from your kind of CA of choice. And that certificate is then to give it the private key as written to the nodes file system and then that's bind mounted into each of the pods, obviously into each of the relevant pods. The driver will keep track of all of the certificates and it will also be responsible for in yours. And if at any time or if and when of course the pod is terminated then it will also send out a call to the driver. The Kubler will send out a call to the driver in order to make sure that the certificate and the key are deleted. So this is a really seamless, automated way of getting those identities. You can also use set managers to secure Kubernetes webhooks. The webhooks are used for a sort of dynamic admission control used for a variety of purpose for instance, mutating resources or validating resources as they are admitted to the API server. And typically used for instance for applying default values or enforcing policy using the likes of OPA, Converno and also for ensuring that the resources that are submitted are semantically valid. And in fact, set manager uses this itself. And you'll notice there's a component called the set manager webhook that does exactly this. Now, if you're doing using this as an extension point that you want to be sure that when you are submitting these resources from the API server to those webhooks that it's secure and then also you can be sure of the destination to make sure that nothing in the various is happening with it being mutated or validated in a way that you would not expect. So you can use set manager in order to secure those endpoints and secure those, provide the means, provide the certificates for those endpoints. And there's a couple of annotations or a few annotations shall I say and where you can do this. One is inject CA from set manager IO, inject CA from you can reference a certificate. And you can also inject it from a secret and you can also inject the API server CA certificate as well. This uses a component in set manager called the CA injector responsible for watching in on these annotations and then providing the means to be able to automate it for you. One example of where this is used is in cluster API. So this is an example of a command that I ran recently when spinning up a local cluster API cluster. You can use cluster CTL as you can see. And one of the very first things that it does is it fetches the various different providers and then it installs set manager. And that might look a little curious if you, but if you dig a little bit deeper once the cluster API is up and working and you want to keep CTL get certificates. And specifically you look in the KAPI web system namespace. You will see there are a number of certificates that are used as serving certificates for those webhooks. Service message becoming increasingly popular and a number of users in the community are asking how they can integrate set manager and also it all its various different CA integrations into the mesh. So that those work loads that control plane sets and data plane sets are provided from their sort of provider of choice. Now, if you think about service mesh provides it's a really, really rich capability to have consistent observability, security and so various reliability features that are built into the platform. So rather than developers having to build this themselves it's transparent and it's provided for them. This can be highly convenient. Rather than services to contacting each other directly I've got an example here of service A and service B these microservices or services communicate via a proxy and the proxy can be dynamically programmed based on resources that reside in the control plane. And so what's great about this is that you can provide all of that capability in the proxy rather than having to be implemented in the application itself. And quite often most of these meshes most of which are based of course on Envoy have the ability to automatically provide MTLS between proxies in the mesh. So you have to be transparent MTLS between all of your services which is highly convenient. A number of service meshes out there in the open source have integrations with set manager. So Linkedee of course a service mesh that's in the CNCF has the ability to integrate set manager for some time. You can provide it a trust anchor and an issuer certificate and private key and these can all be automated using set manager. And thereafter Linkedee has a component built into it responsible for effectively automating the provisioning of the leaf certificates and the renewal of those leaf certificates with relatively short lifetimes. So you get a full automation of that both the bootstrapped certificates that are used, the trust anchor and also the leaf certificates as well. So it's a really good combination putting the two together. Istio has had the ability to plug in custom CA certificates into its Citadel for some time. And you can reference a CA key pair using a Kubernetes secret. But we've been working with Istio folks in order to more fully integrate set manager so that you can actually have the workload certificates obtained from set manager itself. Of course that's advantageous because you can then start to take advantage of all the different issuers that set manager has in its community. And what this involves is effectively replacing the Citadel that's that registration authority with set manager. We can create the certificate requests and have those fulfilled set by those different providers. There's also some integration which is much more experimental. It's been more recently released that enables Istio to use the Kubernetes certificates API. And we're working with them on that integration as well. And finally, the third example I have here is the Open Service Mesh Project OSM that we've been working with to plug in set manager and they've had plugable certificate management from the get go. And they've got their own built-in component that you support for also vault and also Azure's key vault. But yeah, if you want to use set manager there is an integration there and enables you to plug it in and that component will be responsible for creating and managing certificate requests for the workloads that run within the mesh. So variety of different integrations that enable you to plug in to set manager and in turn, of course, all of its integrations that it has with different issuers, be it those that built into the core of the project but also those that are external to the project as well. Set manager can also be used to secure the Kubernetes control plane and the nodes that form a cluster. For now, for anyone that's tried setting up PKI and Kubernetes, they'll know that there are a lot of certs, client certs, service certs of all different flavors and it can get quite complex trying to manage this. I know from doing this in the very early days of provisioning a Kubernetes cluster, well, now things have changed. We can use the magic that is QBDM or QVADM and it's here to the rescue really. It provides auto-generated, auto-renewed control plane certs. By default, this uses like a self-signed certificate. So if you're happy to accept that it's not rooted if you like in your existing chain of trust, then you can really just use this as is. But if you're in an enterprise where you need those certificates to be rooted in some kind of existing PKI system, then there are a couple of ways of doing this. At least one way is using the external CA mode. This enables QBDM basically to generate the private keys and then generate the CSRs and then that you fulfill effectively the certificate signing requests yourself. And so we've built a jet stack integration between QBDM and Venify just to demonstrate that you can use this. And since we actually did this, this command certs generate CSR has actually begun GA. So how about provisioning of certificates for the Kubernetes nodes? On the previous slide, we saw how you can use QBDM to provision certificates for the control plane and how you can customize that and use an external CA provided certificates. But how about the nodes themselves? Well, QBDM uses the Kubernetes certificates API and that's actually been built into Kubernetes for some time. It's only recently, I think 118, that kind of GA, so there's now like a V1 of that API. So through a process of bootstrap, the keeper that makes a certificate signing request, that's this resource here to the API server. And that certificate signing request, as you can see here on the side, has a sign and name. And that's now required field as of V1. And those signers are actually built into the Kube controller managers, that one there, the Kube API server, client, Kubler, signer that's built into the controller manager. And that will automatically basically approve the signing of those certificates. But you can also configure it in fact to sort of have like a manual approval that you may want to provide using something like Kube CTL So having a sign and name means that you can plug in also other signing mechanisms in that, you know, and so in the certain manager project, we've actually worked on some experimental signers. You can see a link to a couple of them there. One is the signer CA. So it's effectively a local CA and also an integration with Vennify using its kind of open source visa library. In the next release of certain manager, actually going to be adding support or the next release is, should I say, you're going to be adding support for the committee certificates API. So that means you're actually going to use all the various certain manager issuers in order to sign a certificate signing request just like this. And that will open up, you know, open the project up to being able to support, you know, kind of many more use cases. So we'll support the certificate request that's built into the project. And certificate signing request, that's in the core of the project, core of the open source Kubernetes project. And over time, we'll look to sort of more fully embrace that core type in the project. So to summarize, there's lots of ways in which you can use set manager beyond ingress. There are many use cases that stretch far and wide really across the ecosystem. You can use it for lots of different types of workloads, including even the cluster itself. So you can use the certificate and certificate request resources directly, programmatically. You can use the CSI driver if you want to be able to have pretty seamless pod identities created and have those renewed. And how importantly have the privately remain node local. You can also integrate set manager with a variety of different service measures. We've got integration today with LinkedIn, Istio and Open Service Mesh and more to come. The web hooks and also the control plan and node certificates as well. As said, in 1.3 or as of 1.3, we'll be supporting the Kubernetes certificates API. And we're looking for many more use cases. So if you have some ideas or you want to become getting involved, please come and join us. Set manager dev, set manager Slack channels, come and join us. I'm always really willing to hear of new ideas, feedback and also have contributors come join us. Help build it. So thanks to everyone. We're going to be available here now for some live Q&A after this session. It's been a pleasure being able to tell you a bit more about the projects and the various different use cases that we're building. And just for your questions, stay safe for everyone. Thanks. Bye-bye.


So guys, I am back with another Outriders World Slayer video, and if you've just loaded up your game, as of now, the 12th of July, you'll probably notice there is an update for your game, that is because there is a patch which we're going to go through or the patch notes right here for Outriders World Slayer. How's it going guys? My name's DPJ and if you do enjoy the video, leaving a like really helps out and if you like what you see and want to see more, be sure to subscribe. Okay, so let's get straight into the patch notes, people. Outriders World Slayer has been updated, our teams are continuing to work hard on improving the Outriders World Slayer experience, and we will share news of future update plans when we are able to. Okay, so please note, for Stadia, the patch is with the Ugo team for the final certification and will be published after their discretion. However, as the Tara Grutter reward reward work has been implemented via the back end, we have been able to push these changes live for Stadia. Okay, so change it to the Tara Grutter Trials. A large number of players have been abusing an exploit which allows them to bypass all of the content and infinitely farm the final arbiter in the trial of Tara Grutter. Rather than punish players and reduce overall farming opportunities, we'd like to realign your options to give you more choice, rather than less. We are adding an extra guaranteed Apocalypse of the Legendary RNG drop in the following trial of areas, the Cliffside Path, the Doros Sanctuary and the Abortum. This guaranteed drop will correspond to the targeted loot option for the respective trolls. Trolls will now also drop their intended targeted loot more often. We are reducing the final arbiter's Apocalypse of the Legendary drop rate, but the choice of a Legendary reward that appears after defeating the final arbiter remains unaffected. We are reducing the helmet drop rate from the final arbiter, so that he will now be more likely to drop gear that isn't a helmet than before, which is great news guys, and when I'd finish this in matter of helmets I would have this annoying explanation. These changes will make the troll of areas of the game more attractive while also helping ensure an overall run through of the trolls becomes more rewarded than before. Whether the amount of Apocalypse Legendaries obtained from a full run through of the trial was a minimum of 6, in the new system a complete run through or rooms in the troll will net a player a guaranteed minimum of 9 Apocalypse Legendaries plus RNG chances for others. The most efficient way of farming Legendaries should therefore shift to something much more fun and variable, rather than players feeling like they need to repeat the same fight if they want to be as efficient as possible. Notes, a cold based solution to this exploit would take a very long time to develop, as the only viable way of closing it properly would be to rewrite the entire way save games are handled while in the Trial of Tire guitar, this is not feasible. The coin exploit is only in place because we purposely designed the retry system within the Trial to be player friendly, but did not want players who need to take a break from playing or those internet connection momentarily fails to be punished with last retries. It will be sent back to the start of the Trial, which is cool guys, I actually appreciate the way PCF are actually handling this, I mean a lot of other companies out there put their nerf things into the ground, change things in a way that affects players in a negative manner, so the way they are doing this is pretty cool. Plague Sour, all pieces close range damage attribute has been changed through long range damage, explanation, these changes to Technomancer armor sets will better allow these sets to synergize with the Pax skill introduction introduced in Outrider's World Slayer, particularly the depleted core node in the Technomancer's Pax tree will benefit greatly from the change towards making these gear pieces better reliant on Steyr's power. Notes, these changes were intended to be a part of the Outrider's World Slayer launch build, they are now being implemented as previously intended, they are not a reaction to any of the balance we have observed since the launch, a full balancing pass is intended for a later patch. Barbiter to be instantly killed by their attribute Umbral Clone, as the player was using certain armor or mods in combination with Venet's knife and the shield be set, Fixed Headbug that could cause a game to crash while exiting and Bug Fixes to improve technical performance. And there we have it guys, so there are the changes you will see with their latest update you would have had for your game which arrived today, July 12th. Tell me your thoughts down below people and on that note, the end of the video has arrived, if you enjoyed it leave a like really helps out, if you like what you see and want to see more Outriders be sure to subscribe and hopefully people I will see you on that next one.


It's DDK and I'm back like I never left.  Curry, so hurry up and subscribe because it's time for us to slide. It's a real party. You can knock it in. We're about to get these dividends and win, baby. We have a order off the low board. We have 29 dead head miles, 95 loaded miles, which equals 124 miles altogether. We're about to go ahead and get this shed. And guess what? We will receive a payment of 200. We're about to show you who running. Let's go. Just like that for Ian and Joe. I don't know where to go and what to do, but I know my flow stick like the flow. I thought I knew. How you doing, boss? I had to go find somebody to talk to so we can get busy right quick. This is also my first time coming in here. So how you doing, boss? I have a load to pick up to go to. I have a sprinter van. It's outside. I'm supposed to pull in or? Not yet, but it's over here. I'm still here, so I'm going to pick you up first. Okay, so, him? Okay, after the big truck. Okay, thank you. And just like that, my guy about to pull up so we can go ahead and get these bucks. What's going on, baby? We got these doors shut, Ian. Now give it Ian, let's go. Let's talk about it, baby. I'm getting sick and tired of these people. Don't get to rock it. Hey, y'all drivers, y'all four-stroke drivers, y'all got to learn what y'all are doing, baby. Now, we will be installing some bumper stoppers, whatever they call it, some rubber bumpers you're going to put on the thing so they cannot hit the van that hard because, guess what? The first time somebody mess up this van, guess what's going to happen? I'm about to fall in the claim on the company. So I'm not about to keep on playing no games, about to go ahead and do our thing, get this changed, let's go. You work here? Yeah, you can need to kind of pick some up. No, I'm doing the drop off. All right. How much you got? A lot? No. Okay, you're going to receive it over there? On this side? Oh. They told you to come here. They didn't tell me to come here. I saw it on the little board, they said come to door six. Okay. For a Sprinter van. All right, what you got? It's too proud of me. All right, I'm about to get somebody right. All right, appreciate you, boss. How you doing? I'm doing well. I got about to unload it, baby. It's about to get us right. So we can get it on like a big bumper. We're going to pull it out. Okay. I appreciate your help. I'm doming. Yeah. Oh, wait a minute. Put it in. No. There's other ways. I don't want it, these parts are very delicate. Oh, I don't.  Okay, so we got at the bottom. We have some important news for you guys.  Guess what? One did pop up. It was, I don't not remember the exact number. I think it was like 124 miles altogether, but I do know for sure it was 59 loaded miles. And the suggested price on that was $875. So I'll put it in the bid for the $175. Next thing you know, the dispatcher called me. He called me. Now, hey, how are you doing? This is Jerome. Hey, how are you doing Jerome? Yeah, they asked, can you do this load for $100? Absolutely not. I'm not driving 59 miles. Even though it's always right towards home. Like literally probably 20 minutes from my house. Absolutely not. Can you do it for 125? No, the lowest I can do it is for 150. Now, the thing that he did say that is very important that he said is, he said that it's already on your way home anyway. And that's right there rubbing the wrong way. Now I think you're trying to finesse. I think you're trying to finesse. I think you try to get me to do it for $100 and you's gonna make more money on it. And I was gonna do it for 100 and then you was gonna keep the rest on the back end. Absolutely not. Do not fall into the trap guys. Watch everything that they doing. They're trying to make money just like you trying to make money. And if they can't make more, they will make more. So do not ignore that and learn from our mistakes. Learn from our mistakes and be great and don't hate. But guess what? After that we got, we got us one baby. Well, we did put it in for another one. The other one was 25 empty miles, nine loaded miles, 34 miles altogether and it was for, we put it in $400 and we did not get that and we was literally right around the corner. We probably was like 10 miles away or something like that. But we didn't get that one. They probably put us on the black list. I don't know about that, but we got this. Curry, curry, curry, curry. We got this one on curry. Now, it's 35 miles. We are picking up 300 pounds and we will receive a payment of 77.69 when he's stopping until we shine. Let's go. Just like that. We are here at the pickup. Hopefully we had no hiccups, baby. Oh, no. Oh, we need to go for y'all. Hopefully this is our low right here. Oh, he's saying come in. How you doing, boss? Here's the order number here. Order number. Where's your order? Come in, come in. All right. You wanna come with me? I'm gonna just wait for her to send you the order list. Cause it's a new order. Or a letter just came in so it didn't come all the way through yet. Yeah. Check them out, baby. I'll see the rackery. Now, after you wrap it up, then stop. Now see what's going on. Now you go ahead.   Now he's about to pull this joint in so we can go out here and win Huh? She talks to the camera. Oh. Ha ha, he's looking at the camera. Yeah, I got a YouTube channel. Oh, nice. Yeah. How that goes? Yeah. Pretty good. I drop a video every day. Yeah? Monday through Friday at 7.40. So I show a dude deliveries and everything. Yeah. And just like that, we strapped that joint sideways. Now it's time for us to get paid to put up a new escalator. Let's go. We are here at White Cres. How you doing? I have a jumper for you guys. Amazing. There's the paperwork. I'm all right. Yes, the man was the pain in there. I have no, I'm a fish. I'm trying to be. I'm trying to be like you. You got it all. You got it all?  Another form of paper. Let's get into what you guys all have been waiting for. You see the title, you see the thumbnail. Now we're about to tell you how much we made our first full week of using a carrier company that uses low boards. All together. Jump rope, please. Brrr. We made 1195 dollars. I wanna give you guys a breakdown. We had an order where we had seven loads. All together we had seven loads. Number one, 18 miles for $120. Number two, 47 miles for $125. Number three, 114 miles for $175. Number four, 156 miles for $350. Number five, 60 miles for $150. Number six, 38 miles for $125. And last but not least, number seven, 84 miles for $150. Now, all together we made $2.18 per mile. Just so you guys know, this does include deadhead miles and the $1,195 is our gross.  So it is what it is, baby. I just give you guys how much we made and we try to pull up a new escalade.  We are trying to do as many loads as possible.  I don't know why, but it seems like it's kind of like we capped off or something. I'm not sure what's going on, but we do put in a lot of bits on a lot of different loads. And if we got as many loads as we wanted to, we would easily make a 500 plus a day easily. But hey, you can't win them all. Guess what we're trying to do is ball and not star. I hope you guys enjoyed this video. Again, if you are not subscribed, make sure you smash the subscribe button. Also, give me a thumbs up if you want to see me get these bucks. I'll see you guys on next one. We're going to be going to be fooling you already knowing this, DDK. And I'm on my way.


There's a large insurance money on stake. The insurance company claims this is a suicide staged to look like a homicide, while the family is sure this is a tragic murder. A court case opens. The forensic scientists are called to make things clear. But their testimonies are almost always complex and difficult to understand to the lay jury. In television, they will reenact this case using computer graphics to show it almost as if you were there at the time of the event. This is too good to be true, right? On the contrary, my research brings this as seen on TV technology to the courtroom. The crime scene and the victim's body, along with other important evidence, are scanned and replicated virtually. The objects and the body can be moved and positioned according to different scenarios. The trajectory of the blood spattered from the gunshot is calculated to show where they would land. This spatter pattern is directly comparable to the crime scene. The slide shows a case simulation of a homicide. You can see that there will be a large amount of blood splattered to the right in the direction of the bullet. This is what you usually see in the television. However, more importantly, there is also a small amount of blood spattered to the left, backwards. This is called the back spatter and is the key evidence in solving this case. Because you can see the back spatter in case of a homicide will land on the assailant, but if it's a case of a suicide, it will be found on the victim's hand. The police did not find any back spatter on the victim's hand, making this a homicide, but they did find it on the wife's hand. Ironically, making the family right. My simulation makes a comparison between homicide and suicide visual, intuitive and easy to understand. It makes a great presentation at the court, and it will help bring murderers to justice. Virtual crime scene investigation is no longer just a fiction. My research is bringing it to reality. Thank you.


It's part of my heritage. My parents, both from actually North Dakota, so that's where my heritage is from. My roots are there and I want to learn the Mitchef language because that's me. It's part of me. That's who I am. Because that's me. Mitchef is me. It's part of me. That's who I am. My husband speaks pretty fluently, actually. Heather. Heather speaks to me in Mitchef. Lots of times I'm not sure what she's talking about. But Heather and my husband. Actually I have brother-in-laws. My husband's brothers all speak Mitchef pretty fluently. Actually the whole community would be good. It would be good if we all spoke because we are a Métis community. It would be good if everyone could speak it. Well it would keep our language going. I'm thinking forever and ever, hopefully. We would lose our identity. For sure we would lose our identity. Well our nation would grow. I guess our Métis nation would grow. And they would all, I guess, be proud of their language.


Hey folks, I'm Pat Schloss and this is Code Club. If you had a chance to watch the last episode, which I strongly encourage you to do, and I'll put a link across the top here for you to go check that out. What I did was I took data that was generated and provided by an agency called Ipsos and recreated a figure that they had in their report indicating the willingness of people in 15 different countries to receive the COVID-19 vaccine. Those data are now quite dated, so their initial time point in that study was of August of 2020 and the second data point was of October of 2020. So although the data are dated, I think there's still a lot to learn. And if you watched that video, even though it was quite long, I think you'll find that there was a lot of content in there jam-packed in that. So I have a little confession to make. I didn't actually learn about that data through Ipsos directly. Rather, I received a newsletter that comes to me once or twice a week, I don't really remember, from a group called ChartR, or ChartTR. I'm not quite sure, and I'm not really sure how I even got subscribed to it. They provided a figure with the same exact data that got me thinking about, you know, how we could implement a lot of the design choices in the ChartR implementation of the figure using R. So although it's called ChartR, don't let that fool you. They do not use R as far as I can tell to make their visuals. As you'll notice, the ChartR version of the figure is far more stylized than the Ipsos version. I'm not sure I'm a complete fan of everything going on in the ChartR version. At the same time, I did get my head kind of spinning and thinking, you know, how would I implement that particular element of this figure in R? Because it wasn't immediately obvious to me. And I thought, you know, I could learn a lot myself about how to use R, how to use GG plot to implement some of these effects. And I thought for sure you could too. Although I could make another video where I kind of run through all the changes I would make to my Ipsos version to generate the ChartR version, I'd rather slow things down and take each difference in each episode to kind of break things down and show you and teach you more about what I would do to go about making these changes. Because again, if I'm teaching you how to do it, then you're going to be more able to take that change or that difference and implement it into your own work to decide for yourself whether or not that helps you to communicate your story with your data. What are some of the big differences that I key in on? Well, the first thing I notice is that in the ChartR version, they've got alternating colors in the background within the panel. The second thing I noticed is that to help indicate the flow of time, they are using arrows. The third thing that I noticed is that they are using far more color than I ever use. If you've watched my videos, you know that I kind of reluctantly use color and don't really use color very much or very well at all. And so they'd certainly have a color scheme going on that will work very well with the ChartR branding. Something else I noticed is that the fonts they use within this figure are very different. They've got a serif font and a sans serif font, and they are actually quite different than what comes pre-installed within R. So how do we get different fonts within R? Well, we'll figure that out. The other thing is that they're presenting the legend in a very different way than what I typically do or what we typically see in science and certainly different than what Ipsos did with those two text boxes at the top. Also, this version is quite a bit different from the Ipsos version because it communicates or tries to communicate a story about the data. My plan, therefore, is to take each of these six elements and perhaps we'll identify more as we go along and to chunk it out into individual videos where we can perhaps have shorter videos but with a lot more detailed focus on an individual element. And that way I can perhaps do a better job of teaching that material to you so that, again, you're better able to implement this into your own data visualizations. Because these videos are going to come out as a series over the course of several weeks, please make sure that you're subscribed and that you get your friends and everyone in your group or whoever subscribed to this channel so you can see when each episode is released. And I would very much welcome your feedback on other big things that you're wondering how they pulled off in this Chartier figure that isn't immediately obvious to you. Today, I'm going to start with the alternating color in the background of the Chartier figure. It's kind of like a pretty version of grid lines as I see it and I kind of like it for that. You know, in a scientific publication that I'm more familiar with producing, I wouldn't use these different blues but perhaps be more likely to use different grays, something a little bit more subtle. And again, is a way to help me as a audience member to see what points go together. So I'm sure that there's a ggplot related package out there that you could get to build out these alternating colored backgrounds. I have a hard enough time remembering how to use ggplot2 that I don't want to have to go learn another package. And I want to build out this alternating colored background so I can learn ggplot2 all the better. And again, help you to learn ggplot2 even better yourselves. So what's the strategy we're going to use to pull this off? We are going to use a geome ribbon to pull off that alternating colored background. Something else that we'll have to do along the way is that we'll have to convert our y-axis from being discrete, right, labeled by each of these countries to actually a continuous variable. But we still want to be able to keep our country names there. So we'll have to figure out how to do that. The other thing we'll have to figure out how to do is how to include three different colors into our strips. It might seem like there's only two here.  The next thing that we'll have to figure out how to do is how to put the tick marks on that y-axis between the different country names. With the ipsos figure, the tick mark actually goes right into the country name. But in this chart R version, it's actually between those country names. So we'll have to figure out how to do that. If you want to get the code that I am starting with, by all means, check out the link down below in the description, which will take you to a blog post associated with today's video. There I will put the code I'm starting with and the code that I end with. And again, I strongly encourage you to follow along. Here is a copied version of that August, October 2020 ipsos.r, but I made chart R, chart R dot R. And everything's the same. I'm going to start out with going to change the name of the file I'm saving from ipsos to chart R. Very good. We've got that working. To kind of simplify my code a bit, I'm going to remove some of the code that we included here to add those text bubbles, which we used as a legend. And so that is everything here from line 48 all the way down to before the save. Again, that got rid of those legend text bubbles to create the alternating color in the background. I'm going to go ahead and build out another data frame that will allow me to create those strips. And again, what we're trying to do is say for France, you know, so if we think of France at being at like position one in United States at position two, thinking of this on the y-axis, that I want France to have a rectangle on the y-axis that goes from say 0.5 to 1.5, United States from 1.5 to 2.5 and so forth. And I want them on the x-axis to go from 50 to 100. So there is a geome called geome polygon that you could use to do this. But I find that it's just perhaps a little bit more complicated than I really need. The alternative that I found worked really well is called geome ribbon. So geome ribbon is really nice. And I think we may have used it in the past, certainly with building those rock curves, if you recall that episode from a couple days ago, a week or so ago. But what that allows you to do is set an x-axis position, and then a y-min and a y-max. And so when I was thinking about putting in those strips into this figure, I thought, well, I could have my x-position be 50 or 100, and my y-min for France say be 0.5, and my y-max be 1.5 and so forth. So I want to build a data frame out that has x-positions of 50 and 100, and then has each of the y-min and y-max for all 15 countries plus the total. To create those strips, I'm going to go ahead and create a data frame. And I'll start with the data data frame, where again, I've got the country name and then all these percentage values for the x-axis. I don't need those for this strip data frame I'm creating. All I want right now are those country names. So I'll do select country. Again, that gives me a column data frame with the country. And then I will do a mutate to create two columns. So I'll do x-min, I'll say equals 50, and x-max equals 100. So to create the y-min and max, I'll start by creating a variable called y-position, which will be 1 to n row, period. And that will be the y-position, right, from 1 to 16. That's actually kind of the opposite direction from what I really want. So I'll do rev on that. So that France is at the bottom position 1, and then total is at 16. I can then do y-min, and that will be y-position minus 0.5, y-max equals y-position plus 0.5. So now we've got our country, our x-min, x-max, our y-min, y-max. And what we'd like to do is go ahead and pivot longer to get our x-column values in a single column. And we can then do pivot longer. I'll do calls equals x-min, x-max, values 2 equals x, and then names 2 equals x-min, x-max. I don't really care about that column. We'll probably get rid of that eventually anyway. Let's go ahead and do a select minus x-min, x-max. And now what you'll see is we've got two rows in our data frame per country, right? So India has two values. And so on the y-position, 15, we have 14.5 to 15.5 is the y-min, y-max, and then our x-position from 50 to 100. This then has the data frame that I want to use to create my strips. I'll go ahead and save this output as strip data. And so again, we've got strip data. And coming down to my pipeline here where I've got the ggplot, I'm going to go ahead for now and interrupt this flow to add in my alternating colored backgrounds and make sure that we've got everything we need to do that. So we can then do geom ribbon and we'll do aes. And it occurs to me that we need a different data frame. So we'll say data actually equals strip data. aes will then put in x equals x, y min equals y min, y max equals y max. And let's go ahead then and add in inherit. I can never spell that word, right? aes equals false. What inherit dot aes equals false means is ignore what was kind of the parent level aesthetics, right? And so ggplot has x being percent, y being country, color being month. Well, my strip data data frame doesn't have any of those columns. I guess it does have country. So, but we want to ignore the color and the x equaling percent. And so what we get back is a diagonal black line. And I think what is the problem is that we need to tell geom ribbon how to group our data. And so we could then say group equals y position. And so now we can get a big rectangle. And what you can maybe notice is that these are actually like 16 different rectangles, the black rectangles with just a little, you know, hairline line separating each of the ribbons. What we need to do is come back up and let's go ahead and geom ribbon. And let's go ahead and do fill equals country. What we get back now are a bunch of ribbons 16 different ribbons for one fill color for each of our different 16 countries. That's not exactly what we want. But you can tell hopefully that we're getting close. What I'm going to do is come back up to my strip data. So I'll add a column for fill to my strip data pipeline. And I will say wrap C, and I'll say A and B. So did different colors. And I want the length out to be n row of whatever's coming through the pipeline, right? And so if I look at that, so that's really data. If I look at this, what this should give me is 16 values, right? And so I get AB, AB, AB, AB, right? And so that works well. So let's go ahead and I think I can replace that data with a period. Now if I look at strip data, I see I've got AB, AB for my different fills. And then in my geom ribbon, instead of fill equals country, I want that to be fill equals fill. And so now I get that alternating colored background, which is pretty slick, right? One thing to notice, however, is that if we look at the chart R version of the figure, there are two different colors here, right? But there's actually a third color for the top line for the total, right? And so they don't actually show the total, but the grid line goes up to that 16th spot for the total. So we need to get a third color. To do that, again, very similar instead of length out equals n row, I'm going to do length out equals n row minus one. And then I will also add a C parameter, right? And so it's upset, why are you upset with me? Oh, because I need to include this in a C, right? So that should work. Although we need an extra parentheses to close out the mutate. And now I can do strip data. And now I see I've got all of those. So I'm noticing that the total is getting a when I want total to get C. So I should probably move that C up to the front of my C statement. Let's see what this looks like through this position in the mutate line. And again, we will see, yeah, so total now is C, and then India China goes AB AB AB all the way down. And then when we do the pivot longer and everything else, then it should work and wonderful. We now have alternating colors. So a is the bottom, B is the second, right? And it alternates. But then at the top row, we have C. So that third position. So these colors look pretty horrible. We're going to change them eventually. But for now, I'm going to stick with these colors. But I want to bring back in my barbell or dumbbell chart. And again, to do that, we can simply add that plus sign. Let's run it and see if we get those barbells on top of our strips. And so we're getting an error message, discrete value supplied to continuous scale, we can kind of go through this line by line and figure out where exactly did we run into the problem. So we know that GM ribbon works, but does GM line work? So no, that does not work. So the problem then is that Y here for the making that line is adding country as a Y axis, which is discrete, whereas the ribbon requires continuous values, we can go ahead back up to our data data frame. So I'll go ahead and add a Y position variable. So I'll do Y position equals and very much like what I had down here on line 20, rev one colon and row on that. And let's make sure that we get everything we expected. And sure enough, we get all that and our Y position on total is 17. And France is one. I think we could also then remove this Y position here and do select country and Y position. Let's make sure we've got both of these data frames loaded. So down here in the pipeline for building out the barbell plot from what we had before, there's a few things we need to modify the first being in this pivot longer, we had calls equals minus country. And so that said, basically pivot longer all of the columns except for country, we also want to add in Y position to that. So we'll do minus C country, Y position. And let's put this on a separate line. And now let's run these lines to make sure everything looks good. And so sure enough, we have the Y position, this all looks great. I don't think we need this mutate line, we had used this previously to get the order of the countries correct. I'm going to comment it out for now, I'm not going to totally delete it. And we might delete it later, when we were pretty confident, we actually don't need it. And then this Y equals country, I'll do Y equals Y position. Doesn't that look horrible? So we have created a line plot. And what we really need to do is we need to tell Geome line, what two points go together, we hadn't needed to do that before, because putting Y equals country automatically enforce that for us. So we can come back all the way up here to our plot. And we can say yes, and we can say group equals Y position. So now we have our country names along the left border there. That's wonderful. One thing I would like to do here is tighten up the spaces between our country names and the plot, something that you've perhaps noticed before with other plots you've made in ggplot is there's a bit of padding that is added around the x and y axes. To get rid of that, we can actually come up to scale x continuous and scale y x continuous and do expand equals C zero comma zero. And that means don't expand, don't expand on the x axis. And we'll do the same thing down here with scale y continuous expand C equals C zero zero. That means don't add padding on either side of the y and x axis. So now you can see that we certainly have those numbers right up against the first strip here. And these country names are much closer, right? We don't have that buffer right before 50% or right below France. So that looks a lot tighter. So the next thing that I want to take on are adding the tick marks. Before we didn't have tick marks, we were actually removed them because we're using the grid lines that again expanded beyond 50% to indicate the grid line for each of those countries. So we want to insert a tick mark in between each of the countries kind of at that boundary between the red and the green. So I'll start by removing the grid lines that we had before we don't need those. And you'll also see that our axis ticks is element blank. So for both the x and y axis, we said no tick marks. So for axis ticks dot x, I'll make that element blank. But for axis ticks, dot y, I want that to be element line. And now we have a tick mark for each country. But that's not where we want it. We actually want that tick mark between the country lines. To achieve that, I'm going to modify my scale y continuous, so that we have data y position. But I want to add extra breaks, I want breaks in between each of those positions. So I'm going to add to this vector with data y position. So we'll add 0.5 as the bottom tick mark. And then I'm going to take data y position and add 0.5 to that. What we'll now have are the break positions for our countries that fall on, you know, one through 16. But we'll also add a position or break at 0.5, and then at one through 16 plus 0.5, right? So that'll be good. Now we need to change our labels. And so we'll have data country. But then we'll also have nothingness, right? So we'll put things like an empty quote, but we need to repeat this to be basically 17 times, right? And so that will be length, data, dollar sign y position, plus one, right? And so we need the plus one because we're adding that 0.5. And I'm missing a comma here. All right. So this now, I think, should take care of everything. And I'm missing a closing parentheses here. Now what we've got is a tick mark on each of those break points, right? But we don't want to break on each of the points. We want those that are matched to the country to actually be blank. So we'll then set the color of our tick marks. But the color of the tick mark that's right adjacent to the country, we want to be transparent so that we don't actually see it. And so we'll do color equals and then we'll do C wrap on NA. And we'll repeat that N row data times, we can then do another rep and of let's do black, and we'll do N row data plus one. And now what we get is we get tick marks in between the countries, right? But they're black, rather than the gray that we had in the chart, our version of the figure. So instead of black, we could go ahead and do dark gray. I'm also going to make the lines a little bit thinner by doing size equals 0.2. Very good. We now have those tick marks in between the countries, indicating kind of the boundaries of our different colored strips. One other thing I noticed about this version of the figure, as opposed to the Ipsos version, is that they also have a solid gray line for the X and Y axes. Go ahead and then do axis dot line, because we want both the X and Y axis line to be element line. And again, I'll do color equals dark gray, size equals 0.2 to hopefully match what we had with the tick marks, we are making progress converting the Ipsos version of this dumbbell chart to the chart, our version of the plot. Baby steps, right? We've in this episode changed the background so that we have this alternating color scheme. We've also added tick marks so that they fall between the country names. Again, in future episodes, we'll come back and fix the colors, don't worry. But what we have right now is a framework for adding these different colors. See if you can figure out based on what we've covered in previous episodes, how you can go ahead and change these colors. Like I said, we'll get there in a future episode, but I'll leave that for you to do as homework for right now. We've made a lot of progress, hopefully by kind of taking this in steps and chunking it down. It will help you to learn the material a little bit better and allow me to go a little bit more in depth as to what's going on in the code that I'm showing you please make sure that you're subscribed so you can come back and see the next episode where I talk about adding those arrows, arrows might be a really useful way to direct the reader to think about the flow of time, make sure you're subscribed, and we'll see you next time.