Because Ben Mason became such a popular person yesterday, we didn't even talk about what was going on with the good news. And that good news was that we got a lot of good information yesterday, a lot of good returns to the practice field yesterday. Sammy Watkins, he's back. And we know he'd been missing action. And we've been wondering like, we're a little bit scared about his, the injury going into week one. It was like undisclosed when they weren't saying none about it, but he's back.  Marlon Humphrey, who had that scare a couple of weeks ago, he was back as well. Nick Boyle. Now they said he was off just running and whatnot, but Jeff Zerebik said he looked really good running. He was off to the side though, doing his thing. So he didn't fully practice, but he returned to practice. So that was a really, really good thing. And that's a really, really good sign. Will he be ready for week one? Who knows? We'll see. Probably not. Cause again, Harbaugh said no for week one. So I wouldn't anticipate him being ready for week one, but Harbaugh also likes to play games with his words. So we'll see. But anyway, that was nice. And Justice Hill, Justice Hill also returned. So you know what? I'm starting to think that is that all these guys, they just didn't want to practice straight up. They just didn't want to practice.  They probably talked to the coaches, obviously with Humphrey and Watkins and Boyle, they were all locks to make the roster. But with Justice Hill, he probably had a conversation with the coaches like, look, am I good? Are y'all gonna keep me around? Cause if so, I don't feel like doing this. I ain't practicing. And then they were like, yeah, you're good. You'll be here. Okay. Well, I see y'all before week one. And he's back now. So with that being said, it is a beautiful thing that guys are getting healthy. And guys are getting healthy at the right time because now ain't no more pre-season. Now everything counts. We are officially in the season. It's time to prepare for week one. Raiders roster is set. Ravens roster is set. And of course, again, no roster is final because they're always gonna be changes throughout the entire season. But the main guys are there. Well, at least most of them. Panel McPhee still ain't back yet as of this video. But anyway, another move that the Ravens made was bringing on Eric Tomlinson. And again, y'all know, we said it, that this was something that we expected them to do. We expected them to release him. They released him. We expected them to bring him back. After the final 53 man roster was set, they brought him back. So now he is back with the team. But addition by subtraction because you can't just bring on people without opening up roster spots, somebody's got to go. And in this case, not that they had to go, but they just had to go on IR, Endure Reserve and short-term Endure Reserve. And one of those people who went on there, which was expected, was Ravens rookie receiver. First round draft pick, Rashad Bateman. So with Rashad Bateman, he will miss the first, at least the first three games. After they miss the first three games, then they can come back whenever after that. Sometimes people go on Endure Reserve and then miss five games. Sometimes they'll miss six. But he has to miss at least the first three games. And hopefully that's all he misses because we want this team as full goals they possibly can be. Somebody else who they also put on Endure Reserve, short-term IR is Boyk Boyk, Miles Boykin. And there was a lot of questions from a lot of Ravens fans, especially myself because I thought Miles Boykin was gonna be done for the year. I thought that he was gonna be IR stashed. I did not see him making the roster at all, especially since he hadn't played in the pre-season, especially since he had been injured. I was just like, no, they're not gonna keep Boykin. I just don't see it happening, but they kept him. They kept him and I'm not mad at it. And I guess that blocking ability goes a long way. And maybe these Ravens really wanna see what Miles Boykin can be with these new wide receiver coaches. Because that has been just a big factor in so much. And somebody pointed it out, I forgot who it was, but they pointed out the fact that even a lot of the backup wide receivers, the guys who aren't starters, they had even been looking good throughout the pre-season. So shout out to the coaches, man, because coaches, they make a really big difference. I remember going into this off-season, I was saying it, for those of you that were around back then, y'all heard it plenty of times, I was saying what these Ravens need to do, they need to hire some young coaches, some young coaches who do not have NFL experience, who do not have film on them in the NFL, but just some young, innovative guys that they can bring on the staff to really just help this offense. That's what they need to do. What did the Ravens turn around and do? They brought on T Williams and Keith Martin. Now they have worked with NFL wide receivers because they obviously got the relationship with Sammy Watkins, with Tyree Keele, with Devonte Adams, with Juju Smith-Schuster, and there's more on the list as well. But even just those four names alone, it's like, oh, okay, y'all know some stuff. But they brought those two on, and I was just like, yes, yes. This is something that I really felt like they could have used, and because it can make all the difference in the world because Ravens track record is obviously just, it's terrible when it comes to the drafting and development of wide receivers. Now you have some hits with the Torrey Smith, it obviously worked out with him, I would Hollywood, it's been working out so far too. Yeah, and you also got a lot of misses. But one of the biggest things is coaching because you can have the best this and the best player at that, the fastest this, the tallest that, out the best, and you can have all of that stuff. But if you don't know how to bring out the best of them with your coaching staff, then it's gonna be pointless. It's not gonna work. So this is a, when they brought on Keith Williams and T. Martin, I was all for it. So shout out to them. Now, somebody who has been in question like, man, what's going on? Cause a lot of people see that we brought like literally everybody back. They brought everybody back on the practice. Guys like Levine who a lot of people were like, oh man, why they cut cold cap? They brought him back on a practice squad and just end with that too. That's very interesting. And we'll see how this thing plays itself out because Levine was cut from the active roster but he was added to the practice squad. Now with the practice squad, you can elevate two players every game day. Now, the way that that works is once you elevate a player twice, if you wanna bring them on a third time, you either, you have two options. You have to either activate them and put them on the active roster or you have to release them from the practice squad. And then they have to clear waivers. So nobody puts in a claim for them. So 31 other teams have to be like, nah, we don't want that guy. So they have to pass through waivers and then you can bring them back on the practice squad. There's only two options you have. So you either keep them or you run the risk of releasing them. So what Anthony Levine is very interesting that the Ravens decided to bring him back not to the active roster right now but to the practice squad. So that really, in my opinion, that lets us know that the Ravens, they really love these young safeties because they were more willing to put Anthony Levine in a spot where there's that risk. Cause if you wanna practice squad, yeah, that's cool. But teams could sign you off of another team's practice squad to the active roster. So that lets me know that the Ravens, that right now they value the young safeties more than Anthony Levine.  He been with the team for the longest. He been rocking with them for a minute. He is a Super Bowl champion with them. He's been around the Ravens for a long time. But that move, it says a lot. But anyway, with Pranel McPhee, we still waiting like any day now, man, any day. It's right now, I'm recording this at 10.03 a.m. It's Thursday morning. And Pranel McPhee has not signed back with the Ravens yet.  It's expected, but you can expect, they expected Ben Mason to be back. And look what happened. Hey, look what happened with him, man. So nothing's official until it's official. You could have a handshake agreement. You could have a wink agreement. You could have all that stuff, but it's not official until they actually signed those papers. So with Pranel McPhee, it's just, it's a waiting game right now, man. It's a waiting game. And we gonna see, man. But back to Eric Thomas in real quick. I do like that move. Whether Nick Boyle plays or not. Again, not expected to play, but whether he plays or not, I like that move because it gives you insurance.  But with Nick Boyle, you're iffy about him for week one. So worst case scenario, if he's not ready for week one, okay, you got your blocking tight end in Eric Thomas. So this is another example of the Ravens staying ready. So you ain't gotta get ready. So anyway, team keeping clean. I appreciate your one last thing. I do not believe they put Jimmy Smith on the short-term IR. So with that, that lets us know too, unless I missed it. Let me know if I did, but they didn't put him on short-term IR. So that could be a sign that maybe they feel like he'll be ready over the next two weeks. Not the Raiders game, probably not, but maybe for the Chiefs game, maybe he'll be ready by then. And who do we play week three? Is it the Broncos or the Lion? I forgot who we play week three. But anyway, maybe they feel like he may be ready sooner rather than later. So they're like, you know what, Jimmy, you can hold a roster spot down. But hey, things could change between now and even in the next 30 minutes. So we'll see how it goes. Anyway, team keeping clean. Appreciate y'all. I love y'all. And just like Rashal Bateman and Miles Boykin all for just the first three weeks at least. I'm out.


