For more videos on people's struggles, please subscribe to our YouTube channel. In New York City, there are as many as 80,000 people currently working as bike couriers for an array of food delivery companies such as DoorDash, Uber Eats, and Grubhub. These apps became a lifeline for millions of people in the city during the most serious part of the pandemic lockdown. And in this time, these companies saw record profits. Food delivery workers worked long and strenuous hours for almost half of the city's minimum wage pay. Reckless drivers, road accidents, and theft threatened their physical safety on a daily basis. A survey of delivery workers by the Worker Institute at Cornell and Los Deliveristas Unidos found that 54% of those surveyed had been robbed while making deliveries, and almost half had gotten into accidents. So far in 2021, more than 10 food delivery workers had been killed on the job, either in violent robberies or in road accidents. These conditions drove many workers to organize means to protect themselves and others. Cesar Solano Catalan, a 19-year-old bike delivery worker from Guerrero, Mexico, and some of his family members, all bike couriers, began a Facebook page called El Diario de Los Delivery Boys en la Gra Manzana, or The Delivery Boys in the Big Apple Daily. The page has more than 28,000 followers and serves as a channel for workers to report bike thefts, assaults, and deaths across the city. The Willis Avenue Bridge, which connects Manhattan to the Bronx, has been the site of numerous thefts and attacks on delivery workers. After hearing about attacks on two workers on the bridge, Cesar and other workers decided to organize a nightly security brigade there. Almost every night since late July, Cesar and the other lead organizers have coordinated security at the bridge, making sure that no biker crosses it alone. We are in charge of the El Diario de Los Delivery Boys in the Gra Manzana. My cousins, uncles, and a friend are having dinner. We were informed of a message that two of our partners had been attacked. They had taken their bike tools and all that. And that encouraged us to arrive that same night, to see, analyze the bridge, and to see that there were no police, no cameras, no lights. And we decided that we had to do this, because if we don't do it, nobody else will do it. Maybe the police is here, two or three blocks away, but it's not here at the entrance. Here we want the police at the entrance of the bridge, because here is where things happen. The attacks happen, the partners call, the police arrive after 15 minutes, and after the drone is already in their house. So we started with that initiative, that the partners spend in groups, that we are more organized in the groups of Waxat, in the groups of Alert, and now we have almost four months here. The police have not given us an answer, that they come here to put the security, the cameras, the lights, there is still nothing of that. We are still standing here with the partners, they are here, they are from the guard. I think there are nights that we can't come, public health, it's very hard to work, in my case I work all day, then the night to come here, again until one, two at night, so it's very hard. But if we have been here almost all night, it's about 20% of the days that we have been here for four months. César told People's Dispatch that the companies do not pay for their equipment, as well they don't cover their medical bills. The company doesn't pay you for the tool of work, a bike, your backpack, your helmet, everything runs in your account. He also said that the initial days of the pandemic were really difficult for delivery workers, but now things are slowly starting to improve after the formation of the organization because there is a sense of solidarity. I was convinced of doing delivery of food. I knew how dangerous it was to be in the streets, accidents. And I didn't know about the robbers, I didn't know about the robbers. I didn't know much about them. But when we started to give them away from the pandemic, they cut our hours, days and until we closed the restaurant, I said, how are we going to survive? We are not from here, we are not going to receive support from here, which is why we have to work. So from there I started, my cousin started, my uncle started and the whole family started to do the delivery of food. In the pandemic it was more, for me, more ugly, sadder. Sometimes we went to the hospitals, the cars were there, they were with the bodies of the deceased. If you were going to a house, it was very solid and at that time there was so much insecurity in the streets that you went out, everything was open, there were people screaming here, throwing you this. You didn't have to tell anyone, we called the police and they wouldn't come. So at that moment we were analyzing this little by little, little by little, until we decided on November 4. I think we had to work like four or five months to realize what was happening with our colleagues, colleagues, so much insecurity, so much danger, so much theft, deaths of the colleagues. Before, if a delivery man died, he would die, right? And he just had to see his family, his friends, if he had any and if not, then that's what they abandoned. And right now a delivery man dies and the whole community of delivery men, that food, is found, they put their little grain, they put it in the funeral, and a media of communication was already made for the delivery men. Believe me, on that page right now, we were 28,000 followers because we started with that. And if we hadn't done it before, who knows how that would be. Even though the delivery workers come from all parts of the world and speak different languages, the workers' relationships among each other have improved and efforts are being put in to break all barriers and bring unity. Well, to be honest, I have no idea, but we are quite a few. I don't know if more than 80,000 delivery men came out of the news, because there are 80,000. So we are quite a few, from the Mexican community, from Guatemala, Ecuador, Branda Dej, from Africa, from everywhere. So we have seen that we are quite a few, more than what makes us fall apart. This is the union. Because so many Latinos are already here, but other countries are already getting closer little by little. I think there are some African companies here with us, there are some companies that have passed here, but we have tried to work with them, to get closer to them, to work with them. Because it is difficult to understand ourselves, because of what we speak. In my case, I am just trying to speak English, and then speaking something different is complicated. But we have already obtained a favorable response from them because they already look at what we are doing, and they have started to donate their granita arena. They don't understand it, but they see something in a box, and they put their granita arena. Well, I think that for some part we have improved our friendship, because before I mentioned it, a delivery man who comes out of his house, he walks like in his world. He doesn't even know who he is, he doesn't even know who he is. So he goes through something, he prefers to go to his house and take him out. And right now I am going to meet him, how are you? How are you? Did this happen to you?  Or did that happen to me with an order? Oh, look, look here. So right now the guards are with us, and they already know each other. We already know each other, and down there, in any place where we meet, hey, this, you give me a biscuit, okay? Where? Well, you don't have one that you have, so that you can think about it, or you can sell it. Or, look, and not so much in these cases, also of high robbers, but also, you know what, in the coexistence. Tomorrow is my birthday, I invite you to my birthday, okay? Let's not be from the same country, but the unity is joining us right now.


