Hi everyone, Joe for Jaspy's casebreaks.com happy Wednesday. We've got a little encased basketball Coming at you 2019 2020 panini in case basketball four box pick your team a number of five From a fresh case of course big thanks to all the people who bought their team straight up which I appreciate Thank you Paul got a last-bond mojo with the nuggets right there. So thanks to him and then you notice a Bunch of R&Bs right there that stands for random number block. So we did those random number block randomizers and There's the results of the random number block right there for the Memphis group I guess I'll put this right next to me over here. And then the other one was the Pelican's group right here All right, so thank you everyone for that now Let's pop this case open and let's see which four boxes we're gonna do Brody. What's going on? Do we buy cards in the store? We do not Unless you want to give us good prices on Luca Donchich prism rookies PSA 10s If you want to give us a good price on that But no generally we do not No, I'm good. So are you guys out? All right So there's four box on the left side four box on the right side.  We'll go one two three for the left side four five six for the right side five one two three four five six so this We will save for pick your team six We'll mark these six so we know they're from the same case Did I post the next? Yeah, the next one's already up if you want to go chase some more hits there and we'll do all the graded cards At the end of the break. Oh, you must miss my answer Brody. No, we don't first one out of the gate is Bradley Biel 97 out of 99 That's for the wizards Wizards are a number block team part of the Pelicans group right there. So we go by that digit right there So that goes to seven which will be for Matthew Shearer We got Goga Bittadze piece of his jersey For the Pacers that's going to be for Terry There's Romeo Langford rookie relic 82 out of 199 That'll be for Boston too. It's that's in the Memphis group. I'll be for PJ And there's Chauncey billips nice pistons edition 44 out of 49 You might have you might be in line for one of the head coaching vacancies that are out there in the NBA Pistons are a number block team and So that goes that's in the Pelicans group. So that's Detroit four Detroit four will be Joe K. There you go, Joe All right, and I'll we'll do all the the graded cards last Yeah, I'm thinking the same thing future head coach Chauncey billips Now we're just just before and we started the video. We were talking about how Christiana Ronaldo Everyone see this. I haven't seen it yet Jason Jassi told me about it and Jay was like yeah At a press conference like a postgame presser cards here at a postgame presser Christiana Ronaldo sat on the on the the dais the podium and There was two Two coke bottles or something like that right there beverages that are on there And then he moved them aside and then would like had a water ball in his hands like to drink water or something like that which apparently Apparently tanked Coca Cola stock for enough to drop by four billion dollars Which is probably a good time to buy coke at this point eight out of ten Julius Randall for the Knicks Knicks eight will be for Roy Right people people are with knee jerk reactions sound their coke stock. It's probably as low as it's gonna get We got Nikhil Alexander Walker 183 out of 199 and that'll be for the pelicans pelicans three Is on the is on the pelicans grew pelicans three is Eric Kuziak We got Luca Samanich I like the I like the design of these cards right thing. That's pretty cool piece of his jersey 170 121 out of 199 Spurs are a number block team spurs one is for Josh Idlitz. There you go Josh Oh, is that right a lot of UFC fighters do it with monster as well. They don't like the owner.  Yeah, they better not had not having uh Yeah, that guy That guy um I mean they should right no kawai with the monster guy Demanding he has that fighters train with him take pictures with him and shout him out on social media Just wants wants that UFC clout that bad, huh? There's four out of 25. We got boy on bogdanovich Four out of 25 for Oliver Soria and the jazzy jazz There's other base cards, too The Bradley Beale and the Julius Randall All right. Next is we got a jaret calvaryllis substantial swatches Nice one maybe We got RJ Barrett Piece of his jersey 29 out of 199 nicks are a number block team again part of the Memphis group So nicks nine Is going to be josh idlitz with nicks nine Looks like the nicks are a little ahead of schedule in their progression And we got this kid right here Could be could be filling one of the coaching vacancies head coaching vacancies in the NBA One out of 25 this kid going to Matt McLaughlin who picked up the Dallas Mavericks straight up Nice still part of the Lakers coaching staff at the moment You might have to dig back into your receipts Logan to see I know this this product was pushed back a couple times This is picker team two by the way I don't know if your picker team one's around here anymore. The shipping team took it already Might have been in one Maybe in three or four or five or six All right 16 out of 25 Christian Wood This is Detroit edition Going to the Detroit group or the main part of the choice part of the Memphis group So that'll go check that the pelicans a group my bad. So Detroit six Is for Paul Paul Norden Got Malcolm Brogdon vaulted veterans rally 44 out of 149 Pacers terry picked up the Pacers straight up encased Patrick Beverly 13 out of 149 No koai koai and Leonard might be out for For longer than just just a game or two. So other Clippers like to step up This one will go to crisp right and the Clippers And the autograph here is Is Jalen the Q 19 out of 99 for the Phoenix Suns And that's for Phoenix nine Phoenix is part of the pelicans group Phoenix nine Is Kurt Brogdon's there you go Kurt All right now you're in case card. Let's see what we got here It's usually where the good stuff is The even better stuff that stuff is already Well, this is a number block group Team it's Zion Williamson. I'm covering the number right here Zion from encased basketball nine five and ten on the autograph Wow And it's out of 15 Nice autograph Rookie endorsements autograph And it's going to go to Five out of 15 pelicans five Matthew Shira Congrats You get the nine five ten Zion when it's a great grade two out of encased already graded for you What a beaut. Let's see who this next one is. We got eight five ten This is also part of a number block group. It's Minnesota It's Nas Reeve. You got a little uh At Hollywood Nas. Is that what he's going with? All right, that's a social media right there There's the eight five There's the ten and the number is 39 out of 99 So Minnesota nine also part of the pelicans group Kurt Brogdon two more to go another notable signature Grade is a nine nine And it's uh, it's a person goes to a team who bought the spot straight up It's for Eric Jay and the Atlanta Hawks. That's cam reddish. They're playing right now trying to get themselves back into this game three out of 99 Hashtag go hawks nine nine is cam reddish getting any minutes today I know he still seems to be a bit of a work in progress Yeah, six was up by 20 With seven left into the third quarter, but let's see if cam reddish has put in any any minutes at all tonight No, is he hurt? I guess he's hurt. Oh, yeah, maybe he is That's what it was. Yeah, still out for game number five The one the one less guy coming off the bench, but eric j there you go and that a hawks Down 20 the game five trying to hang on Nothing with cardboard. What's going on and the last one here Is it's another cam reddish this time nine five and ten You should have picked them hollywood. You would have gotten two graded cards right at the gate There's rookie auto cam red 52 out of 99 very solid break The second half is in the store pick your teams This could be this could be a really great case so far so good. So Let's finish off the second half and let's make that happen Uh, this was in case basketball pick your team five. I'm joe And I'll see you next time for the next break. Bye. Bye. Thank you


