Item number, SCP-238. Object Class, Keter. Special Containment Procedures, SCP-238 is currently contained by the original means. Current SCP protocols have proven unable to fully contain SCP-238. All exploration of SCP-238 is suspended until full sustained containment has been achieved. Any and all personnel attempting to enter SCP-238 are to be physically restrained and moved to an outside containment area. Upkeep of the current barrier is top priority and a minimum of two personnel are to be present at all times for upkeep and security. No testing, samples, or exploration may be conducted within SCP-238 until full containment of SCP-238 has been achieved or with approval by site overwatch. Any and all persons entering are to be deemed missing, presumed dead. Description SCP-238 is an enormous underground facility with a single entrance on the island Shmytta to the extreme north of Russia. Tunnel networks have been shown to extend for thousands of kilometers with major junctions under data expunged. When originally found, the entrance was sealed behind a massive wall of bricks covered in carvings. This wall was removed and exploration began. Initial tests showed that the walls of SCP-238 were primarily fossilized tissue of unknown origin. Several structures within the facility led initial exploration teams to conclude that SCP-238 is or was at least half biological. Shortly after discovery of a central chamber reported to consist of partially rotted flesh and badly decayed metal structures, personnel began to disappear and numerous accidents claimed eight lives. Noises and other hallucinations were reported. Eight containment walls and associated personnel were destroyed by unknown means with a survivor reporting unconfirmed. In addition to rapidly escalating aggressive phenomenon by SCP-238. Replacement of the original wall has contained the item effectively, but new SCP containment and research strategies have been requested as the current containment prevents in-depth exploration and experimentation. Addendum 238-S7 Upon the escape of six juvenile instances of SCP-1013, the local SCP team assigned to SCP-238 reported SCP-1013 squeezing through the original wall and entering the underground chambers. After several members of the O5 council and doctors were notified, they elected to send in a single team to retrieve SCP-1013. Further information regarding the expedition is found in document 238-S7A with clearance level 3 required. The end result of the retrieval team were six dead, two critically injured, one missing in action, and the six juvenile SCP-1013 instances being recaptured. Further research into SCP-238 will be carried out under SCP supervision. Object 238-S7A Audio log of retrieval of SCP-1013 Begin. Skip 3 hours 41 minutes 16 seconds. Personnel D-299 I don't see nothing.  Not even a f**king exit. Agent, you will hold your comments. Agent is currently covering the central chamber, so nothing can escape. Personnel D-299, like us? I don't see... Agent, shut it. Personnel D-299, why I have to... Agent, I said quiet! Now!   There's movement up ahead. Sounds of scraping and grinding are heard. Several minutes pass. Personnel D-299, that don't look like number one, but that ain't natural. Agent, incomprehensible. It's not. Delta 299er, open fire now! Sounds of gunfire are heard. Agent, life signs terminated. Personnel D-299, life signs terminated. End. Lesson complete. If you missed the previous orientation, go watch SCP-237, self-made man, right now. Or for the complete course, watch this playlist.