So, this is Tim talking about setup.py and making sense of it all. So, take it away, Tim. Thanks, Lee. Yes. Thank you, everyone, for joining me this morning. Just to check that you're in the right talk, I wanted to point out what setup.py was. If you ever looked inside a code directory and you've seen this file and wondered what on Earth is going in there, this is the talk for you. So, I guess where we're going to go through, I'm going to have my touching story to begin with and then we're going to talk about using this file for four different use cases. One is people who are just installing stuff and want to know what's actually happening with pip install package. Then people who are building stuff and then maybe people who are building stuff that might be more advanced than having to build big projects that combine multiple programming languages or build systems, it turns out that you can actually wrangle setup.py to help you out with that. So, I guess the heartfelt personal story is that I was really intimidated by this file. I wanted to upload things into PyPy, I wanted to be able to wrap my software and actually enable it to be installed by my future self and that became actually surprisingly difficult. I will admit some ignorance here. It got to the point where I would not just be abusing sys.path because it's just a list, you can add to it. I would be including environment variables that had locations to directories and then kind of walk that tree of my development thing and then I would kind of have this ad hoc versioning system and then I realized I really should work out how this thing works. All right, so in this section we're going to be covering actually what the definition of packages because we really want to start right at the beginning and where to go for if you're actually having a lot of difficulty. Just because I think it's really important because some of the people in the room won't be able to distinguish a module from a package from a distribution and these terms appear a lot in the actual documentation. So I guess the package could be pretty much usually defined as like a folder or a directory that contains this like double underscore init.py file. That's, people will kind of, you know, that's good enough for this talk. If you have a folder and there's .py files in there, it becomes a package when you have ..initpy. So it's something that's sort of special. It kind of, now a module is just really a file that has a .py extension. Again, that's kind of a good enough definition, doesn't cover all use cases and a distribution is a term that's used in the docs but really when you look at it, it just actually talks about how one package relates to others and effectively it's an organizational thing. I wouldn't worry too much. There is a whole bunch more terminology that can really be will to someone if you've just come to Python. You might encounter easy install, easy setup, distu tools, site packages, eggs, wheels, package resources, a whole bunch of other stuff. This is only the beginning. For this talk, I just want to assure you that a lot of it is not necessary. And if you read anything that talks about distu tools, which you probably won't encounter now, but you might, the setup tools is the new distu tools and it will probably work seamlessly into the new stuff. So the old stuff is still good stuff, right? So just to kind of cover all bases, you open up a terminal window, clone your code and we're going to be talking about this hypercode thing a lot. We enter that directory with the cd command and then we type python setup.py install. That's all you need. And like that's all PIP is doing a little bit more because it's finding the file for you as well, but ultimately it's running something pretty similar. So just kind of relax. That's pretty much it when it comes to installing things, but you've got help, dash dash help as it happens. And you'll find that there are a whole bunch of commands in there and do you think, what are they doing? Open up commands and then you'll find help install. Turns out though that they're actually focused on being comprehensive rather than being accessible. Let's kind of look through that. So if you do dash dash help, you'll encounter this and you'll probably be only able to see the bottom because it's gone right past your terminal window, but really this second, this line here is what actually matters. So if you're a newcomer, this is really not that helpful in my view. Help commands is even more difficult because it's actually saying as well as install, which appears here, you have everything else. And that's because it's distribution, distribution code has so many edge cases and the Python, core Python developers have kind of learned by experience that there's a lot of things that people want to do with code. It's a very, very widely deployed language and it's used in a lot of places. Now if you ask, you can ask for help in a specific command, but again, you get lots of stuff. I would just encourage you to breathe through it now. Really, there's only two things you need. One is install and the other is develop. I actually use develop quite a lot because instead of copying everything into your package's directory, it just creates some links, which actually speeds things up, especially if you're using package data, which I do because I happen to use natural language processing and machine learning. So I've got a whole bunch of training data that I don't want to ship across to somewhere else in the file system. If I'm ever building like vagrant files and kind of playing around with containers and so forth, it's a similar approach if things will build faster if I just use develop, even though I'm kind of abusing that. Everything should work fine with virtual environments because that Python keyword at the start changes when you activate a virtual environment. So instead of referring to your global package directory, it's talking about the virtual environment's package directory. Right, so we're going into that second stage, how to actually create code for people who are, sorry, use setup to find for people creating code. And then how do we grow from a single file out to a whole project? So this is this hypercode thing we talked about. That's our amazing piece of new technology. And we've just plonked a setup.py file in there. And this is all we really need to do. We define a little bit of metadata, which is the name for the package. And then we want to say that our package contains one module, which is that single file. And I remember that a module is just really something with a .py file at the end. The system will growl at you and say, look, you're missing out URLs and things. But it will still do what it's told and comply. So you might build a little bit more code. If you're not from the Python land, you would probably call this SSC. But in Python community, it's often become convention to have your project directory then your package directory name the same thing. In it file, what is our setup.py file look now? We've got more metadata. And now we've included who's building this, how to contact them, the URL that it's founded, we can also start to specify dependencies. So hypercode depends on hypocode as well as Greek to be able to interpret everything. We can do more. So as we start to build our project up, we've got these two scripts, type and call down that we want to include. And all we need to do is refer to them. And this directory is relative to setup.py. It's not relative to the package's directory. So if we go back to here, it's relative to this file, not here. Okay, so I want to get when things become a little, if you read through the documentation, it's like, I want my like configuration, not configuration files, there's actually something separate for that. But some data that comes along with it. So I might have serialized some big thing. And I want to include that and refer to it. In the documentation, this will be referred to as package data. And there's another section which talks about additional files. I don't like additional files for the following reason. It will actually copy things into sys.prefix, which is your, so effectively it's going to copy things into your site packages directory. And I find that a little, that'll clutter things up. And it's like, well, where did this .pickle file come from? I don't know. Because if you look into that site packages directory, there's no kind of asterisk to say that it goes back to which of a package it comes from. So I sort of tend to steer clear. We're kind of moving right through. So now you've got into the situation where you're actually sharing your code with others. You can install it, ship it around. You can probably compress things as zip files. One of those commands that we'll refer to, if you look in that help commands thing, one of them is sdist and bdist. Those refer to building a source distribution.  Now we want to, we really want to share our code openly with others. Our setup.py file is becoming much larger. So all of the original metadata that we discussed exists, except we've actually got long description as well as description. What I often will find people doing is just reading in their readme file and using that so they don't have to type things in twice. The reason why long description is useful is that on the Python package index that long description field will be used as the document, as the description of your package on the website. So if you've ever gone to pipi.org slash whatever project, there's often a quite variable description of each package.  Or it's not very long. We can also add a little bit, we can add some more metadata. So I can start to describe how mature this package is and kind of raise flags. And I've also said that, you know, hypercode is BOS specific because I thought that was kind of fun. And what I would strongly urge you to do, if you are considering to kind of verge into this open source space, is describe your license quite specifically. If you're releasing code that you've produced at work, it probably is owned by your employer. And so there's probably, and if you are sort of a lone developer in a small shop, you kind of will need to figure out the process of making sure that the copyright is assigned either to you or you attribute the right person. Because this stuff kind of matters, especially in a New Zealand context when a lot of the licenses don't take into the account, for example, that you can't say absolutely no disclaimer. So if you ever open a GNU package, often it will say absolutely no warranty. That's not the law in New Zealand because if your code is used by consumers here, it's protected by the Consumer Guarantees Act. And so it's really, really important to start to learn about the law a little bit. And you are an effective, you know, I mean, I think it would be unlikely that someone would take you to the Commerce Commission and demand liability. But who knows, you don't wanna do things that are illegal. Again, there are two important commands. There's the distinction, which I found really confusing when I first came to it, between registering and uploading. I just thought that if I registered the code, it would somehow then do uploading as well. Beginner's mistake, I guess. So when you register a package, what you're doing inside the Python package index is claiming your space. So I have the thing in, I've got a couple of packages up there and no one else can use my name or the names that I've used. But there's actually nothing that other third parties can install. Until I've uploaded files. And if I run upload, setup.py will, or setup tools underneath, will actually go to the effort of building distributions, packaging up into the correct zip files, including all of the metadata, getting everything in the right place so that other people can install it and their Python versions will know if they can install it and then send it up into the cloud. One thing I think would become, one thing that is especially useful is that you have the ability to sign your code. It's not gonna provide a huge amount of protection for third parties, but it does prove that the person who controls the certificate is the person who uploaded the package, which is something. And probably something quite useful. Now, setup.py for people who wanna do other stuff. I want to look, I, the way two projects have used setup.py and the setup tools infrastructure to enable other build systems within the Python projects. So can I just quickly, I'm from the machine learning stuff, so who's used LMXML for, okay, few people than I thought. I was gonna say, well, you've all used Scython, but actually no, as it happens, you haven't. So Scython is another programming language and its output is C. So it is basically writing C with Python syntax. And it's been built by the numerical computing community and scientific computing communities primarily to be able to make crunching numbers really, really fast and building extension modules. And the other project is Rust. They both go about the, the Python interoperability story in a different way. Oh, just as another question, who here's built a C extension before? Right, okay, well maybe 10% of the room. A C extension is a fancy word for something else you can import that happens to be written in C. It's actually a scary word for something that's not that scary. So Scython again goes through, it builds C source code and then uses the normal thing, the normal infrastructure within side setup tools which knows about C compilers via this function called Scythonize. So Scythonize is great. You create these .pyx files which is C with Python syntax. It creates you a C source file which you can inspect to probably get about 10,000 lines of C code from your four lines of Python, let's say. Because it covers every single case on every operating system. So it's not just, Scython is an amazing piece of software engineering. The one thing that I would note is that setup.py is run, oh sorry, this setup function is run every time you execute the code, right? And so is Scythonize. So if you have a big project and you've just got a source distribution and you go and inspect it with dash dash help because you kind of want to interrogate the package before you want to do anything further, it will build the C and the extension. Doesn't matter what you're doing with it, without you asking. So it will do it every time. This Rust-ext package does something different. It kind of delegates work to the Rust compiler and Rust can be asked to create things that look like C binaries. It's actually really, really easy to do. And so the tooling that they use is effectively this command class functionality with inside setup.py. The command class keyword enables you to swap out at runtime what happens later on inside setup tools, if that makes sense. So install lib, or install underscore lib is one of those commands that can be executed from the command line, just like install or develop or upload that we've been chatting about. And here I say, I would like you instead, dear Python, to please use install lib, including Rust, instead of your default. And all, as it happens, all C extension's are zip unsafe, which means something to people who do this. So as you start to play around, go and explore what that means. But for now, okay, I can't put in a zip file as is. So just a little bit more. This build Rust command class is effectively teaching Python how to build Rust files via delegating that to cargo, which is the pip of the Rust world. And the cargo.toml file is the setup.py of the Rust world. So we're kind of thrashing the time for, we're at the end of the talk, nearly. So I thought I would add these as kind of like bonus to-dos or homework. I really, it was encouraged, like I was really impressed with the setup tool source. And in fact, the distrute tool source and how they go about argument parsing. So I noticed every invocation of that dash dash help was different and it all changes depending on which command line arguments I specify, as it happens that all of that happens at runtime on invocation of the script. And so if you want to be able to create a command line utility that which is literally used by millions of developers every day, which this one is, there's a great way to go and say, and that has a huge amount of functionality in there. This is one way to kind of look about how to provide structured help for people using your package. I was really impressed at Grail and Dublin's talk. I think I've just misspelled his last name. Hopefully he's not here. I think I just saw him left. I would look up AutoRapt. It turns out that there's a convention within, let's say this is Python path that's probably PyPyH files that rather than PTH that will execute arbitrary code if they start with import space. And that seems kind of fun. There's actually more, you can actually encode a lot of those keyword arguments in files called setup.config. And pydistutiles.config is something similar for more like global options as to where I would like things to be installed. So rather than just polluting the system, site packages directory, you can kind of have a little bit more autonomy as to where you would like that to go. Also, have a look at entry points. So entry points are defined as things that, well, what I like, what I can see them being most useful for is being able to create command line utilities really easily by taking, you just kind of specify a function that takes no arguments. And this entry point thing will figure out how to turn that into an .exe file, a, I think a bash script for whichever platform that you're installing. So it's a way to be able to create scripts that can be run by other people, no matter where they are. So again, I just kind of want to reiterate, the setup tools infrastructure that is provided to you is really powerful. And people give Python packaging a lot of grief and talk about how broken it is. There's actually a pep that describes how we should make setup.py obsolete that was never implemented. But there's been kind of a lot of hate around this whole Python packaging thing. And I just think it should get a little bit of love. So there we are. Thank you. Thank you very much. Is this even on? Yes, it's all done. Thank you very much. We have a lot of time for questions. So let's get started. So great talk, thank you. One other thing that I just recommend people look at is a command line tool called twine. It's T-W-I-N-E. It basically serves the same function as Python setup.py upload. But what it does is it actually verifies the SSL certificates. It does a secure encrypted upload to PyPy. So twine is sort of the recommended way to upload things to the cheese shop. Right, right. Certainly setup.py upload works, but twine is enough. Yeah, yeah, so in case anyone hasn't uploaded to PyPy, it by default is gonna upload by HTTP, which has, and so there's a little note I just noticed today, there is an option to do SSL uploads, but it sounds like twine is just gonna do that all for you. If I'm writing a setup.py for a package that I want compatible with Python version two and Python version three, is there any gotchas I need to worry about, any way it will behave differently? Right, so a setup.py is just a Python file. So if you have a print statement in there, it's not gonna be happy in Python three. If you have a Python three interpreter interpreting that script, it will blow up on you, well. So it's just Python. There's gonna be nothing in there, I think, that would be two, three dependent. And I believe you can also specify whether it's Python two and Python three. Yeah, so you can definitely say that my package only supports three, five and up, for example. So if I have, can I run upload multiple times once my version goes up there, so version identifier, so register once and upload multiple times. That's right, you can, the T shop, the Python package index is pretty smart and if you increment that vision number, it will have the latest file available for public consumption. And when people use PIP, they'll only pull down the latest version. It's going to rely on you using semantic versioning inside your setup.py file in order for that to work properly.  So please just use one, two, three. Any further questions? I did see one at the back. Any more for any more? This one now on the front. Sorry. Oh yeah, I maintain a package which has to work from Python 2.6 up to 3.5. At what point does from setup tools import setup actually work? Does it work in the older versions? I know, because it isn't included in the standard distribution, I think, of 2.4. So that's what, in the extra craft of keywords, one of them is ez underscore setup, which is effectively another Python file that downloads setup tools and installs setup tools for you. So... That's what I am using? Right. I just wanted to make sure that was still the correct thing to do. I may be wrong on the specific versions, but it's around about 2.5, I think, that it came in. Any more for any more? Going once, going twice. Thank you once again. Have a great day. So we have lunch now upstairs, and the next talk we'll be back down in here or in the next door at 1.10, if I remember correctly.