Something else we want to talk about. I want you to understand what you can kind of expect with the 21 convention. This isn't something where you just come here, take notes. This isn't a lecture. Even though we have presentations, you can watch the videos. We want you guys to be involved. We expect you guys to come in with questions, answers, to talk to us, to have discussions, and to mutually share compatible ideas, and to have a mixing bowl. And one of the things I found was terribly moving in my own life was the idea of a mastermind that when you bring three people together, you get more than just three ideas. You get a whole series of ideas and solutions you would not have come up or originated on your own. And it becomes what Napoleon Hill described as a third mind. And that's very much takes place in these events. You have here, as many people as going on, when you guys come in and have these communications and thoughts, you come up with new ideas. You have new ways of thinking. You have your expressed alternative ideas and context. It is terribly important that you capitalize on that and move that forward. And so what I would like to see each one of you do is not only have an agenda or a plan for today's event, but to literally sit down and say, what am I going to do not in the next 30 days, but make it in a year? And then usually what happens is people vastly over-expect or have expectations of what they can achieve in a year. We look at, for example, New Year's Resolutions as a classic example of that, where people sit down and say, I'm going to do the following things this year. And two months later, it doesn't happen or doesn't occur. So look well beyond the one-year mark. Take a five-year goal, work your way back. Where do you want to be? Who do you want to be? What type of life do you want to be? What type of environment and culture impact do you want to have? And then work your way back. Have those goals in mind and make sure that your yearly or two-yearly goals are actually in line with that and bring it back down to nine, six, three months. And you can even do it down to a weekly basis. I know I have a Word document and I do just that so that I can literally know what I have to do on a weekly basis to make sure I hit my monthly goals. My monthly goals then fight into my three-monthly goals. And so I can track that sort of thing. Make sure you do that. That's going to be a personal thing you can do on your own when you're by yourself and doing it. But when you're doing this, have your teammates, have the other attendees in mind, the guy who's right next to you. Think about him when you're here, okay? Because he's doing the same thing in another location. You're not alone in this. The other thing I'll ask is does you guys actually get involved either through any of the Facebook exchanges or the telemonic antennae? Stay connected. Communicate those ideas. Make sure you're able to continue to have a dialogue and you have a resource base of guys who were here for the same reasons and at the same time, same experiences. You're going to find that you have more motivation, true motivation, a purpose. And you realize that you have a teammate and a support network that you may not have had prior to today. I find that terribly relevant. I find that terribly personally enabling for my own life. I do this because not only do I get enjoyment out of it, but I become a better person. But I also do it because I know I'm speaking to you guys. I also know I have a safe and secure audience in which I can actually convey these ideas and get feedback in return. I find that powerful. I find it moving and it has changed my life. I hope I can do the same thing for you. And if nothing more, I don't have all the answers, okay? But together we can find solutions. Together we can discuss these things. So I want to thank you all for doing this. I want to thank you all for attending. I think I want to personally thank you for supporting this organization and Anthony Johnson and his efforts. I wish that we can continue this. I hope you do. And I don't want this to stop, okay? We have a litany of people I'm really terribly excited to see, okay? I'm going to be more excited not only to see their presentations, but to see and hear the dialogue and the communication that stems from that.


Jason Witton Killing it heard it's 60 then you got to do 60 jumping jacks. That's what I heard That's what I heard. I said 60 nuggets and 60 jumping jacks You know, it's crazy though, I really feel like I dust off 60 nuggets pretty easily But I really I feel like I dust off 60 nuggets like fairly easy We can pick artists in the chat I gotta keep a bra. I gotta keep a streak Might really be out like Ed Reid might really just be out, bro Hey, I had read my really just not be the one dude. Do you get through that?  Yeah, Ed Reid has given up both touchdowns getting agged this game. So, you know, I don't know if he's any good Jason Witton killing it boy boy. I think Jason Jason weighing all the whole thing Maybe I read not built for this game boys. I don't know. I don't know Aaron talk to me Weapon X cliff. I wish Actually Dawkins always mad at no light no troll like Dawkins is normally a Yo, double me really the worst ability dog catch kid Herman Morris showing up Thunder the whole team getting up like bro Yo, it's just not meant for me to ever run the ball, bro. Well, I was like the worst handoff ever Get the out of here safety safety Jesus, I mean you gotta give Ed Reid some help and when the games matter, you're my little double-team, right? To Jesus Jesus Jesus Jesus Jesus Jesus. Have to get each other. She says she flow la la


It's simple, but perhaps you've talked about it yet, I don't know, but if my function is to remember it's a dream and forgiveness. When I remember that and I forgive, it changes my attitude in the relationship. So I don't understand, and if I forget it, I have another attitude. So I don't understand why it's so to change the script. And if I remember to forgive, the script will be changed, because my attitude is not the same that I forget to forgive.  It's still part of this predetermined plan, so really nothing's changing. But in terms of symbols, let's say you see many, many, many more happy people. There's joy, there's laughter, and there's hugs, there's the flow. Maybe even like we've talked about, seemingly the blind can see, the lame can walk. Those with leprosy, palsy diseases or the symptoms leave them. People will say, well, when Jesus in rare occasions, with a young girl or with more famous, with Lazarus, Lazarus had died. I say the worst form of sickness is when you die, that's like the worst. And then he was like, not only that, but if you've just died, maybe they're having a dear death experience. And they come back. But no, he was dead for like three days, and he smelled, and he was in gray clothes, and he was just like starting to become a corpse. And then Jesus goes up and rolls the stone back, and then Lazarus come forth. Well, that seemed to change the script a little bit from dead and stinky to alive and stinky. Paul, she says, Paul, I need help with this. So it seems... The script that stays the same, it just changes the way you see it. The script that doesn't change depending on... If you choose the Holy Spirit instead of choosing the ego, your perception will change, but the script will stay the same, and everything you would have seen with the ego, you won't see it, you will see it with the eyes of love. Continue to not understand? Well, now I don't understand what the script is called. The whole story. If I see with the eyes of love, my attitude changes. So it influences the world, the world of the form. It influences your perception in the script too. The song of perception is in the script. So it steps. It's reasonable for you to say, if I change my attitude, it's going to make a happier world, because the world is a reflection of my attitude. But in the Alderman sense, it's like we're changing our perspective on the world. And that's what's shifting. It's really a shift in mind. And when it all collapses, it seems like the script is out there, and the mind is in, in and out. But in the end, you see there is no out there, out there, that everything is mind. So the whole question disappears. You see how the question presumes that there's an external world. If I change my thoughts and my mind, will the world change? Well, yeah, there's a lot of, there's assumptions that there's a world out there. I have a very strategic question by my ego. Yeah, very good. That's why you go, poof! You have these moments of awakening. Ah! That's okay. Vika says, ah... Oh! No. No.