for 321. All right. Hi, everybody. Welcome to the Jenkins Advocacy and Outreach SIG. Today is March 24th. Make sure I have my date right. So on the agenda, I have the discussion to remove. Jenkins is the way on the Jumbotron. The Ukraine imagery messaging on Jenkins.io. Jenkins is the way hosting sites, GSOC, and CDCON. Is there anything else that we should add to the agenda? Those look good to me. Okay. Okay. Let's get the party started. All right. So Remove Jenkins is the way on the Jumbotron. So I know John Mark has been doing some work on that. You want to give us an update on that, John Mark? Actually, I think that one was my action item, Alyssa. Sorry for me jumping in, John Mark. Okay. Sorry. So John Mark, go ahead. So, sorry. So what I did was adding the CDCON announcement. Yep. But I don't remember removing or being asked to remove the Jenkins is the way. Right. And that was my mistake. So, Alyssa, let's put the action item on me to remove Jenkins is the way from the Jumbotron. It's an easy removal or we could have, John Mark, I think you're at the end of your day. So it's probably just quicker for me to do it just because we get it done. Sorry that I forgot to do it. I just completely forgot. Now, and the Jenkins is the way.io.junk or the Jenkins is the way.io is available for us as a URL for quite a while. Right. It's at least until end of this month and you renewed the DNS, Alyssa. So we still own the name for that, even if we don't have the hosting for it ultimately. Yes. Okay. Good. Now, we do have a, we probably want to do a, could you put a separate note here, Alyssa, that we need to work with the infra team to make a redirect from the old location to the new stories.junkans.io location when it's available. We're on the old location to the new location and that's a good enough description. Okay. After, we should actually put after the new location is available. Okay. And this is your action item, Mark, or who is? Yes, that's for me. Okay. Yeah. So this is a little bit of domain name server configuration stuff that we need to do and we may need to work with you to get the permissions to do it, but ultimately it's something that the infra team can help with. Okay. All right. Moving on to the next topic. Okay. So Ukraine invasion by Russia and the Jenkins project. So proposals to temporarily change the Jenkins logo on Jenkins.io to support the Ukraine war or the Ukraine issue. The board has agreed that CDF message can be placed on the site immediately but would move to vote and more discussion to be had about the Cossack image as Oleg has concerns. So I know that Jean-Marc is working on that. Thank you, Jean-Marc. And I'm working to obtain the SVG file for you if you still need that. Yes. So I can show you a prototype of what I have. I quickly whipped something together with Gitpod. So do you want me to show that? Sure. Should I stop sharing? Yes, because then I'm going to share my screen. So there we are. So this is Gitpod, like just going to make it a little bit bigger. And so what we're seeing right now, Jean-Marc, is an IDE view, right? Right, correct. So this is where the configuration is living here. I'm on my fork and on the master branch. So I have the local environment running and I can see it. So it's running in the cloud. And this is how it looks currently. And see the size of the icon here. I am going to change, now this is in my way there, I'm going to change the branch here from master to stop the war one. It will reload and either it does it, where I need to restart the server. Oh, yes. Oh, that's a cool demo, Jean-Marc. You look nice. There's huge potential with that tool, especially for Jenkins.io to do these kind of experiments. So enough sales pitch. This is how the icon that I have been provided looks like. So the comments are there is a white background here because it's a GPEG. So there is a little glitch here. We see the difference between white and gray there. And the image is wider than the initial one. So that means that the sizing is not equal to the other. The Jenkins is smaller. This will be an issue to have it as large as the other in the same rendering. But I think, well, this is what I got working. Jean-Marc, just for experience, would you be willing to make your screen increase if this Chrome do a control plus? I want to increase the zoom factor. Yeah, keep going, keep going, keep going, keep going. Okay. And it's still looking okay. Good. All right. Go back down now. The largest I have, I think it's a little bit more reasonable. So the picture works, the GPEG would work, but I'm bothered by the background. So we make it transparent. And we could convert the GPEG to a PNG and then make the background transparent with some online tools. I've got an online tool I've used that will make an image background transparent. Yeah, or what's her name? Cassenia. Yeah, Cassenia can supply the other one. So unless we don't want to continue over-engineer the resizing. So I did reach out to her this morning and she's been quite responsive, but I'd wait until let's give it to, like towards the end of my day here and for her to respond. But she said she's really, it's really important to her and she appreciates that we're using this image for this messaging. Yeah. So Jean-Marc, you mentioned about the sizing. Is there a specific sizing that I should give her to resize the image? No? Well, yeah, sorry. So for the dirty details, the image can be resized that way. This is the maximum I can do. Okay. Because then going above, because this is how I forced with going further gets clipped by the inner working of the system. Then to get that working, I need to start getting into the plumbing and so for me, if there are no remarks on the sizing, it's the best we can have and is good enough. My humble opinion. Okay. It doesn't hurt the eye. So. Right. Okay. I also had asked Cassenia to send us an image with just the regular Butler. Since we're going to be talking more about this and voting on it, I thought we'd give another option just in case if there's, because when I received this image from Cassenia, I also question what does this, the character mean? Yeah. Right. So and it seems like Oli had the same question. So I figured somebody else is going to have the same question. So I, so let's see what she comes back with. I think that the second option is again, just the regular Butler image with the flag in the back in the circle and that flag stopped the war messaging. Okay. I'm going to show it again. Here you see clearly the sizing thing. So so changing the background here to have the Ukraine and some wording stopped the war or something like that. Yeah. She may do something with his eyes because now his eyes are closed or she might have it open. I don't know. But and I like that Oleg noted that the Captain icon had switched, they switched theirs, which is a relatively simpler icon to use the Ukrainian flag colors as a background. So the the red, I think was what you were alluding to, John Mark here could be could be the two colors of the flag of Ukraine. So interesting idea. Yeah, get but change their logo also to have the two colors. Nice. Okay. So there, if I get two images. So first question, do I fire this as a pull request? Do I wait for a better image? Well, I can mention it as a comment and fire a second one if we have an alternate picture. I'd put it up as a pull request so we can use that as a way for people to view and discuss it because I had to think a little bit about what it meant based on the wording and the posting on community dot Jenkins dot I always I think people will will do a better job if they experience it by going right to the product, the preview site. So if you're okay with doing a pull request, John Mark, I think it would be really great to have a pull request just because we could do a preview site of it. Yeah, everything is ready. And I can I can do that. Okay, so good for me. I think we looked at a practical example. So I can stop sharing, I believe. And we showed off dynamic development using a web hosted Jenkins dot IOS site. Well done, John. I need to prepare something to show off. Great work. All right, okay, so we're going to move on Jenkins is the way site hosting on the and URL update. Just just a little question. The board message. So text in this we live we leave for a second phase. Not for a second phase, but for a second pull request that I'll submit separately, John Mark, because the board said yes, go ahead, no vote needed. It's the same text that CDF used. Let's get it in there. Whereas yours will be using your pull request will use for evaluation discussion. The other one, I'm going to get it in there and get it merged pretty quickly. And where are you going to put the text? Don't know yet. I have to go find the place on the page. Because I know where it is. If you allow me, Alissa, can I show my screen again? Yes, sorry to be nitpicking, but this is great. It can share. So this is controlled. So this text here is controlled at the same place as the the icon. So this is where we could put it. We just need to see how it flows in these kind of details. Otherwise it needs to be in the jumbotron. And I like where you highlighted. I think that's the best choice for where to put it. So I will I will propose that as the location. And then we can look at it in the preview to see how it how it flows. Okay. But we won't separate PRs. Otherwise you look at where I change it. And I just show you here. This is where it happens. Yeah. So this is where I put the image. And this is here where you can. Okay. Now, sorry for the interruption, but these little details can save us time. Back to you, Alissa. You're on mute. Still on mute. Sorry about that. Okay, you can see my screen now? Yes. Okay. See moving on to the next topic. So the hosting of the site for Jenkins is the way I we've decided stories. Jenkins.io. Anything else you want to add to this mark? Gavin Mogan shared that he's making good progress on it and and has good hopes that he'll be done with it by the end of March. He may be done with it. Before that, he said, hey, he's got the the caching configuration ready that's used for the content distribution network on Fastly. He's got the Gatsby site done. He's got the repository ready. So it's it's getting very close. He just needs a little bit more time to work on it and felt like he's pretty confident he'll have it done before the end of March. Okay. Great. And by the way, he's using this also as a place to experiment with alternate site generation techniques with other things that may ultimately help us on Jenkins.io on the documentation site. So he's he's he's doing the great kind of stuff that Gavin does. Yeah. Yeah. It's it's it's a lot of he has spent a lot of time on it. So I really appreciate it. All right. So moving on to Google summer of code. How did the one hour brainstorming went, Mark? I for me, I was thrilled with it. We had so we had Rashab, who was a former G Sox G Sox student. And we also had harsher who was interested but unable to attend who wants to mentor as well. So we had two additional mentors plus me plus Chris Stern and two candidates involved and one who couldn't be there. So we had four of us of a group of six or eight that were interested and had a very good discussion in the process of the discussion. We found three or four or five different topics where any one of us would have missed it. But because we were all sitting together talking about it, we realized, oh, this is important. This is important. It was one of those experiences of remembering why public and open collaboration is so valuable. Because we benefit from each other. Yes, I admit, the two people were effectively preparing two different proposals, and yet they both benefited by being together to talk about how they think it should be done. Nice demonstration. Great. Yeah. So do you suggest that we do that for other project ideas? That was what we launched this morning in John Mark, I think was interested. John Mark, maybe you want to talk about how you envision it working for plug-in health score? Yeah, indeed. So the topic was raised at the end of today's office hour. Some very good questions and with a different point of views on it. And so we agreed that there was a strong consensus to make likewise a brainstorm session on the plug-in health score initiative. And so the current proposal that was published on the Gitter channel is to hold it on March 31st, hoping that's correct English, at 2 p.m. UTC. Okay. So and we're going to collect the same process as for the get cash. So going to collect as many questions or ideas or topics beforehand. So that's rolling. Okay. So that's for the plug-in health score. What about the rest of the project ideas? Should we? There, I think it will depend on what I think is we watch for that. In order to do one of these brainstorming sessions, we need someone who is very actively willing to run the session, who is actively willing to gather the questions, facilitate host. And I'm not sure that the other project ideas have that same active thing. I would expect, for instance, Chris Stern will probably want to do it. But let's go through a couple of these sessions so that we learn from them before persuading others. Okay. Okay. So one step at a time. Well, at least, John Mark, your thoughts? I think it's an idea. It helps. Let the people come with a question and let's feel on the Gitter channel what is the sentiment there because it's, I won't say expensive, but energy-wise it requires the mobilization of resources and stretching time zones on that. It's worthwhile to do, but it would be a pity to waste it unnecessarily if it can be done out of waste. This is my standpoint. Okay. I just wanted to correct one thing, Alyssa, on the next line you're saying there's one proposal, a draft proposal received, there are two and probably a third one today. The second one just come in, John Mark? I didn't. I've seen it yesterday evening. I have it on my planning to read it. A personal comment on that, it's a very powerful method. It's not easy to do. It's an important step for the attendees to do, but it's super powerful and it prevents wasting time from the mentors reviewing the proposals. So we definitely need to promote that and the community gains from the exercise. So very good idea. The other one is, I'm going to tell you after the meeting so you can- I can look it up. I can look it up after the meeting. No worries. I'll just leave it blank for now and I'll fill it in after. So we will be doing a call out for mentors to review the proposal drafts. Yeah, even if it's not their specialty. So it is my personal point of view, already be acquainted on the subject and there are enough comments that can be done on the document by just looking at it and these comments can help the students or always forget the word, but the candidates to have a more powerful presentation. The more people look at it and comment at it, the better everybody will grow. That sound okay, Mark? Okay. Yes. I'm going to send it out and try out the mailing list for mentors. And then I took a stab at working on a template for grading and let's see what it's here. So this is just my initial stab at this. I will reach out to previous mentors and solicit their feedback. But basically what I have here is a ranking system number from one to five. Jean-Marc and I discussed this in great details yesterday and again, not really knowing what Google is going to send us. So basically I'm thinking, okay, we'll send, they'll give us a PDF file, we'll have links to it and then links to each of the proposals and then reviews, reviewer notes. I've got reviewer notes and grading from each of the mentors, average score, final decision. So based on, so I will take this and solicit it amongst the previous mentors and see what else that we need to add, delete, edit. Okay. There are two things we discussed yesterday that we may maybe add for. So one thing is we need to describe beforehand how we are going to deal with ties. So meaning when two have the same grade for preventing a straightforward ranking, what is the method, how we vote or how it works. The second thing that we need to work on is what are the questions, what are the things that's being graded. So meaning what is the question that the mentor is answering when accepting or why not and give some guidelines. So we're making progress. We start to have a good understanding thanks to the work that Alyssa is doing with the previous mentors. So looking good, we're getting prepared. So Jean-Marc, I think one of the things, so you mentioned about how do we resolve ties. So in reading Oleg's notes from previous year, the things that's going to, I think the thing that's going to be helpful for us is the reviewers notes. So that's going to be looked at carefully. And at least that's what I do too when I'm doing the CFP for DevOps, World or CD-Con. That's where the reviewers note is going to come in really handy. But nonetheless, I will still ask that question from our previous mentors if there's other techniques or ways to cut the ties. Yeah, what I want to prevent is, what I want to help us is that we have some objective criterias that we can look at to help us in making a decision. And that the decision is not made, there's always at the end a human decision. But I don't want to fall into the pitfall of, yeah, okay, I like this person and I'm choosing him. No, I wanted a straight, clear process with guidelines and described before him. So there's my personal point of view as we discussed yesterday. I've been through enough of these because it's important for the people. So we need to respect that. Sure, absolutely. So the question I have is, do we need to do a pull request for this, the template, just to get discussions or input on it, Mark? That's a good insight. I think we certainly want, just as John Mark said, we want to find ways to express objective criteria for the evaluation and the template's a good start for it. Yeah, why not? I wonder if maybe it ought to be rather than a pull request, open it as a discussion on community.jankins.io in the mentors list that John Mark has started. Because really, it's probably good that it be publicly visible discussion, but that the voices that are being heard are mostly mentors, not the candidates themselves saying, hey, I want to be judged by this or that. Okay, so the community list that John Mark created, that's for this year's mentors. But what if we want feedback from previous year's mentors? If I would guess that we're unlikely to get a lot of feedback from them, but if we do, we can certainly accept it by email and then sure as a proxy. Right, exactly. Okay, got it. John Mark, does that sound okay to you if we use community.jankins.io? I worry that if we use a pull request, we will be much less likely to get feedback than the very approachable format that community.jankins.io is. Yeah, this is what I had in my mind when starting that. Great, I will do that then. Anything else you want to add on this topic, John Mark? No, it's looking good and a very interesting experience. For sure. Like it. For sure. Okay, so then we'll go on the next, the last item, which is CDCon. CDF finally got back to me about our Jenkins contributor summit. ETA, this is just an ETA, is that the Jenkins contributor summit will be on Friday, June 10th. I asked for a Thursday, June 9th, because many of us have to fly back out, but most likely they said it's going to be June 10th and they won't know for sure until they announce the agenda next week. Okay. They will not have, they will not have like an exhibit, exhibit or booth, but I think they just have a small area. Probably with tables, I think they don't probably don't have the details on it because I asked a question and they couldn't answer it. But I think right now they're looking at something quite small for us if, you know, to staff. But at this point, we don't know, we don't have enough information to plan how much staffing and what is needed and all that yet. Okay. Mark, when do we start working on, on that subject? We're still waiting or? No, we could, we could certainly start any time. I think we ought to set ourselves an April 1 start and just agree that we're going to get started then. I haven't launched it yet, but I think it's, it's getting time. We need to, we need to be sure that we, we generate interest and that people who are going to be in person. Oleg did ask a question in governance yesterday. Hey, what about since CD-Con is now allowing remote presentations, should we have a remote contributor summit? And my thought was, or what CD-Con is allowing is hybrid. So they're going to have both remote and local. But my, my thought was, I don't want to attempt a hybrid contributor summit. Let's either be all remote or all local. And for CD-Con, I think it should be all local. We've got some good participants in Austin itself, who are local to that community. And I think we'll have others who will be joining the conference physically attending. So let's, I think we should do this one local and then maybe two or four weeks later we could consider doing an all remote contributors summit. Yeah, I think that makes sense. Just don't forget to, that I'm, I'm available at least for the preparation part. And so I'm new to this, but I think I can add my stone to it. I can help dig up some of the material that was used to set up for the last contributor, online contributor summit and that, hopefully that can help us get the ball rolling. Jean-Marc, so I'll dig something up and I'll share with you. Yeah, going to see, just that I want, I'm busy with the mentoring and, and administration of TSOC, but just a reminder, I can, I can give a hand too. And I'm interested to learn. Although this one, because it's co-located, I think really it's best for Alyssa and me to work it together, Jean-Marc. We appreciate your, your help with the organizing, but ultimately I've got strong incentive to do this because I'll physically be there running it. Right. Okay. Makes sense. Yes. I just watch and learn from it. Okay. That's it. There's anything else? Thank you.