going to talk about reaching the connected consumer, getting your game face on. We'd like to welcome our speaker for the session. He is the director of marketing at Asia Pacific at InMobi. I'd like to welcome Mr. Rajesh Pantina. A very warm welcome to you. Hello. Hi, Cathy. Thank you a lot for that. Good afternoon, sir. Over to you now. Good afternoon. I'm just going to try sharing my screen. So I think we've heard a lot from Sai and we've also seen the overall online gaming space being described in detail by Girish. Now, what we'd like to do is basically take you through our own insights and specifics of mobile gaming, where what we're basically looking at is a report titled, Everyone's Gaming Among Us, which is probably true. And a lot of you guys must be gaming right now while listening to this. Now, this report specifically, if you look at it, what we've tried to do is basically look at three parts. One is basically a bit of consumer research. What we're basically looking at is a report titled, Everyone's Gaming Among Us, which is probably true. OK. So yeah, quickly about the report, how we've gone about looking at the insights is we've looked at it in three parts. One is that there's a bit of consumer research that we have done using InMobi Pulse, which is our mobile consumer intelligence platform. The second bit is basically we've looked at a bunch of audience intelligence where we've looked at 1.7 trillion ad requests from January 2020 to January 2021. And using a lot of that, we've looked at actual engagement, actual usage patterns, et cetera. And ultimately looked at some advertising insights on the InMobi Marketing Club. That's where advertisers meet consumers on the gaming environment and are able to actually meet their consumers, engage them in the right formats, right kind of ways that they want. Now, quickly jumping into just the methodology of the consumer research specifically, as I was mentioning, the InMobi Pulse platform is something that uses programmatic sampling to run surveys and garner responses. What we did this time around was between February 9 to 16, very recently, reached out to 1,000-plus Indian smartphone users or connected consumers across tier 1, tier 2, and tier 3 cities, about 30 of them. And what we did was made sure that we weighed and targeted them to be representative of India's smartphone population. Now, what I'll cover in the next seven to eight minutes is basically first of just set the stage and help you understand what's the current demographic of the Indian mobile gamer like. And as we basically move and understand that demographic and then move into how the persona of the mobile gamer today is shaping up, what are their motivations like, why are they really gaming? We'll then move into the emerging trends that are actually coming up and then lasting behavior that for a long time, new normal behavior that we've been talking about has come out as. And ultimately, for a lot of guys, monetization is something that you've been hearing. And therein, while publishers have a huge opportunity, advertisers have an equal opportunity. But there have been a lot of myths. And those myths are something that I'd like to break at the end of this. Now, immediately setting the stage to help you understand how gamers are today, what the demographic is like. As the title suggests, it's not just a young urban man's game. It's been a long, whole held myth amongst us that it's only the young and it's only the male who basically game a lot. But what we clearly see is with mobile, close to 50 or 43% of basically mobile gamers are women. And what we also see is it is representative of all age groups with more than 30% of 45-plus age group. Female gamers being seen on the mobile arena. Now, what we're also seeing is that gamers are quite well distributed across India. South leads with a 29%, North accounts for about 27%, while Western India and Central and Eastern India account for 22% each. Now that we've understood how the demographic has shaped up, how it's kind of evolved in the past 12 months, what we'd like to look at is how do we define or how do we understand the persona of this mobile gamer better. And what we really have seen that India is emerging as the land of the committed gamer. Now, here's how we basically been able to arrive at it is we asked a very simple question to our audience was to say, how often does one play games on their mobile phone? And what we found was a whopping 80% basically said that they played once to several times a day. And these are basically the committed gamers in India. And these committed gamers actually reign supreme across gender, while we see that there's a certain skew, very tiny skew towards male. But you see the three and four gamers, both female and male, are basically committed gamers. The other set of gamers that we are defining are regular and occasional gamers, where we see that regular gamers play at least once a week and occasional gamers play once a month or less. Now, I think the most critical part and one of the pieces that was already kind of brought up by Girish and is corroborated through this survey is that we really wanted to understand what's a motivation for people and why did people take up gaming? Now, what we really found out that mobile gaming is equal to relaxation. When we'd ask people what's the primary motivation while you see a bunch of people wanting to compete and win, people wanting to fight boredom, people wanting to connect with friends and family, entertainment or relaxation basically reign supreme. Now, what this means is that people are treating gaming as a part of their entertainment bucket, which is comprising also of OTT video, OTT music, a bunch of social probably engagements, et cetera. But then gaming is starting to own that entire entertainment and relaxation genre and it's probably the new phase of entertainment now. Now, what's also unique, and as we basically need to keep that basic motivation in mind is that people are looking at it as entertainment or relaxation, they are also snacking on mobile gaming. You will see that a whopping 70% are basically playing either for 10 to 30 minutes for each session. So the question that was posed to people here was how long would each session of theirs be? And that turns out to be around 10 to 30 minutes. And that is true not just for basically the overall gamers, but also committed regular and occasional gamers. So it's something that is a snacking behavior is coming true for anybody and everybody who is a mobile gamer today. Now, what that also basically shows is that people are looking for it as entertainment, people are basically looking for it as something that is helping their snacking behavior. And so therefore they're actually going to go play them all and try them all from casual, card, multiplayer online battle arena action to eSports. People are actually trying out any and every game that they can lay their hands on to basically entertain or relax themselves. Now, what we also saw was over 40% of these gamers overall, not just committed gamers, but overall actually had more than three games at any point in time on their smartphones, right? While space might be an issue in the current Android heavy market, what we are eventually seeing, and there was a hint of about the cloud gaming, et cetera. But we will start seeing this entire thing drift and more and more games being present on everybody's smartphone. Now, having said that, what we wanted to also touch upon was that while there's a lot of stated data, people are responding to surveys, how did it actually pan out when it comes to actual engagement that we were seeing in those 1.7 trillion ad requests, right? Now, as you understand, this is a lot about games which use monetization as their mechanism or ad monetization as their mechanism. Now, one of the first emerging trends that we basically saw was an increase in time spent and increase in variety of games that people were using. Now, that is also something that is reflected in a response that we saw to our survey where we saw that 45% Indians actually started playing mobile games due to the pandemic. So you see that there's been a huge insurgence of actually non-gamers just because of mobile making it available to them. And therefore, democratization has actually brought in a whole new bunch of gamers who do not really know consoles, who do not really look at the desktop, but are basically looking at mobile gaming as the primary way of gaming. And therein, what we are also seeing is existing gamers are basically increasing their time spent and are increasing the variety of games that they have played. Now, as you see, gaming has been winning hearts because what we saw on the platform as well was a 1.5x growth in terms of the users, unique users as well from February 2020 to December 2020. And that is very much in line with where we are seeing that 45% of people have said that they'd actually started gaming just due to the pandemic. Now, please note here, this is unique user count. Now, if we move to the app usage itself, what we see are two big things. The first thing being that gaming earlier definitely was a small snacking kind of piece, but it had two big peaks, which was 1130 and then prime time around 839. But what has happened due to the pandemic is basically gaming has actually emerged as a constant engagement piece through the day and the peaks have actually just shifted three to four times and there are some peaks which are like six times or more, but then it's on an average three to four times higher than the engagement that was there previously. Now, to put the unique user and the app usage growth into perspective, this is how things panned out. You see the mark where January 2020, that is before lockdown, how app usage and unique users were at. And then after the lockdown over the course of a year, this is where we are seeing app usage and unique users shift to. That basically actually means that mobile gamers in India are not just committed, they are the most engaged and highly growing kind of a user base. Now, another way of basically looking at that change is to just see the heat map that we put together based on the same data. You see how there are a bunch of huge hotspots that have just exploded and there are very, a lot of newer areas that have come into existence with mobile gamers actually coming on board onto the platform, in movie audience intelligence platform. Now, I think one important piece that we need to definitely look at given all these insights is at the end of the day, if consumers are behaving in a certain manner, how can brands or advertisers best make the most of it? Now, the first, I think myth that we want to break in all of this is to talk about how women have basically entered the arena and are owning gaming. And you see, as we've seen earlier as well, is that 77% of all women who play are basically committed gamers. And what they are also doing is actually playing more in terms of time spent, right? And across age groups, the time spent is way higher than the average time spent by anybody and everybody when it comes to gaming. The second bit is also a long, for long kind of myth, which thinks that gamers are basically not my target audience. A brand always thinks that gamers definitely do not fit into my kind of target audience. Well, the myth cannot be far from the truth because gamers are equally likely to use music, social networking, sports, entertainment, lifestyle and news apps. And they're equally likely to be retail store visitors, shopping center and mall visitors, restaurant visitors, anything and everything. And therefore, what we really see is that in that 300 million strong audience on mobile gaming, you actually have each of your target audience, each of your brand's target audience out there. Now, what's also unique, and this is something that again, Girish had mentioned was the idea of how gamers basically engage with ads in gameplay. Now, we had clearly asked people as to how would they prefer to progress in games? They clearly said that three in four gamers would actually watch an ad than pay money. Now, therefore, in-app purchase are definitely not going to be that prominent in the next couple of years for sure. But what we are seeing and what it means is that ads are something that gamers are basically okay with. And they also have a 60% recall whenever they see an ad. Maybe it's because the brand or product is a topic of interest. The ads help them benefit in the game or the ad is engaging and interactive. But net-net, what you see is a highly committed gaming audience which is engaged, which is watchful, and which has a high recall. That basically means that India as a land of committed gamers is basically your target audience on mobile. Now, also, when it comes to a bit of outcomes for advertisers themselves, what we have seen on the InMobi platform is that we have a 31% higher video completion rate than Moat benchmark, which is an industry benchmark for in-app video ads. And we've also seen 2.6 is higher engagement in terms of clicks, in terms of end card engagement, in terms of rich media engagement, et cetera, that can be built on top of video. Now, that is basically huge, huge goal and a huge, huge distance that brands can actually cover by starting to invest and starting to make more of what the mobile gaming audience is providing to them in today's time and age. That's basically it. I think you guys will have access to the detailed report and detailed insights in the chat link. If you have any other inquiries, if you have any other thoughts, please feel free to reach out to mobilemarketing.inmobi.com. Over to you, Kher. Thanks. Thank you so much, Rajesh, for giving us that brief insight. And I'm sure a lot of our viewers have taken key highlights from your talk. Thank you so much for your time and sharing the insights here with us. Thank you. Thank you. Bye.


