csd 4502 s1

    1:27PM Nov 15, 2024

    Speakers:

    Peter Sigurdson

    Keywords:

    DevOps practices

    CICD pipeline

    GitHub repository

    code versioning

    automated testing

    traceability matrix

    NPM publish

    TypeScript setup

    Visual Studio Code

    just testing

    feature switches

    hiring managers

    production server

    Twilio integration

    AI assistants

    And students just like to read along, because, you know, sometimes people process by reading as well as by listing. So let's kick that out so everybody has it. I

    section three, I

    So November 15 otter, AI dictation college doesn't pay for this. I pay myself. It's about $80 a month. So it's it's not cheap, so please take advantage of it. I'm paying for to help you a Little bit.

    November 15 otter,

    lecture, transcription, I'm

    okay, so today is I'm just repeating this for the sake of the transcript here, I

    Where did it go?

    So today is Friday, November the 15th, 4503 DevOps practices, section three. Today, we're talking about assignment two, which is bolting just testing onto your CICD pipeline. We're starting by reviewing the practices of DevOps, which got us here. And we asked now, we said, what is the main thing of a CICD pipeline, and you guys came up with some good ideas. You said stuff about, you know, it's keeping track of the code, ability to create issues and actions on the code. But the starting point underneath all of that, the sort of start of our technology stack. And if you think I'm saying something wrong, right, maybe you've got some insights better than me. So share them. We'll talk about it. But I believe the base of our technology stack is

    the ability to have a database of code. I

    it, and we've already got that, so we're building on top of GitHub. So GitHub already does 90% of the heavy lifting for us. We

    it so think about it. If you wanted to build a code, and this is a good mental exercise, if you want to understand more about a technology like get in this case, ask yourself the question, if I wanted to build something that does what git does by myself, what would be involved in doing that? Well, you'd have to have some sort of a database. I guess we could use my SQL or something. There's no shortage of databases in the world, although I would probably use JSON. I've actually, I haven't actually done this, because when I start to get into it, I realize how complicated it is. I don't really want to commit the time to it. But I would use JSON, which I don't think and I you could go and research. I don't even know how GitHub does work under the covers. It probably works as a lexical parser. I suppose it's probably a proto programming language. But the way I would do it is by using a JSON data store, and then I would have to reproduce the work, because you know that Git is a protocol, like HTTP is a protocol, email is a protocol, get is a protocol that attaches, like pictures, in the sense, to your code. So you take, you write to a certain level of code, you commit it to a version level. It's like you take a picture and you remember what that code looked like. And then later you make more programming and you screw something up, you break it. A nice thing about GitHub is you can roll back, you can revert to a previous working level, and so on. So GitHub, by building our CICD pipeline on GitHub, it's already doing the worst part of the job in terms of redeveloping it, which is giving us a repository, a code repository. It's creating a memory for our code, right? So let's store, let's record the advantages we're getting here. There was a very famous guy, Enrico Enrique Enrico. He's an Italian guy, Enrico Fermi, and he was one of the, you know, six or so people in the mid 20th century who developed quantum physics, which is the basis of most of our technologies. Now there with Einstein and Rutherford and Fermi and all those other guys. But I read his book. I read his biography. And Fermi said, in fact, fermions are one basic form of subatomic particles called fermions in his honor. And he said that whenever a new technology, whenever a new quantum physics theory came out, let's say Einstein or Rutherford or somebody wrote another paper, he said, before he would read their paper, he would try by himself to figure out how that idea worked, and then he would read the paper and see how close he got it. So my suggestion to you was try by yourself to figure out how these things work, and then you can ask chat GPT, or you can go and do some research or something and see how close you got it. But one of the basic things we get here now is access to the get protocol with all the things it does. So we get access to a way to store and version our code, all things we why are we talking about it now? Because as we see, as we build towards building our own pipeline, these are all foundational things you need to do, and just because you're sitting on top of GitHub, it's already being done for you, plus you go and talk to the hiring manager, and 90% of them are not very technical, by the way, most hiring managers are HR people. They don't really know the technology very well. So if you tell them that you made your own CICD pipeline, and if you even make a little demo video, I used to make that part of the project, but I don't know where, because I'm bringing more stuff in now in terms of the just testing, so I have to free up some time. So I'm not going to make it a requirement for your project to make a video, but one class, I'll spend an hour teaching you how to do it. And if you want to do it through your own initiative, through your own wanting to do it and put it on your GitHub, on your LinkedIn blog, I think it would be great, because they can actually watch the video. They can see the process by which you have your code base in there. You can demonstrate opening an issue, you know, addressing the issue by creating an action. You can demonstrate that when some code commit is done, it automatically runs, and FTP is the updated code base out to the production server. And if they're a technical person, they'll be impressed, right? Because that's still a pretty good thing to do. But if they're an HR manager, not understanding that GitHub is doing most of the work, they'll think you did it all by yourself. You don't really need to correct them, right? You can just smile and nod. Yeah, I did. I'm not good. So anyway, we need to understand what GitHub is doing so it's giving us access to a versionable database to put our code in. I

    that gives us access to get issues and get actions

    and it does a bunch of other stuff. But in terms of building our CICD pipeline, these are the core, minimal things that I've identified so far. I think of other stuff. Later, we'll go back and add them in. So our goal, our requirement now, is to build so end of course, goal, final project, I

    you, and we're going to do that by building on top of GitHub. And the thing we're going to do by ourselves is leverage, get issues and get actions. And the two behaviors we're going to add to our s to our get repository, to make it a basic CICD pipeline, the two things are just testing. It's a little bit hard. It's not that hard. I'm going to give you the thing, and at the very end, we're going to just add some action to FTP so developer commits to your pipeline. It automatically runs whatever test you specify. If it fails, it's just going to log out a message to the console. In the real world, the way it would work, they would use something like Twilio, which is a CTA computer to telephony application. So here it's pretty cheap, by the way, in some of my JavaScript classes, the students spend a couple of bucks to buy a API time, and you can hook it up. So from your program code, you can send out texts or even voice mails. It is a voice synthesizer. So the way it would be done, you would use Twilio, is the one that I know they use. So it would page out a message. It would send a text message to the DevOps engineer saying, Build Failed. You know, go and do something about it. So the behaviors you're going to get r So the CICD behaviors we're going to create. We're

    I run tests on commit so we're going to have an action. Okay? Yeah, often somebody asked me to try again, sure we're going to run an action. Whenever somebody makes a commit, which is going to be to run the tests, I'm

    and the basic action is going to be to run your just testing, which we're going to do right now. We're going to call That assign the two I'm

    then FTP the code to the production server and the production server. Can you set up like an FTP server on your laptop, and you can just watch your action. You can create an FTP action and just, you know, give it whatever's the IP address of your laptop, and then you can just observe that the codes being updated. We don't, we're not going to actually set up a production server here, while we might, at the end, we might set up a little SOA server, if I have a couple of hours to work on that, but at least in the minimal case, you can just demonstrate that it will FTP the code to any address you provide. So FTP the code to the production server,

    and that's about it. And if not, then you're going to notify. In this case, you're just going to print out a message to the console. But in a more production environment, you could use something like Twilio to send a text message to the DevOps team lead to let them Know something need to be fixed.

    Notify the team you

    uh, we might squeeze one or two more things in there, but this is the basic road map, and I'll just let you know right now I've been thinking because I'm giving you stuff to talk about in your job interview. Um, what would a real pipeline have that we don't have? One major thing I can think of is the ability to handle features. I'm not going to talk about that now. We might talk about it later. But basically, imagine you're running a very complex code base, maybe for some big, you know, SAP, or some supply chain management thing. And what does SAP have? I think it has five modules, manufacturing utilities and the other ones. I can't remember. It's been a couple of terms since I taught it. But the point I'm making suppose I want to do a build, and I don't want to build one of the modules. I don't want to build the healthcare, supply chain management module, because I maybe I'm just testing the one for government services. Features are switches, in a sense that you put in your code, and those lines of code, those code directives, can speak to your build process and say, me, me, me, build me. Or no, I'm good. Don't build me for right now. I'm just going to chill right now. So we're not implementing features. It's a more complicated terms of the theory of code bases. So what our pipeline is not doing relative to a real production grade pipeline. In fact, I just got a brilliant idea for our blog article today, because, you know, we need to catch up. We need to get our 10 blog articles done. I want you guys, everybody is going to allocate maybe the last 30 minutes of class or something, research and report on what are the CICD products out there? What are the top five? How much do they cost? If you were a company that wants CICD and you were going to go out and hire a vendor to do it for you, who would you hire? How much would they charge research and report on CICD products, on the CICD product landscape, and which are, what's going on with right what products are good for, what jobs? And I'll show you some chat GPT prompts you can use to help you out with that later. Anyway, we'll come back to that later on. Just since I was mentioning this topic here, what does a sort of a production grade CICD pipeline do which our MVP will not well, maybe in your research, you can figure that out by yourself. But what we're not doing? One thing I can think of right now we're not doing build switches, and we can think of other things we're not doing. We'll throw them in there as well. I

    feature they're called feature switches,

    All right, guys, so let's read the requirements to do assignment two, and then it'll probably be around nine o'clock. We can take a little walking around break to reset or do a mental reset, and then we'll just sit down and write just tests. I will kick this out to everyone so you can have this as Part of your base of stuff you're Thinking About What

    All right, I guess I lost assignment two, so let's go back and open that again. That's our learning notebook. Open twice. Where's assignment two. What

    do you say? Closed it all right, let's Go back and Get it. I

    All right, let's read over this now. Assignment two delivery requirements. Assignment two requires students to demonstrate their understanding of the application of automated testing and best practices in software development. So the thing, two things you're going to be handing in here are your traceability matrix. So based now I'm going to be demonstrating for the case of the Pokemon gem, but you were asked at the beginning for assignment, one, to write your own TypeScript code, so you're going to be using that, and we'll go over how to do that. So you're going to create a traceability matrix to link the requirements of whatever is your Sud application,

    system under design, business domain, application to specific just test cases, traceability matrix. I'm giving you some examples here. So once again, I'll demonstrate. I'll make all these things. We'll see how they work. So the traceability matrix for my application could look something like this. I could have requirements. So we give our requirements a number and a description, and then we say, what's the purpose of it, and we also would say what class and method it's being implemented by now. It's quite acceptable, as discussed at the beginning, I think about four weeks ago or something, when I developed the Pokemon Gym application, and I made a screencast video, and I attached that video to your assignment. One, it is acceptable to use an AI assist such as chat GPT, because this is not a programming class. If this were a programming class, you could not use chat GPT to write your program, because the whole purpose of the class would be to learn how to write the program. Here, we need the program as an input to our CICD process, but writing the program is not a central core thing, so it's quite acceptable to use chat GPT, and then you can feed it in your code, or just go back to the same discussion right the same context window you had when you did that, and just say, Please generate my traceability matrix, and it'll generate that for you, and I will demonstrate that. So read me instructions and test journaling. So you're going to provide a Read Me file. So now what we're talking about here is, how are you going to submit your assignment to so you're going to give me a traceability matrix noted as a markdown language, an MD file, and you're also going to give me your Visual Studio Code Project, right? So we've been working in Visual Studio code. So that's what you've been building up your code in, just as I built demonstrated building up the Pokemon gym. So you're going to take your Visual Studio Code, N, PM, J S project. That's what that is. We know it's an NPM J S project. Why? Because we have a package dot JSON that makes it to be a NPM js.com project. So you're going to upload it right? You're going to use the command NPM publish. You're going to publish your application right? Your business domain, whatever it is the the energy efficient, building the college management system, whatever business domain you got, you're going to publish the code from your Sud up to npmjs.com which you can do just like you can stuff things GitHub, right? You can promote to GitHub. You can commit to GitHub. You're going to do a command, which I will demonstrate. It's, it's in your instructions, called NPM publish, and it's going to shoot your code up there. It's going to give you a URL. You're going to put that URL, you're going to send me. Basically, your commit is to go to the assignment dropbox in Moodle, and you can make a little text file. And that text file is going to contain your team name, team members names and IDs and the URL for your NPM js or project. And then my way of doing it, when I'm testing you, I'm going to just like before we did, npm install, express, npm install, whatever where I'm going to do NPM install, and I'm going to paste in your URL, and it's going to inflate, it's going to download and build up your application in my Visual Studio code, I will look at Your readme. Your readme is going to document, and I'll just do a couple of tests myself, and that will be your assignment too. Sound complicated? Well, we're going to do it now, and we're going to do it next week as well. So that's just to give you a preview of where we're going. So you're going to upload it all the way to up here. I'm

    Oh, actually, I think I have to go here and do it now. So if you go to your and make an account for yourself, so you have to make an account. And by the way, you're going to submit one submission per team, but I want every single individual student to still do the NPM published thing for a couple of reasons. Number one, you're going to have your own

    you're going to have your own projects. Maybe you'll have more than one eventually, but you're going to have your own committed code base on NPM js.com you can mention that in your your resume, your cover letter and your LinkedIn, if you're going for this kind of a technical job, and that'll really look good, right? That that'll be impressive. That'll score you some positive street credit with the with the interviewer. So I will demonstrate this at the end of today, wherever we are, even if it's not finished, everybody is going to just try doing a little commit, just to see their thing here. So that's, uh, that's what's going on. I part

    so anyway, now you know what you're committing, right? You're going to build up a visuals. You're going to build up your tests from your own s, u, d, which is already one or hopefully all of your team members, hopefully at least one of your team members has your code in their GitHub repository. And you're going to add some tests here, and that's what we're going to be doing today. I'm

    I see when I type npm test, it is now running some tests that I put there. That's what you're going to be doing now the purpose of the traceability matrix is what we said that we're going to ask our chat GPT, where you can copy and paste your code in, and it'll generate a traceability matrix. The reason you're doing that is, why? What do we need from the traceability matrix? That's your test, right? So traceability matrix is a column which lists your requirements, and along the top row it lists your methods. And wherever there's an intersection between a requirement and a method, means that method is involved. The delivery of that requirement doesn't necessarily mean that you need a test there, but that would be a very good candidate to think about putting a test there. So anyway, let's just finish quickly scanning over our assignment. Then we'll take a break. I

    so professional practices to observe your submission is going to be via publish to NPM js.com

    your Visual Studio. Code is going to contain a read me mark down which is going to document your tests. Can I do what we're going to do that that's further down. We're going to do that maybe around 11 o'clock. Once we built up a few tests, we'll take care about it's, um, it's down on around page 30 or something. Publish,

    yeah, I actually had a screenshot of where I had demonstrated it to another class before. But oh, right there. I'll actually make a little screencast video when I do it steps to publish. It is on page. I turned off the page numbers.

    Insert page numbers. I

    Where's the page numbers? Oh, page numbers, yeah, thank you. One

    Yeah, anyway, so the instruction right here, somebody was asking, how do you publish it? Once again, I'll do it. They'll make a video, but it's in here somewhere. I

    uh Anyway, we'll find it. Now you might be asking why, in case you're sitting there wondering why we're doing just testing in a course on CICD. Well, the idea of a CICD pipeline is that you want, when a developer makes a commit, you want to automatically send your code base to production if it's working. That's the whole point of it. If it cannot automatically roll the update to production, then it's useless. Like, why do we have CICD? That's the goal of DevOps, but we don't want to send non working code there, right? If you go around promoting broken code to to production, then people will think you work for Microsoft, and that's kind of embarrassing. We don't want to be like them, so therefore you guys don't get any jokes anyway. That's why we that's why we're going to put automated testing in here. And of course, if it was a really sort of high stakes application, like a financial, you know, something for the bank or whatever, I doubt that they would let their changes get flow directly to production. Only on automated testing, there would still be a human test team involved, but at least what we're going to learn here is automated testing. All right, so let's, um, let's take a break. Now it's nine o'clock. Let's give it till 920 when we come back, we'll come and start making this stuff work. So On break resume At 920,

    The So, Giving

    up I It's slope Again,

    it Well. Six or seven. Yeah, I'm An open Six

    point that I You

    have Seen it goes individual, No, Day

    That I Team it has only

    Let's See if

    So I You guys have guys, we'll pick it up in a couple of minutes. I'm just updating some stuff here For our MP and publish.

    You just read, study your lab by yourself for a couple of minutes till I get Our next thing going.

    You We Have here,

    so what I mean?

    it Alright.

    Bully, like this, I'm

    giving you

    a couple minutes now to review with your team just go over the assignments so

    when we start making our just tests because I don't have to read or to write your adults you can read by yourself. So we're now going to start going through and setting up some basic just testing now the event some familiarization with what you need to do.

    To Be Like How

    Do You

    them. Alright,

    let's get back to work now. We're

    have some chance to catch up. Now I'm going to demonstrate later on. We don't really have anything to do any publish on yet because you don't have a working code base. Somebody was asking about getting a demonstration of that. Well, get to that probably by the end of today's class. Have not started the class next week. That's just the thing you need at the very end, by the way. That is just the thing you need for submitting. That's not the thing we need for getting

    the call going.

    So let's kick out our just testing worksheet, which is the basis of your assignment to and we're just going to go through it together. Let's do that now. You

    music.

    So I'm going to kick out this worksheet. It is listed in your assignment too as well, but I'll kick it out to the News forum to make sure everybody is staying together in the same thing, in the same workflow, and we're Just going to go through and do This now. You

    all right, so everybody go to

    here and get this lab right there, just the art of testing. We actually looked at it last week. I've added a couple of things to it, though.

    So let's get going on that now. I'm

    going to make a screencast. Video, because this is not difficult. It does require certain steps you need to do. For example, you have to make unzip files and stuff. It's not really hard, but maybe some people aren't too familiar with it, so I will make, thank you quiet. So I'll make a video now, a screencast video, and it's like a video game, right? If you need to go through the whole thing again, from start to end, maybe even a couple of times, right? That's what you got to do. You've got to do the workflow and the stuff. Do the work to learn this stuff. So here's we're going to do. First of all, open your Visual Studio code, and for right now, even if you're working on your own SUV, right, your own program for right now, let's stay locked step together on the Pokemon program so we can see all the same procedures together. So open your Visual

    Studio code. If you've got anything, open, just close it out. Close project, where you close project, close folder, close folder, right now, let's make a new folder for this work. So

    close any of these little pump out. Welcome, whatever they are. Messages that come up and we're going to do File, Open Folder. We're just going to make it in folder for today's work. So go off your C drive. Please don't put it in desktop or something. And we'll make a folder. We'll call it lab, just testing.

    I'm. All right, so now we're just basically making a new album, a new project, and I want you to get my Pokemon code. And how are you going to do that? Well, I could give you my NPM js.com project to suck it down from, but I don't want to do that, because that's going to give you the whole give you the whole thing, including all the solution activities. And we don't want that right now. We just want sort of the bare bones of it, so we can build it up from there. So the best way to do that right now, I feel like a kindergarten teacher, you know, like when people teach small children, every two seconds, they have to tell them to be quiet. Imagine you're at work first day on the job. You're trying to show off, you know that you're a good worker, so just stay focused on So,

    right there in that lab

    workbook you just accessed via the URL, the art of just testing. Do you see we have something? Get the starter Pokemon code gym from right here. That is my Dropbox. It's going to be a zip file. Just go and download it.

    I will do the whole thing.

    I will follow along with you. And I'm not recording this. Hang on.

    I'm going to Turn on the screencast. I'm you

    you. Now, for those of you who want it optional, I'm not requiring it for the final project, the final assignment, but if you want to make a video, you showcase your work, which is another way of saying, if you want to increase your chance of getting hired, you got to do something more than whatever everybody else is doing. I will demonstrate using the 330 day trial of Camtasia. And Camtasia is what I'm using right now, so just pay attention to it if you think you want to make the

    video. So always start by saving your Camtasia file before you do anything else, because sometimes it's better than it used to be, but sometimes Camtasia may lock up, and if you save your work, then it'll automatically save every 10 seconds so the trees, remarks off you won't lose too much if you would not save your file, then it can take a couple hours to make a video like it sits, it's a little bit of a time consuming thing which is why I'm not requiring it for the final activity, but it's not bad, it's a lot of fun people like making videos. So to save this year in our class directory.

    All right, so we're going to start by grabbing this Earl. So copy Earl, drop it into a tab, browser tab, download it to an empty directory. So I'm

    Yeah, so get your Pokemon gym. Try TypeScript zip. You can't find it, I show you again, or I can sit with you and

    and do it for you. Actually, that's the zip that goes directly

    to the file. That's probably the better one to use than the one I put here. So just up, because this brings you to the directory. It's easier if you just go directly to the zip.

    Yeah. So delete there. I'm going to delete the first link I gave you. Just get rid of that and refresh. Just hit refresh, or Control R or right click, click Reload, or something on your

    Coda page

    and get this one which says it's for the zip file. That's the one you want. So then you get

    to there, and that'll bring you to here. So then you can download that if you need me to help you, or bring your laptop up here. I'll do it for you, whatever, whatever gets the job done.

    Now we need to download this. So we're going to say, download.

    There's our zip file. So let's make a directory just dedicated for that. Put it on your C drive, right? Don't put it on your your desktop, or your users or something. I will make a folder called

    Pokemon

    type script zip and download that.

    Okay. Now go to that folder and once again, if you're not used to working with zip files, if one of your classmates knows how, you can just ask them to help you, or you can ask me to come and help you, but we can right click, drag and just say, extract it

    here. Extract it here. And

    that's getting you all of my code.

    Yeah, so I think what happened is you went to the first link I gave you, which was actually a mistake, because that showed you the unzip files. But if you reload this file, if you just click Reload, you should now see something called zip file. So go and get that one copy. Earl put that into the tab, and that should give you, yeah, actually, yeah. Why is that? Because the problem is, it's unzipping it for you. You don't want it unzipped. You just want the zip. Yeah,

    bring your laptop here. I'll

    do it for you. See what I basically did when you go to that's just, it's just an irritating thing about Dropbox and zip files, when you go here, it's trying to be a nice person. It's trying to unzip it for you, to help you. You don't want that just click right here on this part beside it that says

    Pokemon, Jim, type script. Click right there. I'm and that will

    get you the and then click on Dropbox.

    Why is this being so irritating? They just made some update to this was working fine before. I

    think we'll get this powered by the dollar option,

    yeah, yeah, yeah. So whatever works for

    you. And if you can get it going, just go and help your classmates as well. So, um, yeah. So go to the Oh, yeah, yeah, yeah, great. Thanks for seeing that. Good, yes. So go to the Dell Exactly. Go to the Download button right there, and that will get you your downloads. If great, are Everybody good with that? Do we need to wait a minute? Or everybody has downloaded it yet? Not yet. So if somebody knows how, just go and help your classmates. Who doesn't know how? Because my knee is hurting again, and I don't know, I'm just trying to avoid walking around. Thank you. So once again, you're going to that Download Link thingy right there. Thank

    you. All right, I'm just gonna wait a minute till everybody is catching up and has everybody now downloaded the zip file. Thank you for the help. Good job. Everybody is good, and now we downloaded it. Now we just unzipped it. Anybody need help in terms of unzipping?

    So that's what we have right now. After you unzipped it, you got that. I'm gonna go ahead and delete my zip file, just because extra files came around that might make confusion. So I'm gonna get rid gonna get rid of

    that now certain of these things you don't want. So get rid of the jest config file, because you're going to make that by yourself. Later, you're going to run a procedure generate that by yourself. So get rid of that and get rid of the package lock file. You and now what you really want this file? You actually don't even need the disk file, because you're going to be generating that by itself. The way. What we're going to do, let me go over a high level overview, and then I'll talk about what we're doing, and then you'll go back and remember the description. And this is stuff which is not generally DevOps, things related to the programming mechanics of TypeScript. However, as a DevOps engineer, you're gonna have to a lot of mental flexibility to quickly accommodate the different languages that you're building a CSD morning job in the afternoon or the tomorrow you're building something else. So just develop the ability you don't have to program in these languages.

    You just have to understand the structure, so in terms of

    types. And now these days, it's so easy you just ask chat feature quickly. So here's what we're gonna do for our tight script application.

    So our TypeScript application, we know, is important only because we need to see some application

    in our CICD pipeline. So we have something to CICD. And

    our TypeScript application, as

    the name suggests is TypeScript. And the way this works is going to run something called TSC, which is tight script and file, and that's going to generate files in another directory called the distribution

    directory. And these are the files that we're going to run the files. So that's what's going on with your disk directory that I just told you to leave. You don't need it for

    my zip file, because you're going to be recreating anywhere. Now we need to install our just testing framework. So that's step one we're going to do in our lab here. And step two is we're going to create some tests. And because this is not a testing course, I'm going to give you the templates of the test. It's very acceptable to ask chat GPT to help you. It would not disrupt course, only. Just need the test to be there to hook up to our game on actions. So we're going to need, first of all traceability matrix based on our code base. And then we're going to create some tests for those intersections between requirements and methods, and then we're going to run the tests, and that the test might run successfully or not. And then next week, which is assignment three, then we're going to see how to set up some git map actions. So to run the test automatically,

    whenever there's a code commit, it'll do all of this under git action control. Successful, promote the

    production. Unsuccessful, notify the DevOps engineer. That's what we're doing. But first of all, we've got to build up this code in our visual and in our NPM Visual Studio code is just an IDE, right? You could actually just use a blind text editor so it's not a Visual Studio Code project. That would be an incorrect way of saying it the correct way of saying it's an NPM JS project. So we're going to go and make that so I'm going to get rid of this disk folder because I don't need it, so Shift Delete, and I'm going to get rid of Ts config because I don't need it. Because when I run TS compile, it's going to generate that. So I'm going to get rid of that. So basically all you care about is your source folder.

    That's it. So now let's drag that into our

    Visual Studio, code, project folder.

    So here it's lab, just testing and so on. But a quicker way I could get to that is to right click and say, Oh, I can't say Show, explore. Explorers. I

    don't know why open

    yet. Anyway, I can just read

    my folder from up there, lab chest testing.

    So open two code explorers. One is your zip file that you just unzipped, and you delete a couple of extras we didn't need, and then open

    another. You open another code file explorer

    and find your Visual Studio Code Project, which

    for me is lab chest testing, so

    C, lab chess testing, November 15. So actually, before I do it, well, it doesn't really matter one way

    or the other, the first thing I should always do now is create,

    turn this into a NPM JS project. Do you remember how by running NPM nip so open a command prompt to Terminal window with new terminal.

    I So here you're going to say npm and net. First of all, I'll say CLS to clear screen,

    and then I'll say npm and net, and just accept all the defaults. Now, these things later on, when you're going to do NPM publish to

    put it in npm js.com they are going to matter, right? You should have meaningful names there, but this is just a text file for right now. We can go back and we can go back and edit it

    later. So now we've made a package, JSON file. Now go over to Windows explorers and this source code right there. You

    so your unzipped version of your file,

    grab the whole folder. So don't grab package Jason. You don't need it

    because that would contain incorrect information

    relative to your environment. You only ever get package Jason by doing

    MPM knit. So now for my zip file, which we downloaded from my Dropbox, we have a folder called Pokemon gym. That's what we need. Right. Click, drag. over to your variables Studio

    Code project folder and copy. And now we're ready to go. Now we're sort of basically set up.

    not there? Did I accidentally? I think I might have accidentally erased it. Oh, doesn't matter. I

    don't get it again,

    although here in my lab folder, it's there. So why am I not seeing it in here? View, refresh, refresh, refresh, maybe

    I removed it to the wrong folder name I could have done. First of all, my code is

    still up and close all these windows.

    I get maybe I bought this to the wrong folder because I'm seeing my source folder here why.

    I moved it to the wrong place, all right. Well, that happens. Yeah, do I want to be in lab just testing? This is lab just testing, November

    15 and Friday am, yeah, because I had two folders which were close and name it. Yeah, very good. Thanks for catching that. So

    now, being more careful, lab just testing Friday am, you've got very sharp eyes to notice that, by the way, good. So, yeah, I

    have these two folders very close to each

    other. I'm going to delete that one because I want to get confused

    again all right now it's got a deal there. Okay, once again, click and drag over.

    Yeah. Now, as soon as I did that, you see, it popped into existence, right there. Good. All right. Now we're ready to go and start following the dictates, following the media in the instructions of your lab book, which basically telling you how to do your assignment. Two. And let's just take a couple seconds. I think we looked at

    this last week, right? But index.ts, that is TypeScript. So that is the main controller. That's the guys on everybody else. He's creating all the objects. He is setting up, the use cases, the workflows, and he's running a battle.

    So this is very simple, right? This is just running one very simple battle.

    Now what we need to do some stuff before we can run because this is TypeScript. We did not build this TypeScript by ourselves. We imported it from another source. So now we need to do some stuff in Visual Studio code. We need to do some npm install.

    We basically need to set up the type script compiler, which is a package that we're going to get

    from NPM js.com so let's go and follow our instructions to do that. So

    your instructions are over here, part of just testing, all right, so we've done now up to this step.

    And again, because people aren't here and they're going to have to

    go and do this by themselves later to understand, I'll just journal some of the things we're saying here open or have to open two windows explorers. One is your unzipped download

    zip file.

    Hello, oh, sorry. She got kicked out.

    I thought I set it up so she could come in anytime, automatically. Sorry about that. All right, yeah, sorry, Kier. Kier and I had meant to set it up such that you can come in by yourself without having being accepted, but I don't know, I it didn't work or something. Next week, I'll be more careful on that. Thank you for reminding me. All right, Kieran, so right now we're just, first of all, I'm making a screencast video of this so you can, you can go back and watch the video, but we're just basically, we unzipped our downloaded zip file of our starter Code, and now we're ready to make just testing.

    Yeah, so what so old windows? This is, if you're going to go back and do this again later, just a little reminder of what we did, or maybe for Kieran to go and do it by yourself. So one is your unzip, downloaded

    zip file of starter code

    and the other is your folder for your Visual Studio Code project. All

    right, Kieran, if you have any questions or something,

    just email me,

    or we'll chat about it later.

    All right, look

    instructions for how we need to set up our TypeScript compiler. You

    so we're going to guide ourselves now through the process of compiling and running indexed Yes, which is the main controller, right? The guy who kicks the soccer ball to get the game going, he is the main run master for the application. I

    so first of all, let's ensure that we have TypeScript installed. So what our command terminal? We're going to do npx, which is node. It's just another way. It's a wraparound node. TypeScript, compile.

    And I already know that I had TypeScript because I did it before. Is there anybody not seeing version 5.6 there?

    If you're not, you need to go and do NPM install TypeScript. I think we did it together last week. Maybe you weren't here and you didn't do it all right? If you don't see that, then you need to go and install TypeScript. But nobody is saying anything, so I guess you all got it, and if it's not installed, then just do this procedure to get it

    navigate to your project directory. So we're going to cd into Pokemon gym,

    right? So CD Pokemon gym. That's your project directory, your

    target directory.

    There's our source folder, right? There's our stuff we just imported. So far so good. Make sure you're in Pokemon record, you're not. That's well, means it won't happen like it won't work.

    right? Everybody together, npx, TSC. So,

    whoops, we forgot one step so far. I forgot to specify the output folder. Oh, we got that file that we actually deleted. We needed that because that was what specified our configuration. Doesn't

    matter. I'm gonna go back again, again. So hang on a couple seconds. We'll do this, and we need another couple seconds to catch you up to catch you up to where we

    are, I You Think

    They there. All right, so he do one more step that I just put in there, which is to create your TypeScript configuration file that controls things like the destination output and all that. So Kieran and everybody else here follow along, and let's do this.

    So creating a TS config file, so make a file of this name, which we're going to do by running TSC, double hyphen init creates The configuration. So go back to your terminal here. I'm

    right? So TSC double hype and init

    created a new TS config file, and we might need to go and add some extra parameters in that later, but that's the file you just created right there.

    This command will create your Ts config file, and you can go there and read through the explanations of that.

    You can further customize your file according to your project's need, if you want to include specific TypeScript files or libraries. Yeah, we're going to get back to that later if necessary, but for right now, until we run into problems, we'll just leave as it is.

    After configuring your configuration file, you can now run TS C

    TypeScript,

    compile to compile your TypeScript project. So let's do TSC.

    Now we're getting some errors in some of our files, but that's actually okay, because we want errors. We want something for our test to catch later on. So once you run that, it can report about a number of errors, but it's okay. We'll want you with that later. So the compiled index js file will now be there as index Ts, so you should now have an index TS file not going to be the file you'll run to run your application.

    All right, guys, now we've set up, so next week I'm going to go through this. So basically, we're ready to start writing our tests, but it's coming up on 1020

    let's take 10 minute break till

    1030 when we come back, we're going to go and do our blog activity, because that's something else we need to do as well. So we're now set up to run this and next week, we're just going to start right from the beginning. I'll give you some tests. You can

    just run them and wrap them up and hand them in as assignment two.

    So we're on break right now until 1020 until 1020 1030 right. Go and take your break if or keep your stay here. Keep working on things, whatever

    You want.

    Resume 1030 you

    You are? You? You One. Right Now, Jesus, you

    first of All, Please,

    How about

    It Should

    I Open up

    Will You

    this Sound

    idea. Video, Very,

    we'll pick it up In a few minutes at 1035, I.

    you? It was often

    Important he Was Wondering.

    Like Because of

    My Question,

    All right, guys, listen up now we're going To finish up by doing our blog activity I will demonstrate. And you're going to do your own blog and post it. And when you're done, you're going to kick it up to you're going to kick it up to your LinkedIn. Maybe you should make this as a COVID document. So

    if anybody, if you don't finish it Today, you can finish over the weekend. You

    so today you will write your blog topic. Will be researching competitive products for CICD pipelines. You problem.

    We are and of course, one of the main outcomes here is to get ideas of extra things you might add to your own CICD product.

    Now you've already seen how to put things in your LinkedIn blog, right? We've

    done that a number of times

    to get ideas about additional features you might add to your own product,

    as well as of course, to have things to talk about on the job interview.

    All right, so I will demonstrate. And when you're finished, as always, you're gonna pipe it up to your you're gonna link it in your

    in Our blog and our forum entry here In both you.

    Alright, so let's kick that up there. Let's put that in Moodle in your news form so you

    can Find your instructions. I

    All right. So you have now you have another 1015, minutes to do it. If you

    don't get it finished, get it finished over the next day or two, I will demonstrate how to get started.

    And remember, I've shared with you my workbook on different AI assistants. You have chat GPT is one of them, but there's a number of other good ones out there as well. So get familiar. Another purpose of this activity is to just get familiar with the various tools that are out there. So go and get good at writing prompts

    today, just because I don't think I've showed it to you yet, I'm going to use a to do AI, but you go and use whatever you want.

    I to them.

    All right, so let's get to work.

    So a good starter prompt might look something like this. Please create so

    a survey report

    of the various CI CD pipeline products that are available and used in industry. I

    and I'm going to set a specific focus on banking industry, because I was just looking at LinkedIn during the break, I saw a number of my students from previous terms of this course.

    They're now saying, you know, proud to celebrate my first,

    you know, six months at TD Bank or Royal Bank or whatever. So I know banks are a big source of hiring. If you're interested in working for the government or healthcare, manufacturing supply

    chain, it's your you know, you do what you want. Also, I don't

    think I've shared this with you yet. For another class, I gave them an activity, and it's not going to be an activity here, because it's not really connected to our course outline. However, it is a research project on learning what the different industries are that are out there, and what kind of industry you may choose to focus on in your own career.

    I'll kick it out as an enrichment, right? You can do it if you want, or it might give you some ideas. But this

    is also the kind of thing we're looking at, because the purpose of this stuff is to get you the job. If it doesn't get you the job,

    it's kind of useless. In the end, the purpose is to get a good paying job, and this information is going to help you do that as well. So for banking industry like that, mostly you gotta talk about it. So for a banking industry, like, what is the main thing that they need? Is it like COVID?

    Here's the thing. A lot of their legacy stuff

    is cobalt, but they're migrating

    it over to do actually JavaScript,

    I would say, is one of the main

    hot topics in terms of what they're migrating cobalt from, because JavaScript, it used to have a bad reputation as

    not being a good, enterprise grade language, but

    now that we have TypeScript, that's changed, and Java is very heavy, right? Java carries a very heavy footprint with it is. Java is not very agile friendly. TypeScript is extremely agile friendly. And since that's

    interesting to you, I'm going to work it into my research. I would welcome you to do that same thing as well. But my understanding is a lot of their

    a lot of their emphasis now is on migrating their older platforms, because everybody wants to get onto AI and service oriented architecture. And let's research, rather than asking me, just just go and do your own research on it. And let's see what we come so please create a survey report on the various CICD pipelines available in the use and industry. Let's focus on the financial banking industry. If you you don't have to use my prompt, use your own. I'm just demonstrating something that might be of interest,

    banking and financials, because there's other things in FinTech besides banking, right? There's also the insurance industry, international banking. That's another big one. Let's focus on the banking and financial industry.

    Please work into our research

    the trends now

    in terms of what new languages and platforms are they migrating to?

    Now I'm going to say, please speak in the because prompt, you can tell it what format to speak in. So I'll say, please speak in the language and concepts familiar with um business managers, because we want business managers to read our articles so they they might reach out to you and hire you if they like your stuff. Please speak in terms and language familiar, comfortable, easily consumable by business managers and leaders.

    So now, is this a good enough prompt? Create a survey report. I've told it what I want. I've given it some context. I've told it the format of the output. Say this is for my LinkedIn blog to achieve, to attract favorable attention from hiring managers. I'm not going to say that because I don't need any more jobs. I've got too many now, but that would be a good thing for you to say. This is to attract favorable attention from hiring technical and hiring managers who may hire me as a new graduate. I

    All right, so have we given address to your concern about what technologies are moving over

    work into our research, the trends now in progress? So

    regarding what new languages and platforms banks and financial institutions are migrating to, I

    How does Typescript and service oriented architecture fold into that? I my own belief is it's a lot, But let's see what the research says. I

    All right, that's probably good enough

    for right now. So I'm just going to get started now. We've only got about another 10 minutes, so I'm going to use a to you. Can use whatever you want, but my suggestion is of this workbook I've given you here, in terms of different AI research tools. Try all of them, because maybe there's one that you didn't know about which is really great and you want to get comfortable with it. So I'm going to go to audio.ai. You?

    Experience. Now here's a little practice I use I might cycle something through several

    different AIS to get a number of different inputs. So here is to giving me now a to does

    not go into detail unless

    you ask it. It does do good at outlining. So now I'm going to go to Claude, and I'll ask Claude please upgrade and enhance

    my blog. I'm and I'll give it the original prompt so it knows the context.

    And let's see how this builds up on what water To did.

    Oh, I like that. That's pretty good.

    I and now I'm going to ask it, please write a please, please add a preamble to catch the attention

    of business managers.

    And let them know why this is information they need to have you.

    And now finally, I'm going to say, please add a conclusion

    with some calls to action, letting business managers know. Calls to Action to inspire

    business managers to

    take action on this information.

    Now I'm going to say, please write one consolidated blog article with all this content.

    Okay, we've got about another three minutes, which is

    just enough time to finish it up.

    I guarantee if you because I know students in my past

    classes have done this, if you post two to three times a week, you know, after a couple of months, you'll have a lot of great content. It'll make your LinkedIn profile very viral, right? Very vital, very much catching attention. So now I'm going to go and copy and drop this into my LinkedIn blog, and then I'm going to go and

    put the link to my LinkedIn blog in our class forum. Then we'll be done. I uh.

    So you know how to do it, right? You go to your LinkedIn home page, you click on write article, and you post, I don't have time right now to make an image,

    but you could go to um dolly or something. You could ask it to Make an image on this. I

    Sure. So can you please? Again, it's right here. I already did. It should be in your news forum

    if you go to,

    if you go to, Moodle, did I close it?

    Yeah. Anyway, let's go back so Moodle,

    you guys are section three.

    And then go to your news forum. It's right there. Today's blog article, it's right there. Yeah, You got it? It's Right there, yeah. You

    you very much if you Want to see my article, I'll put

    my own link up there as well. I don't know if you just want to get my ideas or whatever. You're welcome to my ideas if they help you. I hope they do you.

    I'm not going to spend time right now because we don't. It's already 1101,

    but you can dress it up a little bit, right? You can go to style. You

    can make some of your things to be subheadings. I'll come back and dress this up more later.

    And you can also do things like this. You can make Code. I

    so 70, so somebody

    was asking me about the emerging what's happening with the technology stack. 73% of new financial projects are choosing TypeScript.

    Yay. Go TypeScript, and you can Read about the advantages there For

    kind of

    Me, I me, uh huh, nice. Oh, beauty. Nice, lovely. Yeah, so it's showing challenges that's so nice, very good. Yeah, just copy and paste it over your LinkedIn blog. Excellent. It's

    beautiful. It's very

    nice. Working.

    To the Christian

    it Alright, so don't forget, when you're done, go to your LinkedIn blog links, and I don't know, just put your name or something you

    and then just post your link so I can go read it later.

    All right, guys, I'm gonna go now. I gotta

    get to my next class. See you all later. Have a nice day. Have a nice weekend. Bye.

    user one day.