Thank you for coming. I hope that you're not too sleepy. I'm gonna tell you a story. It's a story about how I found out that I was wrong and how I found out the scheduler. It was not a problem I was looking for. So who am I? Martin Peuchot, a French developer from Paris. I'm really happy to have a lot of BSD enthusiasts and developers around here at my hometown. I joined the open BSD crew around six years ago and since then I've mainly been improving the kernel, working on some parallelization stuff in the network stack, improving the USB stack, adding some support for drivers. I don't know, a driver's driver, profiling. And lately I got a problem with Firefox. When I'm not working on open BSD on my day job, I try to work on open BSD. So I go for a consulting and I say, well, I believe in open source. I believe in free software and I'm sure a lot of you, a lot of company have problems, not necessarily with free software, but they have problem with software. And when it comes to resolving a problem, I was discussing that with a lot of you. We have a lot of discussion about Dtrace or any performance tool and we have a great keynote tomorrow. But the question is, how do people can think? How do people can use those tools? And what's the step? Because we are all making assumptions for here about the scheduler. So I go on consulting and what I hear generally, oh, I have to go there. Yes. What I hear generally is UOS, meaning open BSD, when they talk to me, it does not work. It's your fault. It doesn't scale.  I will switch to whatever Linux free BSD windows. Okay, so I just say, okay, I go back home. Sorry. Thanks for coming in. Now, my work and my passion is to try to solve problems. So how do we solve problems when somebody come and say, well, it sucks? I had a problem with Firefox, right? So let's take this example. First, I will expose the regression or at least, well, how it came to me. Then I will dive into my own mistakes. So what I call the first little hacks on how to solve this problem. Based on that mistake, how I learned about it, I found a real solution with some interesting challenge technically. I will explain that before the conclusion of this talk. So first, my Firefox problem. So I like to watch a movie on internet, especially an HD and well, if it's a kitten, why not? At the time in August 2015, I was a really, and I'm still a big fan of Firefox and there really is like a new version. The number really doesn't matter. At that time, it was Firefox 40. And I could not watch my movies anymore. So, well, what did I do? I start looking at the change load. I didn't see anything obvious. I had the feeling like I was coming back 10 years ago when we had like this flash plugin which was not working and we had to download stuff manually and it's like, no. So I just switched to the long-term support version of Firefox, which still worked at that point. And when it did not, because it got upgraded, I switched to Chrome. So problem was fixed. I could still watch my movies. But the problem wasn't fixed from the point of view of an OS developer. You still have something that happened. You don't know why. So what can we do at that point? What we all do at this point? Why do we start making guess? Well, it's because the moon at that time and we start blaming people. So I'm not sure if Landry is here today. Landry? No. Landry is maintaining Firefox on open business, doing amazing work. He will talk about that I think tomorrow. And so Landry at some point start to say, please stop telling me that Firefox doesn't work. I know it does not work. I know we had a problem but nobody is doing anything about it. So my thing is, okay, if you complain, that's fine. But if you really want to make things better, you have to explain or to say what's not working. And that's not trivial because we all use the computer as a consumer to watch our Keating video and we don't know what to look at. So generally when it comes to open source and free software, people tend to focus on the source code. And this week, for example, last week, a couple of weeks ago, I introduced a regression in the kernel and all I got was like, oh, this commit broke, blah, which is great because people have access to the source code so they can tell you, well, this commit is wrong. But looking at the source code or at history of a program does not always work. In the case of Firefox, you have this huge program that even if it's open source, it for me really complicated to deal with. And open business is not a supported platform in the sense that they don't check every change on it. So it's really hard to backtrack. So what can we do? The same applies to closing through software with your own software developed by your co-worker that you don't know. Now what I said and what I did is I took the black box approach. So the black box approach is basically, well, Firefox, I don't look at what he's doing. I will just look at the metrics. What are the metrics? Well, if you take the metaphor of the car, generally if your car, something does not go well in your car, like a small light start blinking, oh, what is it? What is it? And in all our voices, we have a lot of tools that give us those information. We just don't know how to use it. We don't know which one of them we have to look. So I list a lot of them that I use regularly. Just, well, just run it. And since in this case we had a software ESR version, so the long-term support of Firefox, I could grab my video of Kitten, run one statistic tool, see how the metrics are, and then I grabbed the newer version, the one that I could not see the video with. And look at the statistic. What, is there a difference? So you consider your software as a black box and you poke at all the registers or all the statistics your operating system is giving. I did that. I did that and before answering to the mailing list, I gathered the relevant information. In the case of Firefox, in the case of this regression, had two really interesting metrics. So this kind of interpretation now, even if you're not a developer, you're aware of saying, oh, this is different. So you can suddenly email, hey, I found that it's different. I don't know what it means, but it's different. So what I got, I got VM stat, the minus I option on OpenBSD, but on other operating system as well, reports the interoperate, so how many interrupts you got in a period of time. On this case, with the new version of Firefox, I had an incredible interoperate for inter-process communication, the IPI. And I was like, the old version of Firefox are almost none. And on this version, I like 30,000 or more. Well, that's something. We don't know what it is, but that's something. The other interesting metrics that when I run top, sometimes I run tops. Well, I just see that basically Firefox was playing ping-pong with my CPU. So one process was going on CPU one, then it was going to CPU two, then coming back CPU one, and then going to CPU three. And it was like, oh, what are you doing there? My movie is not playing, but you're like... Anyway, that's something. Maybe I cannot interpret it, but okay, let's dig a bit in this direction. So what do we do next? First, we have got the metric, something is different. Well, we use a really useful tool that we have in OpenBSD, and we have this saying of care trace or it did not happen. So care trace, you might not know it, but it's a tool that register basically all the syscall. So they function that enter the kernel and exit the kernel with doing some action and tells you if it succeeded or not, what's return value at which time it stands. And the upper left value on the slide is the PID, so the idea of the process. And after the slash, you have an idea of the threads. So on the first line, you see that a thread with some ID called syscall, which is schedule. Well, we don't know what it is, but it called that. And then on a tool line, it returned from it, then it called it again. And then another thread from the same process. So now we know, well, that's these two threads, they call the same syscall. Well, cool. And then another one, which different number also called this syscall, whoa, there are a lot of threads, well, that might explain the ping-pong game, right? And they're all calling the same syscall. So now we are curious, we can look at the manual page, well, man syscall, man schedule, what does schedule does? Maybe you already know. Well, schedule is say, oh, sorry, I'm there, I don't know, I cannot do anything, just please pick somebody else. So it's like communicating with scheduler, I say, well, for any reason, I don't want to continue doing something. So there I got, okay, something is related to scheduler. So first guess, I explained why it was wrong, I said, well, scheduler is a problem there, because somehow we are connected there. So let's dig a bit, what happened after that? Well, well, I looked at the difference between the catchphrase dump that I got from the RS ESR version, so the long-term version of Firefox, and the nightly version that I built from source to be sure, well, something is happening. And I could isolate the problem, but this year call that I saw were really different. So maybe they're related to the automatric I've seen. So far, I've seen a ping-pong, I've seen a huge number of IPI, and in terms of codes, a lot of schedules, really interesting. What next? What could I do with that? Well, this is directly an entry point to the code, so I could look at the code. There is many tools on internet, oh, could look at the code, well, look at the code. There's many tools on internet that allow you to search directly. So in this case, I was looking for Firefox and for OpenBSD. So I put two web interface, bxr.su, that I use every day for developing OpenBSD, which is a website like it's on OpenGrowth. Maybe you know that, it allows you to search in the source code of all the BSDs, so very useful to check for differences, to know where this call is really used. And you have the same for Mozilla projects, which is digsr.mozilla.org. So my entry point is this is called, and I found basically two different places where it was called. Either by Firefox directly, when I said directly, there's a lot of layers of abstraction, but it's directly in the binary. And through a library that got linked to the binary, which is the leap-thread version of OpenBSD in the second point, and in the name of our pthread libraries, leap-earthread for real thread. So I say, what else can we do with that? Is it coming from there? Is it coming from here? Or both, right? So there I say, we have another two. We have L-trace. So L-trace is basically to see which function are originating from a library. It's based on OpenBSD on the K-trace, so use it exactly the same way. However, Firefox is a huge process, you don't learn anything when I tell you that, and you cannot directly, well, I would say running L-trace from the beginning and all the startup process of Firefox meant it really complicated to see what's happening because you have a lot of noise. So it's like a general concept when I'm trying to analyze a problem that, oh, you know something is wrong, but when do I have to look at it? And how do I make sure that what I'm looking at is effectively what's corresponding to the problem? So in this case, I try to generate the simpler test case with Firefox possible, and for me, it was starting the browser, waiting for it to settle, and on the blank page, so nothing to render, nothing, just move the curse of my mouse like a little bit, like you're just touching it. And that triggered all the crazy stuff I just described before. So there, I start Firefox generally, and I started L-trace to see when I moved the mouse, what's happened? Two second of sampling, that's the sleep tube, and then stop the tracing. And what did I see? Well, I see that it come indeed from the lib-air thread, because I think that a lot of the skill deal were coming from a function, a function which is called spin lock. Oh, interesting. And I matched the number of the skill deal that I had in my K-trace with a number of spin lock that I had in this dump, and it was exactly almost the same. So I kind of going in the right direction, right? Well, I think something must be wrong with the scheduler. I don't know why. It's like scheduler, it's a funny subject even for me. So then you have those guests. I learned last week, I learned last week I was consulting and that our brain works in two different fations. So you have like this suggestion that your brains make, which are not always interesting. So the guy asked me a question. So if I buy a cell phone and a case to protect it for a total of 110 euros, well, and on top of that, if I tell you that the cell phone costs 100 euro more than the case, how much cost the case? It's an interesting question. And the answer is it's not 10, right? And exactly that was happening in this situation. I got this intuition and I it's one. And that happened to everybody. What was more complicated is that I said, okay, the problem is scheduler, so let's hack the scheduler. Well, what did I do? I started to say, well, on OpenBSD, we have like a modified version of the original be a scheduler. And every time a task want to be executed or thread in our case. We will say, well, first select a CPU, put on the queue for this CPU. And if there is somebody already being executed, you will be picked later. So I said, ah, the problem I said, I guess in another time, well, that should be certainly that because they're playing ping-pong between each other. So maybe I didn't know. I really didn't know. So I start by ripping out all those per queue CPU, per CPU queues. So just say, well, as soon as the CPU has nothing to do, it takes from a global list, what I represented here on the right, the next thread of task that needs to be executed. And it worked. Why? Well, that would be interesting to explain. But it's more interesting to explain why it was wrong. So is it the problem really there? I make a guess. I write a div. It works. People are happy. People are running with it. And I said, no, I cannot commit that because I don't understand it. What did I do next? Well, I got to do a deeper inspection of what was really happening into the library. I wanted to use GDB, but I'm crying for help till today. We have a real problem there. There's no debug symbol in port. So I've been whining for years, but it's still not happening on OpenBSD. And it's really hard to debug threaded programs on OpenBSD with GDB. Basically, as soon as you stop debugging it, your programs stay in stop at state and you cannot do anything with it. So we don't have dynamic tracer. We don't have anything else. So let's go for print of debugging. Why not? And with my nice print, if I got with those information on the slide, what does it say? That you have the address on the code where the yield function, the scale yield is called and has been executed and how many times. So it's kind of rate limited. That's really interesting here. What we say is that multiple times, single thread has been calling the same scale yield. So it's like in a loop, right? It's trying to call this this call. The other really interesting thing that we see is that they're calling them from two different functions on the right. Mutex log and con for condition variable time in the way. They're both related to Mutex in some way, if you know P thread libraries. What did I learn there? Well, I started to fear that the problem was more in the P thread library. But more interesting, that other OpenBSD developer was saying, ah, the problem is coming from contention on malloc. But if the problem was really only on contention of malloc, I'm not saying it's not. It was also. We should not see there so many yield on the condition time wait. So we also have another problem that we still don't know what it is. So what it is? Well, at some point you try to read some code and make a guess about what you read and see if it's matched the information you're getting. So I read some code. At that time, another guy on our mailing list started to post a new scheduler without really explaining anything. And I started looking at this different. I found it really interesting. What I found really interesting, it could be completely different talk is how the priority works in an NBSD scheduler. What interesting is that at that time when the code has been written, you didn't have threads, right? What does that mean? That mean that when we started supporting threads, we didn't change the scheduler and we didn't even say, oh, is there a problem there? And indeed there is. The problem that I found by reading the code is that if a thread has a high priority, which is true if it has not been running for some time, it will be selected before other thread of the same process. That's how the scheduler works. And its priority decrease proportionally to the time it has been executing. So as long as its priority is high, it will still be picked by the scheduler. So it can call schedule as much as it wants. It will still be selected. So generally, when you call schedule, say, hey, I cannot do anything. I don't want to be executed. Please pick somebody else. But in this case, the scheduler was picking the same thread again and again. So you could in a loop those 900,000 times or even more the same function. Now, one could say, well, then fix the scheduler. Well, somehow that's what I did. And I had a hack to the function to the schedule function. Well, actually, I suggested a hack and K tennis had it. And is it when a multi-threaded program, a thread from a multi-threaded program asks to be stopped and he doesn't want to do anything, he calls schedule, then you change its priority to make sure that if another thread was blocking it because he was holding a data structure in your text that the one wanted, then you want the one, the thread which is not being executed with a lower priority to run. So the way to achieve that is to decrease the priority of the thread calling schedule to at least the priority of its siblings. So that works somehow. It kind of improve Firefox's edge. It improved a lot of libthread ports, actually, because most, if not all the ports use some pthread function now. And it even improved all the third-party code like Java that rely on on schedule. But was it really the problem I was looking for? Because if you followed my talk to this point, I said that you call scale yield and it doesn't work as expected. So maybe a scheduler is wrong and to some extent it is. But maybe we should not call scale yield in the first place. So that's how I came up to the real solution. I said that I start looking in libthread and how does that work? Why? Because when I say I don't want to run anymore, please pick somebody else. How do I guarantee that somebody else will make progress and that I will continue my work after that? There's no such thing. That's why we had this priority problem, which helped but did not solve it. So if you had like an, I would say an older machine, you could still not use Firefox to play your HD video. So now I hope you're not sleeping. No, it's fine. We're going into the technical stuff. Right? Fine. So I guess all of you have heard of mutexes, lock and shower stories. I'm very famous for the shower and locks but it's not for today. For today I'm not going to talk about how do you use a lock but how you implement a lock. That's really interesting. Because generally you say, oh, yeah, well, I need to protect this data structure. I go to the toilet so I close the door and turn the lock and nobody can enter. Fine. But how do you implement the door? Did you look at it? Well, in software, there's many ways to do it. How was it in 6.1? How was it when we had that bug on Firefox, this regression? Well, that's what I tried to explain. So if you don't understand, sorry, don't hesitate to raise your hand. Yes, Henning? Except Henning. Okay. So what I'm describing here is the pthread mutex lock. So the simple idea to say, hey, I'm a thread, I want you on this lock is to say, well, to write my name, Martin, in the lock. So everybody else say, oh, it's Martin. It's basically what you do when you have a party and everybody has a glass and you write your name on the glass and people know it's your glass. And unlocking it would just be washing your name from the glass and then somebody else can use it. It's fine. So that's what we were doing. But in order to make sure, in order to make sure that I'm the only one writing my name on the glass, right? Well, I would take the glass, go to the toilet, close the door, I have a lock, write my name, then I can open the door and I come back. And I'm sure I'm the only one because otherwise I will fight with Henning with same glass and trying to write my name on it. Doesn't work. So the first function we enter and that I represented in the graph is this lock. So, okay, I grab my glass, I grab a lock and look, oh, is there a name written on this glass on this mutex, by the way? If there is one, because I want still to use this glass, another one, well, I will wait. Waiting means calling another. She's called that you have on the right side, which is thread slip. And I will hope that somebody will wake me up. When somebody wakes me up, I try to acquire the lock again because the function thread slip is designed to release the lock, then go to sleep. And then I will start again. Is there a name written on this mutex? Well, there isn't. Oh, well, then I write my name. I release the lock and now it's my name. So that sounds really familiar. But what's not really clear on this graphic there is that on your code, your critical section, actually what you want to protect with a mutex, start after that. So that's the function you call printed mutex lock. You got a lock. Then you do something and then you unlock it. So what's the problem with that? How did I manage to understand that the problem was to call scaled yield? Is that first we have a spin lock, right? The spin lock is basically try to grab the lock. No, you do not grab it. Try to grab the lock. And every time you fail, you go to the channel and say, well, please, I cannot make progress because I cannot grab this lock. So pick somebody else. Time can make sense. But in this case, we even don't know if somebody has the new mutex or not. So you're waiting before even knowing if you have to wait or not. That might be confusing. You want to protect data structure. So you want to grab a lock. And now you need to grab a lock to grab a lock. Oh, it's confusing. But the first primitive that we have to build is a spin lock. And we don't know if the mutex is hold or not. And we kept some time checking, oh, can I check? Can I check? Can I check? And actually, Mozilla was using a lot of try lock, which is basically the same. You want to look at the mutex. Oh, is somebody holding it? And if there is, you say, well, it's, it's busy. Somebody has the lock. So basically you were busy waiting just to check if somebody has the lock. So you're creating extra contention of the contention. Now, the problem of that is what I've written down, which we are, what we are interested in, that if you have a contention, I mean, if you don't have contention, you don't have any problem at all because you don't have contention. If you don't have a simple system, you don't have a lot of problems. Now, in the content, in contented case, you might end up doing as many schedule and or as many atomic operation as while you, you've been executed or as the scheduler say, what, try again, try again, try again. So what can we do with that? Well, maybe you've studied that. What you want is they say, well, if I cannot grab the lock, well, just go to sleep and tell me later what I want. There is many solution for that. And I say, well, I'm not going to reinvent mine because I want to get the job done quickly. And I want other people to contribute. So I went for a well-known solution and went for a solution based on Suretex. So Suretex, you might have heard about it. Some say it's coming from BOS. It's a different name. It's well documented and there's many options and many subsets. But basically, in the implementation we have on OpenBSD right now, the way we use it, it's the diagram of the graph on the right still on this. So the difference is that you rely on an atomic operation. And if the atomic operation fails, you know that somebody is owning the Miutex. So you don't need to spin loop, spin loop. You just do one atomic operation and no scared you. And then, oh, somebody has a Miutex. Somebody wrote his name on the glass, right? So please tell me, you tell this guy with the Suretex syscall, please wake me up when you finish with the glass. When it wakes you up, you still have to do another atomic operation to make sure nobody stole the glass between you and you really check it. And if nobody wrote his name, well, nobody took the glass and it's for you. And you have it now. So the really interesting here is that, well, you really reduce the number of syscalls and atomic operation in the contented case, which was the problem we had, or I think it's a problem I experienced with Firefox and a problem that created like a snowball effect with the scheduler we had. And this new solution, which is not new actually, it's just a new implementation, solve a lot of latency problems for all the parts. So why did I go for that? Well, I kind of explained, but there's a little of documentation. My time is limited. I want to solve the issue that I want to watch a video. I don't want to reinvent something that already exists. And it's already complicated if you have to reimplement the syscalls, if you have to rewrite the library bits without a real debugger working. So if I can rely on existing tests, well, it helps. That's free software. I like it. Now, of course, there's much more left to do. The solution is better. Right now, this solution that is described with the mutex is only enabled on I-36. I'm 64 and mutex 64 architecture. I think it's a matter of testing and maybe finding the remaining bits. And there is a challenge for some architecture that do not provide the atomic operation, this solution relies on. But other operating systems solve that, so there's possible options. Now, I concentrate myself on the most critical part of the lib pthread library, the one that we're really contented and used by most of the program. We can continue and clean that. And I can come back to the scheduler because now that the bottleneck, the real bottleneck has been fixed in user land, we are exposing a new bottleneck. Software is never finished. You always find bottlenecks. So what did I learn with that? It's kind of my story. And I wanted to share it because I think it's more important to explain how I do stuff. And it's not magical stuff. And it's not over complicated stuff. But let's go step to step. I do mistake. And I have to live with that. So you always will always have a problem. And no matter who you are talking, it's not good enough. And they're always to change it. But actually what people want, and when I go to some consulting, they want the problem to be solved, no matter how you solve it, right? I like to fix free software. So I do that. Gathering data is like black box analysis. What I was saying is I think a method which is not very well practiced, either in a professional IT world in general. I was discussing that with a lot of people today. And it's really nice that we have all those people talking about tracing tool, performance tool, because when your car does not work, you don't get by a new car. Look at what's not working in your car. Or you bring it to somebody. And we have to do that. We might not know how to do it properly, but there are many tools that are available since 30 years, and they already fulfill a lot. Even if you don't have Dtrace, even if you don't have a real debugger, you can't find most of the stuff. Now, I make a lot of guess. I try not to make them, but I still make them. And it's really complicated. When you make a guess, you make a diff that sounds great, and it hides the problem.  And now he has to undo my work and redo something else. And I can tell a lot about that. So finding the bottleneck is generally the hard part about it. So it's great to have great tools, but even simpler tools can help with that. I love to fix them, and not everybody can fix or like to fix them. If I could just spend my time fixing the problem, I would be even more happier because I don't have to find the problem, right? So I hope that you can learn from my experience and also find the problem and then tell me, oh, I have this problem. Can you fix it for me? And, well, I think it's kind of another buzzword now. Yes, we need a dynamic tracer. I encourage you to come to the conference of Jasper tomorrow because we are working on that with OpenBSD and we are proud of what we're doing and we like it. So come see what we have to say. Thank you for your attention. Oh, I went too fast. I'm not going to exit. Well, so I'm keeping a blog. I'm trying to write articles and explaining how I do stuff, how we do stuff on OpenBSD, and you might be interested on a particular subject. If I can make that more accessible to you, well, come talk to me. Now, if you have any questions, don't hesitate. Did you implement like visual, like, ways to search, ways to solve the text or also like priority characters or was it in the previous way? I just implemented. But recueing as well. Now, recueing is kind of tricky to use correctly. And I had a work in progress version for the condition variable, but since it's not yet the bottleneck, I don't want to spend too much time on that. Why not? Sure. Any other question? Well, nothing prevents it, but I find bisecting Firefox code really complicated. So for me, if I have to debug a Firefox or proprietary application, it's the same. It's like too big. And I don't know if I thought at that time like Ted wrote an article and I got contacted by Firefox developer would tell me, well, maybe we might help, but I don't know where we have to look at. And somebody has to bisect and compile Firefox. And you know how much time it takes every time you compile it. And the point of the approach and the talk I was giving is exactly, yes, you can always bisect, but bisecting only gives you part of the solution. So I can give you another example. I was talking, we had like those security bugs found some weeks ago by a bunch. And as a measure, we decided to remove a similar code that we found suspect. And I'd remove some of those code in a USB driver. And suddenly I introduced a regression. And people did bisect my channel and say, your change is wrong, but I still could not figure out, okay, now I back out the change, but I still, what's the problem? And we managed with K trace and by looking at what's happening to see, oh, it's blocking. It should not block there. So when you run talk, you say, it's blocking there. It should not block there. And bisecting does not give you this information. So I think we should start or continue to learn this tool, what's happening in the system and not just focus on the code or more questions. I was really sad. Not user facing problems might be even easier. Let me explain you one. What you need basically is a way, well, the approach that I was describing and I'm trying to apply is the black box approach. You consider your software or your appliance on whatever as a black box and you say, well, when I do that, I have a problem. So what do you mean when I do that? That's the problem we have to answer. So if you, for example, measuring a firewall application and you say, ah, look, I configured my system, I send that traffic and one that's in more than that many packet per second, it start doing some crazy stuff. So now you have like a reproducible scenario. That's a really important part. So you try to build a scenario that you can repeat and that you can monitor. And when you build this scenario, you have to make sure you don't introduce too much noise in it. In the case of Firefox, I try to build a really small scenario just moving the mouse. But when you're like forwarding packets, maybe you want to make sure you forward packet for enough time so that you have like a stable flow that triggers the problem so you don't have interference. And once you have your scenario and you can reproduce it, then you start watching the metrics. It's not an assumption. It's the beginning of the problem, right? So I think we should always look for it. So when you work for performance, it's in my opinion, and the way I work with that, it's an every week or every day work. So you have to allocate some time and to start gathering data to have more knowledge of what's happening. What does my application do? Which syscall do they do? How much time do they spend? And if you say, oh, look, I have some regression tests, regression performance tests, and this week it's much better than last week. And you have data and you start to why? Oh, this week is worse than last week, right? So I would say you should always look for it. Not maybe the full week, but take one hour or two. What does my program do? And if you do that in your development process, then you will create awareness. And that's the most complicated thing, because you cannot address performance by just one day. Oh, now I want 100% like generally manager wants. Well, this month we'll do performance. Oh, great. No, you have to build awareness around the time to look all the time what you're doing. Thank you very much. Thank you.