Regulating agencies in Nigeria have been charged to make clear policies in order to enhance bilateral trade with other countries and to revive the country's economy. This charge was given at the International Business Conference at Expo 2023, organized by Lagos Chambers of Commons and Industry in Lagos. Correspondent Paul George was there. Gathered in this hall are businessmen and women from different parts of the world at the second day of this conference. The event is not just to discuss bilateral trade among countries, but to improve and encourage small-medium enterprises in Nigeria. The president of LCCI, Michael Olawale Coal, believes that if the country's regulatory agencies are reformed, Nigeria can become one of the top countries of the world. Regulators must place small weight on growth and improving competitiveness as part of the force in which regulatory policies are formulated. I certainly believe that Nigeria can become Africa's infrastructure. The world besides the regulatory agencies is necessary as a condition for attractive global interest, which also supports economic growth. The director-genera of LCCI, Dr. Chinyure Aumona, says having some of these regulatory bodies in the conference help answer some questions of the guests. She spoke alongside others. We can see now we're having this question and answer session. They have been asked some questions and they are getting answers. So that's what we want to happen, that the government authorities are part of the conversation at every point in time. This is a very good event, which is to look at how we can improve and build internationally. At this point in time in our country, we have a global village and we're looking at how to improve normal exports. So I think it's very timely. And at every point in time we're working with various state governments, various at the federal level and the state, to ensure that these investors, when they come, they stay. And they can improve and include their business and open more opportunities for people to be employed. We are letting everybody know that standards are available and also let them know how to receive, use and achieve the requirements of the standard to ensure there's compliance meeting the requirements of the standards. So many are not able to interpret these requirements of the standards. We are here to let them know that it is easy to understand and to use and readily available for the Nigerian populace and direct them to where and where to get it. Others who spoke including Benjamin Oma and Jetty Bejerum agreed that Nigeria is a marketplace and that they cannot wait to strengthen the ties in business. Nigeria for us is one big country and the best country for Africa to do business. Nigeria is very developed and secluded. We will have best land but we are not developed in agriculture. So now you need that experience to come to develop it in our country. So that is our challenges.  We need that experience for maritime trade. So now we need that experience to come to implement and equal to Nigeria. I'm here because Nigeria is a marketplace and as a denominator for future growth and development is the place to be. It's a long-term investment when you want to do business in Nigeria but you can gain so much from it across the sectors that we work in. As most countries of the world experience economic challenges the speakers are hopeful that with the right policies Nigeria can attract investors for sustainable economic growth. Paul, George plus TV News.


