 Hi, I'm Allison Bucholtz-Au, a Program Manager on Visual Studio in Telecode, which is a set of AI-assisted capabilities for Visual Studio to help make developers more productive. Today, I'm going to talk about the latest and greatest in Visual Studio in Telecode, which is Custom Models and Additional Language Support. Custom Models has been one of our top asks since we released and we're really excited to share it with you, as well as many new languages that I know you've been clamoring for. So, Custom Models. If you're using Custom Models, it's currently in preview, which means we're iterating fast, so you might have changes every couple of times you open Visual Studio. But don't fret, this means that your feedback is more important than ever, and you can actually help guide our trajectory of features and changes. Custom Models will provide suggestions based off of your code. Our current model only provides suggestions for common types like strings or date time, things that are commonly found in the open source community. But now the classes that you use in your private code repositories will have AI-assisted IntelliSense suggestions. What's even better is that once you train a custom model, you can go ahead and share that model with your teammates. They don't need to go through the same training process that you've already done. With this in mind, why don't we see how it works? All right. Let's go ahead and jump in to how custom model training actually works. Here I've got a simple application up. To remind you guys how Visual Studio's IntelliCode works, I'm going to go ahead and repeat this section here. I'm going to do a string array, I'm going to call it fourth bus, and I'm going to reuse the third bus string. When I do dot, you'll notice that instead of simply an alphabetical list of suggestions, I actually have these start suggestions. These are coming from IntelliCode's base model, which if you remember comes from scanning over 2,000 open source repos. So strings seem to work with our suggestions. If we go up here and we try to do the same thing, you'll notice that as we use bus helpers, which is a package that I'm using mainly in this application but not really anywhere in the open source community, you'll notice I don't get any start recommendations. I'm only getting the alphabetical list from IntelliSense that I got before I installed IntelliCode. So how do we get these custom models? Well, I'm going to go ahead and open up my IntelliCode window. It's a little hidden at the moment, but it is under View Other Windows, and I'm going to open up the IntelliCode page. Here you'll see we have the solution name, we have the status of our model, no models have been trained, makes sense, as well as a little bit of information about what's going to happen, which I'll talk through as we actually walk through this. So I'm going to go ahead and train on my code to get this process started. You'll see here the page changed to the status page, and what's going to happen is three main steps. Analyzing your code, uploading your data, and learning your codes pattern, which is where we actually create the model. Analyzing your code happens all client-side. So we extract all of the important information about your source code in order to feed into our model service. Once we have all of that information, we upload that to our service in the Cloud. With all that data, which isn't your source code again, it's just simply some important information about your source code, we generate a model that will then be sent back down to Visual Studio to give you those starred recommendations off of your custom types and classes. So after the model is quickly trained, as you see here, we've got a new page, which is all about our active trained model. It gives you the time and date that it was trained as well as its status, which is that it's ready to use. You have the ability to share, as I mentioned earlier, as well as delete if you don't want to use it anymore. If your code changes drastically from when you first created this model, you can retrain it as well. Finally, our model details. This lets you know that when we created our custom model, we found 65 custom classes for you. These are ones that have the most recommendations. These are ones we encountered most frequently in your code. So if you were to use them, you should expect great IntelliCode suggestions. If we go over to our file here, we'll see that if we try this again, we do bus helpers with a dot. Indeed, we have a star here. I'm going to show you one more example to show that this context really does change what your suggestions are. So we've got this method here, which is, is it the 541, which is a bus nearby? What I'm going to do is actually write an if statement instead. I'm going to say if bus helpers dot, you'll notice instead of print bus info like we had before, we actually want clean root name. I'm going to say clean the root name of the bus root, and we're going to see if it equals the 541. After I have that, I'm going to say return bus helpers dot. Now that we're inside this if statement, you'll see that it has changed once again to print bus info. This is all based off of how I use these methods within my own code. Cool. So now that you've seen custom models and I hope you try it out, let's talk a little bit about our additional language support. We're so happy to unveil four new languages to IntelliCode's AI Assisted IntelliSense. In Visual Studio, you now have the power to see recommended suggestions for XAML and C++, which we know has been one of our top asks. In Visual Studio Code, you'll have AI Assisted IntelliSense suggestions for JavaScript, TypeScript, and Java. I'm not going to go through the same demo four times because that would bore you, but I am going to jump into a quick demo in Visual Studio Code to show how seamlessly you can get these suggestions in each language without having to do any additional prep work. Here we've got two files open, a Java file and a Python file, which only has a message in it to start, but we'll change that in a little bit. What I'm going to show you is that I don't have to do any extra setup with the IntelliCode extension. My AI Assisted IntelliSense is just going to work seamlessly as I move between this Java file and the Python file right next to it. So here you'll see we have a simple message, Hello Connect 2018. If I go message. you'll notice that I get these IntelliCode AI Assisted IntelliSense suggestions. I've got all these stars here which indicate what the extension thinks might be best for me. Even cooler, if I do an if, message. you'll notice this changes. Changes to an equals now. So that's pretty cool. If I move over to the Python file, notice I just clicked over to that file, no extra setup. Again, if I activate IntelliSense, you'll notice the Python IntelliSense just works seamlessly. There was no messing with the language server, or even waiting for it to understand what was going on. It worked like that. Awesome. So I hope that you guys have enjoyed the quick demos of what's latest and greatest in Visual Studio and IntelliCode. If you've got questions, please check out our FAQs at aka.msvsicfaqs, or check out our extensions noted on the slide here. Visual Studio extension located at aka.ms-vs-ic, or the VS Code extension at aka.ms-vs-code-ic. If you're really excited about IntelliCode and you want to spend some time talking with me or any of my co-PMs about your experience, sign up to be an insider at aka.ms-intellicode. That way, we can reach out and contact you sometimes with private bits to try before anyone else does.