BRICS Summit Impact on Africa The three-day 15th BRICS Summit, which started on August 22, 2023, has brought together the leaders of Brazil, Russia, India, China and South Africa to discuss key global issues and foster economic cooperation. Currently taking place at the Santan Convention Center, Johannesburg, South Africa, the theme of this year's summit, BRICS and Africa, partnership for mutually accelerated growth, sustainable development and inclusive multilateralism aims to focus on African development. As every eye looks toward the outcome of the summit, one thought that would undoubtedly fly across the minds of every African is, how exactly would BRICS benefit Africa? Given that the theme of this year's summit is BRICS and Africa, what exactly would be the impact of this summit in Africa? Let's find out. The BRICS acronym was first coined by Jim O'Neill, a global economist at Goldman Sachs, in 2001. In a research paper, he identified Brazil, Russia, India and China as the countries with the greatest growth potential in the early 21st century, but there was no expectation that they would ever cooperate closely with each other. Yet, to everyone's surprise, in 2009, these four countries came together and held their first summit, and then two years later, South Africa joined them, thereby forming the five-member BRICS group. Today, BRICS has grown from when it first held its first summit in 2009, to a powerful group of emerging market economies that is building a new world order capable of challenging Western dominance. One of the main things uniting BRICS is skepticism about a world order that serves the interests of the United States and its rich country allies who promote international norms they enforce but don't always respect. While BRICS started off in 2009 with a cumulative GDP of $16.09 trillion, it has reportedly overtaken the G7 with a global share of 31.5% of global GDP compared with the G7's 30.07%. It boasts the largest foreign currency reserves of $4.4 trillion, making up 17% of all global trade, and based on this trajectory, it is estimated that BRICS will account for 50% of global GDP by 2030. As economic growth is mirrored by population growth, the BRICS now account for 40% of the global population, with over 3 billion people. BRICS has also floated the possibility of having its own global reserve currency, and such a move would undoubtedly end the strong reign that the US dollar has had for nearly half a century. And so, it comes as no surprise that many African countries have shown great interest and have even applied to join BRICS. The addition of more members to the group is one of the main agenda items to be discussed at the summit. These African countries, including Egypt, Ethiopia, Sudan, Nigeria, Tunisia, Zimbabwe, Senegal and Algeria, indicate that Africa is ready to enter the new economic order. For African countries, BRICS is no longer an alternative model to the G7 Western economic model but an economic representation of the dreams and aspirations of an ambitious Africa. Through BRICS, African countries seek to move from the periphery to the epicenter of decision making and chart a viable development path for their people. With the expansion, BRICS will become a bigger and better economic space for the global South community. Now, how exactly would the BRICS Summit benefit Africa? The 15th BRICS Summit aims to address five key themes, which are One, expansion, this is one of the pivotal subjects that will occupy the discussions at the summit as more than 40 countries have expressed interest in joining BRICS. While some leaders, such as South African President Remaposa, advocate for a broadened coalition, others urge a cautious approach to preserve the group's coherence and shared goals. However, the fact is that adding more members would definitely cause BRICS to grow economically and internationally. And if this happens, it would have a ripple effect on the African continent as many African countries have expressed interest in aligning with BRICS. Already, with the combined GDP of these five nations accounting for a significant portion of the world's economy, Africa can tap into their vast markets to boost its own economic growth. Two, strengthening the new Development Bank, also known as the BRICS Bank. The summit will delve into innovative strategies for enhancing local currency fundraising and lending within the new Development Bank, NDB, as well as the exploration of alternative currencies to mitigate the risks of foreign exchange fluctuations. It also serves to provide financial impetus for integrating BRICS economies. This institution will provide financial support for infrastructure projects in emerging economies, including Africa. The BRICS Bank can help fund vital infrastructure projects across the continent, driving development, and creating job opportunities, as it has done in South Africa. South Africa has been funded by the bank in several infrastructure projects worth $30 billion in sectors such as roads, water, transport, and energy. One of the differences between the NDB and other global financial institutions like the World Bank and IMF is that the loans given to countries are not conditional, unlike the IMF, where in exchange for loans, countries must follow the economic policies prescribed by the institution. Three, economic cooperation. The BRICS summit will also focus on improving economic ties between their diverse economies, engaging in discussions on trade, investment opportunities, energy cooperation, infrastructure development, the digital economy, and the job market. Additionally, the summit will include talks with leaders from other countries, with invitations extended to 67 leaders from Africa, Latin America, Asia, and the Caribbean. Thus, it seeks to promote closer cooperation in areas such as agriculture, technology, and energy. For Africa, these partnerships can provide access to advanced agricultural practices, technological advancements, and renewable energy solutions. Collaborating with BRICS countries can accelerate Africa's progress in these sectors and contribute to sustainable development. Four, global outreach, the last day of the summit is expected to focus on talks with leaders from other countries, as invitations to attend the summit were extended to 67 leaders across Africa, Latin America, Asia, and the Caribbean. The BRICS summit therefore opens doors for Africa to showcase its own potential. By participating in discussions and forums, African leaders can present investment opportunities, attract foreign direct investment, and highlight Africa's rich resources and vibrant market. This exposure can lead to increased trade, foreign exchange, and job creation on the continent. Three, economic cooperation, the BRICS summit will also focus on improving economic ties between their diverse economies, engaging in discussions on trade, investment opportunities, energy cooperation, infrastructure development, the digital economy, and the job market. Additionally, the summit will include talks with leaders from other countries, with invitations extended to 67 leaders from Africa, Latin America, Asia, and the Caribbean. Thus, it seeks to promote closer cooperation in areas such as agriculture, technology, and energy. For Africa, these partnerships can provide access to advanced agricultural practices, technological advancements, and renewable energy solutions. Collaborating with BRICS countries can accelerate Africa's progress in these sectors and contribute to sustainable development. Four, global outreach, the last day of the summit is expected to focus on talks with leaders from other countries as invitations to attend the summit were extended to 67 leaders across Africa, Latin America, Asia, and the Caribbean. The BRICS summit therefore opens doors for Africa to showcase its own potential. By participating in discussions and forums, African leaders can present investment opportunities, attract foreign direct investment, and highlight Africa's rich resources and vibrant market. This exposure can lead to increased trade, foreign exchange, and job creation on the continent.


