Learning Library

← Back to Library

Lab Session Updates and GitHub Copilot

Key Points

  • The session room is full, but the exact same lab will be offered again at 3:30 PM in a different room for anyone who missed it.
  • Attendees must accept the invitation to the GitHub organization sent to their email to gain access to GitHub Copilot before the lab begins.
  • Participants are asked to stop multitasking, silence devices, and step outside if they need to take calls during the presentation.
  • The instructor will alternate brief explanations with hands‑on exercises, aiming to cover the core material within the 73‑minute slot, possibly skipping minor sections if time runs short.

Sections

Full Transcript

# Lab Session Updates and GitHub Copilot **Source:** [https://www.youtube.com/watch?v=DdaAABdAqZY](https://www.youtube.com/watch?v=DdaAABdAqZY) **Duration:** 00:59:04 ## Summary - The session room is full, but the exact same lab will be offered again at 3:30 PM in a different room for anyone who missed it. - Attendees must accept the invitation to the GitHub organization sent to their email to gain access to GitHub Copilot before the lab begins. - Participants are asked to stop multitasking, silence devices, and step outside if they need to take calls during the presentation. - The instructor will alternate brief explanations with hands‑on exercises, aiming to cover the core material within the 73‑minute slot, possibly skipping minor sections if time runs short. ## Sections - [00:00:00](https://www.youtube.com/watch?v=DdaAABdAqZY&t=0s) **Lab Logistics and GitHub Access** - The speaker announces full seating, urges attendees to stop multitasking and focus on the talk, notes that the same lab will be repeated at 3:30 in another room, and reminds participants to accept their GitHub organization invitation to receive Copilot access. - [00:05:02](https://www.youtube.com/watch?v=DdaAABdAqZY&t=302s) **Context Matters in AI Pair Programming** - The speaker illustrates, with a brunch‑planning anecdote, how continuously updating context is essential for effective interactions with AI tools such as GitHub Copilot. - [00:08:19](https://www.youtube.com/watch?v=DdaAABdAqZY&t=499s) **Providing Clear Context to Copilot** - The speaker stresses that thorough comments, well‑organized project structure, and explicit instructions are essential for guiding AI pair programmers like Copilot, rather than relying on vague or passive inputs. - [00:11:45](https://www.youtube.com/watch?v=DdaAABdAqZY&t=705s) **Copilot Local Agent Automation** - The speaker explains how Copilot’s local agent mode functions like a developer—exploring code, building, testing, self‑healing, and handling assigned issues—allowing developers to offload small tasks and focus on larger problems. - [00:15:14](https://www.youtube.com/watch?v=DdaAABdAqZY&t=914s) **Setting Up Octtool Lab Environment** - The speaker guides users through accessing Octtool, opening the lab’s README for an overview, and configuring the cloud‑based CodeSpaces environment before beginning the hands‑on tasks. - [00:18:39](https://www.youtube.com/watch?v=DdaAABdAqZY&t=1119s) **Managing Copilot Access Challenges** - The facilitator urges participants to speak up about issues, surveys who can assign and run Copilot tasks, highlights missing Enterprise/Pro Plus permissions, and decides to walk through the exercises while the access problems are resolved. - [00:22:31](https://www.youtube.com/watch?v=DdaAABdAqZY&t=1351s) **Limits, Comparisons, and MCP Integration** - The speaker admits limited knowledge of competing products, offers to answer feature‑by‑feature Copilot vs. competitor questions, and introduces Model Context Protocol as a method to give Copilot indirect awareness of external data sources. - [00:25:49](https://www.youtube.com/watch?v=DdaAABdAqZY&t=1549s) **Trusted MCP Servers for Copilot** - The speaker advises using reputable third‑party MCP servers—or building a personal one—to expose endpoints for Copilot, noting that a simple SQL backup or just the database DDL is sufficient for the model to generate accurate queries. - [00:28:57](https://www.youtube.com/watch?v=DdaAABdAqZY&t=1737s) **Navigating Copilot Coding Agent Demo** - The presenter shifts to a live Q&A and demonstration to showcase Copilot’s coding agent, explaining how asynchronous issue assignments rely heavily on proper context and how to recognize when the agent has sufficient information despite technical hiccups. - [00:32:28](https://www.youtube.com/watch?v=DdaAABdAqZY&t=1948s) **Using Copilot Instructions with Coding Agent** - The speaker explains how a simple markdown file (copilot‑instructions.mmd) provides project overviews, guidelines, and repository structure that the coding agent reads and then leverages GitHub Actions to perform its tasks. - [00:35:47](https://www.youtube.com/watch?v=DdaAABdAqZY&t=2147s) **Using Copilot Instructions in Agent Mode** - The speaker explains that Copilot instructions remain available in chat, shows how to enable them in agent mode with a Claude model, and outlines website updates (filter dropdowns, page refresh, test passing) while stating no personal preference for any model. - [00:39:58](https://www.youtube.com/watch?v=DdaAABdAqZY&t=2398s) **Implementing Org-Level Code Standards** - The speaker emphasizes investing time to configure files and workflow naming for productivity, then outlines three methods—org‑level instructions, an MCP server, and GitHub Copilot Spaces—to enforce coding standards across an organization. - [00:43:52](https://www.youtube.com/watch?v=DdaAABdAqZY&t=2632s) **Secure Coding Agent on GitHub Actions** - The speaker notes test failures after a SQLAlchemy update and explains that the coding agent runs commands locally within an isolated, ephemeral GitHub Actions environment, granting only read access to the repository and write access to a single dedicated branch. - [00:47:00](https://www.youtube.com/watch?v=DdaAABdAqZY&t=2820s) **Manual CI Trigger for AI PRs** - The speaker discusses setting up automated tests for Dependabot pull requests, highlights the need to manually trigger workflow runs when code is AI‑generated due to trust concerns, and emphasizes reviewing changes before merging. - [00:50:05](https://www.youtube.com/watch?v=DdaAABdAqZY&t=3005s) **Maintaining QA with AI Development** - The speaker stresses that, despite using AI to generate code, developers must still conduct peer reviews, run linters, security scans, and unit/end‑to‑end tests—potentially using agent mode to target specific tests and embedding such requirements in AI prompts or instruction files. - [00:53:27](https://www.youtube.com/watch?v=DdaAABdAqZY&t=3207s) **Integrating Issue Trackers with Copilot** - The speaker explains that Copilot currently only accepts GitHub issues—suggesting a script to copy Jira or ADO tickets into GitHub—and advises exposing internal libraries in the code so Copilot can learn from them. - [00:57:06](https://www.youtube.com/watch?v=DdaAABdAqZY&t=3426s) **Challenges of Fine‑Tuning Copilot** - The speaker explains why fine‑tuning is not currently supported, highlighting difficulties in separating high‑quality from low‑quality customer code and the need for a controlled MCP server environment. ## Full Transcript
0:00[Music] 0:15So, uh, a couple of real quick things 0:17for, uh, those who are just getting 0:18settled in or just rumming in. Um, first 0:20of all, if you're sitting in the back 0:21and hoping for a seat, um, it does look 0:23like we are, um, completely, um, full 0:26up. I can move my stuff here. We'll have 0:28a seat here. And I think that might be 0:31it. Now, having said that, uh, we are 0:34going to be, and I want to make sure 0:35that I'm clear about this. So, if you're 0:37working on something else, um, now is 0:38not the time to multitask. Um, but 0:40instead, pay attention to the person 0:42that's babbling up in the front of the 0:43room. Um, 0:46uh, we are going to be running the exact 0:50same lab. I'm going to say that one more 0:53time for effect. But we are going to be 0:55running the exact same lab this 0:58afternoon at 3:30. So even though that 1:013:30 lab has a different title, a 1:03different abstract, I'm here to tell you 1:05it is the exact same lab. How do I know 1:07that? Because I'm going to be the one 1:09leading it. 1:11So kind of a little bit of authority 1:12there. So um do keep that uh that in 1:17mind. So, if you're hanging out in the 1:18back really wanting to do this, check 1:20back this room 3:30. You'll be able to 1:22do the exact same thing. Um, second of 1:24all, uh, we are running around and 1:26getting everybody added into a 1:28particular organization. That 1:30organization is going to give you access 1:31to GitHub copilot. Now, uh, when you get 1:35added into an organization in GitHub, 1:38you do need to accept that invitation. 1:42So, um, please go in, check your email 1:46that's associated with your GitHub 1:48account and accept that invitation. So, 1:52now is the time to multitask 1:55and go ahead and take a look at that. 1:58Um, and while you're doing that, I'm 2:00going to make the announcement one more 2:02time for those in the back of the room. 2:04If you want to do this lab, come on back 2:06at 3:30. We're going to be doing the 2:08exact same lab at 3:30. Okay. And I'll 2:12be back in just a minute. 2:16Um, in your email uh that you have 2:19associated with your GitHub account. 2:28Cool. 2:32All right. So, here's what we're gonna 2:33do. 2:39Oh, I can actually take. 2:43So there. 2:48Yeah, if we could get all devices 2:50silent, vibrate. If you get a phone 2:52call, more than a take that you're more 2:53than welcome to take that phone call 2:55behind outside those those doors there. 2:57Um, cool. So, while we are getting 3:00everything um situated, 3:03um here's what I'm going to do is I am 3:06going to There we go. Um start tracking 3:10through this little thing called get up 3:12co-pilot and then uh begin to introduce 3:15the lab and then get you turned over to 3:17the first exercise. Basically, what's 3:19going to wind up happening is I'll do a 3:21little bit of babbling and then you'll 3:23do a little bit of work and then I'll do 3:25a little bit of more babbling and then 3:26lather, rinse, repeat until we have uh 3:29run out of time here. We have 73 3:31minutes. Should be actually still able 3:33to get through the bulk of the lab or at 3:35the very least we'll be able to get 3:37through the cool parts of it. uh we 3:39might like skip something just so we can 3:41make sure that we can get to um uh to 3:44the end, but we'll explore and we'll 3:45play with all of that as we uh as we go 3:48here. So without any further ado, let's 3:50talk about this little thing called 3:52GitHub Copilot. If you're not already 3:54familiar with GitHub Copilot, uh GitHub 3:56Copilot has been given this tag of your 3:59AI pair programmer. Now, not only is 4:02that wonderful marketing because it is 4:05kind of wonderful marketing, um it's 4:07actually I think honestly the best way 4:09to describe and to think about GitHub 4:12copilot that just as I'm working with a 4:15pair programmer, I'm going to ask them 4:17to perform different tasks. I'm going to 4:18ask them to uh to do different things 4:20and we're going to work together. We're 4:22going to collaborate to build out a 4:24solution to solve problems. I'm going to 4:27do that exact same thing when we're 4:29talking about co-pilot. And just like an 4:32AI pair programmer, it's going to have 4:34certain strengths, gonna have certain 4:35weaknesses, and there are going to be 4:38specific workloads that it's going to be 4:41able to help out with. And that's 4:42exactly what we're going to see here 4:45that we're going to take a look at a 4:47couple of different modes with agent 4:48mode locally, with edit mode, with ask 4:50mode. We're also going to take a look at 4:53what we announced at Build, our brand 4:55new Copilot coding agent, which actually 4:57allows you to assign issues to Copilot. 5:00And then we're also going to spend an 5:02awful lot of time talking about context 5:04because, as I mentioned again, AI pair 5:06programmer, context is really key. It's 5:09key across many aspects of life and it's 5:12certainly going to be key whenever we're 5:14working with any form of AI and that 5:17does include GitHub Copilot. So without 5:21any further delay, let's go ahead and 5:23get into it. Are you comfortable down 5:24there, John? All right. Okay. 5:29Let's talk a little bit about context. 5:32And the way that I always like to 5:34introduce context is by um giving uh a 5:38little bit of of a quick story that uh 5:41my partner and I woke up the other day. 5:43She looks at me and says, "Let's go get 5:45brunch." Fantastic. Who doesn't love 5:47brunch? And so I recommended a spot. And 5:50then she says, "But here's the thing is 5:53we've been there an awful lot lately and 5:55I'm kind of burnt out on it. How about 5:56we go somewhere else?" Okay, fantastic. 5:59And so then I recommend that a different 6:00spot. And then she thinks for a minute 6:02and she says, "You know, I'm really kind 6:04of craving waffles." 6:06Who doesn't love waffles? Fantastic. And 6:08so then I recommended another spot and 6:09and off we went. Now that back and forth 6:11is like very normal to human 6:14conversation that I was given a little 6:16bit of context. Let's go to brunch. And 6:18then I gave based on the context that I 6:20had a perfectly valid answer and then a 6:23little bit more information was provided 6:26and I gave another answer and then 6:28eventually we found the solution that we 6:30were driving towards and that's exactly 6:32how we're going to work with copilot is 6:35that we're going to give copilot 6:36context. We're going to help point it in 6:38the right direction and then we're going 6:40to work together to get to the solution 6:43that we are looking for. Now, whenever 6:46we're talking about context, there's 6:48oftentimes a lot of focus on the prompt. 6:52Now, don't get me wrong, the prompt that 6:54we use for Copilot when we're using 6:56chat, when we're creating an issue, all 6:58of that is very, very important, but it 7:01really goes beyond just that prompt that 7:04we give to Copilot. And I honestly find 7:06that a lot of times when people are 7:08first getting started with Copilot that 7:11there's a little bit too much focus on 7:14that prompt itself 7:17because what Copilot's going to use for 7:18context is everything that it sees. And 7:20so that's going to include your code. So 7:24making sure that your code is readable 7:27is extremely important that a lot unlike 7:29a lot of other tools that you're going 7:30to be using. Well, there'll be a script 7:32where it's going to build your code or 7:34scan all of your code and look for 7:35different patterns and so forth. With 7:38C-Pilot, again, AI pair programmer, it's 7:41going to behave an awful lot like a pro 7:43another programmer coming along and 7:44reading your code. And if your code 7:46isn't readable, if you're using a lot of 7:48abbreviations, you're using um names 7:50that aren't clear, you're using single 7:52letter variable names, which are the 7:53bane of my existence, 7:56copilot's not going to be able to easily 7:59understand that. 8:01On top of that, comments. Now, 8:04I do have a little bit of a belief that 8:09code that's easy to read shouldn't need 8:11comments. That the code should describe 8:14well enough what it is that it's doing. 8:18But we all know that that's not always 8:19the case. We all know that we fall short 8:21of that. And that a couple of lines of 8:23comments left behind is not only going 8:26to help you six months later when you go 8:28back to that codebase and trying to 8:29figure out what it is that you were 8:30doing, but it's going to help again that 8:33pair programmer and that AI pair 8:35programmer. So having in a few comments 8:38and then last but not least is having a 8:42good project structure. Allowing C-Pilot 8:45to be able to quickly find the different 8:48resources that it's going to need is 8:50also really important. So all of that 8:52plays into context. And that brings us 8:55into this spot right here of helping 8:58co-pilot help you. I sort of like to say 9:01don't be passive aggressive with 9:04co-pilot. 9:06that don't throw something at co-pilot 9:08and kind of like hope that it figures 9:09out what you really really meant. That 9:12if you know something or if you know 9:14that there's a particular piece of 9:15information that co-pilot should be 9:17considering, 9:19tell co-pilot that. And what you're 9:21going to see is you've got a lot of 9:23great tools with which to do that. So 9:26again, that context, all that background 9:28information, and we're going to see a 9:29lot of different ways that we can do 9:31this through like instruction files or 9:32again those comments, again, that good 9:34project structure, the intent, be clear 9:38about what it is that you're trying to 9:39do and be clear about it, that clarity 9:42aspect. And when we're talking about 9:44clarity, for those of us that have maybe 9:47worked around with like old chatbots and 9:49we got very used to just sending very 9:50tur commands because natural language 9:53processing back a few years ago just was 9:55not really all that strong. So we were 9:57effectively using it like a command line 10:00interface. 10:02We want to be a bit more verbose, be a 10:04bit more flowery, make sure that we're 10:05easy to understand. And then last but 10:07not least, that specificity. If we want 10:09something done a particular way, let's 10:11be clear about it. Let's get in and do 10:14it. 10:16So, let's introduce real quickly here 10:18the different workloads that we have 10:20available to us. Now, the glowing one on 10:22the right is not necessarily to indicate 10:25that hey, that is um uh the best, but 10:29rather just simply that that's new and 10:31new things are shiny. 10:34So, over on the far left is code 10:36completion. And this is sort of the 10:38original version, if you will, of GitHub 10:40copilot that I'm typing away. I'm coding 10:43away. And then C-pilot right in line is 10:45going to start making suggestions 10:47about what my next line, my next block, 10:51my next class, my next function is going 10:53to be. And this is wonderful. If you're 10:55in the zone, you know what you're doing. 10:56Just type away and C-pilot can then help 10:59you write code. And then we get into 11:01chat and we get into edit mode. Now chat 11:04originally just had ask which is going 11:06to be for singleshot explain this code 11:08to me I need you to create a file 11:11whereas with edits mode 11:13what that's going to allow me to do is 11:15that's going to allow me to edit 11:18multiple files in one shot because when 11:21we think about even the most basic of 11:24updates say like I'm just updating a web 11:26page I'm going to update an HTML file a 11:29CSS file and a JavaScript file 11:32there's very you have any code updates 11:34that are single file anymore. And so 11:37with edits, I can then guide C-pilot 11:39through editing multiple files. 11:42And then we get into local agent mode 11:45where now copilot's going to kind of 11:47lead the way. But what we're really 11:49going to see with agent mode is that 11:51it's going to behave an awful lot like a 11:53developer. That it will be able to 11:54explore your project. It'll be able to 11:57find files and it will be able to run 12:00external tasks. So, it'll be able to 12:02build your code. It'll be able to run 12:04tests, and if it detects that anything 12:06has gone wrong, it'll actually be able 12:08to self-heal. I'm going to come back to 12:10questions in a little bit. 12:12Last but not least is Copilot Coding 12:14Agent. And with Copilot Coding Agent, 12:16what I'm going to be able to do is take 12:18an issue in my repository, assign that 12:21to C-Pilot, 12:23and then I get to go on about doing 12:26something else. 12:27So if I have like little tasks, little 12:30things that I just haven't been able to 12:31get to, I can go ahead and assign that 12:33issue, then I can focus my attention on 12:36the bigger problems. And so those are 12:38the different workloads that are 12:40available to us with copilot. And so 12:42that is coding agent. We're going to be 12:44able to give it a task and then away we 12:46go from there. So without any further 12:49delay, I'm going to actually um kind of 12:52leave that there and let's go ahead and 12:56get started. So, first thing before you 12:57click on that URL, this is going to be a 12:59real quick um um test. You know how many 13:01of you were probably in elementary 13:02school and you got handed that uh sheet 13:05with like 40 steps on it and step one 13:08was read all the instructions to the end 13:11and then step two was write your name 13:13and then step 40 was just do steps one 13:15and two. How many people did all the 13:17steps? 13:19Yeah. Yep. Absolutely. Um so, in any 13:23event, um this is going to be one of 13:25those tests. So, first thing is first 13:26before you go there, 13:29make sure that you have gone to your 13:32email that's associated with your GitHub 13:34account 13:35that you've accepted that invitation and 13:38when you got asked, hey, do you want a 13:39co-pilot license? Say yes to that. 13:53Okay. 13:59Um, give me one second here. 14:02Um, 14:08okay. 14:17Okay, beautiful. Thank you. Well done, 14:21John. 14:22All right. 14:26That's all I just said. Well done. Thank 14:28you. Um yeah, so if um you did not get 14:31your invite for whatever reason, you can 14:33actually just go directly to 14:34github.comol 14:37and then accept your invite. Now I am 14:39going to give you a minute to do that in 14:41the background and then I'm going to 14:42address the people that are hanging out 14:44in the uh in the back of the room here. 14:47We are going to be doing the exact same 14:52lab at 3:30. So if you want to do the 14:56lab, you want to have a seat, you want 14:58to be comfortable, you can come back at 14:593:30. You'll be able to do the exact 15:02same lab. The 3:30 session is going to 15:04be an exact repeat of everything that we 15:07are doing here. 15:10All right. Now, if you do not have 15:14access yet to Octtool, 15:17then hang on. We'll be around to help 15:20troubleshoot all of that in a minute. 15:23Assuming that you do have access, if you 15:25head on over to that URL right there, 15:29what that will do is that will take you 15:32to 15:36um 15:37let's 15:41me go to the right spot. There we go. 15:44And there we go. 15:47And there we go. Okay. So that will take 15:50you to this little readme file right 15:52here. This is going to give you an 15:55overview of the lab and everything that 15:57you're going to be doing. You're going 15:57to set up the environment. You're going 15:58to assign some issues. You're going to 16:00configure and interact with some 16:01external services, provide context 16:03copilot, complete a sitewide update, and 16:05then review co-pilot's work. And you'll 16:09notice all the way down at the very 16:10bottom, get started. We're going to do 16:12this by getting everything um set up 16:14right here. We are going to be using 16:16code spaces, so you don't need any local 16:18installation. You'll be doing everything 16:20via the cloud. So, the first part is 16:22going to be setting all of that up. 16:24Follow the instructions that you see 16:25there. When it comes to this spot right 16:29here, and this is now where I'm going to 16:30need everybody to pay attention to me. 16:33So, when you go in to create your lab, 16:39where you're going to want to create it, 16:41and how you're going to want to create 16:42it. Let me create a real quick new slide 16:44here. 16:46Sound effects help. 17:01There we go. 17:04Typing skill is inversely proportional 17:06to the number of people watching. 17:19Okay. 17:21So, when you go to create your repo, 17:24that's going to be the owner that you're 17:26going to want will be Octo. It will need 17:28to be inside that organization 17:31because otherwise it's not going to 17:32work. 17:34And then note the name. Just make that 17:37your GitHub handle. We'll kind of make 17:39it real nice and easy for everybody. So, 17:41owner will be Octal. That's going to be 17:44your name. And again, if you did not see 17:47where to access the lab, that's where to 17:49access the lab. I'm gonna leave the 17:50slide up for a minute here. 17:52That's where you're going to access the 17:53lab from. 17:56That's going to be going away in five, 17:59four, 18:013, 18:022, 18:04one. 18:06And then finally, that's where you can 18:08go ahead and create your repo. Again, 18:12note the owner, 18:14note the name, and away you go from 18:17there. So, I'm going to let you start 18:19roaming through exercise zero. I'm going 18:21to let you start roaming through 18:22exercise one. If you have questions, 18:25that is exactly what John and I are here 18:27for. Now, please do keep one big thing 18:30in mind, which is the fact that there 18:32are roughly about 80 of you, 18:35and there are two of us. 18:38We are doing our absolute best to run 18:39around as quickly as possible, but 18:41please be patient with us. Does 18:44everybody know what they should be doing 18:45right now? 18:48Okay, last very important thing. I 18:51always assume that silence is a hey, 18:54everything is fantastic. Neither John 18:57nor I are mind readers. So if something 19:00isn't going quite right, please, please, 19:02please say something. Let us know. All 19:04right. Now, I will let you go ahead and 19:07have at it. 19:13All right. I'll be back in one second. 19:25Has anybody been able to assign an issue 19:27to co-pilot? 19:30Some have. All right, let me do this 19:33again. Has anybody been able 19:36has anybody been able to successfully 19:38have co-pilot 19:40start work on the issue? Couple of 19:43people. All right. How many people have? 19:48Okay. Um, of those that just raised 19:50their hands, um, how many already had 19:53access to either Copilot Enterprise or 19:56C-Pilot Pro Plus? 19:59Okay, that's all right. 20:06Okay. Yeah. Okay. Yeah, we're trying to 20:10figure that out. Um the org that we put 20:12everybody into is supposed to have that 20:13level of access. Um apparently that 20:18doesn't seem to quite be the case. So, 20:21um in the meantime, um here's what I'd 20:25like to go ahead and do is kind of just 20:27start walking through the exercises here 20:30so that way you can at least see it. The 20:31other thing that I do want to highlight 20:33and let me put this URL back up here. Um 20:36now granted again to assign issues to 20:39copilot coding agent um you are going to 20:41need pro plus or you are going to need 20:43um um enterprise. So like that part of 20:46the lab you won't be able to do unless 20:47you have access to that. But if you have 20:50um um even copilot free um you'll be 20:52able to uh perform the rest of the uh of 20:56the lab. And you can see that right 20:58there. That repository is public. Um, 21:01and you can go back and play with it all 21:02on on on your own uh later on. Um, uh, 21:06later on there. All right. So, let's do 21:10this. Um, what I'm actually going to do 21:11is there's a question here. I'm I'm 21:12assuming the question was about copilot. 21:15The gentleman in red, the um, the 21:18G-Shock watch. Yeah, you had a question. 21:27So, um I the the question is do I 21:31consider any of the mobes vibe any of 21:33the modes vibe coding? And I would um 21:36say to a certain extent basically 21:37anything that's going to be um agent 21:40driven where 21:43uh you're going to have co-pilot kind of 21:45like driving the operation rather than 21:49you driving the operation. that would 21:51certainly fall under that category of um 21:53of of vibe coding. Um whether or not 21:56that's an approach that you want to take 21:57of vibe coding all up, I will kind of 21:59leave that up to up to you. Everybody 22:01sort of has their their own opinions on 22:03that. Um and one thing that you will 22:04notice um about me is um I typically 22:08don't share a whole lot of like strong 22:10opinions um in situations like that. So 22:13I don't necessarily have a strong 22:14opinion one way or another on that, but 22:16that kind of answers your uh answers 22:18your question. So yeah, cool. Other 22:22questions about copilot? So I'm bringing 22:24this up in the background here. Yeah, 22:27fire away. 22:29Cascade. 22:31So uh I'm going to answer um cascade 22:34cursor windsurf and all of those 22:35questions all up. Which is to say that 22:38um there's a limited number of hours in 22:40the day and things move really really 22:42fast. I can keep up with what we're 22:44doing. I can't keep up with what anybody 22:47else is doing. So, um I honestly am not 22:52familiar at all with any of the feature 22:54sets of any of the alternatives that 22:56that are out there. Um 22:59and honestly, like going out like 23:02bashing competition and things like that 23:04is not necessarily my vibe. Don't worry 23:05about it. Um um so what I would say is 23:10if you're going hey um Windinsurf does 23:12this, can copilot do it? Um does cursor 23:15do this or cursor does this? Can copilot 23:17do that? I can answer those types of 23:18questions, but if you're like looking 23:19for like a feature comparison or things 23:21like that, I I'm really not able to do 23:23that because again, I just don't know 23:24those well enough. There was a hand over 23:26here. Um, as you're showing that 23:29co-pilot can be more aware of the 23:30environment. Yeah. 23:35SQL data source. 23:38Yeah. So, this is a fantastic question. 23:40So the question is um can co-pilot be 23:43aware of um external uh data sources? Um 23:48and the answer is not directly but with 23:50a little thing called MCP or model 23:52context protocol it can. So if you're 23:54not already familiar with model context 23:56protocol he says bringing up this slide 23:58right here um the whole goal is to be 24:01able to expand um copilot's 24:03capabilities. So, Copilot is built on 24:05top of an LLM, large language model. Um, 24:08and that LLM is always going to be 24:10static. Um, and so what MCP allows you 24:13to do is it allows you to give Copilot 24:17the ability to call out to external 24:19services. And, um, the diagram looks a 24:22little bit like this. Um, I need 24:24everybody to memorize this. There's 24:26going to be a quiz on this in about 15 24:28minutes. Um, and basically what you're 24:31going to notice if you look at this is 24:33that your request is going to go to 24:35copilot. Then it's going to call out to 24:38the MCP server which is then able to 24:41access external resources. So one of the 24:44MCP servers that's available for example 24:46is GitHub. And so what I can actually do 24:49then with that MCP server is I can then 24:51go to C-pilot and I can say hey create 24:53an issue on this. So that way maybe I'm 24:56I'm in the zone, I'm coding, coding, 24:58coding, and I realize, hey, there's 24:59something I want to be able to look at 25:00later. Let me just go ahead and create a 25:01real quick issue on that. Then I can do 25:03that right from uh from chat. Or maybe I 25:05want to go in and do a search. I can 25:06again do that right from chat. Or again, 25:08I've got databases and I want to be able 25:10to like get that schema or I want to be 25:12able to get that data from there. Then I 25:14can do that with uh with my MCP server. 25:16Now, a couple of real quick things on 25:18MCP servers. Number one is that there 25:20are a bunch of um first-party ones that 25:24are created um like we have one, Azure 25:26has one, Playright has one um and then 25:30there's a lot of community ones uh that 25:33are out there. Now, here's the catch is 25:36that MCP servers are not only able to 25:38access data on your behalf, but they're 25:41also able to perform tasks on your 25:43behalf. 25:45So, as a result, before you utilize a 25:49third-party MCP server, make sure it is 25:53something that you trust 25:58or you can consider creating one on your 26:00own. I'm going to admit I haven't yet 26:02created one on my own, but um 26:07um but um it is something that is um um 26:13sorry I got 26:15thrown um oh I haven't created one on my 26:18own. Um, but I've seen a lot of people 26:20create them and it does seem to be 26:22something that's relatively 26:23straightforward um, as far as setting it 26:24up that you can just capture the 26:26request, process it, and then send it 26:27off from there and you basically just 26:29create a set of endpoints for copilot to 26:31to figure out. Okay, really quickly on 26:33that, if you have a backup for your 26:35database that's in like a SQL file, can 26:37it consume that as well? Sure. 26:39Absolutely. Absolutely. Yeah. Yeah. And 26:41in fact, you wouldn't even necessarily 26:42like if what you're looking for is to 26:45help co-pilot write database queries 26:48really well, um all that copilot really 26:50needs at that point is your DDL is your 26:52data definition language. And that's 26:54actually something that you can do um 26:59internally inside of um 27:04where do I want to go? 27:08I'm trying to remember this off the top 27:10of my head. So, I'm probably going to 27:12get the exact 27:16Oh, the Wi-Fi is going to be wonderful 27:18here. 27:28Oh, come on. 27:53Why 27:55I am connected to the speaker Wi-Fi? 27:57Yeah. Okay, that's supposed to be 27:59faster. 28:01There we go. Um, 28:15that's not it. 28:20I think this is it. Um, yeah, it's 28:23something. There it is. Yeah. Um, 28:27yeah. So what you could do um if all you 28:29have is just the DDL is you could 28:31actually just include that with your 28:32instructions um and then that way 28:34anytime that I talk to chat then copilot 28:36can go ahead and use that and be able to 28:38generate it that way and that's honestly 28:39simplest thing that works. 28:42So yeah. Okay. Um yeah. 28:52Uh absolutely. 28:55So let's talk a little bit. Let's 28:57actually do this. I'm going to 29:01um 29:03Yeah. 29:05Yes. 29:08Yeah. Unfortunately, um, between Wi-Fi 29:11issues, access issues, and things like 29:13that, we're just not able to to do that. 29:16So, yeah, I'm turning this into sort of 29:18like live Q&A and live demos, trying to 29:21give everybody the best possible value 29:22that I can given the situation that we 29:25have. So, yeah, 29:27let me do this. Make yourself 29:32comfortable, John. 29:44And then let me 29:50let me do this. Okay. Um 30:16Okay. So, let's talk a little bit about 30:19um copilot coding agent here. So, what 30:22I've got here is I have um an issue that 30:26I've created uh and this is just copied 30:29and pasted tree from the lab um to have 30:31it create endpoints for creating and 30:33editing games. And the first thing that 30:35I want you to notice about the issue 30:36here is again the context. That context 30:39is key here. That the whole goal of 30:44coding agent is to act asynchronously 30:47that I assign an issue to it and I just 30:50let it do its thing and off co-pilot 30:53does and it does its thing and then it 30:55will eventually come back to me. And 30:56that becomes really really tricky 30:58because how do I then know whether or 31:02not Copilot has everything that it needs 31:08to be able to perform its work? 31:13I don't know. And so that's the first 31:16big key. I always love the little eyes. 31:18That's the little indication that 31:19co-pilot's now on the test. It's kind of 31:21cute. Um, 31:23so the first thing I want to highlight 31:25is the issue. And you'll notice again 31:27I'm not being passive aggressive with 31:28co-pilot. That if I know what I want it 31:30to do, if I even know how I want it to 31:32approach the task, I'm going to tell 31:34co-pilot that that 31:37you leave for ambiguity sake, the more 31:39that you leave for the other party to 31:41figure out this is human or this is AI, 31:45the more chance that you're going to 31:46come back to something that you really 31:48didn't exactly want. 31:50So if you want the wall painted a 31:52particular shade of red, then say that 31:54you want the wall painted a particular 31:56shade of red. And so that's exactly what 31:58I've done here. But again, as I 32:00highlighted, it goes beyond just the 32:02prompt. And effectively, that's what 32:03this is, is this is a prompt. And so 32:06Copilot supports some different 32:09instructions files. Now, right now, it 32:11does depend a little bit on where you 32:14are and what you're doing, but with chat 32:17and with coding agent, all of them 32:20support 32:23copilot-instructions.mmd. 32:25So, if you're using chat and if you're 32:28using coding agent, this supports 32:31copilot instructions, 32:32copilot-instructions.mmd. 32:35And if we take a look at this file, what 32:36I want you to notice, it's just a 32:37markdown file. So nothing special, 32:39nothing fancy. And what I've done inside 32:42of this file is I've given it highlevel 32:45overviews of what we're building, how 32:48we're building it, and my project 32:50structure. So you'll notice, for 32:52example, that I've got some guidelines 32:55right up top. So this is a crowdfunding 32:56platform uh with a developer theme, the 32:59application uses yada yada yada. You'll 33:02also notice I've given it coding 33:03standards. This is what's required 33:05before each commit. I've given it 33:07language guidance and I've also told it 33:10how it is that I want my Python and 33:12Flask to be created, how I want my spelt 33:14and Astra to be created, how I want my 33:16style, my my actions. I've given it 33:19information about the scripts that are 33:20available and I've also documented my 33:23repository structure. 33:27Chances are you already have this inside 33:30of your projects or at least one would 33:32hope that you do. 33:35And if you don't, here's a good 33:36opportunity to create it. 33:39Hand that to copilot. 33:41And so now, anytime I make a chat 33:43request locally or when coding agent 33:45does its thing, it's going to be 33:47considering that. 33:49Now, going one step further with coding 33:51agent, another big question becomes, 33:53okay, well, where's it going to do its 33:54work? So, as it turns out, coding agent 33:57behind the scenes is using GitHub 33:58actions. 34:00And you'll notice right here I've got a 34:02special action that's created that's 34:04called copilot setup steps. 34:07And so in here I'm now having it install 34:10everything that I think it's going to 34:12need to do its work. So if there are any 34:15libraries, any frameworks, any services, 34:17anything like that that you need to have 34:18installed, any scripts that you need 34:20run, you can set that up right here. So 34:23now C-pilot is going to have this as its 34:26environment to get in and do its work. 34:28And it's also going to have this 34:30instructions file that we highlighted a 34:33minute ago to be able to act upon as 34:36well. 34:38Now on top of that, 34:41let me go over here to my pull requests 34:43is I can see the pull request that 34:44Copilot made. 34:47So just made this, you know, was three 34:48minutes ago. So this is not a pre-baked 34:50cake. We're doing this live. 34:54And if I open this up and I scroll on 34:56down, 34:58I can view the session here and this 35:01will show me copilot doing its thing 35:04behind the scenes and eventually here. 35:06There we go. Moving your mouse makes it 35:08go faster. What I can see is it's 35:10actually going out and it's exploring 35:12the project and it's digging up 35:15information on its own as well. So 35:18again, as we were talking, good code, 35:20clear code, good comments, good project 35:22structure, all of that helps your 35:24developers and all of that is going to 35:27help co-pilot out as well. So I can give 35:30it information through the issue. I can 35:32give it information through my 35:34instructions. I give it information kind 35:36of implicitly through the project 35:38itself. And then I can also create that 35:41environment by setting up that co-pilot 35:43steps. There was a hand here first. 35:45Yeah. Yeah. For 35:47instructions are available. 35:54Yeah. So, that's a great question. So, 35:55and I'm gonna answer the second part to 35:57that uh of that workspace as well. So, 36:00um when it comes to copilot 36:02instructions, those are always going to 36:04be available. Let me get rid of my red 36:06squiggies here. Um those are always 36:09going to be available um inside of uh 36:12inside of chat here. So, let's say I do 36:14this. So, I'm going to put this into um 36:15agent mode. Um I'm going to leave it as 36:18cloud 37. And uh by the way, um I do not 36:23have a stance on which model is better 36:26than any other model. Um you will 36:28notice, and you kind of pick this up in 36:30your lab as well. I I was one of the uh 36:31the authors of the lab. Um in the lab, 36:33we always use Claud 35. Uh you'll notice 36:35any of my demos, I'm basically always 36:37using Claude. You can read whatever it 36:40is that you want from that, but I have 36:42no personal stance on which model is 36:44better than any other model. There we 36:46go. So, um, update the website to allow 36:50for filtering by, um, publisher and 36:55category, add drop-down lists, and 37:00refresh the page when indexes um, 37:04change. Make sure the tests pass. Okay. 37:09So, um, go. So, what I want you to 37:12notice, um, is Oh, I put it into agent 37:15mode, so it's not I I promise you it is 37:17going to use the instructions. It's just 37:19not going to show it to me, 37:20unfortunately. Um, but on any of the 37:23modes in chat, oh, it will. There it is. 37:25I just needed to be patient. There's my 37:26copilot instructions under my 37:28references. So, there it is. It's it's 37:30using that uh that right there. Um the 37:32other thing that I want to highlight is 37:34and this right now is particular to 37:36local chat is I can even create 37:41um instructions files and this is 37:43admittedly a little bit 37:46um 37:49it's a little bit tricky to I think 37:51understand kind of the first time that 37:52you see it. Um so kind of go with me on 37:54this one. So copilot-in instructions 37:57universal every single chat request this 37:59is going to go 38:01the instructions files these become 38:04manual so I can add these in manually to 38:08a task that I'm performing inside of 38:11chat he says delaying long enough for it 38:13to finally open. Um so what you're going 38:16to notice again a markdown file but this 38:18is now particular to a type of task. So 38:21this is for creating a flask endpoint. 38:23And so you'll notice in here that I've 38:25given it uh information about the 38:27endpoint. I've given it information 38:29about my uh my unit test. I've given it 38:31a couple of notes about the project. And 38:33I've even linked to files 38:37that it should use as a prototype. And 38:39these are actually just existing files. 38:42So if I brought this in now, what it 38:45would do is it would follow all of those 38:47instructions there. 38:49But let's say for example with like 38:51React components just to use that as an 38:53example um that I want to make sure that 38:56React components always follow the exact 38:58same patterns and practices. So what I 39:01can do there is up at the very top 39:04you'll notice the apply to and then I 39:06can put in a path. So I could go 39:08asterisk 39:10um um asteris JSX or TSX if you're using 39:15TypeScript. And now any time that you're 39:18working with a file that matches that 39:20pattern, it will then automatically 39:22apply that instructions file. So in this 39:24case here, it's going to look inside of 39:26server tests and anytime that it finds a 39:28file that matches test underscore. And 39:30you'll notice if I go into my um server 39:39tests, you'll notice test games that 39:42matches that pattern right there. So 39:44anytime that I was wrong with a test 39:45file, that would then go ahead and um 39:48and match. The last thing I want to 39:49mention here is that all of this becomes 39:52part of your repository. 39:56So is creating these files going to take 39:58a little while? Everybody go like this. 40:01Yeah. But this is very much like 40:04spending three hours to write a script 40:07for that task that constantly takes you 40:09a couple of minutes that after a little 40:11while you're going to get your money 40:12back on it, so to speak. the exact same 40:14thing here. So the time that you spend 40:16here is going to help improve 40:19productivity and help ensure that your 40:21code generation is going to be the way 40:23that you want it to be. Yeah. 40:33Yes, it does have to specifically Yeah, 40:35if you're if you're using the workflow 40:37for setting up coding agent, it does 40:38have to have that name and that is 40:40documented. 40:54[Laughter] 41:03Yeah. So this is a fantastic question. 41:05So um so the question is hey about these 41:07standards can we put these at at an org 41:09level and um 41:12yes so there's a few different ways now 41:14that you can approach that. Number one 41:16is there is an ability to set 41:17instructions at the org level um as 41:20well. So you could do it that way. Um 41:22you can also again stand up an MCP 41:25server in front of that and allow for 41:27searching that way. And then the last 41:29thing that I would mention and we just 41:30recently like literally yesterday I 41:33think it was um announced this is um 41:36copilot spaces um where this is 41:40specifically on github.com that what you 41:42can do is basically point it at at a 41:44repository point that it specific files 41:46and say hey here's our knowledge bases 41:49here's how we want our code to be 41:50created here's all of our standards 41:52here's good examples and then that way 41:54when a developer comes along and they do 41:56searches on github.com 41:58they'll be able to then um raise the 42:01information from uh from there. You're 42:03welcome. There was something over here. 42:04Yeah, I'm trying my best to be as fair 42:07as I can. 42:14Yep. 42:24Oh. Oh, okay. Yeah. So, that's a that's 42:26a fantastic question. So the question is 42:28is hey about this um um um about this 42:32workflow file um is this able to um be 42:36like automatically created or edited by 42:39copilot um and the the short answer is 42:42no. Um now if I was like working locally 42:45like let's say I'm not overly familiar 42:47with actions which I'm not. Um then I 42:50could go in through Copilot manual and I 42:53could say hey I need to create an 42:54environment that's going to install this 42:56this and this um and let co-pilot 42:58generate this for me. Absolutely. But 43:00once I launch this in agent mode um 43:02agent mode is not going to be going back 43:04in and editing that. Now keep in mind um 43:08and I'm going to kind of lead this right 43:10into um the next um kind of like logical 43:13question here. Um, so keep in mind that 43:16agent mode or uh coding agent, so when 43:19it's doing its thing in the background 43:20here, it does have an ability to like 43:22run scripts. Um, so it can like run 43:25tests and things like that. And in fact, 43:26if I 43:28[Music] 43:31um where was I? Um 43:36here 43:40and here 43:43and 43:47let me scroll on down to view session 43:49here. 43:58I'm going to zoom out um because 43:59ironically I think it's going to make it 44:01a little easier to read. Okay, let me 44:02come down here. 44:04Um, 44:14one second. Um, yeah, here we go. 44:21Yeah. So, um, 44:24yeah, it looks like all the tests fail, 44:26although we're getting um Oh, that's 44:29cool. They pushed an update um to SQL 44:31Alchemy. I'll have to go back and now 44:33update the project. Um, but in any 44:34event, um, the takeaway that I want you 44:36to get out of this is, um, the fact that 44:39this is running commands locally. Okay. 44:44And so that then kind of raises um, a 44:46next big question which I think is very 44:48directly related to, hey, could it go in 44:50and like modify that um that that that 44:52initial set of workflow? Um, and there's 44:55it it it it can't modify that. Um and it 44:59also is not able to access any external 45:02resources. So let me uplevel this real 45:04quick. Um when it comes to coding agent, 45:06coding agent was very much built with 45:09security in mind. So the first big thing 45:12is it's built on top of GitHub actions. 45:15And if you're not already familiar with 45:16GitHub actions, when you spin up a brand 45:19new action to start running, it does so 45:22in an ephemeral space. So it creates the 45:25one space that it's going to work in. 45:27does all of its work in there and then 45:28once that's done all of that's torn 45:30down. So that's the only space in which 45:33it can work. Copilot only has read 45:36access to your repository save for the 45:40branch that it's going to create and it 45:43only has right access to that branch. So 45:46in this case here it's going to be 45:47copilot-fix-2. 45:50Um, copilot-fix is what it's always 45:52going to start with dash and then the 45:54number of the issue that was assigned 45:56to. I'm going to Yep. Um, so um, uh, so 46:00in this case it was issue number two. So 46:02that's why it's copilot- fix. So that's 46:04the only thing that it's going to have 46:05right access to. On top of that, it does 46:09not have access to any external services 46:13unless you open up the firewall. So the 46:16firewall is going to be completely 46:18locked down. it is not able to call the 46:20outside world. That includes by the way 46:23installing packages. 46:25So like let's say there was a library 46:27that needed to be installed and it tries 46:28to install that. It's going to fail on 46:30that unless I've specifically punched 46:32open a hole on that. Now the exception 46:35to that the workflow that I create that 46:38that uh that that initial setup workflow 46:40that we talked about that workflow 46:42because now I can install those 46:43services. So if there's anything that I 46:44know that it needs, then I can go ahead 46:46and do that. But otherwise, it's not 46:47going to have access to any external 46:49resources. So very much designed with 46:52that uh with that security in mind. So 46:54very long-winded answer, but there's 46:55everything you ever wanted to know. 46:57Yeah. 47:07Yeah. So let's actually go kind of one 47:09one step further with this. So, um I am 47:12a um uh I'm a good steward of my um 47:18um of my repository. And so when I 47:21create a PR into main, so I'm going to 47:23use this one here, dependabot wanting to 47:25uh to bump a version number. And we're 47:27going to notice 47:30we're going to notice 47:32there we go. Um that I have um uh a 47:37workflow set up here to perform some 47:39testing. So it runs unit tests and it 47:41runs some endto-end tests. So um that 47:44way somebody goes in, they create a a 47:46pull request and we're going to confirm 47:47all of that. Every organization should 47:50hopefully have some level of validation 47:53that PRs look good before they start 47:55merging them in. Right? Everybody go 47:56like this. Please lie to me if you have 47:58to. Fantastic. Now, um here's the catch. 48:02Again, thinking with our our security 48:04cap, um I want to make sure that that 48:08any of that code is always going to be 48:09something that that that I trust. So 48:11hopefully anyway, I can trust all my 48:13developers, but when it comes to AI, I'm 48:16not entirely certain. So what we'll 48:19notice is that here's the PR that it 48:22finished. And you'll notice if I scroll 48:25on down here and I get to that section 48:29on workflows that it has not run those 48:33tests. And it's only going to run those 48:36tests if I click that button right 48:38there. And of course before I do that, I 48:40should go in and review the code and 48:42everything else there. So yeah. 48:49Yes. 48:59Exactly. Yeah. So, so the question is is 49:02um so co-pilot when it did its work 49:06behind the scenes and we saw this 49:07already that it ran all of those unit 49:09tests locally and then now we're going 49:12to notice here that I'm going to have it 49:14run those unit tests again. I I do the 49:16exact same thing with co-pilot as I do 49:19with all of my other developers, which 49:22is that that bounce and suspenders 49:25approach. So 49:27I'm going to uplevel this again. Just 49:30because I introduce AI does not mean 49:32that any of the fundamentals of DevOps 49:35change. So let's think about how I wrote 49:38code before AI. So some of it would be 49:40from my own knowledge. Some of it would 49:43be grabbed from documentation. Some of 49:45it would be copied and pasted from Stack 49:47Overflow and changing it and hoping and 49:49praying that it actually did what I 49:50wanted it to do. Or maybe that's just 49:53me. 49:54Um, and then eventually I'm going to go 49:57ahead and I'm going to run my test 49:58locally, hope that all of them work, and 50:01then I'm going to create a PR. 50:03Now, after we do that PR, now what are 50:05we going to do? Well, we're going to get 50:07another developer to come along and 50:08review the code. We're going to run all 50:11of our actions, and we're going to make 50:12sure that our tests pass, that our 50:14llinters check out, that all of our 50:16security scans are run, that we're going 50:18to do all of those core fundamentals 50:22regardless of how my code is being 50:24generated. And that doesn't change when 50:26I'm using AI. So, is AI run those tests 50:28locally? Absolutely. But am I still 50:30going to go in and double check? I 50:32absolutely am. So, I'm going to do that 50:34here as well. 50:55Oh, I see what you're saying. Yeah. So 50:56that um like let's say I'm working on a 50:58larger project and admittedly this is a 51:00smaller project. So like when I run my 51:01my unit test or even my even my end to 51:03end test, you know, it's going to take 51:04like 30 40 seconds. Um, but if you've 51:07got a larger project where now that's 51:08going to be taking minutes. Um, so in 51:11agent mode then I can go ahead and 51:13direct it like hey only run the tests on 51:16what you're working on until you get to 51:18the very end and then go ahead and run 51:21everything. So I could either just 51:23include that in the prompt again don't 51:24be pass aggressive or co-pilot. You want 51:26it to do something tell it to do it. Um 51:28that might also be something that I 51:30would consider including in the 51:31instructions file of like hey you know 51:34make sure that you always do that. Um, 51:36and then on top of that, one of the 51:38things that I've I've noticed about um, 51:41Claude 4 or Claude Sonnet 4 or whatever 51:43the naming structure it is they're using 51:45um, on that is it tends to sort of like 51:48do that on its own where it will go 51:51ahead and like run a smaller set of 51:52tests and then like branch out and do 51:54the whole one. Um, which it it's doing 51:57that on its own. But again, like if you 51:58wanted to do something specifically, 52:00always tell it. Always tell it. All 52:02right, I'm going to go over to this side 52:03real quick and I'll come back to the 52:04middle. Yeah. 52:12Does Copilot? Yes. Yeah. Copilot does 52:16support uh remote MCP servers. Um if 52:18you're going to be using that with 52:19coding agent, it will support that with 52:21coding agent as well, but I need to open 52:24up a hole in the firewall for it to be 52:26able to access that remote service. 52:36Yes. Yeah. Uh that uh right here if I go 52:39to 52:42settings 52:44and 52:46I go to 52:49um coding agent. 52:52There's my MCP. I can go ahead and set 52:56the the the list my MCP servers there. 52:58and then 53:01um environments 53:06and then um copilot in here. There's um 53:13um there's different uh variables that 53:15you could then go ahead and set to open 53:17up your firewall. All that's in in the 53:19documentation, but that's where you 53:21would go to to go ahead and do that. 53:23You're welcome. Yeah. 53:32Correct. 53:35[Laughter] 53:37Yeah. 53:43Yeah. So, so the question is is hey, 53:45we're using ADO, we're using Jira, we're 53:47using, you know, fill in the blank for 53:48managing our issues. Um, how can I then 53:51use that to assign a co-pilot? 53:53Fortunately, um as of right now, um it's 53:55going to be GitHub only. Um I don't know 53:58whether or not it will stay GitHub only 54:00or what a future plan might look like. 54:02Um but uh but yeah, now one thing that 54:05you might want to consider um is um if 54:09there is something in Jira that you want 54:11to assign to to Copilot, you could 54:13create a relatively straightforward 54:14script to just like copy that issue over 54:17um and then go ahead and and assign it 54:19to uh to Copilot from uh from there. But 54:21right now, the issue does have to be 54:23inside of uh inside of GitHub. 54:31There you go. Yeah. Yeah. 54:55Yeah. So um this is a fantastic 54:57question. I'm going to um actually 54:59uplevel this. So the question is is hey 55:02we have um internal libraries and those 55:05are created in different uh repos and we 55:07want to make sure that copilot's going 55:09to use those um uh those external 55:13libraries when it goes in to to do its 55:15code. So um first thing that you can do 55:19um is 55:21make sure that copilot sees you doing 55:24it. So, Copilot is a great pattern 55:27matcher and in order for Copilot to be 55:30able to use an external library or an 55:33external framework, it just needs to see 55:35how you're doing it. Like, think about 55:37all the frameworks that you use on a 55:39day-to-day basis. Do you really know how 55:41they work behind the scenes? Like, I'm 55:43I'm a Spelt developer. I have no idea 55:45how spelt works behind the scenes, but I 55:47know how to use spelt because I've read 55:49all the docs and I've written all the 55:51code and and and I can get it to do 55:52everything that I want it to do, but I 55:54have no idea what it's doing behind the 55:56scenes. I want to think of the exact 55:57same thing when it comes to copilot. 55:59Copilot doesn't need to see the source 56:00code. It just needs to see how you're 56:03using it and then it can best understand 56:06then in turn how to um um how to do 56:09that. So um that's the first big thing 56:12is like show it examples of that. The 56:15next thing that you can then do is again 56:17take advantage of your instructions 56:19files. So um what you can do is just 56:23list the API. So if I um if I'm using um 56:28a particular library and I know that 56:30there's always like certain file types 56:32that are going to be using that then I 56:33could create that that instructions file 56:35or I could list that inside my 56:36instructions file. Or again, if it's a 56:38bigger set of libraries, put an MCP 56:41server in front of it and then I can go 56:42ahead and allow it to to search that way 56:44and be able to to see it um to see it 56:47that way. So, kind of show it how it is 56:49that um uh that that that that you're 56:51using it. Um 56:57and there was something else that I 56:59wanted to add there that will come to me 57:02um in a minute. 57:08No, 57:11there's something else and I just cannot 57:12remember what it is now. But yeah, so 57:19yeah, you um so this is a great 57:21question. So um what about fine-tuning? 57:24And the short answer is right now um we 57:27we don't uh support fine-tuning. Um, 57:30fine-tuning, as it turns out, is is very 57:34tricky because one of the things that 57:36we've discovered in like working with 57:37customers and so forth is customers have 57:39code bases where they're proud of a lot 57:41of it 57:43and then they've got a lot of it that 57:44they're not necessarily proud of. And so 57:46training copilot to understand, hey, 57:49this is the good stuff. This is the 57:51stuff you don't want to look at. Um, 57:54becomes a little tricky. So, this is 57:56again where standing like a uh up an MCP 57:58server really comes into play because 58:00now I can then better control this is 58:03what I want you to be looking at. This 58:04is what I don't want you to be uh to be 58:06looking at. So, yeah. 58:29I I am not a billing person. I am going 58:32to 58:38let Oh, I was looking at this clock 58:40right here. I thought I had six minutes. 58:42Oh, okay. All right. Thank you. I 58:44apologize for our network issues. Um 58:46again, um let me put the um uh the one 58:50slide um back up 58:55there. Um you can go ahead and check out 58:57the uh the lab from there. Thank you. 59:01[Music]