Rainier Old Stock Ale presents recorded. I was a communist for the FBI. Ask any man who knows good ale, this is what you'll hear. Give me a bottle of Rainier Ale, ale with robust cheer. Try Rainier, you'll ask one more. You've never had ale like this before. Rainier! The biggest selling ale in all the west. Rainier Old Stock Ale, the ale with robust cheer. Starring Dana Andrews in an exciting tale of danger and espionage. I was a communist for the FBI. The story you are about to hear is based on the actual records and authentic experiences of Matt Sevettik, an undercover agent of the Federal Bureau of Investigation, who for nine fantastic years lived as a communist for the FBI. Here is our star, Dana Andrews as Matt Sevettik, undercover agent. Nine years of it, nine years of living behind a mask that made me an outcast among my own people. And from behind that mask, I saw these things happen. It's all in the record. Listen to Dana Andrews as Matt Sevettik, FBI undercover agent. Here is Dana Andrews as Matt Sevettik, undercover man. This story from the confidential file is marked, exit on the left. The regular meeting of our cell was being held in the home of our cell leader, Selma Malnick. Selma's apartment was decorated in the cold, brittle manner of a sophisticated bachelor girl, but actually Selma was a married woman. She was married to the Communist Party. And at this particular cell meeting, her marriage was being threatened. Just a moment, please, be quiet, all of you.  Maybe yes, maybe no. You must forgive me, but I'm resigning from the Communist Party. Tonight, now. Quiet, quiet, please. Comrade Malnick. What is it, Comrade Sevettik? It should be pointed out to Comrade Lorenz that if he does... Mr. Lorenz, now. It should be pointed out to Comrade Lorenz that his resignation from the party will place all of us, our cell leader especially, in disfavor with our superiors. Perhaps that's what he has in mind. No, no, no, wait, wait. No, that's not so. You must understand, truthfully, I... I want no one to suffer for the mistakes I've made. Sweet of you. Well, I... I want to start no trouble. You must believe that. I joined the party on my own accord in... In March, 1937. Yes, yes, 1937. I joined because the Communists were fighting fascism, Hitlerism. I believed in the fight against fascism. I still do. But today... Well, today the Communist fight is different. Oh, I've tried, but I... I cannot believe in it. You can do our cause great harm, you know. Committees investigating our activities are looking for weaklings like you. From the bottom of my heart, I don't want trouble. For you, for me, for anyone. After tonight, I want you to forget me while I forget you. No, Comrade Lorenz. The member may give up the party, but the party never gives up a member. Taxi, mister? What? Oh. What's the meter say? Meter's read. Good, let's go. It couldn't help it, Beaker. Tactic meeting tonight. Any trouble for you? No, it's Arthur Lorenz. He quit the party. Lorenz? Do we have a file on him? My doubt it. He was never active enough to bother the FBI type. About 50. He works as a librarian at the Hauser Library. Why is he quitting the comic? Coming to his senses, I guess. But his resignation puts Selma Malnick right smack on the spot with a party bigwigs. Her future depends on the way she handles Lorenz.  Malnick? She's that tall, sharp-looking gal, isn't she? Ah, sharp-looking. Like a meat ax. One night later, the meat ax was ready to strike. And I had been chosen to hold a victim on the chopping block. This was revealed to me in a way I never expected. Selma invited me to her apartment for a late supper and conversation. The food was fine, the candlelight seductive, and for a while I was almost convinced that Selma was more woman than cell leader. Comfortable? Hmm? Fine. Me too. Nice. I've got it all figured out at last. Hmm? Psychology. A calculated plan. You listening? Mm-hmm. Work on the mine, that's the trick. Work, work, work on the mine. A letter or two at Firstman. A few anonymous phone calls. No names, just cordial invitations to return to the party.  Every night. Oh, still. Comrade Malick. Fine time to call a girl comrade. Comrade Malick. I think it would be wise to forget, Loren. Relax, will you? Now, this is important. Well, naturally it's important, but you need to be so rude about it. This isn't a cell meeting. Well, it's become one. The welfare of the party means more to me than petty common courtesies. Well, for a while I almost doubted that. Are you testing me, Comrade Malick? Don't worry. You bet. Tell me, do you like my plans, Loren? Not at all. Then I'll intensify it until he begs to be reinstated. He's not with the effort. Once a man turns from our exalted cause to bourgeois sentimentality, he can no longer be trusted. Oh, that's true, but as long as we can't control him, he's a threat. The party's well rid of him. Let him go.  A committee's investigating reds on the civil service panel, and Loren's is a librarian. He's too frightened to become a friendly witness. Well, I can't take the chance. Our leaders hold me personally responsible for him. And you can't take the chance either. Oh, gee. When did this psychological treatment of yours begin? It started already. And you'll see that it continues. Very well. Good night. Oh, wait a minute. Don't leave now. It's still early. We must never divert our attention from our cause. Distractions are dangerous. Good night, Comrade. And believe me, Selma by candlelight was a surprisingly dangerous thing. A strange combination of woman and devil, the Sel leader of ours, frozen fire dipped in red. That plan of hers would crack Arthur Loren's like an old plate. I'd seen what it had done to other well-meaning dissenters. The phone calls calculated to scrape a nerve ending with every ring. The comments muttered by complete strangers patting the street. Sorry. Next time the bump may be harder, Comrade. Letters in the mail. A note tucked in a bag of groceries. A phrase scribbled across a streetcar transfer. All designed to make a man face the most ordinary prosaic fragments of daily living with fear, suspicion, dread. A deliberate pretested scheme to drive Arthur Loren back to the Communist Party or out of his mind. Pardon me, where's the Chief Librarian's office? Just beyond the reference shelves to the... you've... How are you, Comrade Lorenz?  Let me alone. You look haggard, worn. Been working hard? Let me alone for the love of heaven, Matt. I can't stand much more of this. Please, Matt, talk to Selma. Tell her I won't make any trouble. I swear it. I just want to forget. Forget. Investigating committees would love to hear what you'd like to forget. You know I wouldn't do that, Matt. Wait, where are you going? To the Chief Librarian's office. Why? What for? He called me this morning, said he wanted to talk to me about you. When Lorenz had been hired at the library years ago, he had listed me as character reference. That's why I had been called. The library received a letter, an unsigned letter, stating that Lorenz had been a Communist since 1937. What could I do? What could I possibly do? The letter was as much of a shock to me as it was to Lorenz when he was called in to explain it. Lorenz admitted his red connections, even though it meant his job. But his honesty was no greater than his resentment toward me. He was convinced that I was responsible. As we left the Chief Librarian's office, the bitterness of defeat echoed in Lorenz's voice. I've always hated vindictive people, heretic.  So help me if it takes the rest of my life. I'll even the score with you. Arthur, you have to believe me. I had nothing to do with that letter. Some day, heretic. Some day, very, very soon. Frankly, I'm rather proud of that letter. Did you notice the way I made the handwriting look so crude? Yes, Comrade Malek. Very crude. That's a funny thing. People don't like it. That's a funny thing. People are more willing to accept unsigned letters of accusation than the other type. They don't feel obligated to challenge the accuser, I guess. Now, about the next step in Operation Arthur Lorenz. Comrade, you're underestimating the results of your scheme. Am I? Yes. Lorenz couldn't possibly be a threat to our welfare any longer. He's been jobless for weeks, blacklisted. He spends most of his time in bed on the verge of a nervous breakdown. Good. Good. Perhaps I'll be commended by our leaders. Nevertheless, I feel we must... Good evening. Oh, and, Comrade Lorenz... Welcome home, Comrade Lorenz. So nice to see you. Just stopping by to pay my respects. Not my friend. I never had a chance to thank you for all you did for me. Thank me. Listen to him. Such a modest man. Haven't you told Selma and the others here? Told us what? Oh, how you convinced me to leave the party. What? Oh, he'll deny it, of course. You know how modest Matt is. But really, Selma, in all fairness, he did a remarkable job. Why, if it were not for Matt, I'd still be in the party. Ferric, is this true? Of course it isn't true. Tell them, Matt. Tell them. Yes, by all means, tell us. Hours, he spent. And literally hours talking, reasoning, convincing me that the Communist Party was no place for a decent honest man. No end. Do you realize what you're doing? Oh, please understand, Selma. Matt did it only because he felt I was a poor worker. That your cause would be better off without me. It was in the best interest of the party. I'm sure it was. Now, we're all happy. The party is better off without me. And despite all I've been through, I'm better off without the party. I think Matt deserves some special attention for his work, don't you? I all mean. And I'll see to it that he gets it. Friends, here's an ale that tastes so good, is so full of satisfying, robust cheer, you'll ask for it again and again. Yes, for real deep down thirst quenching pleasure, remember to get Rainier Old Stock Ale, the biggest selling ale in all the west. At the very first sip, you'll agree that here is ale at its most zestful, refreshing all-time best. For Rainier Old Stock Ale has a smooth, creamy head, a lively, nut-brown body, unmatched flavor and robust cheer. Boy, what wonderful refreshment. So enjoy the ale that has everything. Rainier Old Stock Ale, the ale with robust cheer. Try Rainier, you'll ask for more. You've never had ale like this before. Rainier Ale! The biggest selling ale in all the west. Rainier Old Stock Ale. The ale with robust cheer. Now, back to Dana Andrews, starring as Matt Severick. In I was a communist for the FBI, and the second act of our story. Arthur Loren did even the score, just as he had threatened. Was I slated to go before the Red Control Commission and accept my fate? What was it to be? If only I could be sure. Or could I expect the same type of mental torture that had made a wreck of the quiet little librarian? A bit of part of that torture I discovered was the anticipation. Waiting. Wondering when it would begin. I thought myself jumping in shadows, dreading the sight of every unfamiliar face. Until I decided to get this treatment started myself. Well, this is a surprise. Can I come in? Yes, I suppose so. Well? All right, Comrade Malick. Tell me what you were after. What do you want of me? I might ask you the same question. This is an odd hour for visiting, you know. This silent treatment I'm getting. Did you consider me a traitor? Turn me over to the party leaders and stop this foolish dawdling. I may not consider you a traitor at all, but others in the party insist on proof. Our sell, you know, gives everyone opportunity to prove one's faith. Even if one is driven out of his mind in the attempt? Our cause has no use for that sort of weakling. Nor have I. Just what must I do to prove myself? That's up to you, isn't it? Good night, Comrade Malick. Seems silly to leave now. Well, this is an odd hour for visiting, I'm told. You and I are odd people. They're really an amazing creature. You'll devise a scheme to drive a man out of his mind. My concern is a political entity.  My concern is a woman. As a political entity, they're fascinating. And as a woman? They're just a woman. Good night. As I left, I saw the frosty look and Selma's eyes, and I knew the waiting would soon be over. The bristling silence of anticipation was about to be shattered, but what would take its place? I walked the streets for hours and wondered, looking for signs, omen, symbols, feeling like a man who had just paid the bill for his own... May the God be with you! I've seen it. I've seen the whole thing. That dame went right through the red light. You okay, mister? Yeah, yeah, I'm all right. You should walk more carefully. Selma. Lady, you could have killed this guy. He ought to turn you in. That's what he ought to do. No, no, it's all right. Forget it. Silly dame ought to lose her license. Any dame who can't see a traffic light ought to be in there quick. Man's right. I apologize. You've been following me, haven't you? Just for a few blocks, as a political entity, not as a woman. Naturally. May I drop you somewhere? No thanks. I'll walk. Be careful, comrade Svetik. Don't walk against the red. And so it was officially launched by its guiding spirit, Selma Malnik. From now on, I could expect another kind of waiting. A waiting between incidents. When would the next one happen, and what was it to be? The devil is it. Hello? The matter with this thing, hello?  Who is it? Hey, hello? Who's on this lawn? Hello? Your floor, sir? Hmm? Oh, uh, fire please. Okay. You new on the elevator? Yes, sir. My first day. Sit floor, sir. Thanks. What's your step, comrade Svetik? Hello? Anybody on this lawn? What? He's early in the morning. What was it? Hello? Hello? Who is this? Speak up, will ya? Who is this? It was beginning to get me in spite of myself.  I could no longer talk myself out of the jitters. And I couldn't risk contacting the FBI. I knew now what Arthur Lorenz had suffered. But in my case, what did it all mean? Was this my punishment? Or my chance to prove my faith is a loyal red? Or was it merely the whim of a red she-devil who secretly yearned to be a woman? At least the latter would be the most human explanation. Who is it? Who is it? Now tell me, who is it? All right, let's get it over with. Look who's here. What do you want, Lorenz? May I come in? Sure. Sure, come in. Come in and gloat over the job they're doing on me. Matt, I want to help you. Help me? You? You can't even help yourself. For myself, I don't care anymore. About all I have left is my conscience. I'll never forgive myself for what I did to you, Matt. The story I told myself. Maybe I had it coming to me. Who's the judge there? Communists? That's why there's sudden concern for me. Not you, Matt. Not you. I don't have to live my life with you. I'm forced to live with myself. Same reason you left the party, no doubt? It took me a long time to do it, Matt. It frightened me. But it's done. Now that I have the courage to face my conscience, I... I can't let this business with you make me a coward again.  You won't recognize the strength of our cause because you're afraid of it. Even now you talk like this.  Be a hero. Run to the investigating committees and wallow in bourgeois slop. Go ahead.   Get out. Matt.  But I still think there's hope for you. I can do without your hope. It's the other people. The Selma monarchs. The ones who sit in judgment and handle human beings like so many chessmen. They are the hateful ones. Will you get out of here? It hurt. It hurt bitterly to treat off other ends like that. I stared at the door for a long time after he left. He could never understand me as long as I was forced to play my dual role as a red and an undercover man. But I hoped, hoped with all my heart that he might have understood what I was trying to tell him to do. And then, then came that insidious probing finger of doubt that I veiled my message heavily enough for my own safety. The next night as I headed for a restaurant, I got the answer. Hard way. You spedic. What do you get in? Now, wait a minute. Don't argue, comrade. Get in. Oh, no, you don't. Hey. Okay, let's go. I'll get in. Everybody's staring at it. Congratulations, comrade Svedic. We're proud of you. What for? You've redeemed yourself gloriously. You've proved your faith in the party. You've given us even greater faith in you. I don't understand.  You, you heard what I said to Lorenz? Standard procedure for suspicious cases. Tap the phone while the room. Your every word was recorded. Have your, your new cell leader play the records for you. You'll enjoy them. Thank you, comrade Malaga. Our new cell leader. Is that what you said? Oh, of course you hadn't heard. I've been relieved of my duties. This morning Arthur Lorenz testified before the committee investigating civil service affairs. His testimony has sealed my fate as a party worker. Oh, I, I see, but you seem so pleased. I'm to report to party headquarters right after this meeting. The penalty for my incompetence in handling Lorenz will be determined by our leaders. But aren't, aren't you worried? I am exalted, comrade. My case will serve as a warning to other cell leaders. Even in failure, I will serve the Communist Party. My dedication is complete. The irony, the futile paradox of this sort of dedication. The frozen fire of Selma Malnik snuffed out by the weak, ineffectual Arthur Lorenz when Lorenz stopped being a red and became a human being. Even among the Communist, I found myself constantly seeking out human qualities among the comrades. But always in the final analysis, I had two choices. To walk with the frosty-eyed political entities or to walk alone. I chose to walk alone. Those will return in just a moment. Yes, there certainly is a difference in ale. That's just what you'll say when you enjoy your first rare refreshing taste of Rainier Old Stock Ale, the ale with robust cheer. That's right, folks. Zestful sparkling Rainier Ale is always satisfying, always refreshing, brimming with tangy lip-smacking goodness. You know, Rainier Old Stock Ale is the biggest-selling ale in all the West. And to be the biggest-seller, it has to be the best. So remember, for cheerful relaxation, for real deep-down robust cheer, enjoy Rainier Old Stock Ale. Try Rainier, you'll ask for more. You've never had ale like this before. Rare. The biggest-selling ale in all the West, Rainier Old Stock Ale, the ale with robust cheer. This is Dana Andrews. These stories are designed to illustrate one important point about democracy. You can't set free men free. Free men must set themselves free. In this story, as in all others, names, dates, and places are fictitious to protect innocent persons. Many of these episodes are based on incidents in the life of Matt Sevetic, who worked for nine years as an undercover man for the FBI. Next week, another fantastic adventure. Join us then, won't you? For a sponsor, the Rainier Brewing Company feels privileged to present this expose of communist activities in the United States. They would appreciate your comments regarding these programs. Just tell the man who sells Rainier Old Stock Ale what you think of, I was a communist for the FBI. Another exciting real-life adventure in this thrilling expose of communism in the United States. Be sure to tune in next week and every week to follow the time 9.30 p.m. The day Saturday, the station KNX. I was a communist for the FBI. Recorded and starring Dana Andrews was presented by Rainier Brewing Company, brewers of Rainier Old Stock Ale, and came to you from Columbia Square.