Patriot Prime Reviews is a channel for adult collectors and may not be suitable for children under 13 years of age viewer discretion is advised Hey, what's going on guys Patriot Prime here once again with another Transformers review, but before I get started I need you guys to do me a favor if you're watching this video right here and are not a subscriber of Patriot Prime Reviews Please hit that subscribe button right now. It won't cost you a thing Will help me and my channel out tremendously. Also, make sure and visit my sponsor toyhacks.com Toyhacks provides reproduction and upgrade decal sets for transformer toys from generation one to the latest modern figures Make sure and stop by the toyhacks armory where they can equip your figures with new weaponry in multiple colors and toy stages provides backdrops for figure displays and photography Each purchase with toyhacks earns you RoboSense that can be used for future purchases. You can check your balance anytime in your cart Toyhacks is a company run by collectors for collectors So check out toyhacks.com and make your collection stand out from the rest and tell them Patriot Prime sent you now on to the review The featured button in this video is Transformers Generation Selects Voyager Class G2 Megatron This figure here was a Christmas gift to me by longtime subscriber Shane High Shane, thank you so much. I absolutely love this figure. Yes, I've taken him out of the box Quick look at the packaging. It's Generation Selects packaging It's cardboard box with a spray painted Autobot logo Transformers Generation Selects and right there that's how you know it's Megatron Box is really nothing much to write home about Now the G2 Megatron from Generation Selects is a Generation 2 inspired Megatron using the Earthrise Megatron mold And actually they pulled it off really really good I also got this little adapter to go with the figure to really enhance the G2-ishness of the figure To give the Megatron, the G2 Megatron this cannon here up on the shoulder that the original was known for And it really improves the figure But enough of me talking about it and not showing you anything Let's get to the figure itself and welcome to Patriot Prime Reviews Now once you get G2 Megatron all opened up and now the packaging you'll see it does come with a sheet of instructions And just like all the modern instructions we've been getting lately these are very well illustrated and very easy to follow He also comes with his fusion cannon, this shield slash tank engine cover and his spear cannon thing Of course in robot mode you take the shield and let's see you attach that right here So you've got this going on so you can peg that onto his arm like so And then of course the fusion cannon goes right there And there you have Megatron all armed and ready for battle And here is G2 Megatron compared to Earthrise As I said earlier the same exact mold only a different color scheme And just look at that color, I love the G2 look And for some odd reason I'm really finding the look of this Megatron so much better than this one It may be because the Siege Megatrons really spoiled me because those were fantastic Megatrons Taking a closer look I mean everything's different, the head sculpt is painted different I love the eyes, the eyes just pop on the G2 compared to Earthrise Man, I love that, I just, I can't really explain it I'm a G1 die hard Megatron fan since the beginning but the colors on this guy absolutely pop Now the one big issue with this G2 Megatron figure is the G2 Megatron toy from the early 90s Had the cannon here on the shoulder Now unfortunately you just can't do it with this Megatron There's no peg up here on the shoulder, the only option you have is here on the arm But that really doesn't work whatsoever Now one thing I did at first was I took this piece right here from Siege Brunt This is the piece that attaches to his cannon accessory and you can actually peg this in right here On that little peg on his back and it lines up really good against the top of his back right there So you can add the fusion cannon just like that so you have that G2 look The only problem is look how far it sticks out here on the back So I mean it works from the front but it's really hard to put him in a shelf because he's got so much back attachment if you will So I went on eBay and found this, this little adapter from JRC Designs And this is actually a really smooth nice looking piece that actually looks like rocket pods It's got an M there on the back for Megatron, some nice ridges there on the side And how this fits, you see that slot right there, that goes in or that tab goes into that slot right there on Megatron's shoulder So you're gonna peg that in and it is a nice tight fit Get that in nice and good, take the cannon, attach that right there on top And there you go, there is G2 Megatron with the shoulder cannon It lines up really good with the back of the figure so you don't have all that extra sticking out And I think that looks amazing and the collar matches really good It's not perfect but it works Now also the Generation 2 Megatron had a pistol So I've got this little Megatron pistol that came with the Centurion drone pack That I'm going to give my Megatron as well or my G2 Megatron And there you go, I think that looks great Also this sword spear cannon thing I didn't show this off on my Earthrise Megatron review because I didn't figure it out But you can take this thing right here and it's got this little peg If you take the fist and run that peg up and under the fist, it fits really good So now you have Megatron with a spear and I dig it, I love the look of this figure I couldn't be happier with this guy, this is awesome Now let's take a look at G2 Megatron in tank mode In tank mode G2 Megatron looks just as glorious as robot mode The coloring really really pops and he gets some extra details too He's got these little dots all over the front, maybe those are missile pods Or how many Autobots he's killed The grenade launchers here on the side are colored and he's got the great G2 Decepticon logo Actually that's on only on the one side, that looks really really awesome I dig it, this thing looks fantastic Really hope Toy Hacks comes out with a decal set for this guy to add more of those gaudy 90s decals He had one right there that said the big stick across the barrel of the gun Which looked great back in the day Now the add-on piece, what's really cool, you can fully transform Megatron And this add-on piece can stay fully attached, it clips right there, it doesn't affect anything Of course he still has the feet hanging off the back, which suck Now let's compare G2 Megatron to Earthrise Megatron And G2 fixed an issue, I have an Earthrise where the heel will not stay put in tank mode And I hate that, really really loose joint on my G Earthrise Megatron Where this one, that one doesn't go anywhere, nice tight joints on this guy And I apologize, I didn't go over articulation in robot mode, but I did in this video And like I said, it's the exact same mold The turret can turn and the barrel doesn't move at all He's got wheels and the turret turns, that's it Now Earthrise, that's a great tank, a very good looking tank mode Aside from the heel that keeps flopping down, love all the damage here along the side Big purple Decepticon logo, but this G2 just kills it for that 90s vibe Now for some quick size comparisons, here is Transformers Generation Select's G2 Megatron With the original G2 Megatron, yeah, he's a biggin' Generation 2 Combat Hero Megatron, and yes, Megatron rules And the Generation Select's G2 Combat Hero Megatron The Transformers Generation Select's G2 Megatron is a fantastic figure I absolutely love the looks of this guy It's amazing how a simple paint job can improve the looks of an existing figure The Earthrise Megatron was alright, I'm a big Megatron fan But that one didn't really do it for me, where this one just nails it I love the looks of this guy, plus the add-on adapter really adds to that G2 look And I absolutely love it But there is one thing that would have made this G2 Megatron perfect And there you have it guys, Transformers Generation Select's G2 Megatron So, does the Transformers Generation Select's G2 Megatron belong in your collection? If you're a G2 fan, absolutely, this is a great repaint of Earthrise Megatron As I said, I prefer this Megatron to the Earthrise version that I have I just think the paint scheme works so much better with this guy And not to mention that little add-on piece, that's just icing on the cake And there is a link to how you can get one in the description of this video I couldn't be happier with this guy, Shane Hi, thank you so much for the gift This one was awesome Now guys, if you enjoyed the video, don't forget to like Don't forget to subscribe and don't forget to click that bell icon To get notified when I upload new reviews Big news, this Friday I'm going to be interviewing Stan Bush live And I think it's nine o'clock, I forgot my own time frame But look on my channel, there is a link for that, it's my next upcoming live show I am so excited to be interviewing an icon from my childhood Also, if you're in any position to help the channel I offer channel memberships and I have a Patreon page Once again guys, this is Patreon Prime, signing out Hula!


