VS Code Live - Modernizing Legacy .NET applications with GitHub Copilot Modernization in VS Code

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]

Study with Looplines Download Captions Watch on YouTube