Are you willing to undertake a dangerous mission behind the enemy lines knowing you may never return alive? What you have just heard is the question asked during the war to agents of the OSS Ordinary citizens who to this question answered yes This is cloak and dagger Black warfare espionage international intrigue these are the weapons of the OSS Today's story a war of words Concerns an American agent who personally delivered a message to the colonel of a Japanese camp and is suggested by actual incidents Recorded in the Washington files of the Office of Strategic Services a story that can now be told Okay, Harry. I spotted it. There's our target check ready to let him go ready Bombs away there she goes I Dropped every one of those bombshells we had in the plane and they hit the target right on the nose And the explosion that followed sounded like this Just as much noise as paper makes when it flutters to the ground Those were our bombshells propaganda leaflets Leaflets designed by OSS to lower the morale of the Japanese soldiers in that camp in Burma Those were our silent weapons. I'm gonna turn back now. Okay, Pete. Oh, Harry What do you think of that phonied up picture the bombing at Tokyo we just dropped looked authentic to me Well, I like that little pamphlet too, you know the one that began the Suns of the rising Sun It is better to surrender than fight without bullets or die of starvation in the jungle Yeah, that was real cured Sure, I'd give those lousy jab something to think about. I'm sorry, Harry. I Shouldn't have said that That's okay, Pete Forget it Let's beat our own record get him back this time. Huh? Yeah Here we go Sometimes the guys forgot that Harry was short for Haruyoshi Haruyoshi Nabura Although I like to think of myself as an American Japanese Even peepano thought of me as a Japanese American. I Had to learn not to be too sensitive Come in boys, come on in. Oh, thank you colonel down Cigarette thank you You two have done a good job in the past few months peppering Burma with that propaganda material. Oh, here's a lighter Thank you, and we already have begun to see the results. Well, how's that colonel? Well, you know how live Japanese prisoners used to be at a premium Rather than be captured. They'd commit how to carry almost in defiance. Oh, yeah I hear a lot of them are surrendering lately. That's right. They're morale isn't what it was good And you too can take part of the credit for that, but Tomorrow tomorrow, I want you to go one step further Well listening sir Take a look at this document What is it Chinese or Japanese? Or Greek to me. I can tell you what it is Pete It's obviously a forged order to the commander of the Japanese camp to withdraw his troops Three miles east. Well, I hope it's not an obvious forgery to him Lieutenant Nabura because if he falls for it and moves his camp our armies will have a clean road right into Obama and once we get there Burma is practically in our hands. Oh, I see Oh begging your pardon Colonel, but What are we supposed to do to walk into that Jap camp and deliver these orders? Oh, no Oh, no, your job is much simpler. All you have to do is fly over the OSS detachment 101 at Osam and drop this document They're catching natives and our agents there will do the rest. We've contacted them by radio. They expect it check Colonel Yeah, this will be a snap nothing to it This will be a snap nothing to it, huh, how do I know we'd run into a Jap zero? Right back at your buddy Now he died too fast for you Harry. I'm gonna grab more sky. Maybe I can lose them up there Maybe not for long hang on boy Most of the way up the air was thin enough so that I could see the nose of that zero following us And then at 7,000 feet the air became thick and we lost them But the plane had taken quite a beating How bad is it look you Pete? Well, we haven't more than 50 miles to go Then we can sit down and cut some territory make repairs before heading back to India. Okay Instead of dropping that document will deliver it in person while we get there, huh? If we get there what what's that wing? It's coming off where he hit us There she goes. What do we do now? I'm gonna kick the stick forward as hard as I can put her in a loop Oh, that's crazy.  Here we go. We fell free of the plane. I jerked the ripcord in my chute open On the way down I inflated my maywest and the little lifeboat swelled up Below me. I could see Pete drifting slowly in the Brahmaputra River And then I hit the water Yeah, this is a nice mess to begin Not even sure exactly where that 101 detachments located. It's somewhere to the south, isn't it? Yeah That's a help Whoo Jungle stinks doesn't I can think of a lot of places I'd rather be For instance for instance anywhere this place is probably crawling with enemy patrols. Oh, that's a pleasant thought Careful careful.  What is it the Brahmaputra where we land it? You see it into the right. I don't get it. We passed it a few miles back. Yeah We sure did you see that clump of root They look familiar That's where you almost tripped right there by the swamp, but Hey, yeah, we made a nice big circle Right back where we started. How the devil did we do that? Well anything could happen in this lousy hurry Jack patrol this just isn't our day. They're coming this way quick the swamp They'll never see us. Let's get a little walk till it pass. All right All right, that's it. I'll get down Just keep your nose up to breathe. You have to get down under and don't breathe. All right Resta and then tied their shoelaces. Let's get out of here That night we lay side-by-side deep in the jungle on top of course undergrowth Underneath the trees from which Leana's hung down like braided ropes We shifted oppositions every few minutes as a regiment of ants and bugs crawled into our clothing and kept us awake And then towards morning we fell asleep exhausted When we awoke the Sun had found a hole in the branches and crawled through Boy that Sun's hot is it What do you mean is it? I'm cold Pete. I got the shakes Fever, I don't know.  Oh Sure, come on boy that Sun's blazing, isn't it? Well, I thought you said you had the shakes. Uh-huh. Oh nothing Come on Harry. Come on up on your feet boy. You'll be all right. Yeah. Come on boy.  How do you feel? I'll be okay. Uh with that swamp we hit in Just those lousy bugs that got on your skin. I'll be all right Harry Harry Okay, fella now just take it easy there. That's it. There's cold cloth in your forehead. It'll make you feel better.  I figured How long ago's it been since you're nine two days? Have we got enough rations? We'll be okay Don't lie to me. I said we'll be okay now. Don't try to set up Harry Well, how far do you think we are from the kitchens? Well, I think I've got the direction pretty well mapped out now About a day's travel do south Well, not if you sit here with me for a week Now don't talk so much. Go on Pete. Get out of here. I'll tell you what if you make it there by yourself You can come back with some of the natives and get me not on your life. I'm not leaving here, but shh That's uh Pete door's gone and called out about the kids my head was pounding harder than before Maybe Maybe it was the fever Maybe it was because I had to lie there helpless while Pete went out alone do Whatever was outside Friend and friend who are you? Maybe suing scout and scout saw you this morning from top of three.  Oh, why didn't you say so? You're from a psalm. You're you're from the os s detachment. He's right. Hurry Hurry did you hear that? Oh, well, how's this for the mountain coming in the hammered? It's gray. It's just gray Would like oh boy would love. Oh, look, I've got a sick friend in here in the cave that Fever, can you fix him up and we'll see I looked up from the bed of leaves that Pete had made The cutchin scout who leaned over me was short and squat with long matted hair and teeth worn to a black stuff by beetle nut He took a good look at me and jumped back as if he'd been bitten Now listen suing suing this this is american Just like I said, it's japanese. It's now you listen su is a japanese. Yes. Yes. That's right, but Is american too? You savvy american friend Look at his uniform You say friend I say japanese We'll fix up from fever Then bring to camp Let them say which is what? I don't know what he mixed up in those which doctor concoctions besides the use of Mahogany leaves in the roots of the liana vines Or whatever it was I was on my feet two days later and we started out for detachment 101 Only this time we had a guide And then the next night out of nowhere We came upon it Well, what do you know? Here it was the osse secret hideout Carved right into the jungle of berber. So this is detachment 101.  It's like nothing I've ever seen before In probably late nothing you'll ever see again. Huh? Well, where'd you come from? Yes, your name has been standing behind you. I'll attain Would you like to have me show you around baby? Oh, well not now. Thanks the guide who brought us here disappeared We've got to find the head man around here.  No No, you don't say oh, yes Yes You take a good look at our little camp As I said, you'll probably never see anything like it again if you live to be 104 It's as if the leprechaun set it down right in the middle of the wilderness. Well, we'll look around later If you don't mind who's in charge you take all these lads the paratroopers who are farce down in the jungle They all had the same look about them when they first came as if they stumbled into a better farleaf clothes Look mac would you mind very much that lad there was a farmer in wisconsin? And they went talking to the nurses from baston originally that is and the tall lad is a texan And it took a lot to make him say that this looked better to him than texas Were you uh forced down here too? Well, uh in a manner of speaking. Yes, I was what did you do before the war?  Oh look, where can we find somebody in authority at evening mass with everyone else mass? Of course, you see that big store hut at the far end You'll find him there We went to mass Now when we got there we found our friend with the bro The one who told us who ran a hut furring from hoboken to canarsie officiating at the service Every once in a while he'd look up at us and I could see the suggestion of a smile around his lips There was a soldier standing next to us. Hey, hey, who is that that? Why that's father otul he practically organized the 101 Sure, and I said it just to see the look on your faces later on We'll take a good look boy minds read Oh, but father otul yes Here the four Japanese orders that colonel gave us in India Of course the original plan about dropping them over to you and turning back didn't work out But just as long as we got them here just as long as we have them. We know what to do with them No, there's a Japanese mail courier coming through tomorrow night from digroom to the jab camp at mochlam Now I'll have suing one of the other scouts intercept him and deposit this document in his mail poach Oh, I get it father When he comes to he won't know what hit him, but he'll keep going With the forged papers. Hey, I'll show you get a quick brain lad And uh by the by oh, yes, father You know since you're Japanese as well as american I'd suggest you stay close to me for the next day or so until you leave You see then the natives will get over their suspicions of it. I see I was nice, I'm sorry for barging into your hut this way father otul But suing told me one of these men had jungle sickness. Well, that's quite all right nurse Amy lads Take a look at her Isn't she a fair carly though? That's enough of your blarney father Come with me, please. What's your name? Nabora lieutenant harry nabora. I'm okay now really. I that may be so We just want you at the hospital for a checkup come along. Hey, hey wait you uh jave Mind if I come too No, not at all The doc who looked me over gave me a clean bill of health It must have been those witch doctor herbs of suing's Later father otul gave us a buy shot to ourselves and pete and I fell on those army camps And then about three o'clock in the morning Harry harry, what's that? I I don't know. Let's find out. Yeah Hey, where's where's everybody running to? Oh, there's that nurse. Maybe she knows. Hey nurse nurse There's nothing to be alarmed about boys. What happened? Well of the cab approaches our watchdog caught a crawling enemy scout. Well, I didn't hear any dog This is a silent watchdog. What actually it's a crossbow with a hundred and fifty pound pool It's set up. So any intruder who touches the trip string is shot for the poisoned arrow. Well, well that uh That's quite a watchdog. Yes. I've been thinking of putting one up in front of my tent Oh, so sally so sally father otul Did not mean now it's done suing it can't be helped. It's all right. Hello father.  What kind of a mistake? Well, I'll tell you boys It's like this I sent su out last night to uh intercept the japanese courier and deposit this document in his mail poach What went wrong? Well, it seems that suing doesn't know his own strength to quote a phrase and he hit him too hard Ain't very much afraid the courier will not be able to deliver the mail after all to the camp at muclum Well, look father otul that document is important It's got to get there Where's the uh courier now in the hospital receiving the very best of care. Are you sure? Yeah I'm a male sack in my position Okay Then another jab courier is going to take his place and deliver the mail. You're nuts airy. What other jab courier? Me why? No, I know you're nuts. Pete when I switch uniforms of that guy take a good look at me I promise you you'll never recognize me The idea has a touch of genius lad. I think it may work. I hope it may work Slipping an extra prayer for me father While I was at it I went after the letters and cards that were going to the japanese soldiers and phoning them out I raced everything but the signatures and wrote about how bad conditions were back in tokyo And the black market was flourishing how they were being barmed every night Had dawn I had changed into the captured courier's uniform I had the mail sack over my shoulder and soothing at my side to take me most of the way Good luck again me boy. Thank you father otul. Well harry harry. You're sure that you want to do this Walking right in the lions den they get wise to you if they get wise to me She got a good night. What's that mean? It's good japanese for so what? Who goes there? Answer or I shoot or courier from the brigham with mail for your soldiers and special dispatch for your commander Mail courier come across Let me see your face I do not know you Where's the runner a papers. Let me see papers identification Yeah Very good Where's the dispatch you say is for me here kona nagayo. Why are you so late? Mail was expected yesterday. I it was unavoidable answer my question directly Why are you late? Uh native kajin warrior attacked me on the way. I had to fight him off kona nagayo Those kachans siren devils in the jungle shadows Impossible to know when they are about they jump out at you devils. Oh, yes kona nagayo Well What you waiting for you may leave now. Yes Yes, uh, I leave I leave I was glad to leave and it been easy up to that point I try to keep from walking too fast to the gate Pass Let me see pass to leave. Oh here.  Why you want me I do not want you Receive the word at gate from kona nagayo. He wanted you to come back Come there you are courier. I want to make sure you did not leave here I just uh Something wrong kona nagayo. What you talking about what could be wrong Yeah Important message for your canal Take it. Oh, thank you Oh, thank you kona nagayo. I should be glad to deliver this to My canal this time. Nobody stopped me when I left the camp at mcloan and started back for kuching headquarters I must have been within two miles of detachment 101 when I realized I was being followed I Couldn't see anyone to hear anyone, but I knew someone was there In the brush or the trees hidden somewhere along the trail I started to run faster My lungs started to ache with each breath and my strength was gone a hangover from the fever I just gotten over If I had escaped from the japanese camp and fallen into head hunter hands, I know I didn't have a chance Oh I talked japanese English What are you head hunter? Good luck? Good luck And now bless my soul lieutenant the border. I see you're awake.  Let me change that bandage on your head. Now, wait a minute How did you get here and you mix and things up a bit lead You mean of course, how did you get back here to the oss camp? To the what I will notice very simple Oh, I have an apology to make for my friends the kuchin's who brought you here They'd been out scouting for the past week and they did not know you Also, of course the japanese uniform you aware and confuse them But I was a pity that they speak only their own language So that you couldn't clear up the situation They left to teach them how to speak english English the way it should be spoken Lieutenant's haruyoshi nabura and peter barno were returned to india by plane from the rescue camp at asan And a few weeks later a special dispatch informed oss headquarters that the strategic city of barno had been taken Thus once again the report of another agent closed with the words mission accomplished Listen again next week for another true adventure from the files of the oss on Cloak and dagger Heard in tonight's cloak and dagger adventure as pete was chuck webster Harry was played by ralf bell father otul by eric dressler Others were john allison layman edward johnson Carl webber jerry jaret vorice tarplin and guy rep The script for cloak and dagger was written by winterfoot wolf and jack gordon And the music was under the direction of john guard Sound effects by west conant manny seagull and norman groenfelder Tonight's true oss adventure was based on the book cloak and dagger by corrie ford and allister mcbane This program was produced by lewis g conan and alfred hollander under the direction and supervision of sherman marx