Hi, product people. This is Adriana here to talk about Product School's Product Roadmap Template. So first of all, what is a Product Roadmap? A Product Roadmap is a list of features or projects organized usually in a timeline or priority based way. And as you can see here, there are many different kinds of roadmaps each suited to a different kind of situation. And in our template, we're going to focus on these four. Feature, item-based, agile and visual. And starting with Feature, this is kind of your basic starter pack product management roadmap. You start with the features that you need to build and you expand that out into a timeline. To get to this in our template, you'll go here and you'll either make a copy in Google Sheets or download as an Excel. And when you do that, you'll get to a page like this. And as you can see, the features are here, the more detailed aspects of those are here. And it's set into a year timeline. You can do a year, you can do a quarter, whatever suits your needs. Next, we have the outcome-based roadmap. So the outcome-based roadmap is much more aligned with what modern product teams are doing. So it's a reverse engineering of the feature roadmap. And instead of starting with the features and building from there, you will actually start with the product vision and work your way down into objectives and key results and ultimately get to your feature or experiment. So, again, much more aligned with current product practices in that it is outcome and experiment-based, rather than feature-based. All right. Next up, we have the agile roadmap. And the agile roadmap is much more technical. So this is when you need to get into the nitty-gritty with your engineering team. And again, to get to this roadmap, you'll either make a copy or download. And this is what the example looks like. You can see the timeline is much shorter, it's sprint-based, and the tasks are much more technical. All right. And next, we have the visual roadmap. And this is almost the opposite of the agile roadmap in that there are not that many details. It really focuses on an overview on the key points on the overall product vision. And this is great if you want to communicate with stakeholders or someone external to the team just to give them kind of that high-level view of what your product is all about. And that is it. Thank you so much for watching. And if you have any questions, you can head over to the product school website or YouTube channel where we have lots more content on product roadmaps. Thank you.