Hey, what's going on? I am Greg Sussman, your day by Jim Sonnes of Fandle. I'm just here to talk about the players whose stock are rising here as we head into week seven. Two more games to go in week six. Let's chat about this past Sunday. What's going on, Jim? It's not too bad, Greg.  We're talking about Rob Gronkowski in a positive light, Matt Ryan's doing well. DeAndre Swift was probably in high school back then. So maybe we can exclude him from this conversation, but, you know, it's a bit of a throwback here. It is. What is old is new again. And that brings us to Tampa Bay with our first Gronk spike in years. And that's exactly what happened on Sunday afternoon. Gronk finished with 16.3 fan dual points. And with O.J. Howard out for this season with Mike Evans, kind of irrelevant with Chris Gowen in the lineup, Rob Gronkowski took on a bigger role on Sunday and maybe going forward, he's someone we need to look at. Yeah, I think part of it is that his role was actually underrated even before this game, because in the first game without O.J. Howard, we saw Rob Gronkowski get to 50 receiving yards. And that's kind of like a big threshold for me at tight end, because I want tight ends who can get yardage. I don't want the Jimmy Graham or Kyle Riddle, five guys who might score a touchdown. I want guys who can get yards and Gronkowski did that. He exceeded 50 yards back in week five, did it again here in week number six, getting up to 78 yards. And that's what can happen when you get downfield targets. Gronkowski actually has six downfield targets in the past four games that is in addition to five red zone targets. He had two of each of those on Sunday. So his role is actually not that bad. I came into the year thinking that Gronk was totally toast and I'm okay being wrong on that, because I think that he is, he's proven me wrong there for sure. The word of caution is that like you said, Mike Evans hasn't done a whole lot. One of those games for Gronk was relevance was a game with no Chris Godwin. So once we get Evans off that ankle injury, he can be a little bit healthier, not facing a cornerback like Jair Alexander. And once Godwin's more worked into the offense, Gronk's probably going to be floating around that 50 receiving yard mark each and every game. There'd be six or so targets and that does make him shaky for sure for DFS. This is not the Rob Gronkowski of old, but he is relevant for DFS. And I didn't think that Gronk was that before. So this is a big change of pace for me where I was previously not super willing to include Gronk, but I think now in two games with no OJ Howard, we've seen this role be pretty good for Gronkowski and Tom Brady is playing good football. And I think that's enough to make Gronkowski DFS relevant for the first time in a very long time. I was with you, Jim. I wanted nothing to do with Rob Gronkowski coming into this season without OJ Howard. I've been proven incorrect and that's okay. Getting in on Gronkable season long and DFS right now makes a lot of sense. You're looking for safe options slowly, but surely Gronk is becoming just that. Over the past decade, Matt Ryan's been a pretty safe option for the Atlanta Falcons as their quarterback. He plays every game. You know who he's going to chuck the ball to. And you tweet a lot about Jim, how it's awesome knowing where targets are going. And in this Atlanta offense, that's exactly what you know with Julio Jones and Calvin Ridley, a little bit of Russell Gage here and there, and even Hayden Hurst. And Matt Ryan is the quarterback of that offense and is a fine quarterback both season long and DFS because this offense, well, it's always moving. He scored a 31.6 fan dual points yesterday. And I just don't see it slowing down, especially as Julio Jones continues to get healthy. That is the key there, Greg. As long as Julio Jones is healthy, I expect Matt Ryan to be very relevant for daily fantasy because he can put up big scores like he did on Sunday because there are past 70 team who need to score points because their defense is just hideous and Matt Ryan is just a different quarterback when Julio is out there and the three games Julio Jones has played a full compliment of snaps this year. Ryan is averaging 0.42 passing that expected points per dropback, which is basically the best in the league. If it were as full season number, the reason it's not the best in the league is because he's at negative 0.02 when Julio has been out or limited. That's a really bad number. So Ryan with Julio, awesome quarterback, Ryan without Julio, pretty bad quarterback. So as long as Julio Jones is healthy, Matt Ryan is a very relevant daily fantasy play. So as long as Julio Jones stays healthy, we can bank on Matt Ryan. He's had at least 24.9 Fando points and all three games Julio has played. He's exceeded 28 in two of those three and they get the Lions at home next week. So we're going to talk about Matt Ryan, we're going to talk to Matthew Stafford. That game is going to be a delight for daily fantasy, even if the real football may not be as great. It's going to be a fun one for sure that I am positive. We'll talk about when Friday rolls around. So Matt Ryan, whenever Julio is out there, he is someone we need to keep an eye on because Julio just changes the entire complexion of this offense in a good way for Ryan Ridley and everyone else. This connection between Julio Jones and Matt Ryan has been together for a really long time and on that second touchdown on Sunday, you saw the improvisation of Julio Jones to find his way into the end zone as Matt Ryan was scrambling and Julio Jones just looking healthier. This offense is just moving so much more fluidly and it's not as haphazard as we've seen. Julio Jones looked good yesterday and as long as he looks good and is able to stay on the field and stay healthy, the sky is the limit for Matt Ryan. Just like we've seen over the past several years, it doesn't change, certainly not this Sunday against the Detroit Lions. And speaking of the Lions, let's get to Deandre Swift, who yesterday put up almost 26 fangirl points while the carries weren't exactly there and the timeshare with Adrian Peterson is still real. Deandre Swift looked fantastic. My only question to you though, Jim, is the reason that we saw so much of Deandre Swift was because the Lions are playing from ahead all game long. Well, let's talk about this because there are a lot of dimensions to this Deandre Swift dilemma because his stock is up. That's why he's in the section. Stock up, Deandre Swift stock is definitely up. Stock perfect, Deandre Swift would not be there because there's still some some caution flags here. Let's go through the points for reservation first. If you look at just the first three quarters before this game really got out of hand, it was split 10 to 10, 10 carries for Deandre Swift, 10 carries for Adrian Peterson. So it wasn't just garbage time, Swift was getting work early on. So that could be a good thing. But like you said, Adrian Peterson is still there. He had 10 carries in those first three quarters. And Swift also played just 38% of the snaps. So that's why we can't say Deandre Swift is a locked in DFS. You want to use every single week even with a great matchup against Atlanta coming up. That's why we still need to be cautious with Deandre Swift. But like we talked about Chase Claypool last week, sometimes when you produce, you can earn yourself additional volume in the future. I assume that less with the Lions than with any other team, like I'm not going to have faith that they're going to choose a better guy because they've proven to be that they're not going to do that every single time. However, that sometimes can happen and Swift showed on Sunday, he is a very talented player who can put up big totals when you get in that volume. The other good thing with Deandre Swift is that the volume he is getting is the kind of volume we want. He's had at least four targets and four or five games so far this year, including four targets in Sunday's game. He also had three carries inside the five yard line on Sunday. Adrian Peterson did have a one yard touchdown. So it's not as if Adrian Peterson is just gone, but they did show trust into Deandre Swift on the goal line, which we don't always see with guys like this, especially with a guy like Adrian Peterson is still with the team. So three goal line carries, 14 total carries, four targets, that's a lot. And if we can get some of that volume from Adrian Peterson or from carry on Johnson shifted over towards Deandre Swift, he could be a guy who produces without a ton of volume because he gets a kind of volume we want specifically coming through the air. So no, Deandre Swift is not a guy we can just lock in no matter what in daily fantasy now, even in a good match with the Falcons. However, I am willing to consider Deandre Deandre Swift in daily fantasy now, whereas I wasn't before. So Deandre Swift stock is up. There are still some definite caution flags here, but I think you can have some sprinkles of him this upcoming week. And if he does get more carries away from Adrian Peterson, his stock could take off in a hurry. So still not a complete profile, but it's definitely getting better. And I think it at least makes Swift interesting for right now. I think it's undeniable that Deandre Swift stock is rising. I don't know if we want to just call it off yet, but it's rising and it's something that hopefully Matt Patricia doesn't get in the way of because Deandre Swift is an early round draft fake. He is somebody that lines have invested in and fantasy owners have invested in him as well. And while Adrian Peterson, I think deserves a role on the team. This should be Deandre Swift's show. And hopefully in the coming weeks, it will be hopefully that talent for last week and what we saw last week will produce going forward. And certainly this week, as you said against Atlanta, we saw Chase Clay will do it two weeks in a row and not four touchdowns, two weeks in a row, but certainly fantasy goodness in back to back contests. Hopefully the same is true for Deandre Swift. That's going to do it for us here on the panel hurry. Jim, we appreciate the time. Good luck this week. Same to you, Greg. Fun two games playing on tap for tonight. So I can't complain. It's going to be a good weekend, a good way to kick things off and hopefully wash the bad taste out of my mouth from what was a pretty bad week six for me. I wish I could wash the taste out of this season, Jim, because it's just been like that all year long. Tom Beckial will join me on the program tomorrow as we take a look at the top stars on the week seven slate on FanDuel. For Jim Sanis, I'm Greg Sausman. Thank you so much for watching. Enjoy the double dose of Monday Night Football tonight, and we'll see you back here tomorrow for another edition of the Fan Deliria.


