VS Code Live - Modernizing Legacy .NET applications with GitHub Copilot Modernization in VS Code
dotnet
1:36 Hello, hello everyone.
1:38 Welcome to the VS Code live stream and happy Thursday.
1:42 My name is Olivia.
1:43 I'm a developer advocate that works on the VS Code team
1:46 and I'm so happy to be here with you all today.
1:49 If you're you're new to our live streams,
1:51 we rotate having different guests come on, sometimes from Microsoft,
1:55 sometimes not, just to talk about all
1:57 the greatest things you can do with VS Code.
1:59 A lot of times a co-pilot sprinkled in there as well, too.
2:02 So, today we have a really exciting talk from a couple of folks from Microsoft,
2:08 Jorge and Joel, to talk a little bit
2:10 more about modernizing with GitHub co-pilot in VS Code.
2:15 Hello, hello Jorge.
2:17 Hey, Joel.
2:18 Hello, Olivia.
2:19 How are you?
2:20 doing?
2:20 Good.
2:20 How are you?
2:21 Thanks for being here.
2:23 [laughter]
2:23 Oh, we're we're thrilled to be here.
2:24 We're here.
2:25 Jorge, what are we talking about today?
2:28 Uh we're talking about modernizing .NET applications with GitHub co-pilot.
2:33 That sounds like a lot of fun.
2:35 Sometimes it's fun, but I think we'll show how
2:37 easy we can make it now using AI because I And how practical it is.
2:41 Right.
2:42 Yeah.
2:42 Um and chat, go ahead and let me know where
2:44 you're watching from now just to kind of get warmed up,
2:47 um but make sure to ask your questions all throughout
2:49 and Jorge and Joel can answer them as questions pop up.
2:54 Awesome.
2:54 Thanks, Olivia.
2:55 All right, I'm going to head backstage.
2:56 You all have fun.
2:58 Um if you need anything, just summon me.
3:00 Of course, we're live.
3:02 Awesome, Jorge.
3:03 You want to get going?
3:04 Absolutely.
3:05 Um we can we bring this uh yeah, there we go.
3:10 We have our screen.
3:11 So, this is where we're going
3:12 to talk about modernizing .NET with GitHub co-pilot,
3:15 uh specifically using the GitHub co-pilot uh modernization.
3:20 So, we're going to use our Contoso University uh project.
3:26 It's a legacy .NET Framework application that we're
3:29 going to uh modernize uh to .NET, all the way to .NET 10.
3:34 Uh and then we're going to show different options on how
3:37 to do that, uh starting with VS Code, um the CLI.
3:41 We'll also show the the cloud agent or what we now
3:44 call it was renamed from coding agent to cloud agent in github.com.
3:49 Uh I won't show the the modernized CLI,
3:51 but I'll just mention this is another option.
3:54 Uh and of course, you can always just
3:56 do you your own custom version of this, right?
3:59 But why why reinvent the wheel?
4:00 So, why not why not how this is
4:03 powered by using a new .NET modernize agent plugin.
4:08 So, before I get there, let's show the existing application.
4:11 Are you familiar with Contoso University, Joel?
4:14 I have been trying to get in Contoso University since 2020.
4:17 I mean, not 2020, but I meant to I won't say when I graduated high school,
4:20 but I cannot get in.
4:21 Jorge, do you know how to get in at Contoso University?
4:24 It's it's a very selective university.
4:26 I'm going to use just Visual Studio because we need IIS,
4:30 so I don't want to deal with you know,
4:33 MS Build and NuGet, so I'm just going to you know,
4:35 fire up our GitHub University portal.
4:38 Uh I have some connections there, so I I may be able to you know,
4:42 get you get you enrolled if you're interested.
4:44 Yeah, I really I heard about a professor that started working there.
4:47 His name's Professor Holland, Burke Holland.
4:50 I think he's actually the Dean of vibing.
4:52 And I really wanted to study some things under him, but I want to get in first.
4:57 I know about him.
4:59 Let's just give this a minute.
5:01 There we go.
5:02 We have our Contoso University running in um uh .NET Framework.
5:09 So, let's let's first get you enrolled.
5:12 This is our existing university.
5:13 You'll notice it's a little slow like the first time it loads.
5:17 We'll we'll see some improvement just from upgrading to .NET 10.
5:20 So, well, I see there's a Lauren Armer.
5:22 Is that a relative?
5:24 Uh no, actually that's my my cousin-in-law.
5:27 I didn't know how she got in.
5:29 Shout out to Laura.
5:30 Yes.
5:31 All right, so we'll get you in.
5:34 Um I'm in?
5:37 That was it?
5:38 Now you're in.
5:38 Yeah, we we got you in.
5:40 So, we we also want to do you want to add some courses, some classes?
5:47 to take there's two classes I got to take this year.
5:49 Um the one is I need to take vibing capstone course.
5:56 Vibing capstone.
5:58 Mhm.
5:59 And I think that's what, four credit hours?
6:03 Sure.
6:04 I get four.
6:06 Uh I get engineering.
6:09 Yep.
6:09 And then the other one I need is a .NET modernization class.
6:12 That's been required.
6:14 Absolutely.
6:15 I can probably teach that.
6:18 So, this app looks a lot like when I actually went to college.
6:23 [laughter] It hasn't been updated since.
6:24 It's pretty old, but that's that's what we want to get it upgraded so
6:28 that then we can later modernize it and and re-architect it to um you know,
6:33 a more modern architecture.
6:35 So, what about instructors?
6:37 Do you want to see uh I want to see I want to see Professor Holland.
6:42 That's Yeah.
6:43 the one.
6:44 Uh Dr.
6:46 Holland in here.
6:50 We Did we hire him at the epochs?
6:52 Has he been there since the epochs?
6:54 No, no.
6:54 We'll we'll just hire him this year, so we'll make him teach vibing capstone.
7:02 Uh looks good.
7:04 All right.
7:05 All right.
7:05 Are we I think that's good.
7:07 I think that's a good example.
7:08 So, you can see that this is
7:09 a basic .NET Framework website um circa probably what, 15 years ago, Jorge?
7:15 Yeah, so a lot of these technologies and I like
7:18 I had a co-pilot put some of the dates in here.
7:20 I mean, these technologies are at least 10 plus years old.
7:23 I mean, obviously we have IIS, we have MSMQ,
7:26 which is one of the oldest things in there.
7:28 Uh so, that's what we definitely want to modernize
7:30 it and and move away from these dependencies.
7:33 Um now, we're going to upgrade upgrade the framework.
7:37 We're not going to re-architect it, but as part of that upgrade,
7:39 we actually there's some things that are no longer going to work, right?
7:42 So, we need to get rid of that IIS dependency.
7:44 That's something the the modernization agent will do for us,
7:48 as well as as as MSMQ.
7:50 We no longer support that.
7:52 That's been deprecated for a while,
7:53 so we we would definitely want to get rid of that.
7:56 Are you ready to get started?
7:58 I'm ready.
7:58 So, do we need a story point and estimate this, Jorge,
8:01 or how are we going to get started?
8:02 Cuz coding like I was 15 years ago,
8:04 we go in a room for all day and throw our fingers up.
8:07 Yeah, so this is something I I actually like back in my consulting days,
8:11 I used to do a lot of upgrade projects building .NET in Java.
8:15 They were not fun projects, to be honest,
8:17 there were a lot of repetition, but there were some unique challenges in them.
8:21 And and yeah, this is something that would take, you know, weeks if not months.
8:25 We're actually going to do it in just a couple hours.
8:29 Or sorry, couple of about 20 minutes, I should say.
8:33 [laughter] Uh we're doing it live, so if there's a hiccup,
8:35 obviously we all we're all developers.
8:37 And since Jorge just called out that, we know there's going to be a hiccup.
8:41 All right, so I'm here in VS Code.
8:43 I'm going to you're going to need
8:45 obviously a GitHub co-pilot account to do this.
8:47 And you're also going to need the the GitHub co-pilot modernization extension.
8:51 So, if you just search go to the extensions and search for uh oh,
8:57 I meant to type co-pilot modernization.
9:01 And our so first hiccup.
9:03 Yeah, we're doing it live.
9:04 Did you know that we now have over a million subscribers on the VS Code channel?
9:11 I did not know that.
9:12 So, this is this is GitHub co-pilot,
9:18 just type co-pilot modernization, it'll take you there.
9:21 Install it.
9:22 And then agents, it's there's a new .NET agent and those are
9:28 going to show up here in the in the agent drop down.
9:31 Um so, you're going to see a set of agents.
9:34 So, like well, this also works for Java, but we're going to focus on the .NET.
9:38 So, we have Azure .NET and this will help you not only modernize it,
9:41 but also make it Azure friendly so that you can deploy it.
9:44 Uh in this case, we're only going to do
9:46 the upgrade so that you know, we can run it.
9:49 And once once we can run it,
9:50 then we we can then later change it to to working in Azure, right?
9:53 So, you're going to Uh, the modernized .NET agent.
9:58 So, make sure you select that.
9:59 Uh, and we'll for this we'll usually use Cloud Opus.
10:03 I've had good success with that.
10:04 I mean, you also have other options like Sonar GPT 54, um, you know, Gemini.
10:09 You can pick uh, your favorite model from here.
10:12 Uh, I'm also going to do one more thing.
10:14 I'm going to actually switch to um, Autopilot.
10:17 Uh, and the reason for that is I want
10:18 to make sure this goes through like like smoothly.
10:21 Um, Autopilot is different than the bypass permissions
10:25 in that it assumes that you're away from your desk.
10:27 So, if if the model if the agent needs input from the user,
10:30 it's going to it's going to decide what's best
10:32 like what what it thinks is best for you.
10:35 And I'm I'm going to use a very simple prompt just to get things started.
10:38 Uh, I'm going to just tell it upgrade my project to .NET 10.
10:44 Uh, and I'll just tell it to um,
10:46 commit changes to my um, to um, what do you call this?
10:53 Upgrade .NET 10.
10:57 Uh, we'll just call it VS VS Code and live because we're live.
11:02 Uh, so does that look good, y'all?
11:04 You ready to pretty good to me.
11:06 Let's hit send.
11:07 That in my day would have been like 15 story points just uh, get this set up.
11:12 Now, what's going to happen underneath the covers?
11:14 So, it it's it's it's actually going to change first come up with a plan, right?
11:18 It's going to uh, assess the application and it's going to decide uh,
11:22 how it's going to upgrade it,
11:23 what needs to be done to get this application upgraded.
11:26 Uh, now because I have it in Autopilot,
11:28 it's normally would show you the plan and let you um,
11:34 you know, select some options, right?
11:36 As as to what improve provide some more
11:38 details about how you want to upgrade uh,
11:41 which you can also provide an initial prompt as well.
11:43 Uh, that's certainly another option,
11:44 but you normally want to review that plan, accept it,
11:47 and and then tweak it if needed,
11:48 and then let it let it actually cook and do the upgrade.
11:51 While this is going, uh, how about we we do the same with Copilot CLI?
11:55 Sure.
11:57 Um, so in Copilot CLI,
11:58 we first thing is have to install um, a plugin marketplace.
12:02 Uh, and I and that's on my in the readme instructions.
12:05 Uh, and then I already did that ahead of time.
12:07 Uh, I'm just going to show you the and then you you install the actual plugin.
12:12 Uh, which should be uh, oh, it's sorry.
12:17 Plugin list.
12:19 Uh, there it is.
12:19 So, I have three plugins.
12:21 I'm going to use the one at the very bottom.
12:22 Well, actually this is what gives me the the the agent that I need.
12:26 Uh, so I'm going to use the agent command.
12:29 And I'm going to select the modernized .NET from from my plugin
12:32 to make sure I have the the latest and greatest version.
12:35 Uh, let me make this a little bigger.
12:38 And then I'm going to switch to Autopilot.
12:41 Uh, and then I'm going to uh,
12:46 just use the similar prompt like a upgrade uh, my my project to .NET 10.
12:56 Trying to Are you typing Jorge cuz I don't think we're seeing it in the No,
12:59 I I was trying to paste it, but it's Ah, good.
13:02 I may have to type uh, Sorry.
13:06 And by the way, for those at home thinking,
13:07 "Hey, he's doing this on the same repo." He's not.
13:09 He's cloning these to two different spots on his machine because um,
13:13 we would have conflicts,
13:14 but also you could do this technically with work trees if you wanted to.
13:20 Sorry, Jorge.
13:21 I told them your secret.
13:24 All right.
13:25 I just paste No no problem.
13:30 Um, you know, .NET CLI.
13:36 Okay.
13:36 Can you hear me?
13:37 Yep, I can hear you.
13:41 Like you want to hit enter?
13:42 Okay.
13:42 Okay.
13:42 Okay.
13:43 Got it.
13:43 So, I thought I was going to hit So, yeah.
13:44 So, I'm going to just use the same same prompt.
13:46 Now, I haven't hit enter.
13:48 I just want to show you we have Autopilot,
13:49 we have the uh, modernized .NET agent selected.
13:53 Uh, let's just go with Opus to play safe.
13:56 Uh, and and then hit enter.
13:59 Uh, is I continue and this enable all.
14:05 And it's going to do the same thing.
14:06 It's just going to start processing showing along.
14:09 Now, in this case, we are going to uh, um, it Well,
14:18 let's go back to VS Code see how this is going.
14:22 We can see how it's going through different stages.
14:25 Uh, um, what it has since we assessed so far.
14:29 Um, there's there's a summary about the project, um,
14:33 what it's what it's going to change, some packages that it needs to upgrade.
14:36 Uh, and then it will then eventually come up with um,
14:39 a plan and then also the the upgrade options uh,
14:42 will probably This is where you would be
14:44 able to provide input about these options, right?
14:47 It will give you the options uh, of how how you want to upgrade.
14:50 Um, in this case, as I said, it's just going to assume um,
14:55 just it's going to decide for me, right?
14:57 Which is which is fine.
14:58 It it it'll it'll do a a pretty good job about that.
15:01 Um, just deciding deciding on the safest
15:03 and popular options to for these upgrades.
15:07 Yep.
15:08 And what we're doing right now let's see how this works underneath the covers.
15:11 Uh, we can actually look at the agent that's Still there, Jorge?
15:21 I think we're hitting some internet lag somewhere.
15:24 Yeah.
15:26 That's not a problem.
15:27 I missed that last part.
15:28 Sorry.
15:30 Let's say no no problem.
15:32 Let's say what I was trying to illustrate here
15:33 is right now we're just doing an initial pass.
15:35 So, you know, it's before we go to planning.
15:37 We're just going to see what happens when we
15:39 let the magic agent work on our code base.
15:41 And then we're going to iterate back through
15:43 and show you how to kind of fine-tune this.
15:45 Now, this isn't going to be magic magic where we just do Codus upgrade us.
15:50 Um, there is still work an engineer needs to do like Jorge was illustrating.
15:54 Uh, maybe pick the right upgrade path.
15:55 There may be different packages it's recommending.
15:58 Um, maybe you need to integrate your new APM um, or something else like that.
16:03 But the the modernization assistant will help us do that.
16:10 Yeah, thank you, y'all.
16:11 Um, and then just let's just for fun we'll
16:13 we'll just pick one more one more option here.
16:17 Uh, But wait, there's more.
16:19 There's more.
16:20 Uh, so I'm going to go to the to the agents.
16:23 Uh, on my uh, this is the fork of the repo of the Azure sample .NET migration
16:27 Copilot sample that has the Contoso University.
16:30 And there's some setup that you have to uh, to do uh, and that's um,
16:38 there's there's some instructions on on on on the links uh, that are on Sorry.
16:46 Are we We're still connected.
16:49 Don't know where the lag is coming from, but there is lag.
16:51 So, thanks for bearing with us, VS Code team.
16:52 Okay.
16:53 Okay.
16:54 [clears throat] I was seeing some loading thing.
17:01 All right.
17:01 So, now it's loading the agents.
17:05 And then what I'm going to do here is uh,
17:08 I'm going to select uh, custom the custom agent.
17:10 So, I I I have to create this ahead of time
17:13 and you have to put it on your .github directory.
17:15 That's why I'm using the fork.
17:17 And also so that I can run um, you know, my own session here, my agent session.
17:21 And then I'm going to uh,
17:23 just use the similar prompt like just upgrade my my my project to .NET,
17:27 commit changes to let's just call this uh, CCA live.
17:32 And then um, now this is the parent agent.
17:35 You we're using Copilot agent.
17:37 Uh, it will prefix that.
17:38 So, if you're using Cloud,
17:39 it will use Cloud slash whatever branch name you give it,
17:42 but it's it's going to uh, you know, respect that that part of the branch name.
17:46 Um, now for this one, let's um,
17:49 let's just try GPT 54 for this one just to try something different.
17:55 So, I'm going to start this task.
17:57 And that's going to fire up an agent session.
18:00 You'll see it here.
18:01 It's it's running on the background.
18:03 And then you'll see that um, well,
18:05 if I go in here, you're going to see the details.
18:06 It's going to spin up like some compute environment where you can uh,
18:11 compile and do this work.
18:12 So, it's kind of like what's happening in VS Code now.
18:14 It's not fully happening on the on the cloud running on a GitHub hosted runner.
18:18 Uh, and then while that's going, let's let's go back and check out our VS Code.
18:21 Uh, Sorry.
18:25 Looks like it's it's showing along.
18:26 It came up with um, uh, the the some of the upgrade options like it asked you,
18:33 "Do you want to do everything in like
18:35 like single commit versus multiple commits?" Uh,
18:38 there's different options that I could have
18:39 chosen from if I had not used Autopilot.
18:42 Uh, the the one thing I want to point out
18:44 is the modernized .NET if you look at the agent definition.
18:47 So, this gets installed by the extension,
18:49 but it's really the same thing from uh, uh,
18:51 this is the thing that's You'll see that what what
18:55 it's what it's doing is going to This is very generic.
18:59 Sorry, I have one issue.
19:01 Jorge was experimenting with um, unseen features uh,
19:06 using bring your own key models earlier today.
19:10 Yeah.
19:11 Uh, so yeah, something's working on my VS Code.
19:14 So, what what what caught my attention is this is very generic.
19:17 Like I I was expecting to see a stuff like specific to to .NET upgrade task.
19:22 And uh, what you see here is just is just
19:25 has instructions of how to get in start the skills, right?
19:28 For for different scenarios.
19:29 And this is really it's doing this through uh, a Copilot mod NCP.
19:35 So, if if I go into the tools that I have available,
19:39 you'll see it somewhere in here.
19:40 There's a Copilot mod is actually what what it gets
19:44 used to get those additional skills depending on the scenario.
19:48 Uh, you'll see that it will call and I can show you uh, something like Yes.
19:54 All right.
19:55 said it was going to go flawless today, Jorge.
19:57 You It never does.
19:59 That's the penance you're paying.
20:02 There we go.
20:02 So, it's it's I mean, this is like the code to the compiler modernization.
20:07 Now, if you wanted to see what's really behind the covers,
20:10 I I did I think I did this yesterday, yeah.
20:14 So, you can use something like, you know, select the agent and say,
20:17 "Hey, what skills are available
20:18 for for .NET upgrade?" Something along those lines.
20:21 And then you'll see that it comes back with the the actual meat, right?
20:24 The details that I wanted to see that, "Oh, okay,
20:26 tell us how to grade a like ASP.NET MVC,
20:30 how to upgrade Entity Framework." And there's more than this.
20:34 I think I think it mentioned somewhere
20:35 here there's like like 80 81 skills available.
20:39 And you can also provide your own skills.
20:41 So, well, okay, so looks like this this got to the point where it's asking
20:46 for my input and then the the agent just decided what it was best for me.
20:49 So, it's just going to go ahead and proceed.
20:51 Now, the other way the other way you can find out
20:54 what's behind the covers is by going into the the modernize.net plugin,
21:00 which is um this guy right here.
21:03 So, if you go to the .NET modernize.net repo, it has the source.
21:07 It also has instructions on how to set this.
21:10 Yeah.
21:11 Can you zoom in some?
21:11 Oh, yeah, sorry.
21:13 Is that better?
21:15 That is better.
21:17 More?
21:19 Okay.
21:20 And then the the the change log is really where where
21:23 you can find a lot of the scenarios that are supported here.
21:29 And like for instance, converting the project to an SDK style,
21:33 I know that was used here because this was still using like MSBuild.
21:37 There's like like the MSMQ messaging.
21:40 So, this will just make it compatible to .NET Core.
21:44 This is one example where you can tell it how you want to replace that.
21:47 Maybe say using Azure Service Bus, but in this case, by default,
21:51 it will probably use use like a in-queue in-memory message queuing.
21:55 Which is fine as a as a temporary transition stage.
21:59 But that's that's actually tell that you can provide.
22:02 The global.asax, that's another one I was expecting to see.
22:05 We need to get rid of that.
22:06 And there's stuff for like MVC.
22:09 Like version upgrades.
22:11 Well, this is the some of the existing stuff
22:13 like SQL client migration is another another big one.
22:17 And as I mentioned, you can also provide your own skills.
22:20 So, it doesn't have to be just the ones that are in in the in the packet.
22:26 Let's go back and check where we are.
22:30 So, we got a question out there.
22:32 And I know audience, we're kind of a bit lagging.
22:34 There's some internet traffic between Indianapolis and Pittsburgh right now.
22:38 Um But I got a question out there from the chat.
22:41 So, does this supersede the update extension?
22:45 And can you do this in Visual Studio?
22:47 So, let's answer the first one.
22:48 Does this supersede the extension?
22:50 The update extension?
22:54 Yeah, that's I mean, it's this is using GitHub Copilot as the engine.
22:59 So, so that that got a much better results from from that.
23:03 I think that is that update extension is probably going going away.
23:06 It will it is supported in Visual Studio.
23:09 I actually have Visual Studio right right here.
23:14 Let's just ignore all.
23:15 And when you go into the Copilot chat,
23:18 you'll see it is built in, so you don't have to install the extension.
23:22 As this modernize agent.
23:25 Well, you select it, it will and then just type the same prompt.
23:28 It's it's exactly the same the same engine behind the covers.
23:32 It's that's using that same .NET agent.
23:35 They're definitely you can do this in directly in Visual Studio.
23:38 We just picked four ways to do it and we didn't think we had time for five ways.
23:43 So, you know, if you need help from Visual Studio on that, hit me up on Twitter.
23:47 We'll help you out there.
23:50 But very much the same process, right, Jorge?
23:53 Yeah, that's that's pretty much the same the same process.
23:56 I yeah, I could have just kicked it off, but I yeah,
23:58 so this is this is too much going on right now on my computer.
24:02 And then you can delegate it to the cloud,
24:04 which is what we're also doing as well.
24:07 Check that out.
24:09 What we're trying to show is something that used to be very hard to do.
24:13 Well, not really hard, more tedious, long-winded.
24:16 There's a lot of probably line of business
24:17 apps out there that are sitting on 4.8 framework.
24:20 Now you can move them up to the core.
24:21 You can modernize them pretty quick.
24:23 And you can really just start moving on with more modernized software
24:28 and really showcasing the power of what our agents can do on your behalf.
24:31 Taking out those What do you say, Jorge?
24:33 Was this your favorite type of work
24:34 when you're working writing code for a living?
24:38 Not at all.
24:40 But I somehow always end up volunteering for this type of project.
24:44 [laughter] Really putting joy back into software engineering
24:45 because modernizing is actually a lot of fun,
24:48 but converting all those usings at the top.
24:50 Shout out to the .NET team, you know, what usings remain,
24:53 what usings go away, what libraries change and go.
24:56 We map that all out for you and it allows you to upgrade.
24:59 But Jorge, what are you showing me right now?
25:02 Yeah, I just wanted to we're not going to show
25:03 the modernize CLI but it's it's yet another fourth option.
25:06 So, we we have the option this will
25:08 do batch assessments and batch upgrades for you.
25:11 So, if if you you know, if I go to this link right here,
25:15 it just takes me to the the Copilot modernization
25:19 documentation that has all this information in one place.
25:22 So, this is the modernization agent that the one
25:25 that I'm not showing that specifically is the modernization CLI.
25:29 I know we're we're not very good with names.
25:31 Modernize CLI.
25:32 So, you'll actually get like a modernize command.
25:34 It uses GitHub Copilot CLI and and and and the GitHub CLI underneath the covers.
25:40 But it does give you the option
25:41 to create multiple upgrade multiple projects at once.
25:46 And that's something that I've been been exploring.
25:50 So, if I can I can just show you one other prompt.
25:54 So, we start let's start a new session here.
25:58 And I'm going to I'm just going to use agent.
26:01 And then I'm I'm going to try a prompt like looks like this.
26:05 I'm going to just paste it and say, "Hey, using you know, GitHub NCP,
26:09 can you identify all of my projects that have the .NET framework?"
26:13 And then I wanted to create like a GitHub issue for each project identified.
26:17 And then tell it to, you know,
26:18 like set up the modernize agent so that I can then use
26:21 the the the Copilot cloud agent to migrate each project to to .NET.
26:27 And let me use say later.
26:30 So, I don't want to like get I don't want it to to start modernizing.
26:34 I just want it to just to prep prep those repos, identify them.
26:39 And then yeah, and then I'll I'll also make sure I have my GitHub NCP selected.
26:44 Which I do.
26:45 So, I can just kick this off in parallel.
26:51 And this is just going to go.
26:53 You just dropped something in there and I, you know,
26:55 we we did create this, but let's explain this kind of piecemeal here.
26:58 So, let's pretend you and I are at the platform team at Contoso University.
27:02 And all of our source code for all of Contoso is sitting in GitHub.
27:06 And we have 100 repos.
27:08 And they're all in what?
27:09 4.8?
27:10 Um Yeah, a lot of them can be.
27:12 What's this prompt do?
27:13 Walk me through that.
27:15 Right, so it's going to use the GitHub NCP
27:17 tools to first go and look at my existing projects.
27:21 It's going to query and that's kind of what it's doing right here.
27:24 And obviously, I have to be authenticated
27:27 otherwise it will prompt me to authenticate.
27:29 And then it's going to like traverse through all
27:32 of those and then try to find the repos.
27:33 And you can see here how it's how it's coming up with potential candidates.
27:37 So, it looks like it found like six C# repos.
27:40 But not all of them will be on on the .NET framework, which is fine.
27:44 It will then drill down into those details and then and then identify them.
27:48 And then also using GitHub NCP,
27:50 it has the ability to create GitHub issue, right?
27:52 So, it's going to create an issue.
27:54 It's going to put the details about the project.
27:57 And then I I also ask it to prep it because I wanted it to use coding agent.
28:01 I mean, that's optional, but um All right,
28:03 let's say we wanted to use coding agent for our cloud agent,
28:06 I should say, to do that.
28:08 Then it will then create like create the the custom agent.
28:13 Or at least have the details in the issue so that I can
28:16 delegate to code cloud agent to to implement that for me as well.
28:20 And then just have have it work on the upgrade.
28:22 So, so what you're basically saying is if I have 100 repos,
28:26 I can go take this prompt,
28:28 figure out which ones need to be upgraded, insert the coding agent by hand,
28:32 and either A, choose to delegate and review each issue and say I
28:37 want to assign this to Copilot agent or to Jorge as a human,
28:40 or potentially just changing my prompt, I could have it take a crash course.
28:45 I just could say, "Hey, try to upgrade all 100 in a branch.
28:48 Don't deploy to production,
28:49 please." But I could take a swatch at it and upgrade things.
28:54 And then what you're also telling me is I
28:55 could customize some of my skills in that prompt.
28:58 So, things like, "Hey, find all the repos I have um you know,
29:03 uh I forgot what mess like an old message bus in it.
29:08 And then, "Hey, do this upgrade path." Or try that upgrade path.
29:12 And this just shows how easy it becomes to start
29:15 modernizing your entire ecosystem with simple commands like this.
29:19 It's just allows us to think differently
29:21 about maintaining legacy code and hopefully modernize it.
29:25 But Jorge, where are we at with these modern modernization projects?
29:29 Has one of them completed yet?
29:30 I know one of our secret things was we wanted to show Contoso actually working.
29:34 So, we were going to upgrade it on three
29:35 different paths hoping it would get done in an hour.
29:38 But are one of these done yet?
29:41 No, no, they're they're still they're still cooking.
29:43 We can see here I mean, one of the things you you'll see
29:46 that it's it's actually you'll see errors, right?
29:49 As as it's churning along that it's it's it's trying to go past like, "Oh, okay.
29:52 I I found the an error and it's just going to iterate through that." That's
29:55 the the the beauty of the agent working
29:57 along uh churning along uh using our skills.
30:00 Uh I mean, this is this one is showing it's uh 50% complete.
30:04 So, I mean, that probably has a good idea based
30:06 on the task that it that it that it came up with.
30:09 Um I I I think the Copilot CLI will will will get done first, but but we'll see.
30:15 Uh we definitely want to show it um Um up upgraded.
30:19 I mean, it should it should be done roughly within 20 minutes.
30:22 Uh so, I think we're almost there.
30:24 And this is that annoying issue in my piece of it.
30:27 hey, here's a here's a question we always get.
30:29 Um you know, how do we make sure the code base is actually going to work well?
30:33 You did a lot of this migration in the past.
30:35 So, what are things that we need to see
30:36 in the code base that would probably help success come quicker?
30:40 Yeah, so so that's a great question.
30:42 So, I I This is kind of the the the YOLO path, right?
30:46 But, if if I was doing this, I I definitely want to see uh
30:50 good good test coverage like uh try
30:52 to increase the test coverage before the upgrade.
30:55 And by that, I mean not just the unit test,
30:57 but also like ideally end-to-end tests.
31:00 Uh because this is a life-for-life migration,
31:01 so it it shouldn't the the UI shouldn't significantly change.
31:04 So, I should still have the same uh functionalities.
31:07 Want to make sure any like nothing gets lost from from this upgrade.
31:10 And and if it is, then at least be able
31:12 to identify it variously without like going on notice, right?
31:15 So, that's that's what a good test harness will do for me.
31:17 And that's that's what I would definitely try
31:19 to increase right before going through through the upgrade.
31:23 Now, given the fact that let's talk about how you did this back in the day,
31:27 say before 2021, how would you do that?
31:31 Uh just like start like writing unit tests uh write like like end-to-end tests,
31:39 probably using Selenium back then.
31:42 Um just to have like make sure I have good good test coverage.
31:46 Uh maybe try uh mutation cover uh mutation test as well.
31:50 And and yeah, and then that that give will give me confidence, right?
31:55 As I as I go through the upgrade like the the be
31:57 able to to validate the the after result of after the upgrade.
32:01 And how would you do it today?
32:02 I Do we have time to demonstrate that really quick?
32:06 Uh I don't I don't Or is that a next stream?
32:09 That's supposed to be a hook.
32:10 To Olivia, you know, maybe maybe the stream on you know,
32:13 writing legacy code test using Copilot.
32:15 But, we would use GitHub Copilot to build
32:17 a testing strategy and help us build out the test
32:20 very quickly so that we can modernize our software
32:23 quicker with confidence that we're not going to break anything.
32:27 Yeah, and and GitHub Copilot's great for that.
32:29 So, so I will I will do like end-to-end tests with Playwright.
32:32 I I've used it a lot for for writing a a lot of Playwright tests.
32:35 It's it's it's awesome.
32:37 And uh with the cuz I mean, the the time it takes to create unit
32:40 tests is gone like it's it's like near zero.
32:43 I mean, like I mean, yeah,
32:44 we probably do it like 20 minutes like just a a good a good head start.
32:48 But, uh uh there's no there's no longer excuse for not writing tests, right?
32:51 I mean, that's that's important part about it.
32:54 Yep.
32:55 So, where are we at with our agents?
32:56 Which one's winning?
32:57 Is it the cloud?
32:58 Is it the CLI?
32:59 Or is it the VS code?
33:00 Let me check on the cloud.
33:01 I I I would think the the the CLI is ahead.
33:05 Um Let's see where our agent is.
33:08 Yeah, this is probably a little behind, but this started last.
33:11 So, we'll let this keep going.
33:15 Uh this is uh still I think this is getting close from from what I see here.
33:20 Uh so, this may be getting to the finish line.
33:23 Uh while that's going, let me let me also show you uh so,
33:26 I mentioned that there is uh a custom agent that you have to preload.
33:33 Uh so, if you go to so,
33:34 .github is that special directory where you put this uh this setup.
33:38 Uh and this this would be the modernize.net agent.
33:42 Uh the only the only thing I don't like this approach is that is this is
33:44 now a static copy of that, so you have to make sure that this gets upgraded.
33:49 Uh so, at this point in time, it should be the same version,
33:51 but uh if there's a new release, you have to manually update it.
33:53 We could use like a uh agent workflow to to help upgrade that.
33:57 And then there's also a this compile setup steps.
34:00 Uh now, because we're using .NET Framework 4.8, uh that requires Windows.
34:04 So, this needs to run on a uh uh a GitHub um Windows runner.
34:13 So, that actually has an another requirement that's uh
34:17 you actually have to change the settings on the firewall.
34:19 Uh and that's all documented here
34:21 in the in the .NET uh modernize.net plugin uh readme.
34:25 So, if you go here, uh you'll see the instructions
34:28 for uh coding agent um uh Visual Studio Code,
34:32 which is we we showed you you install the the monetization option.
34:35 The CLI, you just install the marketplace uh
34:37 for for modernize.net and then install the plugin.
34:40 And in Visual Studio, you know, it's it's baking,
34:42 so you as long as you have your in the this versions of uh Visual Studio,
34:47 then you should just be able to just type the add modernize custom agent.
34:53 Like everything in software engineering,
34:55 there's four to five different ways to do this.
34:57 Yeah, and then actually the the other option is is roll your own, right?
35:02 I mean, you you could just use this with agent mode.
35:04 Um And but what I like about this is the skills.
35:08 Like I I I think if you have a good collection of a skills,
35:11 um you can certainly do that um on your own like So,
35:15 you can use this and then add your own skills to your project
35:18 and it will use those as well as as well as instructions.
35:20 So, if you have a very specific scenario, uh you can build it that way.
35:24 I think somebody was asking about web forms.
35:26 Yeah, I mean, that's something you can teach it to to do
35:28 it uh by providing a skill to to upgrade using uh web forms.
35:33 And that uh there's there's yet another option.
35:37 Uh so, once you install the the extension,
35:39 you'll see this Copilot modernization.
35:41 Uh and then you have this like one button like All
35:45 this does is just puts up uh upgrade to .NET version you know,
35:49 not very specific, so I wouldn't use that.
35:52 Uh but, this assessment dashboard is very interesting because
35:54 it actually assess your your application for cloud readiness, right?
35:59 So, uh I I run it already a few times.
36:01 As you can see here, uh some of the suggestions that it came back with is like,
36:05 "Oh, yeah, you your SQL database is local.
36:08 Uh so, this is specifically modernizing for for Azure, right?
36:10 For the cloud.
36:11 So, you want to migrate that uh to to like an Azure SQL.
36:15 Well, and then you also have the option to just just run
36:17 the task and this will ask Copilot to to do it for you.
36:20 So, it will populate a prompt with the details.
36:23 Uh you can see here how it found like local
36:26 uh entries and it will point pinpoint the the the lines
36:29 of code where where you have this, so you can
36:31 like manually confirm and and then just have a Copilot.
36:34 Now, this is showing ask Copilot,
36:36 which is means there's not like a a building task to do this.
36:40 Um and by task, these are the building tasks,
36:42 which we we actually had custom These were called custom tasks.
36:46 Uh and they're very specific for like as a modernizing from like, you know,
36:51 either local like on prem or another cloud to like an Azure cloud.
36:56 Uh but, there's some generic ones like these common
36:58 ones for containerizing or just deploying deployment tasks.
37:02 Now, uh this has been around for a while.
37:05 Obviously, agent skills became an industry standard,
37:08 so now the implementation was replaced
37:10 with with with agent skills, which makes sense.
37:12 So, you can create your own click here.
37:14 All this is doing is just another way to create the the skill
37:18 MD and and then you also have the option to uh add resources, right?
37:22 Just like a skill has a different resources that you can reference.
37:26 Uh and here's an example of of that that skill MD, but you can, you know,
37:31 you build your own skill um uh or if you have an existing skill,
37:34 you can just piggyback on that using that.
37:38 Awesome.
37:40 How we doing, Jorge?
37:41 Which one's winning the race?
37:43 Uh I still still would put my money on the on the CLI path, but we'll see.
37:53 Yep, it's still still going.
37:55 And this is using sub agents.
37:56 You can see that's uh That's a nice feature where you can
38:00 um delegate to to sub agent has its own con- context window,
38:04 so it doesn't have to you know, have to provide all of the uh context.
38:09 Uh so, you're not overloading the uh you know, the LLM.
38:12 Uh it just needs whatever context it needs,
38:14 so so you can see how it's here just maybe only passing a subset of the files.
38:19 Um and that's all done by the, you know,
38:22 a agent the custom agent definition in conjunction
38:25 with the the capabilities that are available in in GitHub Copilot.
38:29 That that will also happen on the CLI as well.
38:31 It's just a little a little harder to visualize.
38:34 Uh and I I I again, this is this are different options.
38:36 Like I I personally, if I was doing this for the first time,
38:40 I'm I'm more of a visual person.
38:41 I like to see it the details in VS Code.
38:44 I like to play again and and and then see, "Okay, this makes sense.
38:47 Like this is what I would do." This, you know,
38:49 the logical steps that it's taken.
38:52 Uh but, once you've gone through this through
38:53 a a few times like it becomes too repetitive,
38:55 like then I would just, you know, just switch to the CLI.
38:58 Uh you can still view what it's doing.
39:01 Um I you can do control O will will actually show you the the details.
39:07 Uh so, you can collapse and and hide it those details as as it's churning along.
39:12 Um but, and then you can also look at background tasks.
39:14 So, so I mentioned this is probably using background tasks.
39:16 I see at least one in there.
39:18 Uh yeah, so this this is using a background sub
39:20 agent for doing the the migration from MVC to core.
39:26 Amazing.
39:27 And this used to take us weeks, Jorge.
39:29 I did this, too.
39:30 This would take weeks and it was just This is why a lot of companies never
39:34 mi- moved up to what we would call I'm going to show my age here core.
39:40 is because the the amount of change was you know super risky cuz we didn't
39:45 have test and that the line of business
39:47 app worked the app still worked the same.
39:50 But now with this we can quickly modernize the .NET Framework.
39:54 But one of the questions I always get Jorge and I'm going to show my age here.
39:57 Back when I was sitting you know first of all
40:00 shout out to the 2025 national champions in hockey.
40:04 But back when I was taking computer science one at Western Michigan University
40:07 back in the day I think we started with .NET 1 or 1.1.
40:12 If I started if I had an app that pre if I took my app I wrote in computer
40:17 science one which was one of the most beautiful paint
40:19 clones in the world and I wanted to upgrade that.
40:22 What would you recommend?
40:23 Would I go from 1.1 to 10 like walk
40:26 me through that path while this VS Code job finishes?
40:30 Yeah, so obviously I mean incremental changes tend
40:35 to be safer right but you also um I mean in that in that's where the skill
40:41 I has has some knowledge baking into that right?
40:45 I I I see that uh you know I could say yeah
40:49 go I mean I would say go to uh the maybe you
40:53 know obviously you want to go to a version that's supported especially
40:57 like a long long term support version LTS version like .NET 8.
41:02 Uh but that's I think that's going out of support like later this year right?
41:05 So so that yeah I mean in that case yeah you
41:08 can use that as a transition stage if if it makes sense.
41:11 Like I know like for instance if I was
41:13 doing this for like like Java Spring Boot they're
41:15 very specific milestone upgrades because there's a certain changes
41:18 that that break from from one version to the other.
41:21 Um but yeah in this case depending on the specifics of your application like
41:25 in this for this particular one I was able to just go all the way to .NET 10.
41:30 Uh there's no point in in that transitional
41:32 incremental steps but there might be some
41:34 value maybe give some confidence from from the upgrade
41:38 just just to jump from framework way
41:40 into you know I don't know like like a .NET Core version but those are
41:46 like I said those are our supports so at a minimum I would consider .NET 8.
41:50 So what is the other thing is I remember doing a lot of .NET
41:52 development back in the day we bought a lot of third party controls.
41:56 How does the migrate assistant work with those?
42:00 Uh yeah that's that's that's a good question.
42:03 So that's where it get tricky it will probably get tricky right?
42:07 That's where you either need to use the custom like just an agent skill or maybe
42:13 even a custom agent that's a specialized on like maybe you did it do it
42:18 manually with with the help of agent mode and and then you you use
42:22 that to to replicate the like through a through
42:26 skill or a or a custom agent definition right?
42:28 That knows how to repeat that pattern of upgrading from that control right?
42:33 And maybe maybe that's out of support you want to move away from that you
42:36 know third party vendor and then now
42:38 you come up with a different custom solution.
42:41 Yeah.
42:42 But none of this would block you from upgrading at this point.
42:44 Like we're not talking about adding weeks and weeks of work on it.
42:48 We're talking about you know if you're relatively experienced using agents
42:52 and skills you understand what the old component is what the new
42:55 component ought to be you can kind of rapidly prototype
42:59 and build out a skill or an agent to modernize that right?
43:03 Yeah that's that's that's not right.
43:05 I mean this this you can see these agent definitions you can see the skills.
43:08 You can also use the agent to help you create the skills.
43:12 Sorry somebody said that the fonts were too small so Um
43:17 but yeah that's uh Yeah and then we're also yeah say zoom in.
43:21 It wasn't just me it was I thought it was
43:24 just me for a minute but hey we're doing it live.
43:27 I wanted to show these this is the the the scenario
43:30 where I asked it to look at all my my examples right?
43:33 So it actually I so okay looks like I only have
43:36 eight C# projects and only found two that were in .NET Framework.
43:40 And I see that it created two two issues well one of them
43:43 is this this one that we're already upgrading but it did find one more.
43:48 This is actually I forgot I had this in here so this is a project
43:52 that I that I wrote in Xamarin like
43:54 this is prior to the acquisition for for Microsoft.
43:58 So this is the issue that I came out this is actually .NET Framework 4.5.
44:02 Uh it's in Xamarin forms forms so I don't
44:05 I don't know that and this is before Maui right?
44:07 So I'm not even sure this is like a supported
44:10 but it's something I would I would try right?
44:11 I mean the cost of experimenting is is pretty much zero right?
44:14 That I could just just give it a try and say hey go
44:17 agent like go ahead and upgrade and see what it what it does.
44:20 Obviously if it doesn't work then that's that's where I
44:22 would spend more time investing in okay let me find
44:25 a skill or let me create a skill that I can
44:27 use to uh uh to to modernize that particular uh scenario.
44:33 Yeah.
44:35 So we're at this point you know chat we're going to let you
44:37 know transparently we're not sure how long it's going to take to complete.
44:40 Um we have shown anywhere between 24 and 44 minutes on all
44:45 of these previous but uh you know we're happy to show more things here Jorge.
44:50 What else you got in the bucket about modernization?
44:55 Or we can go back and write some tests maybe and then illustrate that.
45:00 Well I don't I don't want to give it more more
45:01 work uh to my machine and maybe Oh is your machine bottlenecking?
45:08 [laughter] It's a little it's it's a little old old
45:10 probably need need to talk to my manager about it.
45:14 But but yeah it's it's running along but yeah it's it's it's getting there.
45:21 I do I do want to show on the well so so on this repo that we share
45:27 at the bottom there's some reference all the links
45:29 that I've been sharing here are are here at the bottom.
45:32 Um and then yeah if you go to the compiler monetization
45:35 overview this show this has all the the different options right?
45:38 So I show the monetization agent.
45:41 This actually works using a like a JSON file.
45:45 Right?
45:46 So I can I can use that task as a as a sample from there is just hey find
45:49 an inventory of projects that I need to upgrade
45:52 and then now I can use this to do either
45:53 just an assessment of of what it needs to be
45:56 done for each of these to get to the upgrade
45:58 or maybe assess an upgrade or you know review
46:00 the assessment and then upgrade it's entirely up to you.
46:03 Uh then you also have I mean yeah for any any Java developers
46:07 that that is a capability you can
46:09 also upgrade Java projects Spring Boot projects.
46:12 Spring Boot is you know it's pretty
46:13 pretty popular but that's also a built-in capability.
46:17 You would use the corresponding agent right?
46:19 Which is uh modernize Java in that case.
46:23 And then you also have this has instructions right?
46:26 So I like this summary here the the install
46:30 because it it just works through through like
46:32 if you're using Visual Studio it's baked in you
46:34 don't have to do anything just type add modernize.
46:37 Visual Studio Code you need to install the extension
46:40 and then the CLI you need the marketplace.
46:42 So so yeah it's it's just a different view of of how you you
46:44 set it up but that's all consolidated in this one stop page right here.
46:50 By the way while we're waiting for these agents to race
46:52 cuz I feel like we're at a agent agent race
46:54 in the chat put if you think the CLI is going
46:56 to win VS Code is going to win or the cloud agent.
47:01 Cuz we're curious.
47:03 Jorge what do you think's going to win?
47:05 You still in see I I'm team VS Code.
47:08 I think VS Code is going to win.
47:10 I think it's an unfair competition it's not scientific cuz he's running
47:15 two of these on one machine they are they are contact switching.
47:20 The code the CPU is not the agents.
47:23 Well and then they they didn't start at the same time.
47:27 Yeah they didn't start at the same time but I I I would think
47:31 the CLI it's it's going to be faster because there's not that you know
47:35 visual interaction and it's it yeah it's I think it's it's getting caught up
47:40 at least to the point where VS Code is maybe ahead I should say.
47:45 Um if we don't if we don't get it we're
47:46 running out of time I can I can just show
47:48 out of time we're you know we we have we have 10 more
47:50 minutes and I think we're going to make it with one of them.
47:53 But you know the oh yeah we got one saying the CLI team CLI is going to win.
47:59 Do you think Jorge scientifically if you switch to light
48:01 mode in VS Code it would go slower or faster?
48:08 It's that's I don't think I I think dark mode will still win.
48:16 Unless you switch to fast Is it going to be you know dark mode or or light mode?
48:21 Is that going to impact how quickly it is?
48:23 But in all reality what we're illustrating is an anti-pattern.
48:26 Don't run two migration assistants on one machine because
48:31 they're going to fight for CPU resources and memory resources.
48:34 But for the live stream this is a very small
48:35 project you can see that it will eventually complete here.
48:41 Well what else Jorge can we talk about with modernization
48:44 while we wait for our agent race to complete?
48:50 Well I I think I think maybe we can show the like the end result
48:53 from our previous run and then and hopefully we
48:57 have time to to run it once this complete.
49:01 So yeah so in my well this is not my work this is the actual project.
49:06 If I go to uh yeah I think I have
49:12 pull requests here so I'm going to bring up that.
49:16 Um this was part of this was last week I
49:21 think one was from this CLI uh this was coding agent.
49:26 Now we can look at that one first and we can look at the other one.
49:28 And it's very similar results and I mean this this is
49:31 with coding agent and it has like the different
49:34 tasks the changes that it went through um and then
49:38 you can see that it was actually 61 files changed total.
49:43 And then we we can just take a quick peek here of what changed.
49:49 So we can see our like controllers were were changed.
49:55 A lot of files were removed.
49:57 Like it looks like it got rid of jQuery.
49:59 And this is kind of what you can specify, right?
50:02 If you want to keep any of these libraries.
50:03 I mean, I didn't get Grace period.
50:05 So that that makes sense.
50:07 And then you also have your your views updated here as well.
50:13 And we should see some like app settings was added.
50:21 Yeah, like Global.asax was was removed.
50:23 So that's uh was deleted.
50:25 So that that's expected.
50:27 As well as we no longer need the the web.config was removed.
50:31 And then the .csproj, right?
50:32 That's that's a big one.
50:33 So we should see that we have uh the it's using the SDK format.
50:40 And then now it's using .NET 10 instead of version 4.4.8.
50:46 And this compiles in one minute.
50:47 need IIS.
50:50 Yeah.
50:50 Yeah, this this this compiler I verified.
50:53 So we I mean I would have to switch to that branch.
50:56 But I'm really hoping this is Looks like this is almost there.
50:59 I I see it's know if you want to attach your computer.
51:01 It is working.
51:05 No, no, no.
51:05 I should be fine.
51:06 I will I will be buying okay, a chill pad after this live stream for his laptop.
51:13 Yep.
51:14 I need that.
51:17 Definitely needs that.
51:17 So okay, this is almost getting there.
51:19 So we'll we'll see it.
51:22 Awesome.
51:23 I see it.
51:23 So as you as you look at this, one of the things that we, you know,
51:26 Jorge and I both have read is some one of the things
51:29 when we're working with legacy code and we can talk about this, Jorge.
51:32 Some of the books that I know you both are
51:33 not we both have read is like Refactoring by Fowler,
51:36 Working with Legacy Code with Feathers.
51:39 When you're looking at rescuing this legacy code or modernizing legacy code,
51:45 do you find yourself like I do setting context to those books?
51:48 Like, "Hey, I just read this book.
51:51 Could you help me refactor like this pattern?"
51:53 Does that help when you're modernizing things?
51:56 Yeah, I mean, that's still applies, right?
51:58 Because the the the same principles I like like try to do incremental changes,
52:04 have a good test harness.
52:05 Um that's still those those principles still apply.
52:09 So I would definitely encourage you to use those those same patterns.
52:13 Um and then we see we have this finished, right?
52:15 So uh Let's look at it.
52:17 Yeah, so let's uh let's exit out of here.
52:22 And you can see that you have the app like I do.
52:28 Yeah, I was going to say yeah, dotnet run.
52:30 Let's do it.
52:31 So now we can run it with dotnet run
52:33 because it's it's it's it's now it's a SDK project.
52:36 You can see the tokens that it used.
52:38 But it's yeah, it was on like 23 minutes.
52:40 It was almost right on on the 20 20-minute mark.
52:44 And let's see.
52:49 Is it up and running?
52:51 It's not yet.
52:53 At least We're doing this live.
52:55 Come on, Copilot.
52:56 Start it.
52:57 Starting up.
52:58 And now it's running on port 5000.
53:03 Let's go there.
53:04 Let's go to our student And yeah.
53:08 registered or is this a different database?
53:10 Hey, I'm still there.
53:12 Uh we can look at our classes.
53:14 So we have Programming Capstone.NET Core session.
53:18 And um our Dr.
53:22 Burkhardt is in here.
53:25 Looking good.
53:25 you can see that I mean it's yeah,
53:27 the same same pretty much the same look and feel.
53:29 So this is not a re-architecture.
53:31 But now now that we're in .NET 10,
53:32 then I can just we can just now talk about like maybe deploying into container,
53:37 getting into the cloud.
53:40 It's a lot easier now.
53:41 Like I don't have to like like deal with IIS or any you know,
53:44 other other features.
53:46 I don't have to run it on Windows if you
53:47 want to run it in, you know, Mac or Linux.
53:50 Um so those are, you know, it's it's and it also runs faster.
53:54 I don't know if you could tell,
53:55 but it was actually at least compared to my when it was running on IIS.
54:00 But yeah, now now we can just keep moving with our modernization effort.
54:04 Or maybe we re-architecture,
54:05 maybe create a new like like separate or or UI from from the back end,
54:09 create two separate layers that can be deployed in isolation.
54:14 Awesome, Jorge.
54:15 This is amazing.
54:16 This is going to save a lot of people a lot
54:17 of busy work and allow them to create and ship cool stuff.
54:21 Appreciate the time.
54:22 Olivia, do you want to come back on?
54:24 Do we have any questions from the chat that we should close out with?
54:27 Hello, hello.
54:28 Yeah, that was great kind of walking through that.
54:30 We had a lot of good questions coming through.
54:32 I think you answered a good bit of them.
54:36 Um but let me see.
54:38 Let me scroll through real quick see which ones we have.
54:41 Um there's one question that just came on asking if you can use the same
54:44 approach for an old Visual Basic app to convert it into a .NET application.
54:49 let's let's ask what old means.
54:51 Um [laughter] is it VB6 um or is it using like VB.NET?
54:58 Cuz that's the that's the difference.
55:00 So you want to answer that, Jorge?
55:02 I've done the VB6 thing if you want me to answer.
55:04 You're you're the VB6 expert.
55:06 So I'll let you take that.
55:08 I am I know how to program VB6.
55:10 I am not the expert.
55:12 Um so the modernization tool as far as I
55:15 am aware does not work with the classic VB6 Basic.
55:18 However, using GitHub Copilot, using agents, you can port that.
55:23 Maybe, Olivia, that would be a super exciting stream we could do in the future.
55:27 But you can do VB6 modernization either
55:31 by going line by line or extracting out requirements.
55:34 Um one of the real challenges that you have with just
55:37 um older software is often when you think about VB6,
55:40 does anyone actually know what it what what it does?
55:42 So not only is that a software engineering problem,
55:45 but it's also a business domain problem.
55:47 Um because you could port all the software,
55:50 but that random side effect from VB6 doing that one random
55:53 thing maybe the the bread and butter of your your product.
55:57 So I would say is, you know, maybe we do the stream in the future,
56:00 but VB6 to .NET we don't have any modernization tools in.
56:05 But anything in VB.NET I do believe would work.
56:08 Correct, Jorge?
56:10 Yeah, that's that's that's correct.
56:12 I I mean, one one of the challenges is is being
56:14 able You need to be able to run the application, right?
56:16 So that you can make sure it's in a in a starting in a functional state, right?
56:21 Otherwise, it's more like an archaeology.
56:22 I mean, yeah, you can do it, right?
56:23 You can have GitHub Copilot just analyze the code
56:26 and then try to reverse engineer the the requirements.
56:30 But it works a lot better when you're able to run these applications.
56:33 And that that's that's what the the modernization
56:36 agent will will do for you, right?
56:38 It will it will check the status of of the application first before operating.
56:42 Awesome.
56:42 So, Olivia, if we want to do a VB6, it'll have to be a long stream, though.
56:46 Super long stream.
56:47 We're happy to take on a VB6 modernization project.
56:50 See how far we can get in a certain amount of time.
56:52 But happy to do that, Olivia.
56:53 But I know Jorge and I are thrilled to be here on the the call today.
56:57 But is there anything else that we need to answer, Olivia?
56:59 Um I think there's a couple questions.
57:02 I think you maybe touched on a little bit,
57:03 but maybe just because we had a few around it.
57:06 Um but just upgrading for web form projects,
57:09 um how kind of the process looks for that cuz that's really
57:12 the There's a lot of people saying that's the real pain in chat.
57:17 Yeah, that's that's one where I I need to I haven't spent too much
57:20 time on that, but I agree that's probably going to be the the tricky one.
57:23 I would I would look into like using like
57:26 like through agent skills should definitely help a lot.
57:29 And then you know, obviously it's going to be an iterative process and it
57:33 may vary from from one project to another depending on the specific details.
57:38 Cool.
57:38 Yeah, I mean, these these questions are all great.
57:40 Y'all thank you so much for asking them
57:42 because as Joel was saying like this gets
57:44 us really good potential content for future streams
57:46 where we can just come on and hack away.
57:48 VB6 day.
57:48 Come on.
57:49 VB6 day.
57:50 I love it.
57:53 [laughter] I'm out.
57:54 I mean, these are the real real world scenarios that people have.
57:57 Like let's let's figure them out.
57:59 Let's see how AI can can really modernize that and bring it to bring y'all,
58:04 you know, along for the ride.
58:06 Cool.
58:07 I think that that's all the questions that y'all hadn't gotten to.
58:12 Um anything else that y'all want to leave us on before we say goodbye?
58:16 Happy coding.
58:17 Happy coding.
58:18 As always, um Joel made my heart sing.
58:24 [laughter] Well, Joel and Jorge, thank you so much for being here.
58:26 Chat, thank you so much for all of your questions.
58:29 We'll catch you next time.
58:30 Have a great day and happy coding.
58:36 [music]