Ladies and gentlemen, the President of the United States, and Mrs. Reagan, accompanied by Governor Landon. It's a great day in my life, and it's a great day in the life of all of us. To have had the privilege that we have today of meeting the President of the United States and Mrs. Reagan. I give you now the President. For Governor Landon, Mrs. Landon, Governor Hayden, Senator Casablan, Senator Dole, Mayor Wright, Ladies and gentlemen, I can't resist saying this.  Today we celebrate, I know it will actually be in just a few days, but we're celebrating Alph Landon's first century, half the life of our nation since the framing of the Constitution. As you know, it seems right to me that Alph Landon was born in the centennial year of the Constitution and is now part of its bicentennial year. And after all, you ask what the America that our Constitution created is, what it means, and you'll get back many answers. For example, America means a dream and the freedom to chase that dream. America means government of, by and for the people in a land where the sacred soul of humanity is not only respected, but revered. America means justice under law. It means peace and decency. It means a bright Kansas sun rising over fields that hardworking broad-shouldered farmers have planted with prayers and plowed with hope. But the funny thing is that no matter what you say when you talk about America, you'll also be saying something about Alph Landon. In a hundred years, Alph Landon has chased many dreams and caught most of them. Along the ways found time to stand for the American values of liberty, democracy, and opportunity. And no one is more the living soul of Kansas, which to me means quiet strength and the simple decency of all America than Alph Landon. Now, Governor, you preceded me by a bid as our party's nominee for president, and I had a little better luck while I also had better years in an easier field. But no one ever did prouder as a candidate by his party or the nation than you. When it was out of fashion, you warned of the dangers of too much government and too much government spending.   Well, don't spend money you don't have. I just wish I could get you to come back to Washington and help me drum that message into the Congress. But I guess the next best thing to having you in Washington is having a chip off the old block. I know you're proud just as I'm grateful that Nancy is in the Senate. She's doing a great job. So this is my birthday message. It is that all Americans are thankful for what you have meant to our country.  I know the time has come to leave, but I just couldn't help but tell you a little experience. I have met the governor on a previous birthday some time ago and I expressed the wish that I could meet him again on his 100th birthday. He looked me up and down. He said, you seem to be in pretty good shape. I think maybe you can make it.