Welcome. This is Jenkins documentation office hours. It is the 17th of March. Asia time. And today top of the agenda is a Gitter tutorial for me by Chris and then we've got several other topics that we made may spend time with and may not. But that's the first one. Chris, are there any other topics you wanted to put on the agenda today. Okay, Google summer of code. Good. All right. Anything else. All right, then let's take on Gitter tutorial. So this is me requesting help because I'm struggling to find myself in the new matrix based user interface of Gitter. So here's Oh and now everything's caught up. This does not help me at all. I You have to click on because like I but for now is like I didn't see any mention of you as well because if you click on, if you go, go to the right hand side top way inside. And it's your title box. Not this one the next next one. Next. Next, this one the threads. Yeah. Okay. If, if, if for that channel, if there's a friend, it will pop up there. But for the alarms, you can just go to the alarm. The bell. The bell. Okay, so the notifications. All right. You should be able to find all notifications. Okay, and what I was seeing is that over here on the left. In the in this panel that shows the rooms the various places I could go the conversations I could be in. I would see indications that there was a message or there would be a number on the right hand side here near the notification options bell. And that number would never go away no matter what I did trying to navigate around in that. So I think they have a bug because sometimes you have like you have read the message in this right. It shows up. But once you have a new message and on the same thread, it would go away. Ah, okay, so they have a bug. I don't need to be, I don't need to be, need to be gravely concerned if, if a number three appears on gsoc sig, or in my case it was a number 25 appears on the gsoc sig. And as far as I can tell, I've looked at everything. Therefore, the fact that that number continues to exist is not a problem. Well, the thing is, if you have 25 of them, it's probably not a bug because if you go through thread, the word thread to a lot of it, that's like a back button. The thread that you see the word on the right hand side. Yeah. Yeah. Okay, the thread right here. The button on the left hand side. Okay, this one. Yeah, click on that. I can see like, if like, if you haven't read a message for the threat that should be a dot on the right hand side to a timestamp. Okay, so, so if I haven't read a thread so if I were to mark this thread as unread, let's see, oh, there isn't a way to do that. No. Okay, so if there, if there were thread that I had not yet read. It would appear here there will be an indicator on the right hand side, like it would be roughly at this location. Yeah, yeah, yeah. About that. Okay, so it would like for, for if for when it's saying. There should be a dot, a gray dot or for if you miss them for missing in dark mode, but for you say that should be taught to the right hand side of the name of the person who probably started this one. Okay. Okay, so there will be a visual indicator on this line. Whoops, on this line vision, there will be a visual indicator that tells me, okay, I haven't read this one yet. Yep. New Massachusetts. It's fine. Yeah. Okay. And now, now this arrow that I'm hovered over that has the word threads. What's the meaning there okay so this is some. Oh, sorry, it's like, I confused the two is like, because I thought you on like threads and not to add. So if you go to threads like here. So that the dot should be to right hand side of the timestamp. Hey, the dot should be the right hand side of the timestamp so they would be here. Okay. All right, and so if I've not not read it, it will have an indicator there so if I, let's see if I and people now, my, my list of people is significantly smaller than it was before. Interesting. So if I start a new chat with. Okay. I was like, I was like, because if you click on the home button on the left because you see to, if you go to the left hand side. Yeah, click on that. Okay, now I see. Okay, so that that's something I was on the people. So here, if I were trying to talk with Vlad, I would click here and then I can see. Okay, here's this and it says no you can't do it. Vlad and I haven't talked in a long time so that's no shock. But if I were to click this plus and instead say, I want to talk with Chris Stern. Go. And this is the beginning of a conversation. Okay. And now if I navigate away from that and go back to another room. Eventually, I will probably get a some indicator that there's a message for me from you. I should be with it now if I go back to people. Okay, go back to people back to people. You see, do you see me. So because you have to show 48 more. Okay. There you are. Yeah, if you click on that. Okay, but I'll try again so go go back out. Okay, so. Going out going back to the Jenkins project. Okay. Oh, and here's a people in the Jenkins project. Interesting. Okay, and so it. The concept of home here. You're there but. Okay, but I made the mistake I was in a different place I was in the ready to see it. Okay, could you type one more message just to help me see if. Okay, there's a one. Here for you there's a one up here as well. And so, if I click any one of those it should take me there. Yep. And one will go away. Great. All right, so that was, I don't know why I was so perplexed because I was clicking on things up here. And or on on rose here and not getting anything to clear the, the, the, the indicator that the message was had been read. Okay, good. I have a question. I just noticed, I don't see that messages have timestamps. Actually, I think they do. I think if we look here, or there was the timestamp view was in the thread. So I think I saw, there's a date stamp. And there's a timestamp. I think I meant the dates, the timestamp, not the dates them. I just, I just send you a message in the dark channel. Okay, and there's, and there's the one in the Jenkins and Jenkins stocks. Good. Okay. Oh, no. Oh, there it is. Sure. Okay. So that was not. Not that one go to threats. Oh, go to threads. Okay, so I got to go to threads. Click on the button. Yeah, the back button. Hey, see me. Yeah, the right hand side. I see that one. Okay, all right. So, so finding that that was that was a crucial thing I suspect. I need to learn to navigate threads more effectively so I enable the threads. And then by showing all threads. Or if I just show threads I've participated in that would have shown it to me so. Yes. And now if I navigate away so let's say I go to the get lab plugin to look at it for a little bit. Then if you send a message in the docs channel, or in the docs room. Then we'll see a notification there. And then if it's in the thread, I've got to go find that thread. Okay, and there's the so clicking the channel. And this was the active thread so that's why I got lucky and it showed up there. Yeah. All right. Okay, thank you Chris. Thank you for everything else. Back to the time like when I looked at this and I saw Kevin sing that a meeting starting in 30 minutes. How do I quickly know 30 minutes from when. Good and I'm not sure there is a way to tell in this view. Let's see so oh wait a sec here it is you see the time. Some of them now up above there's a mark weight that doesn't show a time. You have to hover over it. Although I'm not sure that that really tells me what I need because this was was sent Chris what probably. Oh this was today so so this was less than 24 hours ago. It says today. Yeah. Okay, then if I go back. Where did you see that it says today. Right in the middle see that little. Why on earth they made it in such faint lettering I do not know but it says today, center. Oh, got it right there. Okay, there's a heading. Okay yesterday today. Okay good. So they've got they've got larger groupings by day. So if I go back Monday, Saturday, okay good so I need to learn to read that very good okay. Alright so hovering gives me a timestamp and the day is hinted here or it's visible. Where else did I see it oh if I hover over it. No where was it if I hover over the time it gives me a full date. So Wednesday 15 March 1220. It's going to be local time my local time right. I would I would imagine so because 1220 UTC would be very early in the morning and I'm unlikely to have written that at that hour the morning for me. Yeah. All right, good. Okay so date information there date information available there person here. Threads are the the crucial thing there. Anything else Chris that you need to need to highlight for me is the amateur who doesn't use this system well. I think like they have a new feature like let me check because I think you have it too because if you go to home button. Okay home home and.  So we get if you get on the Jenkins icon. Okay so this one. Yeah, you can see like everything in the Jenkins space. So they have people in rooms for these are these to the home button and Jenkins they're linked up. So I will show up at your home button and also in the Jenkins workspace. I see. Okay, all right so because you're in your I'm not sure I understand the why of that but that's great so so conversations with you will be visible to me in either place because here under people there's Chris Stern. And in the Jenkins rooms, I mean in Jenkins you're here top of the list for people. So somehow they knew that yours, you're in my interactions happen in the context of Jenkins. Okay. That's right. Very good thank you. Anything else I need to know. Let's see the add button here. Oh this lets me explore other rooms if I don't think. Okay. All right then let's call that one done. Go ahead. Say again Chris. Okay. All right. Okay so see the recording. For details on the user interface. And how to use it well. Good. Thank you. All right next topic then was Google summer of code. Yep. So we had a meeting yesterday. I think Shawn talked about like the drafting of those and gave some means and tips. And that's, that was a short meeting. Okay. And well John, John Mark had told me that. Sorry Chris, you're breaking up.  So there were risks from the contributors asking for reviews. At least that's what are there were requests from contributors asking for reviews of their proposals. Yeah. And there's a sheet that John Mark has a has a sheet that tracks reviews right. That's right. Okay good so Mark has several to review others likewise. And for me, I doubt that I will not likely to review them tomorrow because I have a number of things I have to do for work review until the weekend. Okay, Saturday or Sunday. So is the is the, the workload in the, in the chat channels. Okay for you Chris. I think so yeah. Okay. It's not not overwhelming you with too many questions too much load. Not really no, not not currently. Great. Okay. Well, thank you for what you're doing there that's wonderful. So I've seen several poll requests. Several that's not not the right way to say it many poll requests from from candidates and some of them were exceptionally brave we've talked about one here in or some in in Docs office hours that bondage saying submitted some significant documentation work. And it's still in review because the place that it was changing is dramatic enough it's the upgrade guide and that thing is, there's there's enough complexity in it that it's got to have a long and detailed review by people who've done lots of upgrades. So marks review is the big is pending. And others have submitted likewise. Good docs tests for plugins, etc. It's really positive. Anything else on Google Summer of Code Chris. I think we have to, I think we should mention that the application is going to open in three days on this one too. Oh, right. Yes, very good. So, so let's talk timeline. Okay, so applications are made may be submitted to Google. Yeah, beginning. And let's get it. Okay, March 2023 application period closes. For April is that right. Yeah, that's right. Thus, they really want correctly so right they want feedback on their on their draft proposals now before that opening. That way they're not waiting till the last minute to submit their proposal. Okay, yeah. All right, so this weekend is a good time to review proposals. Yep. Very good. And then the next big milestone is it early May, where the project submits the project reviews all final proposals all final project plans. It compares their response to Google where the response is, how many projects are we proposing. Are we reckon offering to accept. And how who are the mentors. And how many per project. Any other items we need to insert me need to carry here Chris, how many and which projects, the project reviewers actually say, we think this one is good and this one's good right. Correct. Yeah, you're right. It's which projects. It's, it's not just which projects are we offering to accept right. And we offer to Google and they make that we may say, Hey, we think we could run for here is how we would staff them, etc. Google may come back and say we'll give you two. Okay. But we could and we could say we can staff for but we think these eight are worthy or whatever right. That that I'm not sure because we're going to only cares about which things will staff right if, if, if they, if there's a useful project but it doesn't have a mentor, or it doesn't have a good proposal it doesn't matter. They absolutely want something that that has mentors assigned and that the open source project is ready to support. Yeah. Anything else Chris. Maybe not. Okay. Good. All right. Thank you. Other topics I had are relatively brief. It was we thanks on the LTS. It's done. The changelog is actually that we can delete. So the LTS was for 375.4 387.1 and 3.94 security updates security vulnerabilities fixed anything else on those LTS releases. Okay, so next piece is we're planning to transition the install documentation and the general use documentation from Java to Java 11 to oops from Java 11 to Java 17. The idea is that we are really approaching the time when we would prefer users install with Java 1711 is still supported but there's no reason not to use Java 17 now. And so the idea is that since Debbie and 12 will drop Java 11 completely and is expected to release sometime in the April May timeframe. And that means that is our justification to switch to documenting Java 17. And you said Java 11 will continue to be supported, not past when Debbie and drop support for it right. Oh no even past that because the Debian project ending support for it just means that Debian doesn't want to Debian Debian won't have a very long life cycle right three to five years and Java 11 won't be supported by Oracle beyond like 2020 late 2024 and Debian says hey that's that's not I think they're there logic is that's that's not a long life cycle for us to have 11 in Debian 12 the other vendors like eclipse tamarin will continue to support Debian and including Debian 12 running Java 11. Okay, so it's it's not this doesn't prevent wouldn't prevent us from continuing to do it we just didn't want the hassle of describing. So if you're running Debbie and 12 you need to use Java 17 we'd rather just say everybody use Java 17 and let them then decode oh I need Java 11 fine use Java 11 instead. So there was a surprise that we had a puzzle crow has recently fixed a bug in the job DSL plug in that was Java 17 specific. And so they there are still a few of that was the most recent that's the only one I'm aware of and it's now fixed. Excellent. So, but just just be aware that this change is coming. This, we will need eventually and a plan for when we transition off Java 11 completely but Java 11 continues supported by the upstream by the Java providers until at least late 2024. So we've got a long life ahead of it. Any questions there on the Java 17 transition. Okay, so the rest of these I'm not sure that there's anything for me to say. That the two of you would be interested in because we've got an idea of how to tell people that we're ending support for something. And we're going to propose that idea as a Jenkins enhancement proposal, and then you let the community help figure out what's the best way to do this thing. So the proposals are Ubuntu 18 is end of life in April, Cento seven is end of life in June of 2024 Alpine Linux 3.14 is end of life in like May of 2023. Each of these things are not Jenkins, but it would be good for Jenkins to tell the administrator of the Jenkins system that they're running on a thing that will be deprecated and unsupported as of such and such a date, or if that date is past that they are now running on an unsupported thing. Right. Okay. But that covered all the topics that I had the same thing is for Cento seven with one additional twist. The additional twist with Cento seven is, I intend I will propose that we end the support of Cento seven, even before the operating system provider ends it. So they will stop supporting it in June of 2024, but I'm tired of it. And I'm going to propose that we end maintenance of it earlier than that. Think September, October, maybe, maybe as late as December of this year. Those are all the topics that I had any other topics that we need to discuss today. Yeah, no question though. It's like for for you a US time zone meeting. So what's the outcome of that, because like people are asking like if if we should add a link to the Twitter. But I think the second was no. But then someone has some more than one person. They asked, like, whether we could put it somewhere else, at least more visible, like really. So, so tell me tell me your question was, where is the zoom link for the books for the books, like we have a books page right. Oh, okay. Alright, so I see I see. Okay, got it. So, so make let me show you what's what Chris is asking about. So on Jenkins is that I'll page we're familiar with and the about lets us navigate to various topics and things. One of the things it doesn't have though. So we've got the roadmap we've got the download page the awards page, etc. What we don't have though is a link to this page, the books page. And thanks to Chris actually that this books page exists. But it's, it's not linked into the navigation structure at all yet. Oh, and so the question then was, where should I think Chris your question was where should it be linked into the structure into the navigation. And I'm not sure, but I did see an example from heaven. Kevin Martin showed an example today from the open stack website where they had a link to books. I wanted to see if we see it in their navigation pages so learn. Whoops, that didn't help back learn. Maybe books there marketplace maybe in marketplace. Oh yes, here's where he found it. Okay. So it was somehow in this open stack marketplace. And then there was a, maybe it was under training. No. How did he find it. Okay, just a minute. Keep looking. Community news marketing resources, maybe no. No marketplace. Docs. Okay, I do not know I know during office hours, he showed us this and it was on a page like this where what they had was. They had maybe infra solutions and nope. They had in this kind of a layout so it was inside the open stack marketplace. They had a page that showed a book image here and a brief description of the book here. And then I get button here that I clicked on the get button and it took me to a vendor that would be willing to sell me the book. So, but now the problem is this hasn't told me how he got there. Oh, go to search, search. Oh, search. Good idea. Okay, so maybe we look for books. Open stack technical publications. Ah, yes. There it is. Okay, so this is the page he showed us. Apparently it's not hooked into the navigation tree because I don't, I don't see how we get there except by doing search. But he thought, hey, this is the same kind of thing that we're using okay our layout is a little different but it's a similar concept right where we've got mastering Jenkins this jumps to the vendor that will sell it to you. Okay, here's the cover and here's a summary with some data about it. And but no place to click and buy it. Well, well no it's not so much because I can certainly I can, I can click here and it will take me to it let me buy it from the vendor from Amazon. Okay, that's going to go to Amazon. Right and this one because it's from packed I think we'll go. Oh it goes to Amazon as well okay. So that the open stack books when they come from packed publishing, they actually jump to the pack site like this. Ah, so and I'm not sure if the sellers of the books would prefer we went there if they're to the publisher site or if we we go to a seller site like Amazon or Barnes and Noble or whoever. This one probably goes to Amazon yeah so. Now Chris, I thought your question was where do we hook it into the menu. Right. And I would say we ought to put it here in the about. So did you have an about but as we moved. Oh, oh okay meaning it was removed by by Gavin Morgan or say we did. It was not sure. Okay, so so I have a I would guess we did have a link. Yeah, so let's do it Jenkins dash IO components. And where is it. No, maybe I've got the wrong site. I'll have to go looking for it. No, that's not it. So it was Gavin Morgan. These are the web components. Okay, so Gavin, this should take us there because he will have done recent contributions to it. So login site. Oh, come on show me more. Here it is Jenkins IO components. I suspect what happened is that in the transition from the standard menu to web components, Gavin may have just missed that. But you had put it into the about menu is that right Chris. Okay, so then, then now what we need to do is we need to find roadmap, and it is here. This is the navigation bar and the footer. I didn't remember the footer having much in oh yes okay right. So here we all right okay and it probably does need to be in both doesn't it. Because under resources book seems like a good choice to be under resources wouldn't it downloads blog documentation book seems like a good thing there. Yeah. Merchandise so books might be a another thing to go under. So category. Okay well so shall we make a proposal here. I'm not sure how to do it I, and I certainly don't know how to test it but I think it's, it's worth us saying hey we think it should go in the nav bar we think it should go in the footer. But I think someone already opened a PR to put in the photo. Oh they did. Oh okay so we should be able to see it in stop filtering just a minute. Let me get back to where I was there. Okay, all requests. Add books hyperlink. Okay. And now it's failing. Okay. Yeah, I think not my fault it's not in favor of it. Okay, go down further. Oh, okay so they're saying hey they don't think it should be in the footer. Okay, I'm fine with that too. Yeah, it'd be a terrible thing for it to be on the drop down under documentation. Let's see how big the drop down is. See I would hesitate to put it there because on a small screen that risks running overrunning the vertical, but the about is only five, five long. Yeah. I would hesitate to put it under documentation. But, but I guess it's, it's not unreasonable to consider it and we could for instance, decide that we're going to shrink this thing where it has two entries for tutorials now that really, they're easily easily navigated. We're just making it one, one line instead of three. And then maybe we could have a book section that says hey, here, here are the here are the user guide solution pages tutorials developer guide contributor guide and books. I put it at the very end. I'm just saying I could see, you know, you hit documentation because I'm somebody who's willing to read. Right. You know, and I'm looking for a general something. I don't know. Yeah, in fact, maybe documentation is a better choice than the about menu I was thinking of about just because it's short, but really about's not an obvious place to go for a book whereas documentation seems like a more obvious place Chris what do you think is like we should put it on those books. Okay, good. All right, so let's, it feels like then we ought to weigh in that hey, the, the, the question here was whoops where to go this one. No, I owe components. Nope, this one. Okay. Okay, so, so we've discussed in Docs office hours, Asia, and felt that we should add books to the end of the documentation menu, documentation drop down menu, and that we should save space. Save vertical space vertical vertical space in the drop down by converging by removing by replacing. The three rows. Tutorial. What about relating the sub links to the tutorials. Oh, all right. There we go. There is a big story. So we're saying we don't need the two underneath it. Right, the tutorial sub items by removing the tutorial. What would you call sub menus. I will yeah, or sub links or. Yeah, so the, which was guided tour, and other tutorials. The tutorials page as guided tour. As it's top page as it's top segment, as it's first segment, and then the other tutorials are right below it. The two are in the next segment. Good. So are you are the two of you okay with me and how I phrased it there. Yep. Agreed that it is not significant enough to justify insertion into the footer. Although I think header space is even more valuable than footer but I understand that. If they, if they don't want it in the footer no problem. No argument how about this way no argument that it not be in the footer. You left up the knot. Right. There we go. That's a really bad phrase sentences and that's terrible. No problem for us. That it is not in the footer. Footers anyway. Don't tell anyone I said that okay. Good enough. Yeah. All right. Excellent thank you. Any other topics for today. I confess I'm, it's almost 10pm my time so I'm running out of running out of. I was wondering about this time I mean this is going to be for many, because this was an hour earlier. Right. Yeah. Yeah. It was last year for G sock. Well, but the, the problem is if we move it right now it's 830 a.m. or it was at the start of the meeting was 830 a.m. India standard time. Okay. Chris what time is it for you now for 30 a.m. Oh, it's now. Oh. 10 minutes to 12pm. This is actually a not bad time you're actually awake usually at this time then huh. It's like 1150 now. Wait a second 1150 p.m. a.m. Okay good so it's the sun is up. It's sort of the middle of your day. Yeah just before lunch. Okay, all right. Good. All right so I assume this time works okay for you Chris then. Yep. It's not that you're you certainly are not required to attend. But yes he is. I miss you Chris you must be there. Okay. But I want to be sure that we've got a reasonable time for those who are in India. If when dirage wants to join us or somebody else wants to join and so. So this time works well for them because it's 830 a.m. All year round so it's not terribly early there morning but it's it's still early enough to be a you could squeeze it in. Okay. And you can do it mark without dying. But we'll see if I if I start dying. I'll end the meeting earlier, etc. Okay. I'm not going to watch. Or even a half hour. I don't know. I don't care I'm on European time so. Exactly. All right. Anything else from either of you. No, no good meeting. Okay. Thanks for your time. Recording will be available whenever I get it published. Thanks everybody. Bye. Bye.