Yeah, no, you know nothing wrong. I'm sorry. Yeah, I pointed it out. Yes. Yes What's happening? What's happening? Yes So you feel very comfortable right now with everything. Yeah, you're ready to go on with the the official testing. Yes, okay So the first one that they have in here is hearts Now these cards have actually been shuffled away from me and sealed inside this. I don't even know the order Identical to this one right here. They've been placed in a smaller envelope than a larger envelope and the jack king and the queen Have been removed. Yeah, what we have is the ace through the ten. Yeah, all right So let's open this up right here. My understanding is that I am to take these out All right, I am to put these on the table in order would you like them coming semi circular this way? Yeah, it is a little bit easier. Yes, you can put it all right. I can do that. So I'll put one there Actually, this way this way this way more. No, can I show? No, you cannot touch. You just have to like that do See what I'm like that. Yeah, right. Okay. Yeah, we can do that He's up just a little bit for you. Yeah, they are. No, I can't change the position of them. Okay. It's all right We go is that good for you? Yeah. All right. So Connie what we do at this point is We have the ace through ten I don't know what order they are right there These are the hearts and we have a ten-sided die right here. I'm going to toss this I will call out the number and then what I'm going to do is I'm going to actually write the number down on One of these cards right here. I will want you to verify the numbers on top So it's a hundred and fair for you as well Okay, so I'm gonna roll it three times first of all just you can see the guy does roll different numbers Okay, so that would be a four That's a one. Yeah Okay, and that's the one again. Are you comfortable with that? Yes, you are good So this will be the official roll now. This will be the card you'll be looking for That is a three. Yeah, it's a three. Yes, okay Number two from me there you believe your point. Yes, this one is the three. Yeah, that one's a three Yeah, so what I'm gonna do is I'm gonna write a three on here. Okay, I'm just gonna place it right in front of this three Yeah, over here I'm gonna gather these up in order again. Okay I'm gonna put them back Inside the hearts right there Okay, that will be set off to the side right over there Get this out of the way here. You ready for the next test. Yes. Okay, so that's the first one you've committed yourself to All right clubs. Yes Once again, nothing else inside there kind Okay, I Just want you to be comfortable with that make sure and again, I'm gonna put these out in order for you Good. Yeah, that's good All right, I'm gonna roll it again and this will be the official roll. Yes Seven seven seven Number seven from the left One two three four five six seven This one you believe that's a seven Yes, that's a seven place that over there