G'day all our robots here. We are still stuck with the dodgy webcam But we have a fresh cup of tea and we are going to have a look at task 3 So task 3 is a task you're kind of doing with us not on your own Because there's a lot of strange things going on. Well, I shouldn't say strange There's a few new things to learn that we're going to show you how to learn Now the skill we're picking up here is API diving Learning how to get into the Java API to see what's in there Modern developers we got massive libraries available to us, but we got to work out how to see inside them and use them So the task you got given is to draw a 20 by 20 grid on the 720 by 720 window That's very easy if you're back in processing land, but we're not we're in Java land So there's a little bit more to deal with Got on the left here my example solution. So when you see me looking over there, that's what I'm doing I'm doing this the example solution is an old one and and I'm really fiddling with it a little bit So I'm half doing this live and half doing it off an example I don't want to go too far off into the weeds, but I still want you to see what it's like to do this my or yourself Okay So I know I want to do this with AWT, which is a Java library I can go looking up Java documentation, but I don't love what Java documentation gives me a Lot of it's out of date because Java's so Java API though is a genuinely good safe place to go looking now I'm Java 8 in this course So I'll just make sure I get the right API I receive platform 8 good and I kind of know where I'm looking so I'll do let's see if I can get this to snap well nicely and That's this one So back over to my actual code and the main So I kind of know where I'm going I know I'm going to be using Java AWT and a tiny bit of Java swing to get something under the screen And then I want those topics dropped. They're not in this course We need them to get something on the screen though one of the designs in this course is that we do graphics and user interfaces ourselves instead of relying on libraries Because that exposes lots of fun things for us to think about but we can't actually draw on the screen by ourselves We do have to hook into the libraries at least somewhere and then try and do as much of it as cells as we can So as the course goes on and we ask you to do functionality X or functionality Y Don't go looking up how to do that and swing or AWT. You might get an answer, but it's not the answer It's got to do with this course But we do have to hook into it to get us going so I want a J-frame I know that a J-frame is anyone going to get something on the screen And then I really just want to control the canvas on that J-frame So my main class instead of being a main class by itself Has to extend a J-frame And now I'm like what the heck's a J-frame we can see that the VS code is helpfully telling me it's from JVax swing Because it knows all the standard libraries and I'm gonna have to import that JVax. So JVax was Java extensions Swing.J-frame. I think I also have to use a J-panel But after that I actually want to use the Java.AWT.Star. That's where most of my graphics is going to come from There's a Java abstract windowing toolkit. It just needs more basic graphics So I'm extending a J-frame. What does it mean to extend a J-frame? Well, it's a thing that can pop up on the screen All you have to do with a J-frame is say what's going to happen when it runs But you'd still have to actually make it run. So Main is the J-frame, but Main also has the main method So what the main method now does is build a new version of itself So this this object is Building itself which feels a bit weird, but it's a static main method that's doing it You should think of the static main method as kind of being separate So it's built One of itself and then because that thing it's built as a J-frame. It can just run That something will happen But we don't know what yet So I better to find that run method to explain what I mean by running So the run method is on the main class Can be private I suppose but I just get in the habit of doing Public everything here because privacy doesn't really matter in this context Actually, I don't think I need the main method the run method just yet. I'll get to the run method in a minute The main I'll need a constructor though. So why don't we come in this out? I'm trying to learn the keyboard shortcuts as we go. I'm not succeeding I'm not normally a VS code user, but I should be So this constructs the main window and then just whatever but we better write a constructor So there'll be a built-in constructor that it uses but that doesn't do much of interest So we make our main constructor Now here we're going to tie into a bunch of things that a J-frame knows how to do and if I go to Jabax Swing J-frame in here Javax swing So it's just Javax swing and then down in the all classes section. I should see the J-frame up here Often you're doing a Google search to get to these things, but I know where I'm going. This shows me all the methods available When that J-frame take me a lot of experimentation and maybe a few tutorials to learn what I really want to be doing here I know that I want to set up the default close operation because J-frames when they open you can't close them You got to control see the whole application Set default close operation, and I just want to set it to and what to exit on close I know these are the special magic things, but if I look in that documentation, they'll all be there So if I look for set So default close operation click on that and it'll tell me the different Things I can do on close do nothing hide dispose eggs. Well, which closes down the whole thing Let's just run this to see what it does. I'm curious So job is doing its thing and Running does absolutely nothing It's running and that's that not super surprising Because These things don't actually appear on the screen yet Set visible true pack is is useful for other things Let's set visible truth. See if that's enough to get on the screen Oh, we haven't even set it given it a size yet. So it's probably still not appearing on the screen That's something's appeared. There it is. It's this thing up here in the top left and J frame has appeared good Okay, now what I really want to do is I'm going to put onto this a canvas Which is just representative of a sheet of paper that I can draw on so I'm going to make myself a canvas as a Subclass and it's unfortunate. We have to jump to subclasses so sweet, but we can do that We'll learn a little bit more about well, we'll learn more about subclasses. I guess if you go along that I get huge menus I could make a separate class, but it's a waste of file space public So this is my canvas that I want to be able to draw directly on and it turns out you can draw straight onto something called a j-panel which comes from the Library as well. So I better import the j-panel as well. So I just go to importing star from swing Some people prefer to import everything explicitly I tend not to Now I'm going to get rid of this serialized error window In a minute Same one way. Well, actually, why don't we do that now? Do I have the magic incantation over here? Yes so This extend this error that comes up the serializable class main does not declare a static variable Static final serial version UID field or type long This is like a Java programming convention because classes might be serialized Which means turned into text and stored somewhere And then you want to read them back out one of the things to make a serialized class work Well, is that it should have a version new ID? We're not writing this class out to something and reading this class back in and that is just going to confuse the situation for us when we're learning about Programming so I'm going to avoid it And I'm going to avoid it by telling VS code a brand new setting Which is just please don't please ignore this problem. We'll take hold eventually. Let's see if it does Well, that's a better error, but it's still got the original one. Maybe I have to restart the The something to make it happen. Well, maybe I Okay, I've checked it in now. We'll see if it goes away at some point if it doesn't I'll keep trying to make it go away What do they say on the quick fix? So most of these errors have a quick fix Add default add generated. No, I don't want to add a serial ID because it can make things ugly. I'll show you what it does Didn't do anything. It's like that's a problem with the plug-in All right back to the actual action. See if we can get that missing serial ID to take hold at some point Put you down. We don't need you again. This is just a place where we can put some Preferences to get Visual Studio code uses these are from Eclipse. It's true, but Visual Studio code knows how to use them All right, what does my canvas do? my canvas is a J panel which is just going to go straight on top of the J frame and that I can draw on to because you can always draw On to J panels. They've got a special paint method, which is very useful So I'll give it a constructor And then a constructor I'm going to say what size the canvas wants to be because you saw the J frame was tiny The J frame will be the size of whatever has to go inside it So if I set the preferred size now size comes in as as not just like I think you can do it as two numbers But it another way to do it is with a whole dimension object, and this is a Java style of programming Everything's an object even the number 7 27 20 next to each other for X and Y are a dimension And that dimension would have needed to be imported, but I think it's coming from JwT So that error about not using AWT went away. All right, nice So now we've got a preferred size. I think if we run it again We'll find that it's bigger because the preferred size will take account. Nope not bigger yet Ah, I know it's not be it because I made a canvas, but I haven't added the canvas to the J frame So let's do that. It's like to add something to a J frame We'll first make it then we add it and This set content pane sounds a bit strange But what it means is the J frame is just empty at the moment We're saying what should be the content of the J frame? Well, it's our canvas now That's where the pack comes into it because the pack method will will resize the J frame so that it's big enough for the J panel so the J panel is that gray section there Mm-hmm. Very nice. So we're getting there. We're getting there. I'm gonna drop this one Because I don't think we need it at all. I think I've got way far ahead of myself Next so the worksheet told me that I wanted to draw a 20 by 20 grid So how do I draw on to a canvas? Well, can't J panels I have a paint method. All I have to do is to find that paint method and I'm overwriting an existing method So I'm gonna add the override keyword So this is all this machinery is set up this paint method It's already being called on that J panel. It's just that it's some an empty paint method So it's not doing anything, but if we override it with our own paint method We can make it do fun things and the paint method is always passed in a graphics object Which represents the grayness on the panel. It just represents the thing you can draw on Okay, so this is the spot where any drawing I do We'll go on to the on to the screen. How do I draw on to a graphics object? Well, I'll probably come back up here and start looking in the documentation again graphics is in AWT Not in Javex swing. So I've got to come back up here to Java AWT there and On the left-hand panel I can find the graphics Object Yeah, there's a graphics and a graphics 2d One's a subclass of the other but we can just do everything off of graphics In this course So you can see the methods available under the kinds of things we might do in a draw clear a rectangle draw a 3d rectangle Draw some characters Draw an image draw an oval polygon For us, we're going to draw some lines There are multiple ways to get a grid on the screen We can either draw a bunch of vertical lines and a bunch of horizontal lines or we can draw a bunch of rectangles Ultimately drawing rectangles works better in this course. So let's do it that way So it's gonna I'm gonna have to draw the instructions said 20 by 20 Rectangles each of them 35 pixels high. So let's make the four Wanted me to start at position 10 And then I was less than 710 because it wanted a border of 7 10 on the other side Do I want to draw one at 7 10? No, I don't and I has to go up by 35 each time and drawing Grid so I'm gonna have to do let's just do one line for now. So Rect I think is what I want but it's on the graphics object. So it's G dot draw Rect good and it wants an X and a Y position so that X is zero and let's just make the Y position 10 for now that I sorry in 10 and It wanted something else didn't it? Where did your parameters go?  I hope I think it's gonna draw it on a ball on the gray background though. So maybe I should draw color in the background first Let's try and see There we go. Yep They've been drawn in the background and they're not filled in because draw rectangle doesn't fill them in I actually wanted fill rectangle So this works a little bit differently to processing you go draw function Fill rectangle and control of five then they'll get drawn I think with whatever the fill color is the fill color is black. It's not really what I wanted. I Wanted a fill color of white and the background of black and the processing that's it's slightly different processing I have to set the Rope I think Color and with colors I can just do color dot Okay, so the way I have to do this I think so I'm gonna do it is first I'm gonna set the color to black and then I'm going So I first I'm gonna set the color to white to make sure the order comes out great Then I'm gonna fill a white rectangle And then I'm gonna set the color to black draw the outline of it Five and this gets me much more what I wanted. All right, that's basically what I wanted But now I want to do that another 20 times down So this is gonna have to be a nested loop J equals J will start from 10 and go to less than 7 10 and go up by 35 as well puts this new one down here and All of this needs to tab in further So that would be No, I still don't know. I still don't know where my shortcuts I better go off and learn there my suppose Okay, I think that's what I want. I think that's gonna draw my grid The paint method is where the action is but the paint method is getting called Because the canvas is on the J frame and the J frame is visible This is all the internal workings of the swing and AWT from here on Didn't work. So let's have a look at the problems abort syntax error on Something that doesn't belong there From here on we're gonna take control of the rendering We're not gonna rely on swing or AWT anymore because once we've hit this paint method we're in control once we've got our own canvas We're in control. We need the J frame in the panel just to get going and then we're like, yeah We don't just do anything else. You have to say I've broken something. I've broken it because that's an I not a J And stop it from there and control f5 Nope, that's not working up because I didn't update that you would all saw that while you were watching this didn't you? That should be the J It should be the J. This is why we better if I could do the live streaming of this. You could tell me while I'm doing it There we go. We've got our grid Very nice. So we've hooked ourselves into Value of local windows not used That's true. It doesn't look like it's used but just building it does all the hard work So we can ignore that that problem We've hooked into the bits we need to know about Java. We've got control now Hopefully we can do the other parts. Is there anything I've missed out on here? No This is the tips video. So It's more than just tips. It's pretty much how to do it Up in the next tasks. Yeah, the next task here we're doing by yourself Okay, that's all for now