This ECS demo uses a hybrid of ECS and the conventional game objects and mono behaviors. The player character, the gun, the floor, and the lights are all just conventional game objects, but then the bullets and the enemies are modeled as entities and they're rendered using the hybrid.rendering package. Collision detection between the bullets and the enemies is all done in ECS and then also is the collision check between enemies and the player. And so the player is represented doubly not just as a game object, but also as an entity. When a bullet hits an enemy, the enemy is destroyed, and in its place, using the conventional game objects and mono behaviors, we play a sound and some particle effects. Because these bullet impacts get frequently created, we actually use a pool of bullet impact objects.  So first, looking at the scene hierarchy, we have our player object, which is from a prefab, and it includes the gun as a child. The player itself has a few scripts attached to it, which we'll look at, including these entity conversion scripts, which create at scene start the entity representation of the player. Looking at the camera, it has some cinema machine components, which are responsible for the camera following the player as the player moves around. That's just some off-the-shelf camera logic. This post-processing volume adds a number of standard post-processing effects. The ground is just a flat plane with a mesh collider. I'm not sure why they use a mesh collider where a simple box collider would suffice. They probably made it a mesh collider simply out of convenience. The scene has two directional lights from up above. The main light casts shadows, and the other one is just four highlights as the name implies. This game settings object has a script that holds the main global state of the game. The enemy spawner script is what spawns enemies around the player at a regular interval. You can see there's a flag here to disable using ECS, so that the enemies are spawned as just conventional game objects. This is here to demonstrate the performance difference, but I'll just leave it checked. And lastly, the bullet impact pool script keeps a pool of bullet impact objects, which are created when bullets hit enemies. Looking back at the player in our player shooting script, we also have an option to disable ECS for spawning the bullets. So that's why in the bullet prefab, it includes a rigid body and a capsule collider, but these both are irrelevant when our bullets are entities. Same deal for the enemy prefab. It has a rigid body and a capsule collider, but when our enemies are entities, these have no bearing. Before looking at any of the system code, we'll look at the mono-behavior code. The settings mono-behavior holds a little bit of game state and configuration. It has the transform of where the player is currently, as well as the radius for the player and the enemies that we're going to use in collision detection. This script is treated as a singleton, so it has a static field of its own type, which is supposed to hold the only instance of this mono-behavior. It also includes a few helper methods. Like for example, when we spawn enemies, we're going to spawn them in a random point around the player. So this method returns a random point on the circle that is a radius around the player. The class also keeps track of when the player is dead, so when the player dies, we'll call player died, and we'll check for their current state with isPlayerDead. Player movement and look mono-behavior handles the input for moving our player. We can move the player horizontally and vertically, and for the player's facing, we cast array from the screen and where it collides with the ground that is the direction the player will face. The script also animates the player, given their current direction of movement. If the enemies are game objects rather than entities, then this checks for collision with those enemy objects. And when the player dies, we call this method to set its animation to the proper state. The bullet impact pool has a reference to our bullet hit prefab, and it keeps a pool of 100 game objects. And whether the enemies are game objects or entities, either way, we call this method played bullet impact, specifying where the impact occurs, and that puts a bullet impact object at that location. The enemy behavior script is attached to our enemy prefab, and when the enemies are game objects rather than entities, then this is the logic that handles their movement and collision detection. But when we use entities, this is all irrelevant, and all that matters is this convert method down at the bottom, which is the method for the iConvertGameObjectEntity interface. When this method is called, a new entity has already been created and gets passed in, along with the entity manager of that entity's world, and in the method we add and set the components to set up the entity equivalent of the game object to which this model behavior is attached. So here an enemy entity should have the enemy tag component, the moveForward component, which is also another tag component, though it doesn't have tag in the name, and then we set a moveSpeed component and a health component. So again, when we use entities, this is all that's really relevant. Now, you might be wondering what this GameObjectConversionSystem parameter is about. Well, as I explained in a video called Converting Scene Data to Dots, for various reasons, conversion of game objects into entities is done with a set of systems, these GameObjectConversionSystems. For our purposes here, it's not really relevant, so we can ignore it in this context. Anyway, so when is this convert method called? Well, in the enemy spawner model behavior. It has an enemy prefab gameObject field. And in the start method here, when we use ECS, when this flag is true, then we call this GameObjectConversionUtility.ConvertGameObjectHierarchy, passing in the enemy prefab and specifying which world we want to create it in. This creates an entity and calls the convert method we just saw, and the new entity is returned, which we assign to this other field enemy entity prefab. Using the entity debugger, we can inspect this entity at runtime, and because this is the second entity created after the game starts, it has entity ID 1. In the inspector, you can see that it has the health and move speed and enemy tag and forward tag, like we gave it explicitly in the convert method, but it also has a number of other stuff. For one thing, this is confusing because the indentation here, I'm pretty sure this is just a bug. It implies some kind of hierarchy, but for tag components that don't have any data, for whatever reason, it erroneously indents the next component under it when it shouldn't be indented at all. So just imagine this is a straight list. Anyway, where this other stuff comes from is if we look at the enemy prefab from which we converted this entity, it has, say, the mesh renderer component here, and it has a transform component, and that's why its entity conversion has the translation, rotation, local to world matrix, for instance, calling tag and render mesh components. And it also has this prefab tag component because it was converted from a prefab. The prefab component is a special tag that marks the entity as ignored by all systems, so this entity entity 1 is not going to actually render or anything, it's not actually going to be used by any system. We just want to create it so that in our entity spawner, we can create clones of it using the instantiate method. So that's what happens here in the update. Every frame we check if the spawn interval has elapsed, and if so, we get a random position in the radius around the player. If we're not using ECS, then we just instantiate the enemy prefab game object, creating a clone game object, but if we are using ECS, we create a clone of the entity, entity 1, and set its translation to this random position. Note that when we clone an entity with instantiate, the clone is a full copy, except it doesn't have the prefab tag, and so it will be an active entity used by the systems. The projectile behavior script is attached to the bullet prefab, and like the enemy behavior script, it has a bit of state, but also a rigid body component and some relevant methods, but these are only relevant when our bullets are game objects rather than entities. When our bullets are entities, all that matters is the convert method here, which from the game object instances is attached to, in this case the bullet prefab, we create the entity equivalent by giving it the right components. So for our bullets, we give them a move forward component, a move speed, and a time to live. As we'll see later in the system, time to live of every bullet is decremented each frame, and when this value goes below zero, the bullet is destroyed. The bullets are instantiated in the player shooting script, which is attached to the player object. It has a field to store the bullet prefab, and just like in the enemy spawner, we're calling game object conversion utility dot convert game object hierarchy, passing in this bullet prefab, this creates a new entity and passes it to the convert method we just saw, and the entity is returned, which we assigned to this field bullet entity prefab. In the update loop, if the player fires, then we spawn some bullets, and if we're using ECS and spreadshot as we saw in the demo, then we call this method here, passing in the rotation the angle the gun's pointing in, and that method down here creates a number of new bullet entities, creating them as clones of the bullet entity prefab we just created in the start method. For the sake of the spreadshot, we go through this loop that gives in different translations and rotations. I'll let you study that logic yourself, but that's how we create the bullets. Looking again in the entity debugger, the third entity created, entity two, is our bullet prefab entity. It has the components we explicitly gave it, which are move speed, time to live, and move forward, but it also has these other components derived from certain components of the prefab, and again note that it has the prefab tag component, so this entity itself is not actually active. We just need this entity so we can make clones when we shoot actual bullets. Now, lastly before getting to the system code, you'll notice the first entity created is this one called player. This is the entity representation of the player, and it's created by two scripts on the player prefab. Down here we have player to entity conversion and convert to entity script. Player to entity conversion is a simple model behavior that implements iConvertGameObject entity, as the convert method that's called when this entity is created, and it's this convert to entity script which is actually creating the entity and calling the convert method. This is a standard script in the entity's package, we didn't write it. It gives the entity the debugging name which is the same as the GameObject name, so that's why this first entity has an actual name rather than just entity zero. Now finally we can look at the system code and we'll go through it in their approximate order of execution. So first off is the removeDead system, which removes entities of dead enemies and also the player if they have died. At the top here it says the system updates in the initialization system group, which is the first of the three system groups. There's initialization, simulation, and then presentation. So this is done in the first group. And on each update for each entity with a health component and a translation component, we check if the health value is less than or equal to zero. Well if so, we check if the entity is the player entity by checking if it has the player tag component, and if so, we invoke player died of the setting's mono behavior. Otherwise, if the entity is an enemy as represented by the enemy tag, then we want to destroy the entity and create a bullet impact where the enemy was. PostUpdateCommands is a field of the system, and it's an entity command buffer that's going to be played back after this system finishes updating. So here we're just recording our intention to destroy the dead entity enemy, and then the entities are actually destroyed after this on update returns. The next system turned towards player is what makes the enemies always rotate to face the player. This time it's a job component system so that the work can be done in a job. The turn job that we define, note it's burst compiled, and it operates upon entities that have a translation, a rotation, but also an enemy tag, except we don't need to actually read or write the enemy tag, that's why it's specified through this attribute, rather than in the list with the other components. In the job, we have a float three defining the player position, the target to turn towards, and so for each entity, we're going to be reading the position and reading and modifying the rotation. By subtracting the position from the player position, we get a vector pointing towards the player. We zero out the Y component, because we always want our enemies rotated flat on the XZ plane, and to get a quaternion to set as a new rotation, the Unity Mathematics package has this quaternion.look rotation where we specify a facing direction and an up direction. So that's how the job is defined, and then in on update, first we check if the player is dead, because if so we don't want the enemies to rotate towards the player anymore, instead they should just keep going straight. But otherwise, we create a job, setting the player position from the settings class, and then scheduling the job. As I mentioned in a previous video, when you have an eye job for each, you pass in the job component system itself as the first argument, because the schedule method wants to register the query that gets built with the job system. There's a query implicit from how the job is defined, and the component system needs to keep track of that for the sake of managing the job dependencies. Next, we have the move forward system, which moves forward both the enemies and the bullets. So our move forward rotation job here operates upon anything that has a move forward tag, but also has a translation, rotation, and move speed component. The job needs to know how much time is advanced, so we have this dt delta time field, and in the execute here, all of the components are read only except for the translation. It's the translation that's getting updated. The vector of change is dt times our speed value multiplied by a forward vector derived from our rotation, and this change vector is then added to the current position, which we assign as the new position. In on update, we create the job and schedule it unconditionally, and we get dt from time delta time. Next, we have the player transform update system, which is responsible for setting the player entity position from the player game object position. If the player is dead, they're not going to move, so we don't need to update this position. Otherwise, for all entities with the player tag, which should just be one entity, we want to set the translation, so we assign it to pause here this new translation with the player position from settings. Next, we have the collision system, which is the most complicated system, so we'll come back to this. First, let's look at time destroy system, which is the last one. This system is what destroys our bullets when their time to live component is less than or equal to zero. Like in the remove system, we're going to be destroying entities, and so we'll need an entity command buffer, but we're going to be recording our commands in a job, which isn't necessarily going to be finished immediately after the on update here returns. And so we can't use post update commands. Instead, we want to get an entity command buffer from the end simulation entity command buffer system, which is the entity command buffer system that updates at the end of the simulation group. So an on create manager here, which actually should be on create on create managers deprecated upon creation of the system, we're getting the end simulation entity command buffer system from our world and assigning it to this field buffer, which is really not appropriately named because it itself is not the entity command buffer. It's an entity command buffer system, but close enough. And so down here, when we create our job, the calling job, we're going to need to call create command buffer and make it concurrent. And the reason it must be concurrent is because I job for each with entity here, the calls to execute maybe split up into separate sub jobs, and those sub jobs may run on several threads. So the entity command buffer might be used concurrently. That's why it must be concurrent. Anyway, this calling job, it operates upon everything with a time to live component. And in execute, it decrements the time to live by the delta time. And if the time to live then is less than or equal to zero, we destroy the entity using our concurrent entity command buffer. Note here the job index parameter we get an execute, we want to pass this into any method calls on our concurrent entity command buffer. For reasons I'm not entirely clear on, but that's what it's there for. And note also that when we schedule the job, we call this method to tell the entity command buffer that the job has to complete before the entity command buffer should play back. So this is how the bullets get destroyed when they time out. Lastly, looking back now on the collision system, if any enemy gets within radius of the player, then we want to document the player's health to below zero. And likewise, we want to check for collisions between any bullet and any enemy. And when there is such a collision, then the enemy health drops below zero.  As long as the frame rate isn't super low, then the user can't tell the difference. Whereas in the other systems, we used iJob for each. Here we're using iJobChunk. And when you schedule an iJobChunk, you have to pass in a query. So in onCreate, we create some queries. Player group should just match the player because it looks for the player tag. Enemy group is the same, except instead of player tag, it looks for the enemy tag. And bullet group matches bullets because only bullets have the time to live component. I suppose time to live here should be read only like translation, but it's actually not accessed at all in the job anyway, so it doesn't really matter. So in this collision job, the chunks are going to have a health component and a translation component. And so we need these archetypeChunk component type fields to get those arrays using getNativeArray down here. In the case of translation, we only need to read it rather than write, so we mark this read only. The job also needs this array of translations, which we'll just call trans to test against. And this too is read only, we're not going to modify any of the translations. And note here the deallocate on job completion. This special attribute makes sure that the native array here is disposed of once the job completes. The radius here is the radius of collision. If two translations are within radius distance of each other, then they're considered to be colliding. So anyway, for each chunk we have its array of health and its array of translations. For each entity, we're accumulating a damage number. Every time there's a collision, then we add more to the damage down here, add damage plus one. And if the damage is greater than zero, then we subtract it from the health of the entity. Then for each entity of this chunk, we perform an interloop through all of the trans to test against. And so we do a collision check between the position of the entity and each position here, pause two of the trans to test against. Now the collision test here simply takes into flow threes and through the Pythagorean theorem, we can see if these two positions are within radius distance of each other. The note here actually instead of radius, we're using radius squared because that just makes the calculation here cheaper. Because we only care about relative distance, we can get the distance squared between these two positions and compare that against the radius squared, which is cheaper than having to compute the actual distance between the two positions because that requires getting a square root, which is an expensive operation. So there's just a little trick to avoid that extra expense. Anyway, that's how we do our collision check. It is certainly not the optimal way to do collision detection between many objects. A proper collision detection algorithm would involve at the very least a so-called broad phase test that uses axes aligned bounding boxes. But anyway, this is meant to be a simple example. Just keep in mind this is certainly not the most efficient way to do collision detection. Anyway, that's how the collision check is performed. And when there's collision, we increment the damage, which is subtracted from the health. As current configured in our game, the health of the player and enemies is always one. So a single collision is an instant kill. But if we set the health to something greater, then it could take multiple bullets or multiple collisions to destroy enemies and to destroy the player. So in the update of this collision system, again, we're doing two sets of collision tests, collisions between the player and enemies, and collisions between enemies and the bullets. So we're creating two collision jobs, EVB as in enemies versus bullets, and PVE as in players versus enemies. So these jobs need the archetype trunk component type values for the health and translation. So we get those from settings. We get the radius collision value for the bullets to the enemies and for the enemies to the player. And note that for the job, we're passing in the square of these radii. And for the trans to test against, well, in this first job, it's the entities versus the bullets. When we schedule the job, we pass in the enemy group. So the chunks are going to be the enemy entities. And for each enemy, we want to test it against every bullet. So from our bullet query, we call two component data array translation to get an array, which is a copy of all the translations of all of our bullets. And then likewise down here for PVE, players versus enemies, it's the player query passed a schedule. So in this case, the chunk loop is always going to be iterating just through one entity. But for trans to test against, we get an array, which is a copy of all the translations of all the enemies. You may be concerned that copying these arrays every frame is expensive. And well, it's not the cheapest thing we might do. But because say here for each enemy, we have to iterate through every bullet. Well, then we're paying a big cost in terms of memory access anyway. Like say if we have a thousand entities, and so we have to iterate through this bullet translation array a thousand times. Well, the upfront copy has about the expense of reading through it once. So it's really not adding much to the workload. Accessing all this data a thousand one times is not that much more than a thousand times. So that's everything for the code of this example. You may be wondering how are these entities all rendered? Well, that's handled by the hybrid dot rendering package, which has systems that run in the presentation group. It's the render mesh system here that does the actual drawing of the bullets and our enemies. All we need to do in our code is make sure our entities have the right components, which they do. The details of this though I'll cover in later videos.