Look, if we're honest with each other, we've been talking about the Switch Pro maybe longer than most channels in the existence of YouTube. It's been something that's been literally rumored about since before this system right here even came out. The OG Nintendo Switch back in March 3rd of 2017 with this lovely dock, no this is not like this is a custom skinned Splatoon dock for my son but the point is that the Switch has been out for a long time and the rumors around the Switch Pro have been there for nearly as long as the platform has existed and that is because when Nintendo Switch came out the chip inside that the Tegra X1 was already in terms of the technology space and older chip and Nintendo was advertising this as a portable home console so play it on your TV, lift it up, take the game with you on the go. That's what Nintendo advertised it as and still to this day Nintendo lists it as a home console so in terms of home console specs using older technology is typically not the route that happens. Consoles tend to use newer technology unless of course you are the Nintendo Wii or even the Wii U which both chose to use older technology locked into an old architecture that literally no one but Nintendo was still even using so it's fair to wonder where Nintendo is gonna go with the Switch Pro and it's interesting when we hear other people who are more in the know aka people who actually make video games talk about the Switch Pro and their thoughts on it and even have what is considered controversial takes. Now some of you guys have probably already heard this interview but I'm hoping that we can get a great conversation coming out of it that maybe looks at the greater landscape of what a Switch Pro could be should a Switch Pro even exist and what other aspects of the system can we look at beyond just saying hey it should be more powerful us enthusiast gamers want a more powerful switch I think that's pretty obvious and we've wanted one since before the switch came out because as capable as this thing is with the Tegra X1 we always want to know what more could we get or could we have gotten then and what more can we get now in the world where 4k is everywhere and next-gen systems are out doing 120 FPS at times we're left wondering what's next for the Switch so before I get into the developer interview I gotta mention we are giving away a PlayStation 5 and Xbox Series X or in Nintendo Switch details on that are down in the description or on the pinned comment all right let's get into this developer interview this comes from the people behind No More Heroes 1 & 2 and the Scott Pilgrim first the world let's get into it so this was posted over on Nintendo everything it's engine software has been behind some of the notable Switch ports that have been recently landed on Switch the studio handled No More Heroes 1 & 2 and Scott Pilgrim 1st the world complete edition and there's a whole bunch of stuff in here but we're gonna focus on is what was stated at the end so rumors of a Switch Pro never seem to end and it's only natural that Nintendo will eventually come out with some sort of new system even if it's not you know obviously the pro it could be like next-gen something right there's gonna be something new given that engine software has been involved with a bunch of Switch games over the years and has a lot of technical experiences or anything you'd like to see from the Switch 2 or Switch successor in terms of specs and this is what they had to say truth be told our opinion on this might be counter-intuitive for a lot of people but we are not large subscribers of the pro model sure it would be nice to have more RAM or faster GPU or CPU compared to before but if it's still considered the same platform you must make sure your game runs on every model so for compatibility reasons your performance gets benchmarked on the lowest specifications we have seen with prior upgraded systems that the additional power never really got utilized well for this reason now they're talking of course about the Xbox Series X and the PlayStation 4 Pro where these platforms did have upgrades you did get 4k textures in some cases you did get higher frame rates in games that could just unlock the frame rates but in general games didn't see massive improving differences between the Xbox one and the Xbox Series X version or the PlayStation 4 and the PlayStation 4 Pro version the games were practically from a gameplay perspective pretty identical could those systems have done more absolutely the Xbox Series X had six teraflops of performance which is infamously technically more performance than an Xbox Series S although Series S has its own advantages with you the modern architecture SSDs so it's kind of a give-or-take there but the obviously the Series X and the PlayStation 4 Pro were more capable than what we were able to get and I actually thought as we transitioned into the PlayStation 5 and into the Xbox Series X era that instead of like the Xbox Series S existing instead of like the all-digital PlayStation 5 existing then maybe they would phase out the you know base models of PlayStation 4 and phase out the base models Xbox one and leave the Series X leave the PlayStation 4 Pro as a cheaper alternative to get games because they are more powerful platforms and you won't need to give them as much to make them capable on those systems instead they have opted both platforms by the way to go with the 100 percent replacement route which is typically what systems do most console manufacturers do they bring out a new platform like this and you no longer need a Wii U you bring out a PlayStation 5 you no longer need a PlayStation 4 same with the Xbox Series X or S you no longer need to have one of those Xbox one systems so it's a traditional route but it's also one that I don't know that Nintendo needs to mimic I don't think if a next-gen switch comes sooner or later or a switch pro or whatever Nintendo decides to do whether it's considered a mid-gen upgrade or a next-gen system that it needs to fundamentally replace this now from a developer perspective it absolutely benefits them to replace it for the exact reasons outlined in this interview what did they say hey if it's a pro model and it comes out you're not gonna fully utilize it because you need to still make your game work great on this however if we do look at the past and we just stick with Nintendo we look at the new Nintendo 3DS situation you'll know the new Nintendo 3DS wasn't exactly not utilized I'll give you one prime example and this is always the best example I have and it's not the Xenome Chronicles game poured by Nintendo no no no it's Hyrule Warriors Legends on the OG 3DS that game ran like crap did it run yes could you play it technically yes could you beat it technically yeah it's not the most broken game ever but it runs at 15 FPS pretty much all the time whereas on the new Nintendo 3DS it was almost at a locked 30 FPS and actually ran better in terms of the frame rate than the Wii U version this is interesting for many reasons but it also shows that even if and this is just my humble opinion we never see a Switch Pro a new Switch or a you know come out that is gonna be fully utilized that's still for enthusiasts like me some frame rate and resolution improvements bare minimum are a welcome addition and I would gladly take that now there's other things they can fix as well things they probably won't fix until a next-gen switch but you never know there's been rumors of the 4k stuff that means this dock here needs to be replaced they can't keep using this dock it can't output 4k doesn't have the chipset available and to do that so they have to do that fixing the joy cons and the joy con drift something we've wanted them to do forever but there's even more think about it we now have Nintendo experimenting with AR in a way with Mario Kart live home circuit that is unlike anything we have ever seen really done well before having more functionality built into AR such as a camera actually on the switch itself on the backside would do wonders for the ability of AR games this is not some of those resolution or anything imagine Pokemon snap but being able to do it in the real world you can argue people already do it by taking screenshots on their phones in Pokemon go but imagine being able to do it with your switch in a more imaginative way that interacts directly with the new Pokemon snap game possible if they start to include a camera that could add that AR functionality and that's just another way to use it beyond what they're doing with Mario Kart live home circuit this VR hey Nintendo VR guess what you know what would make VR better on this not only having a faster CPU faster GPU a higher refresh rate screen a higher resolution screen a higher brightness screen there are things that Nintendo can improve with a switch without necessarily having to focus directly on we need a more powerful platform which has powers a given if you're going to release updated newer revised switch that's not about making the system smaller then hey you're gonna have to put some more power in it but I'm not talking about the kind of power that's gonna blow you away that that's a next gen switch okay but even when Nintendo goes next gen I don't want them to just toss this away I think the viewpoint of this of these developers and the viewpoint of some consumers and the way that Xbox and PlayStation has been handling things needs to go away now to the credit of Sony Microsoft and other developers for those platforms they're not just abandoning the PlayStation 4 and the Xbox one they're continuing to make games you know quote-unquote backwards compatible or maybe we're at this point we're still making them forwards compatible with the next gen and I think that is actually something that should be advertised about this I think if they don't make a switch pro and they just go straight to next gen switch fine say they do that in two years right it'd be weird especially with how well this bad boy's selling but say they did that in two years okay next gen switch don't need to toss away the hundred plus million people that are gonna own this you don't have to do that I think Nintendo has ran into constant problems with throwing away their old audience unlike Microsoft and Sony one thing they have gotten right is not throwing away those audiences well if you think about it they tried to carry the audience with Wii into Wii U but Wii U was such an unattractive product it didn't matter all right they carried the GameCube audience into Wii Nintendo used to be masters of backwards compatibility and carrying audiences forward but I'm not even talking about backwards compatibility naturally I think a next gen switch should play all of the old switch games but I think even new games that come out shouldn't just be next gen exclusive or switch pro exclusive no rather I think best played on switch pro best played on switch to but still available on this is the smart way to go and it also leads to long-term success the switch brand doesn't need to die I am so worried the Nintendo is going to kill off this brand like they have killed off so many other attempts at branding think about it they had a great brand with the Nintendo Entertainment System then the Super Nintendo Entertainment System it was a long brand name one that probably needed to be replaced but they did a great job with it they had a great branding going with Game Boy and then they said you know what nope can't call us next thing a Game Boy because we don't know if it's gonna be successful let's instead call it a DS short for dual screen all right oh we're kind of done with the Nintendo Entertainment Brandy we're gonna just stick with the Nintendo name and call it Nintendo 64 and they've kind of done that now every time Nintendo 64 Nintendo Wii and they were doing it for Nintendo Entertainment System Super Nintendo Entertainment System but that's the word they kept with their brand name of the whole company in the system people don't like it we're past the days where we just call this thing a Nintendo ooh you're playing a Nintendo don't you're playing a switch yeah it says Nintendo but look at the biggest word so which we call this a switch okay Nintendo is no longer the needed brand name here switches though we what do we remember with me we don't remember to call it a Nintendo Wii we remember we sports we remember we play we remember waving our we motes around right we remember the name we it was a brilliant marketing strategy completely butchered by the time we came out I don't want to see that happen to switch I think this is a really brilliant branding that has almost no competitors directly in their marketplace yes game streaming is a thing yes remote play is a thing which by the way I use remote play on my tablet upstairs to play my Xbox Series X games in my room remote play is a real thing but you know what I don't do I can't successfully play very well games outside of my home through remote play streaming same thing I have a hard time consistently playing streaming games while I'm in a car while I'm on a bus while I'm on a train while I'm in a plane even using even if I paid for the Wi-Fi on the plane the streaming services don't work as well when I get outside my home switch is still the king of playing on my TV taking it to the crapper bringing it out in the car going on a trip and continuing to play the same gameplay experiences as long as I'm obviously not playing an online game because that's obviously going to be restricted to online the switch doesn't need online to be a viable platform and that is the brilliance of this platform is because it is the only platform out there that seems viable GPD win I gotta shout you out your latest product looks fantastic expensive but fantastic for PC gamers but flawed there's some flaws in that one as well I don't think any of these portable platforms are ever perfect but the switch is in its own market in a way there is nothing directly trying to take away what the switch is doing my major competitor so why throw away this one with the new one why not have the new one but keep this one and they're saying if you do that you gotta hold games back but they're already holding games back for PlayStation 4 they're already holding games back for Xbox one how is this any different than what PC game development has been for all these years let's think about this for a moment for all the developers out there saying hey we can't have a switch pro because then we got to worry about this what's the difference in making your game available on PC you got to make your game run on things like a like a you know sixty seven hundred K you know processor maybe even older than that you got to make the thing run like a GTX you know our GT 760 or whatever and then you also got to worry about all the GPUs and all the CPUs in between when AMD came into the market in the sixty nine hundred XT and in the thirty eighty and thirty ninety and thirty seven hundred and the thirty seven hundred Max Q and the nine hundred the nine eighty M and like all these other GPUs mobile like we have to develop these games to run on everything from the lowest to the highest on PC across multiple architectures multiple brands how is that any differently making a game run on this but also run on the switch pro I don't buy the argument that people aren't going to take advantage of the more power because hey we got to make it for this Nintendo is in a very unique position not only advanced technology and all of these various ways and continue to push it with a switch pro or a switch to Nintendo is alone in that market and I think them being alone in that market is the exact reason we need them to take leaps forward the reason that we need a switch pro and the next gen switch and more beyond that we don't want the branding to go away but we also want to see this technology taken further and further and push to the absolute limits because Nintendo's alone no one else is gonna push them to do it Nintendo can cost they could take this in the light and cost for three years but we saw what happened when they did that with DS we saw what happened when they did that with we and 3DS we just shouldn't want Nintendo to get complacent the reason to want a switch pro and then eventually and a switch to or whatever they call it a super switch is because we should not want Nintendo to get complacent a complacent Nintendo is the worst Nintendo and is going to lead to another Wii U situation if not worse maybe even virtual boy let's not go there let's take this in a market you own and do it bigger better and faster and cleaner and sleeker over and over again just like phone developers have been doing all these years to keep their success going except you're alone you have nothing else touching your market don't take that for granted you did it with motion controls you took that for granted let's not take this for granted this is a winner this is a winner for a decade plus if you have let it be all right folks I'm then a robot dance from Nintendo Prime thank you so much for tuning in got another video also in the works for today we'll see when that comes out it's kind of an interesting day today for me but you guys are awesome thank you so much for all your support and I'll catch you in the next video