Let's go to the ring. BSU men wrapping up their first half of the season sat against Alaska Anchorage. No score. Second period beavers, a two on one. Kyle Baumann to Miles Fitzgerald. Puck is loose. Pops in the air. Crosses the crease. Ref signals goal. Video review agrees. 1-0 BSU then the third. How hot is Jay Dickman been lately? Scores another on the power play. His fourth of the weekend beavers by a pair. Then the dagger later in the period. Again, a man advantage. Brendan Harris, the rocket. That rattles home for another. Big series for BSU to get the sweep before break, but we're nothing the final. They're back on the ice December 29th and 30th. If you've enjoyed this segment of Lakeland News, please consider making a tax deductible contribution to Lakeland Public Television.


Welcome to my session. In my session, I'll talk about how to build a secure, efficient, complex, full supply chain at scale. Please enjoy my session. First, I'll introduce myself a little bit. My name is Tang Dong Yi. You can call me Jerry. I'm a program manager of Baidu Open Source Program Office. I have worked in the open source community for over 20 years. I'm a commuter of Mozilla Glow and Apache Foundation. I'm an advocate of open source in China, and also one of the founders of Open Chain China Working Group. Here's my agenda. First, I'll talk about what is full supply chain? Any risks for it and a challenge for my company? Then I'll talk about solutions for it and my practice. Next, I will summarize. First, what is full supply chain? Full supply chain means the operation of consuming false effort free open software within a company when running daily businesses. The challenging is just like any supply chain within a company. How do I trust my own open source supply chain? Is it safe to use a risk alone? Is it efficient? Of course I know. Why? Because today, people don't like software false cross. Instead, they assemble them. Here's one picture from Lin's Foundation. It says that in today's modern software, we use 90% of code in open source code. Here's one example. Engineers start an open source framework, then write its customers' code, then combine it with open source library to solve the real-world problems. You can see that the customer code is only 10%. The 90% are open source code, so it's very, very important for companies. False is free to use, and it has also risks. It may have security code, it may have bath, cold arms, hands, memory links. It may also have complex issues, GPL-related and patents-related. Here are some cases. The first case is a very famous case, security holes cause business losses. You may heard it before. The input fares bridge and online appartments cause more than $400 million and affect 140 million people. It's crazy. And here are two cases caused by software biotics, cause business is outages. It's really cases in my company. Case one. One online tech service broken due to a CPU humpback when using an old version of FastJSON, which costs $500,000 RMB revenues. FastJSON is an open source library very popular in China. It's a Java library to pass JSON data. Here is another case. One advertisement service failed due to one normal box into a keeper software, losing 7 million RMB revenues. And some cases about complex issues, such as GPL violations and the pattern terms. I'm not an expert on legal. So you can Google, Nix says WRT, file 4G and reacted pattern issues on Google. You can get more information there. So the whole picture of first supply chain management. Here is inside the company. We collaborate on a code. But we inbound free open software ABC from our stream. And then outbound we release it to our customer. We can release to as an online service and then release as a software and then released with hardware. The status in my company previously are not good. It's not very complex because nobody care about IP issues when importing OSS code and releasing their own. It's not very secure. Many usage of open source software with no high-risk CVE box. The fixing process is quite slow and not guaranteed and it's not very efficient. The huge duplicates open source code in our internal code measurements system. And updating process is quite painful. Here's one case. When a hand bath founded in first season 1.2.51 caused revenue loss in one product we want to avoid other similar problems also. What do we do? We notified with emails and pushed all in here to check by themselves and fix them by hand. But after three months the status was still unknown. My manager told me that no one was assigned to work on this issue. Why? Because this method was not efficient and did not work well. If we were forced to fix it by hand there's a huge work and it's not going to scale at all. So the real problem for open source for supply chain measurement is to how to build a secure efficient complex for supply chain and scale. Thanks for OpenChain project. It provides us a great framework. OpenChain is a standard to describe what organization could and should do to address the first complex in fashion. It identified key recommended process and required keeping requirements for effective force measurement. And it's not only complex you can check out openchainproject.org for more information. It defines the whole process. We need training, we need policy and we need process. It boils idea from Damien. This picture is from Derek Wicks on OSCOM 2017. It says that from Damien's idea supply chain need to use fewer and better component suppliers. Use only the highest quality components part and continuously track when and where components are used. So, as the idea practice encloses when you found open source software engineers ensure to use high quality ones and limited ones from trusted suppliers. Keep a record when consuming them. Know the lessons and pattern invitation of them before using it. And when outbound engineers ensure to keep a software bone when releasing. Fulfill the IP obligation of this force. Update periodically when being notified by security, SIE and legal teams. Talk achieved. But how to implement? There are many challenges. The real challenges for my company is that they are massive force supply and demand around the world and there are so many engineers and reports in my company. The engineers' habits are bad and we lack resources. The first challenge they are massive force supply and demand according to the report of THONATAC, there are 3.7 million unique packages in Central Madden repository. The download is increased dramatically and for JavaScript, there are 800 key unique packages in Central NPM repository. The download rate is increased even bigger. So on average developers have access to more than 21,000 new open source software components released every day since 2018. The second challenge is that there are so many engineers and reports inside my company. My company has over 15k engineers that are working on over 100k reports every day and the 3 million commits last year and 400 million code changes last year. Here is the third challenge. The engineers' bad developing habits. The engineers are not aware of force release so we choose whatever code they like to use. The engineers are not willing to update force software version if they have already finished integrating. And some engineers like to commit force resource code into their product report together with their own codes and when lack of resources the tool engineer resources legal resources and security engineer resources are all very limited. How to handle? So the only solution is automation. I have to use tools automatically as much as possible and I need to teamwork with legal security tools teams and we might need to be angel this region with small step set priorities and focuses on the highest one. So what I do? I set up a logic team including guys from legal security and tools and line up our goals and priorities we set up our action plan interstate steps for the last three years. Here is our action plan three steps for the last three years. First, record OSS usage automatically to locate and fix high risks quickly. Second, generate software for some core product team the last one is to complete the whole chain measurement and get open chain certificate to approve that we have done it very well. And the first step is focus on here in the right circle. Release is online service is our highest priority. The task list for our first step is that we set up an internal Maven server and NPM server first force engineer to use them and then all convince in the report if contents OSS code source code we define policy we use training and we enhance tools then we index every report and says prominent.srml or package.json.files to build force dependency data with a survey bar founded located this effective reports send security tickets to push engineer to fix them ASAP Why we choose this? Because Baidu is an internet company most of our business is online service and the risk of lessons complex is low we cannot leave without open source now we can bear one case of OSS fault but we cannot tolerate duplicate cases of OSS fault and slow phasing process we select jar and jar script first because they are more popular in Baidu Actual policies we define measures metrics cleaning metrics data before action then we allow the open source policy and train all our engineers we plan to developing scenarios for new created codes and for existing old codes training is very really important we must indicate our engineers to do sense correctly so we organize several offline training in several sites Beijing office, Shanghai office and Shenzhen office to tell our engineers how to use open source software then we provide online video training for every engineer then we accepted online design with video training for every engineer so every engineer is required to finish the video training and then pass the online design and for new created code we allow the policy company wide AGPR-LSS code are not permitted to check in some high secretive OSS code are not permitted, next just two we also end screen in code submit hook if the patch is AGPR or related with OSS risk OSS commit will be failed if the patch contains OSS source code commit will be failed too in this way we can make sure that no new OSS code will be ended into the code reportory illegally then we index every reports and collecting data we indexed POM.SML or GRANDER.SML for JAR program we indexed patch.json.log for JAR's greater projects then we build a dependency map and a policy then is API after each we can setup our open-source software security ticket system we set security fixing process and allow it then we get affected report data how many reports and who are the owners from the API we get already when assembly bus reported we can file service ticket to report owner to push them to fix it here is one case scale fast json we need to update fast json to version 1.2.66 to avoid a newly founded high-risk bus then we identify that over 300 reports are affected then we send out 300 more security tickets to these owners to push them to fix it in one week we check with the tickets and check with the reports status all are clear and are verified that's great it's only the first step we need to move on with more language support Go, PHP, cnc plapas we need to scan every report to force it near to migrate we use main and npm instead if they haven't used it before but building fast supply chain fast supply chain is a long journey it's more than complex it should be integrated with every activity of daily work for engineers and project managers we will keep going to make it more secure more efficient and more complex last, I recommend we can take a look to work with open chain it's a standard it's a collection of best practices in the industry it's also a community many engineers, lawyers and program managers are working together to share their practices please check out openchainproject.org for more information okay, that's all any questions? sex