Our baptism of fire came in 1776, when New York volunteers took up arms to forge a new nation. In 1861, at Gettysburg and Appomattox, New York militia struggled to unite the nation. Through the Spanish-American War, the Mexican border, and World War I, when we cracked a Hindenburg line, the 27th made history. Then came peace. The citizen soldiers of the 27th continued to train. In the 30s, a shadow crossed the world. President Roosevelt on October 15, 1940, called the 27th to active duty and a new generation answered. Our first selectees reported to Fort McClellan, Alabama to receive basic training. Then maneuvers, Tennessee, Arkansas, and Louisiana, training for the real thing. And even as we prepared to defend our way of life, we moved to Fort Ord, California. Took on replacements and new equipment, preparing to ship out. Under way, we first began to know the feeling of war. Stop was the Hawaiian Islands. While GIs were dug in at Baton, we trained all over again, grew hard and tough. Orders came through for the drive across the Central Pacific. Our objective, makin'. On November 20, 1943, our first battle began. The opening round was fought by the Fighting 69th Regiment. The beach was rocky, the rockiest we would ever hit. Our objective was to cut the coral atoll in half. Women following on foot, and engineers blasting pillboxes. We became an unbeatable team. We found more than one enemy on makin'. There was the stifling heat. There were tank traps. And there was the night. Under its cover, the Jap Imperial Marines, fired upon Saki, made their last desperate attack. After three days of battle, the report was flashed back, makin' takin'. Events moved fast. The Jap main base was a truck. If we seized Anywetok, a small island to the northwest, our bombers could blast the Jap base. And cut off supplies to the marshals. Navy's famous Task Force 58 pounded truck. On February 19, 1944, the 106th Infantry Regiment landed on Anywetok. Yellow Beach looked easy. It was flat and straight away. There were no rocky reefs like makin'. But this time we weren't fooled. Some were up ahead. We knew the Jap was waiting. We traded shell for shell. Palm trees offered good concealment, but we lacked observation for our mortars. In terrain like this, grenades supplied the answer. Jap was far from finished. In plenty of time, he'd set up mortars in the open. Our air corps went into action. They went underground into trenches hidden by palm fronds. Anks flushed them out. At night, the Japs infiltrated our lines. But by day, they didn't have a chance. We clipped them in the open, burned them out of shacks, rooted them out of foxholes. Their wounded were treated by our medics. Months of rehearsing were telescoped into four days of combat. State-side training was paying off. The Atul went up in flame. The 23rd of February marked our second victory. Our third objective was Saipan in the Marianas. An island shaped like a pistol. Everything was down to a formula. The Navy and air corps softening them up. Then, on the night of June 15, 1944, our third campaign began. The big one. No one spoke. Every man was tense, but ready. At the beach, we regrouped and prepared to move in again. This time, the whole gang was in on it. The 105th, 106th, and the 165th regiments. Artillery, signal corps, ordnance, everyone. Holding reserves, they called us. We floated all right into Saipan across fields of sugar cane. Our tanks rolled ahead, and by morning, we had taken over from the Marines. Our job was to take a Slito airfield on southern Saipan. It was heavily defended by pillboxes on a sloping ridge. On June 18, we grabbed a Slito airfield, what was left of it, and named it Conroy Field after the CO of the 165th Infantry Regiment who lost his life at Macon. From there, we struck in a two-pronged attack, north to Magician Bay, and east to Nafutan. For a while, the Japs fought savagely, and for the first time pushed us back. But we rallied and poured it on. Here's bazookas, tanks, artillery. We hit them with everything we had. Our commanding general, Ralph Smith, and Chief of Staff, Colonel Stebbins, worked tirelessly directing the operation. Our losses were heavy, but Nafutan Point fell. Determined to finish the Japs, we drove on in the boiling sun. Back after attack, they couldn't stop us now. Past Purpleheart Ridge, hills King and Abel, through Death Valley. Northward, we climbed the Tannapag, the great Jap naval base, with our objective, Marpe Point, at the northern tip of the island. We encountered everything. Tanks, machine guns, pillboxes, and always that baking sun. Across Hill 700, we climbed. On the road to Tannapag, Betcheck Charlie paid his nightly call. Hill 767 into Harakiri Gulch, where General Saito and his entire staff committed suicide. Then we turned north toward Marpe Point. For a moment, silence. Then, the vows of our buddies were massacred, thousands wounded, but we buried over 4,000 of the fanatical enemy. The Medal of Honor was awarded posthumously to Sergeant Thomas Baker and to Lieutenant Colonel William J. O'Brien, both of the 105th Infantry. Saipan, July 7, 1944, will not soon be forgotten by the 27th. 25 days after hitting Yellow Beach 2, our third campaign was over. Christmas was spent at Espirito Santo, an island in the New Hebrides Group, east of Australia. There was time for recreation and rest. Then, replacements arrived. Training started all over again. Veterans, now, we perfected our teamwork and were ready to march again. The fourth campaign was about to begin. At Ulithi Lagoon in the Mackenzie Islands was assembled the greatest fleet of warships in history. Our mission was to grab Okinawa a thousand miles to the north. Intelligence had warned us of its rugged terrain. At night, the Navy laid down a withering bombardment. But the skies were filled with flaming kamikazes. H-hour had arrived again for the 27th. We found out intelligence was right. The plumb season was on. The rain fell for days. We slogged through seas of mud. Our big job was to crash the heavily fortified Shuri Line. The Long Thoms blasted away. Howitzers went into action. 81 mortars pounded day and night. Navy corsairs dropped rocket bombs. And the flames spreading napalm. General Bradford and Colonel Sheldon observed the operation. On the doorstep of Japan, the enemy put up bitter resistance. But battle-hardened veterans of three campaigns drove them back yard by yard. The Shuri Line. Our next big objective was Machinato Airfield. Every hill was won by blood and sweat, bullets and dynamite. Tricks like this dummy tank didn't stop the 27th. Machinato Airfield. Dead Horse Gulch. Hill 78. Rotation Ridge. One after the other, Japan's defenses were overrun. Remembering Okinawa, the 27th will always think of the marching. Across mountains and streams of how we destroyed the enemy and saved the innocent. We'll remember the casualties and the nurses. Generals Griner and Stillwell and Gallup and Joe Hart and the Dancing Girls. Vivid in our memories will be not only burning shacks and flaming hills, but also operation steak and apples. And along with a job of taking prisoners, trying to prevent the fanatical japs from taking their own lives, Okinawa will be remembered by the 27th as the end of the war. But one more job remained, occupation of Japan. Arriving at Atsugi Airport on September 7th, 1945, inspection was held by General Eichelberger. Then the big news, rotation and stateside. Stateside. A magic word meaning home, peace. We had come a long way since that day we left San Francisco, February 27th, 1942. Westward 2,000 miles to Hawaii. Onward to Macon, 2,000 miles. 800 miles to any we talk. Storming onto Saipan, 1,000 miles away. 2,600 miles to Ispirito Santo. Then north again, 2,400 miles to Ulithi, Okinawa and Japan. We had traveled almost 15,000 miles. And now the guns of the 27th are still. But ever on the alert to defend their country. Under the proud banner of Orion, New York's own.