NET Tools and Azure for .NET developers with Tim Heuer - .NET 196
Tools like Intellicode and LiveShare make developers more productive. Tim Heuer discusses with the panel about what Azure is good for and what tools help with leveraging it best.
Special Guests:
Tim Heuer
Show Notes
Tools like Intellicode and LiveShare make developers more productive. Tim Heuer discusses with the panel about what Azure is good for and what tools help with leveraging it best.
Links
Picks
- Tim - GitHub Actions
- Tim - Bardstown Podcast
- Shawn - JetBrains Monos
- Caleb - Darknet Diaries
- Caleb - Malicious Life
- Wai - Blindness Harvest by Jose Saramago
Transcript
Hello, and welcome to another episode of adventuresin.net. I'm Sean Klaybo, your host. And with me today are Caleb Wells. Hey, y'all. Hey, Caleb and Wylu.
How you doing today? Hey. Things going good, Wylu. And our guest today is Tim Heuer. Hi, Tim.
Hi. Thanks for having me. Yeah. Thanks for for being on the show. So to get things started, why don't you tell us a little bit about yourself and, kind of what you do?
Sure. I am, presently, I work for Microsoft. I am a program manager in the dotnet tool space. So I work on the dotnet team, and my focus is around kind of the tooling ecosystem, that delivers capabilities and things around that. So Visual Studio, Visual Studio for Mac, we're investigating some things around Versus Code to improve that.
The SDK, the CLI, and some of the kind of DevOps pipeline capabilities and things like that. So all around kind of the where the where the developers hit the front end for for dot net. Yeah. Y'all have been killing it the past couple of years. Oh, thank you.
I actually recently just came to this team coming back to the dot net team in last summer. So prior to that, I, most of my time actually at Microsoft has been really focused on UI frameworks. And so prior to just coming back to the dotnet team, I had worked, all around in the XAML stack, so WPF, Silverlight, what is now called UWP or the, you know, the Windows platform. And prior prior to it being in the Windows platform, the the team wasn't part of the dot net team. And so that's, I'm kind of coming back to dev dev after being involved in Windows.
So it's been been good to see the the progress that the the team has made in in the tools. So, no credit to me and all the credit to, the people that actually, check-in the code, right, and help us be productive. Does that also include, Versus online? Versus online. Yeah.
That's a good interesting thing. So we, we are actively working on on Versus online. As you know, a lot of it is in preview right now. And so there's capabilities of the the server platform, but also how the tools communicate and connect to the server, and what kind of new scenarios and things that we're looking at to improve that. Right?
Like, one of the kind of big value propositions is being able to leverage cloud compute for a lot of, you know, difficult tasks that maybe you have large repos and build takes a long time and kind of your inner loop and being able to use an online kind of instance and, rapidly do that. So I'm focused more on the client side pieces of that, less less about the the server side, but making sure that that the tools that we all use as developers have a good experience when connected to Versus online capabilities. Does that mean that you gotta communicate a lot with the, I guess, the Azure team and also the the c sharp team as well? Yeah. So the the c sharp team is the same group as mine.
So Roslyn is a part of our team. It's, it's interesting. Like, you know, the the languages in the Roslyn team, we tend to internally, we call them kinda productivity capabilities. So though that those are the teams that deliver a lot of the code fixes and analyzers and, you know, what I call light bulbs and wrenches that you see in Visual Studio. Right?
Mhmm. Refactoring all of those things. And so that team's actively making sure that we're, you know, bringing up those same capabilities that are exposed to to Versus online as well. And, of course, like you mentioned, like, the the service, of course, itself is an is an Azure service and working with them to make sure that we are setting up the right, you know, the right capabilities and, I guess, you know, kind of configurations of what developers might want to to leverage and what kind of tools they're planning on going at them. Yeah.
I spoke with, Jonathan Carter at, Microsoft at night, a lot about about, the new BS Online, and it was a a really good talk. We recorded an episode on it. It's, really exciting. I think, it's got a a bright future. Yeah.
We're excited. I think it's, you know, and we're just kinda tipping our our toes into it. You know, when you think about the evolution of software tools, we've come a long way, right, from just kinda notepads and compilers to, you know, high productivity and IDEs. And some ways, you know, when you look at Versus Code, you know, we're we're simplifying a little bit. Right?
Going to editors and just being finding the right the right mix of for the right type of developers of what, is comfortable for you and productive. And now we start to look kinda look forward in what kind of services what developer services are the things that we can enable. IntelliCode is an example, of one. Right? So that as we look and are able to learn from from, your repositories and things like that, and you can build your own IntelliCode models, to really improve that that intel the the already good experience in IntelliSense for productivity, but may more targeted to your repos and making that quicker.
And so BS Online is another kind of service that we're we're looking at, and as we've learned things from people that are trying these these different services, you know, we're we're starting to investigate new, new ways of leveraging the cloud or exposing more services for developers too. Can you tell us a little bit more about Intellico? Because I I don't know much about it. Sure. So, if you're familiar with IntelliSense, right, that's the kind of the thing that gives you completion and understanding your models and the way that we all as dot net developers cheat and act like we know what we're doing.
Right? But, so IntelliCode builds on top of IntelliSense, and it is what we're actually so the the initial models that are built so it's an AI model that's built on top of, I think, the the way we initially built it was the top 1,000 repository public repositories in GitHub, dot net repositories. And so we learned from all those libraries that that you're leveraging. And so now as you're typing your code and you kind of get the normal dot IntelliSense, we are able to look at the code patterns and understand that, well, instead of you just looking at a a huge alpha list, we're gonna surface what we believe is actually the next most useful function, method, property, whatever it is that you're going to do. So, you know, the classical example is, string.
So if you type you know, if you have a, you know, bar x equals new string, and then your next line is gonna you know, you say x dot something. Normally, with just IntelliSense, you're gonna get the alpha list of everything that's available for that particular type. With IntelliCode, we're able to interpret and kind of say, well, you're probably gonna use write or or, you know, read or concatenate or something like that. So you'll see in the IntelliSense list, little, the the topmost entries will have a little star next to them, and those are the IntelliCode offerings that we've learned from and said, we think this is actually your next most natural action in in this space. I think the whole thing is.
Yeah. The star that's what the stars are. Right? It's already turned on for most people, is it? So it it should be turned on, from for the base for especially if you're using Visual Studio 2019.
Mhmm. And then the the cool thing is is that you can build your own models for your own source code and libraries. So if you have a a team environment and you have a set of libraries that, you know, it it really comes into play, like, very helpful in, like, kind of utility scenarios, I think. At least that's been my most productive use. But you can say, here's my code and train against my code.
Because you might be private. Right? You might be in an enterprise and and you're not a part of that that Uber build. And so you can train against your code and then distribute that model or publish that model as a part of your repo, and then all of developers on your team get those learnings as well, and then you can constantly retrain them if if you wanted as well. So for your hyperlocal kind of enterprise scenarios, you can also have your custom IntelliCode models that just light up as a part of the developer experience as well.
So does IntelliCode, does it do more than just the auto completion ordering? Does it go beyond that? Is it? Yeah. The the one thing that we recently released was also pattern matching on, I'll call it some some refactoring things.
So as you're, like, as you're doing some kind of replaces. Right? So maybe you have a function block and and you're using one of those light bulbs and wrenches and said, oh, yeah. I actually wanna change from strongly typed to bar, and then you do that action a second time. Then we'll start to offer up, hey.
We see 3 other ways that you that you can execute this. Do you want us to go ahead and take care of that those for you as well? You already kind of, like, indicated that you wanna do those those couple, actions, and we have seen in your code that there's more that match that pattern, and we'll give you that list and give you the opportunity to just say, yep. Update all those as well. So those are the kind of the the things that we're we're looking at.
So it's not just IntelliSense we're leveraging, you know, what are the coding patterns and and how can we offer up those productivity those you know, tap into those existing productivity capabilities like refactoring, things that we have right now. That's, one of the things that that I appreciate about, every Visual Studio release is it it seems like, right, you're taking some of the the best tools from the community or from other companies and integrating some of that into the system. You know, 4 years ago, I felt the need to use ReSharper, right, to do my refactoring and be able to move big chunks around. And there's a couple of reasons I don't use it anymore, but one of them is some of that's now built into to Visual Studio. Right?
Another one is, in your latest enterprise, you guys now have what is info on code coverage Yeah. Data testing. Mhmm. And I use a tool in Crunch that does a similar thing. How do you how do y'all go about what you bring into Visual Studio, how you integrate it, you know, and and what makes the cut, on a edition by edition basis?
Yeah. It's a good question. And and I think there's, you know, there's an interesting dynamic here because you look at tools like ReSharper and and really any extensible tool that, you know, we leverage. So you mentioned ncrunch, like, as a tool slash framework, right, that you can leverage. Another classic example is JSON dotnet.
Right? Like, what's the first one that every dotnet developer uses is JSON dotnet. So, you know, we we kind of take a a a balanced approach. And over the past years, you know, I've I mentioned kind of I was back in dev dev, and now I now I'm, back in there. I'll say a dramatic shift from my previous time to where we're at now is being very, very customer focused and data driven.
Now there's there's, of course, things that we wanna innovate on, and we don't wanna kinda look in the rearview mirror. We wanna look forward. But to your question, you know, we look at how, for people who have opted into the telemetry, we look at kind of what patterns people are using, what tools they're, they're trying to trying to achieve. We make heavy use of our user studies labs in Redmond. And, actually, we're doing more of those user studies online now too because of, like, just like these capabilities we have in talking to each other and really seeing, like, how people are trying to accomplish those things.
So first and foremost, customer data is driving our decisions on how we prioritize what we need to do. And then secondarily, you're right. There's a great ecosystem, especially for dot net. I think it's one of the the more vast ecosystems that I've seen in in tools and libraries and frameworks that are available. And we want in the dotnet team, we definitely want to embrace that as an ecosystem.
But, also, we, you know, we wanna make sure that our framework is is as full featured as it can be as well, and our tools are as full featured. So, you know, we evaluate, you know, kind of on a case by case basis of what we feel is best or strategic maybe for for that time. But, you know, I can tell you that in our team, we talk about things like, you know, we you know, file new. Right? You know, when you're creating a new project, we actually want more of the ecosystem to be in front of developers' choices so that it's you know, you can see what options are available to you there.
You know, on the Intellicode front, like, actually one of the other things that that we have done on Intellicode is even if you don't have, like, a package reference or a reference to an API that maybe is more frequently used, Let's use JSON dotnet as an example. So let's say you just said file new class library, and you start typing, you know, JSON object dot. Through the IntelliCode service, we'll we'll actually tell you, hey. Did did you mean to use Newtonsoft dot JSON? Because we'll actually add that package for you right now and add the using statement.
So we're trying to blend in, like, our products and services along with the popular ecosystem, but at the same time, trying to innovate on top of what we have and deliver more and more value in, you know, the default experiences of Visual Studio. And all those things that you mentioned, like the refactorings and kinda code coverage and testings, are areas that, you know, we'll have an offering ourselves, but also we should work well with the ecosystem. Test is another good example. Right? Like, Test Explorer, a lot of test frameworks can just plug into that.
And so you have a good tool experience on top of your chosen test framework that that you wanna work with. The IntelliCode offering up, NuGet packages has makes a big difference, at least for me. I'm in the process of building out some new projects and prototypes. Right? And used to, you know, you know you you can do something some way and you start doing it, but you don't remember what package it is, and and it can't find it.
And, right, and you you churn until you get it right. Now, like you said, you you know what to start with, and it's like, hey. Did you wanna install this package? You know, Microsoft dotaspnet.entityframework.design.rightwhatever, and it and you click it, and it's done. Right.
And it it definitely makes things a a lot lot easier when you're starting out of a new project. Yeah. Definitely. Yeah. Yeah.
One of the, the other things you guys have implemented in the last year is Live Share, and it's amazing how it works. Right? Or that it works at all. My my understanding is, there's some signal are going on there, but but what what got y'all to to start working on Live Share and and got you to where it is now? Yeah.
I'm and I'm curious what your y'all's experiences in in leveraging it. I think, you know, as we reflect back on what I mentioned earlier about kind of what services could we offer for developers that are just tools, this is another great example of as we, again, are data driven and kind of looked at how, teams are becoming more open to remote team environments. Right. And so, you know, you have a, quote, unquote, team, but everyone could be distributed. A great example of that is GitHub team.
Another great example is our own Xamarin team, which are, you know, two examples of, like, highly, highly distributed development teams that actually work, you know, real time on things. And we, as a company, are going that way. So even in the dot net team, we just recently opened an office in Prague, so we'll have more, more people remotely. So when you look at that and and, you know, people refer to, like, the gig economy as well, right, kind of contractors that are kind of flying in and out of projects, that really spoke to us of, you know, what is this opportunity? How can we bring a a pure coding experience, you know, on your screen for people who you're you're not able to look over the the cubicle or team room and just shout at each other, and, you know, you're not scrumming, daily or something like that.
But you wanna still have that, hey. Can you help me look at this? Right? And sure. Like, let's log on together.
And rather than a screen share, you know, take that to the next level and add value and have somebody say, well, let me try this. Right? Or I think the the most remarkable part of live share for me is, like, the f five experience. Right? Like, I can just set up a live share, and you can debug it without having dot net or anything on your on your machine.
Yeah. It's it's, it's crazy. So that was really the main motivating, one of the main motivating factors was bringing the team concept of, you know, pure coding and and those type of things really, you know, at everybody's fingertips, no matter where the development tasks are are being accomplished. And, actually, when you look at BS Online, like we mentioned, that kind of is the next iteration of that. And what we learned from Live Share, is powering a lot of some of that infrastructure that we have for, Versus online as well.
Okay. Okay. I guess that makes sense. Right? Yeah.
I'm waiting for the day where I can just, you know, talk to Intellicode, you know, and say, hey. Intell Intellicode, please build me an app that does this. Or, you know, click button here, add click event, you know, just give it instructions through through voice. You know. Woah.
When when you think about, again, you know, more services that we as developers want and and, you know, some of our our own competitors in this space are investigating this area as well, and this is something that I personally wanna investigate. You know, when I I talk about the Roslyn team, right, and the team that that I'm a part of, and we we have all these analyzers, and and sometimes people turn them off because they, you know, you wanna kinda ignore certain rules or things, but they are powerful. And you, as developers as well, can create your own analyzers for your teams and kind of, you know, to enforce certain, things as well. When you think about that and you think about where people's codes lives now and everything, you know, you're not that far off as far as maybe not, like, hey, Visual Studio, write my app for me. But, certainly, are are we are we that far off from, like, you know, you you're done for the day and you've you've checked into your branch, and tomorrow morning, you open your laptop, and now your to do list is filled because the AI agent on the background has run those analyzers and said, hey.
I noticed an optimization here. I noticed you're not following your, you know, your team's chosen patterns here, or or maybe even not even just a to do list, but, like, here's 3 PRs to approve. Right? So I and I'm not sure we're that far off from maybe not full fledged, like, creating the code, but it certainly we have the tools today to inspect the code when we're when we're developing it. You know, can we leverage the cloud and the idle time, to do that as well?
And, you know, you come back and maybe that'll be annoying. Right? You come back and you get your to do list for the I I can see it being a a really great educational tool as well. You know, it could notice, hey. You might wanna check your code here.
You might have some SQL injection issues or things like that. You know, really high priority security things that it just it knows about, but not every developer knows to to check those things. Yeah. In fact, so we we have a a group that we published a couple extensions that we call DevLabs. We don't really talk about the Dev Labs name, but there's a couple extensions out there.
One of them does exactly that that they're actually wanting to pull more into the product is this thing called CredScan. I don't know if you've you've all have looked at it. But, like, how many times in your code have you, you know, written consts, you know, connection underscore string, and then, you know, you've written a secret. Right? People put secrets in constants or or things like that or API keys and stuff.
Right. But CREDSCAN was one of these analyzers, I guess you could call it, that, you know, almost a clippy effect. Right? Like, I see you're writing a secret. Would you like me to protect that for you?
Right? And then give you a refactoring gesture to put that in your user secrets. Or when we think about the the cloud environment now, you know, maybe also invite you to say, would you like to actually put this in Key Vault? And then we can help you, you know, use the Key Vault APIs to extract that. That'd be awesome.
Yeah. I've I've long thought about you know, there's times where I've had to encrypt certain sections of the web config file. Yeah. And it's a lot of steps and usually command line steps you have to go through to do that. It's like, why can't I just right click on that section in web config and have Visual Studio do all this stuff for me?
Yeah. What we're doing now so another part of my team is we do some of the Azure tooling for dot net. So, I know it's an evil word to right click publish, but, you know, again, data driven. A lot of people use that capability. And it is flexible, especially for interloop development to to kind of do that.
That is something that we're looking to explore that as you're using more and more services, which inherently almost every service API call you have, right, is is protected in some way, a connection string, an API key, your hash for your subscription, or something like that. So what we're doing in tools, and you'll start to see this in in previews actually in a couple months, that if you're using Azure services, we'll tell you those things. Like, actually, when you when you start using we'll detect that you're using Azure storage. And as you configure that, and, you know, where we ask you what connect you know, what's your connection string for your your portal, and you put that in, we'll actually offer to say, would you like to put that in Key Vault and, like, configure those for you? So right now, you know, it's less about in the editor experience and more about Azure provisioning and configuring those services, but same concept that you know, so trying to help you not even get it into the web config and kind of, like, you know, obfuscate that beef beforehand as you're configuring those services.
So like I said, that that should start showing up, I think, in in a couple months in in some of the previews. And I hope people can try it out and give us feedback on that as well. Can you get help out some sort of, like, a scan? I find out that if you, if you, push, code in there that's got some sort of secret key, it'll and, you know, it's a public repo. It'll actually email you, I think.
Yeah. So they they have that capability that I I'm not sure it's built on the same technology as KredScan, but same concept as well, like, you know, kind of looking for those patterns and keywords and, blocking that. Yeah. For sure. How many times have people pushed, things in that?
And and especially with the nature of Git history. Right? Like, you do it once, and you keep Oh, yeah. Like Yeah. It's there.
It's there. It's there. Yeah. Recycle the keys. Right?
Right. Yeah. Yeah. We're focusing both in, the Microsoft and then the non Microsoft, like, ecosystem. And I think probably the biggest advantage I can see with the Microsoft ecosystem is the tooling.
Like, it it really is, it's such a pleasure to work in Visual Studio compared to other, like, ideas that I've I've worked in, to be honest. And I think it is a lot of this, like, discontinued improvement that you guys are adding to it, you know. So Oh, that's awesome. It's good to hear. I think, one of the the things that I always try to push for when we talk about planning, you know, there there's always the next greatest thing that we could work on.
But, I've always told people, you know, the number one thing you hear is, like, make the things I have even better. Like, I want the new things, but make the things I have better. And so we always have this kind of continuous improvement thing, and we look at you know, a lot of people call it, you know, what are the what are the 1,000 paper cuts? You actually, GitHub did this a couple years ago where Nat, the CEO, said, our our next milestone is gonna be fixing bugs. Like, we're just gonna go look at all the top issues that people have had, and we're just gonna go delight.
No no new features. We're just gonna fix what people want to use and and are using. And I think that's a that's a huge thing even for the tools. Right? Because you mentioned, you know, they they can be a delight to use, but, you know, once you get that one paper cut, your life could be better if all if a lot of those were fixed too.
So we have in our mindset a continuous improvement, thing as well, and and we look at the customer reported issues. So use that use that report feedback button. That's that's what we look at. Yeah. It's a huge huge thing for me.
Performance is always under that bucket as well. Right? That's always a a journey, never an end. Have you seen the the dotnetcommunitygrow significantly in the last few years when you factor in dotnetcore being cross platform, Visual Studio Community, Versus Code, now Versus Online. You know, as part of that, do you see the community getting bigger and bigger because it's more available to more people?
Yeah. I think we will. And I think, you know, in some near future, I think we're gonna share some actual growth numbers. Okay. But, we definitely we definitely see that, and I think dotnetcore is a is a hell is a boost even to our existing kind of Microsoft loyalists as well, because it it's a little bit more approachable than the full framework offerings that that you have that also restrict you to Windows.
Right? So there's there's that. Not only are we seeing the just the general growth of the ecosystem, an important thing for us is the adoption. And so over time in history, when you thought about, like, dot net framework version adoption, you know, we like, dot net I remember dot net framework 2 was was a substantial release. Right?
A lot of capabilities. Right. Then the next big one was really, like, 35. And the adoption rate from 2 to 35 wasn't steep. Right?
Because you're talking these are enterprise level scales, client usually client applications. Right? It's harder to to deploy these type of things. What we're seeing now in dot net core is the adoption rates are unbelievably rapid. So, you know, we released 3 dot 1.
And as we kinda watch that data, we're just like, holy crap. Like, what's going on? You know, the the people are just switching the bits, at at the most rapid pace that we've seen in any dot net version across the board. And that gives us hope that we're moving in the right direction and that we're, you know, lighting the things up that, the capabilities, that people want. And, of course, you know, cloud environments kind of demand some of that rapid iteration more so than the client environments, I think.
So I think that that is a a big driver that I see as well. So yeah. So not only not only growth, but acceleration of adoption as well. I think in the where we'd love love to see more growth is in new developers in the learning space. Right?
And Okay. When you think about, like I don't have a CS background. Like, I didn't go to CS school. I don't have a CS degree or anything like that. But I but I know I'm working with, you know, the schools.
Like, I know how kind of curriculum is is built, and I'm not sure that we're, you know, we're at the top of the the curriculum mindset. And I think, you know, getting in that first mind of as people are learning to develop, is key. And and, that's an area that I'd love to see us grow more on. Cool. What about, do you think the acquisition of, like, GitHub, like, just probably a couple of years ago now?
Do you reckon that's changed acquisition, levels, and also, like, the maybe the the culture within your team? I mean, for for my team, you know, we we made the decision to be open source, you know, before that acquisition. So that wasn't a driver for us. But I I do believe, you know, that with the acquisition of GitHub, like, we we wanted to make sure that GitHub remains independent as well. And so, you know, because it serves not only Microsoft.
Right? It's it's, like, 99% of all open source projects. Right? So that's that's kinda critical that it's not just a Microsoft tool. But I think what we're seeing is it's it's helping the rest of Microsoft understand what open source is.
The good canonical example to me is exactly the team that I came from. Right? So the the Windows team, historically, nobody in Windows is gonna open source anything. Oddly enough, Windows actually does use a decent amount of open source in the Windows product. It's just not something we talk about a lot.
But in the in the UI frameworks, you know, we really tried to make a big push of, like, open sourcing, the controls at least in the in the framework. And it it really wasn't until that kind of company wide recognition of, like, hey. We're gonna acquire GitHub. This is a critical asset to the software development community. We're gonna embrace this mindset.
And now, you know, so now Windows has some open source stuff that that they have out there. But it's it's really hard to see new projects at Microsoft start that aren't the first thought of, like, okay, we gotta create the repo, like, on GitHub. In fact, I just did one last night. We're we're doing another tool for GitHub actions and, like, it's just it's not it's a reflex now of, like, oh, we got this new software project. Okay.
So by default, it's MIT licensed open source. Prove me otherwise. That's kind of the the new mentality in the division. I think, you know, when you look at tools, we're a little bit slower on that front. Versus code would be the exception.
Right? So they're kind of a net new tool where everything's open source, but only, like, parts of Visual Studio are open source, but not the full, like, shell environment and things like that. Right. But anything net new, I I definitely think that that acquisition, the mindset of leaders like Scott Guthrie, Nat Friedman, and Satya, like, really understand how software is being developed now and what is valuable from a profit standpoint and what is valuable from an ecosystem standpoint. Mhmm.
And like I said, I I mean, my observation is the reflex is now we're starting a project. It is open source with a generous license unless you have reasons otherwise. So what are what are some of the benefits of open sourcing for Microsoft do you think? Like, is it more like people are contributing to the code or contributing to the discussions, you know, that can raise issues in GitHub and things like that? Yeah.
I think, you know, all all the wins that you see out of open source, the the collaboration, I think, is is the key. And I would say kind of I have felt that that Microsoft always has had good communication channels, so that I don't think there was a lack of collaboration. But I think the pace of collaboration is much faster when things are open source because you you as an interested party in, you know, whatever that project is, you can see how things are being developed. The biggest thing for us, I think, in the dot net team and what we do is we also design in the open. So it's not just the code is open.
Our process before we write the code is also open. So we do, like, weekly we we kind of open our stand ups and open our design reviews to the community. And so we do like, we'll review a spec for an API, you know, on, we use YouTube. So, like, we'll just, you know, throw it up live, and we say, okay. Today, we're talking about, you know, system JSON was actually one of those that was reviewed, in the public.
And so that level of collaboration is huge so that we get real time kind of customer validation as we're designing things rather than, you know, we've compiled the code. Now let's validate things, which can be a little bit harder to kind of unwind and change that that feedback channel when the kind of the train's in motion. But if everybody's a passenger on the train, it really helps deliver a higher quality product in the end. And And that's what I think we value a lot is just that that constant collaboration. I think, of course, you know, again, all the other open source aspects of, you know, we accept tons of pull requests.
Like, you know, as we're as we're maybe focused on the innovation, again, those 1,000 paper cut aspects, you know, having the community see and things that are important to them and say, hey. Doesn't look like anyone's attacking this. I'm gonna go, you know, submit a a PR for this bug or, this enhancement. That absolutely helps as well. But the collaboration, I think, is the thing that I would point to in throughout the process, not just the code.
So one of the things that I was told was that IntelliCode did a scan of all the public GitHub GitHub rebos. And, I was wondering what kind of things did it learn when it scanned all those? Yeah. I think it was I think the the initial scan was, like, the top 1,000 public repos. I don't know the heuristic.
I'm I'm not on that team, so I don't know the heuristic. I think it was, like, based on Starz popularity kind of thing. Gotcha. And I think the method that we use to understand the models is kind of just the the coding patterns. Like, what were popular types?
What were popular libraries? And what were the, you know, most used members of all those types and things like that. That's my understanding of, like, you know, the the basic thing of of what it learned. I'm just like you in that aspect of a customer in this space, so I see the results of what it's learned. I would anticipate that that team would be able to tell you, oh, we learn we've learned a lot more, and we're trying to figure out how we can leverage that, what we've learned.
Right? Mhmm. And so I think I don't I don't think we've seen the end of what AI inspection of code had has value to us. And we we just saw what the immediate value can deliver, and we're trying to productize some of that. And I think there's probably a trove of add additional information that that we can do.
Like I said, you know, maybe some of the automatic code fixing, the Mhmm. The pattern the pattern matching or intent. Right? I think that's one thing that I've always seen in working with some AI. Like like, it's a math problem.
Right? AI is just gonna tell you, like, here's the pattern, like, yes or no kind of thing. So it's it can be difficult to infer intent of code, and I think that's something that, would be very, very intriguing if if we could leverage what we know from models or scans and things like that to improve developers' codes with the right intent and not just say, you know, that you have an error. In fact, I I was working with a a node app today where I had a statement that said, let, you know, some variable name equal this, and it was being assigned as an out later in a function as an out parameter. But the linter was saying, hey.
It doesn't look like you're reassigning this, so you should make it a constant. And so they're like, the linter didn't understand the intent of how it was being used. It just saw the code it just literally saw the code path of, like, I see you assign it once, and I'm not seeing a line signing it again. It didn't understand the intent of what an outgram was. Gotcha.
So I think that's those are things, like, you know, I don't I wouldn't consider it Linter AI, but, you know, it's pretty close. Right? I mean, it's looking for things to help. So that that would be a thing that I would expect us we have some knowledge in the IntelliCode space, and I'm sure we're probably figuring out how to leverage that. I think one of the things that Juan and I discussed in, a recent podcast was how I'm I'm currently digging into unit testing, and one of the NuGet packages I'm using is fluent assertions.
And what it does is it basically takes the error message that you get from your assert and gives you more details and more in human readable, you know, speak. Right? Yeah. So instead of, you know, a stack trace or some error out of 50 tests that you're not sure where it happened or what it did, this gives you, like, a paragraph. And, you know, so it's easier to read, and it actually may provide more detail than to, to dig into, you know, to what I'm trying to figure out what's going wrong.
It's it's been been helpful so far. I've I've enjoyed working with it. That's cool. I'll have to check that out. Yeah.
Yeah. Anything's better than just looking at the hex codes for error. Right? Right. As far as Visual Studio goes, what do you think is one of the more popular or useful tools or extensions that that you see people using all the time that, you know, maybe we're we use it so much, we don't even think about it anymore.
Yeah. I think I mean, I think you have to put ReSharper in that bucket. You know, that that's, from a productivity standpoint and and how people are, you know, desiring to do that. And I think there's some muscle memory there. Right?
Like, as you look at the history of of Visual Studio where maybe we didn't have any of those capabilities, and so you, you know, you use a certain tool, and now you're just used to it and any kind of changes there. So that one, you know, comes comes to the top of my mind. Gosh, man. That's a good question. I'm trying to think of if I actually know the data driven answer to that.
Some of my favorites are, the productivity power tools, you know, with MADS. Uh-huh. A lot of the things that he builds are are really useful. And then I also use OSCode, which I think really gives me a great debugging experience with being able to, you know, do almost a time travel type debugging experience. It gives you a lot of hints in your code while you're debugging out of what this is gonna evaluate to, so on and so forth.
So those are great ones for me. Right. I think I think you're probably right in in the debugging space. Like, when I was working in the the UI framework space, we we had a set of extensions that, helped you kind of, like, basically put breakpoints on kind of XAML binding expressions and things like that, which is not a typical, like, c sharp kind of breakpoint area. And so that's you know, it's probably an area that's that's most used.
I I would say, like, you know, core editing experience and then probably those debuggers are are where people are tapping into the more more extensible places to enhance those experience. Like you mentioned, the fluid assertions and Oscode is a great one as well. I'm pretty vanilla in my own use. I I actually don't have any extensions installed. It's sad to say that, you know, I'm not building mainstream mission critical applications anymore.
But So if something doesn't work right for you, you know it's the it's the main product, not Yeah. Exactly. Yeah. And and I think, you know, part of that is intentional on our team as well. Right?
Like, you know, we you don't wanna be blinded. You know, if we're trying to improve the product, we're, you know, we're starting from what the base is and and what people are at. You know, we have a goal of, you know, you can be the most productive you can with the, you know, the install that you have, then, you know, we should live that day to day as well and understand that. One of the, newer features that I'm still training myself on using is, control t. Right?
The the context search within the whole product. And there there there's a there's a similar tool inside of ReSharper that I used to use all the time. You know, I'll remember, oh, yeah. I can use that and just start typing in part of the name, and it will find it for me. You know, it just again, like you said, some of it's training yourself, you know, new muscle memory.
So Oh, yeah. That's really hard to train. Yeah. I actually have a question and, you know, this one of those things that that might not have an answer. And we've talked about this couple of episodes, but one of the first ones with, Mads Christensen.
We were talking about Visual Studio and how it's built on the dotnet framework, And and there's a lot and a lot of code in there and a lot of legacy code. And we were talking about dotnet 5. Right? When you guys, you know, pull everything together into to the one, BCL and CLR, right, and and all that stuff, how you're gonna transition Visual Studio to dot net 5 and how long that's gonna take. Just wanted to get your your thoughts on that if you have any.
Yeah. There was a there was a picture floating around a long time ago that, you know, was a was a kind of a screenshot of the IDE, a typical IDE where you had the editor and a couple tool windows and stuff. And in it was highlighted every different technology that was used. Visual Studio is, you know, it's an old product, and it uses pretty much every piece of developer technology we have ever written. But I think, like, the at least the immediate window is still, like, classic MFC.
Like, there's a there's a lot there. There's a lot there. Yeah. Yeah. A lot of the new stuff you see is for at least on the UI side is is WPF.
And so that's, you know, that's a big stepping stone for for dot net Core, number 1, let alone dot net 5. Right? So Right. Dotnet Core 3 was a huge thing for us to bring the Windows client aspect to core, which adds, you know, not only the value of, like, we're innovating in the core space and not in the framework space. So let's help, you know, bring the frameworks forward, but also the portability of the frameworks.
Right? So now you can have, like, a client application that's, what we call self contained deployment. We can kinda bring your own framework with you and not have somebody, have to have the the framework installed in their machine. So, anyhow, that's that was a that's a big move. Like, we gotta move a lot of pieces to core first.
Then as we look at the evolution of of dotnet5, right now bringing mono and kind of the Xamarin story in there, as well and, you know, having truly one runtime. So I think from a Visual Studio standpoint, it will be I think it'll still be a little bit before we can realize that vision from that size of a of a tool that leverages many, many different frameworks and probably specific patterns that we still need to make sure that dotnetcore has as well. And you think about, like, app domains and kind of those classic dotnet, isms that, I'm I'm sure Visual Studio uses features that dotnetcore needs to to well, I know for a fact because they've asked us for some things. But, yeah, so I think I think that vision is not immediate. But, again, when you look at opportunities for us when we do new tooling, maybe new extensibility areas, you know, that we're plugging in, that I I think dot net Core is is a a means to an end there to, you know and dot net 5 is just another version of dot net Core.
Right? So Right. Right. I think it's, it it's definitely on the mind, as as we partner with the Visual Studio core team themselves, and they say, hey. In order for us to move, these are the capabilities we need.
And it's just a matter of, like, prioritizing those things as well as them. Right? So, I mean, you know, Visual Studio as an IDE is is innovating of itself, and they don't wanna slow their pace of innovation in order to wait for, you know, some fundamentals, things there. Cool. Versus online is a a good place where I think we're starting to see some some of that, happen in some of the online kind of brokered pieces back and forth, where they'll be written there.
So there seems to be, like, comparing the release, schedules of Versus Code and Versus but it's classic, I guess. Versus Code tends to have, like, a on a monthly release cycle and Versus, like, the 2019 seems to have, like, a like, a big release every couple of years. Do you reckon that they'll ever move to, kinda, like, an evergreen model? 2 things that we're trying to do on on that front. Number 1, we're trying to be way more public of our road map for Visual Studio.
And there actually is a doc that is on on the Visual Studio doc side. You can look it up and say Visual Studio road map, and you should hit it. And so we're trying to kind of have have a quarterly road map that is very public. Whereas Visual Studio, as I mentioned, is not fully open source, but that is this is an area where we want at least the process to be open and and what we're working on. We in in the Visual Studio Windows tool, we try to snap to quarterly releases.
So you'll see, like, you know, I think we're in 16.4 right now is is the the current release. And so every 3 months, we'll drop another one of those dot releases. That doesn't mean it's just patch updates. We are actually adding decent amount of features there. But as you mentioned, there there's probably I don't know if we've snapped to a road map of what a major release means from a timeline perspective.
You know, as an example, like, when's when's Visual Studio 17? We call it sorry. This is the Microsoft ism. Right? So Visual Studio 2019, the actual version number is the 16 dots.
So 17 would be the the next major version. I don't know what the mic what the marketing brand would be. But, you know, deciding, like, what's that what's that big innovation wave that's gonna bump us to a 17 instead of a 16, 10, or something like that. Those are the things we're trying to articulate in the road map capabilities and also get get feedback from developers on. But I I I do see a shift in how we've released.
Quarterly is a huge change, even of itself. Helping people realize that the quarterly releases are not just bug fixes, that there are features in there, it is helpful for us to communicate to our customers as well. It's like, we we actually I I do think Visual Studio is releasing way more often than it is and adding value in every one of those releases. Certainly, as you noted, like, Versus Code releases, I think, every 2 weeks, technically. But I think they actually, you know, snap maybe I think you're right.
I think it's monthly. Right? So kind of like on a Sprint base basis, they have an an actual monthly form on these. But they also have, like, really, really active canary channels and things like that as well. And that's something that we in Visual Studio are trying to we don't have in in my opinion, I'm not sure we have the same kind of level of customer adoption in our kind of preview channels that would help us, you know, kind of rapidly iterate on.
But but they do exist. It's just, I can appreciate it's a little bit little bit harder to move Teams, to that when you're in an IDE based environment versus an editor. I just got 1644 in the past couple of days. So, yeah, they're they're doing regular regular updates. And I remember when 16 4 first came out, I was really excited about it because it finally brought back my vertical tabs.
Yeah. And, yeah, they're still I hope they're working on some a little more, enhancements to the vertical tabs. But, that's just something I love is, you know, having that arrangement there. So alright. Yeah.
Go ahead, Y. Oh, I was just gonna ask, say that, it might be also, a result of the hit the users. So, I guess, in Visual Studio, you're more likely to have corporate users who are less likely to accept rapid change than Mhmm. V Versus Code, I guess. So Yeah.
I think one of the the big innovations that we we finally got around to as well on the previews, because, the feedback was, like, especially in the corporate environment to adopt previews, it's hard. Right? Because you you don't want to impact your actual working environment. Maybe your machine has certain restrictions or anything like that. Let's be honest, usually, uninstalls aren't always clean no matter who you are.
But being able to install side by side is a big thing for Visual Studio. I currently have 6 versions of Visual Studio installed on my machine, and none of them are conflicting me with each other, and they're all able to execute side by side. So we've we've tried to do some things to make it easier to at least, you know, kick the tires on previews even in those corporate environments without impacting your work. Right? Whereas in the past, if you wanted to take a preview, you were kinda upgrading.
And so then, you know, you you might get the, oh, we're gonna we're gonna change the format of your CS Proj file. And you'd be like, well, I can't really do that because everybody else is still on, you know, 2015 or something. So we we try to make it easier in the full Visual Studio window space to to dog through those previews. I think it maybe it helps changing your mindset because I'll be honest. In in my office, you know, there's a couple of developers when they see a Visual Studio update.
They're like, I don't wanna install this because I don't I don't want to break anything. Right? We're we're assuming they're bug fixes that might have unintended consequences. But if we think of it as, right, you're you're continuing to evolve the application, right, that we're using on a day to day basis. It's a different way to look at it, you know, and and it's easier to to do the updates and get on board.
So Yeah. And like I said, you know, the combination of the road map and the release notes for that matter, you know, are are things that should be helpful in that regard so that, you know, it's not a mystery anymore. You're like, well, what? Okay. An update.
Do I just click update? Or, you know, now I can actually go look at release notes and, you know, I'm I'm not sure that they're every bug is listed there, but I we do a pretty good job listing out what we've you know, the kind of the major or top top fixed, you know, kind of top voted issues are that we've fixed and stuff. And so, again, that transparency aspect of of helping you maybe feel more safer about that clicking that update button because you're like, oh, actually, I do use the web editor. It looks like they made some changes there. Probably gonna help me out, you know, and, you know, that insight helps.
So I primarily primarily have done on premise applications in the past, and I wanna really start expanding and doing more Azure development. How much can I do within the Visual Studio IDE without having to go out to the cloud? In the portal the portal is what Yeah. You talk about. You you can do quite a bit.
I mean, of course, it depends on the Azure kind of or cloud service in general that that, you're you're leveraging. But when you think about, I'll name a couple. So serverless is hot. Right? Serverless is a hot technology.
Our tooling for Azure functions runs locally. So you have the runtime there. So you actually can you can you can file new project, create a serverless function on an airplane, and, you know, run through your loop and understand how the triggers are there and, you know, do a bunch of different things without ever having to have an actual subscription yet, without ever having to actually push that code to an Azure service yet, and have the confidence that when you do, you're actually running in the same environment that that it has. And then there's so there's there's run times that we bring with the tools to help do that. Then there's also kind of emulation.
Right? So storage, Cosmos, and one other that is escaping me that we in the tools, that when you leverage them, storage is a good example that we have an emulator service that will run-in your Visual Studio environment that you can, you know, work against, do your coding against, maybe change the structure of your storage. That's the intent. Right? The whole interloop thing.
And then when you're ready, you know, you can switch that, configuration string, that key vault string to the actual live service, and everything kind of just works that way. So that's kind of how we've approached, the tools where we have those capabilities. Going to the portal so when you're actually ready to make those decisions as well of going to the portal and kind of creating those services, we've done a lot in Visual Studio for not every Azure service, but, a lot of the top services that we feel most developers hit on a regular basis to give you the tools to provision the resources, configure them with within your app, and deploy them to those resources all within the tool, if you so desire. And you don't have to do all three of those things. You can do 1, 2, or, you know, as many as you want.
You can use Visual Studio to create the resources. You can use it to test and emulate them. And if you want, you can publish directly from Visual Studio as well. But it's kind of like a little bit of a cafeteria style there. In the next previews that we have, our goal so right now, if you kind of look at the the entry point to all these is in the published dialogue, for the most part, and you you see what we call connected services.
You see kind of an offering of, I think, maybe 4 things there. We hope to light up approximately 18 Azure services to be able to provision and deploy to by the time, really we release the next, the version probably in the late spring, early summer. And that that, again, data driven decisions. Right? We look at kind of what people are using, and that's the ones that we prioritize first.
And then, actually, there's some interesting new technology that that we think that we have a good pairing with as well. So you look at Blazor as an example. You know, it's a client or sorry. Blazor WebAssembly as an example. You know, you don't necessarily have to deploy your WebAssembly app to a server.
Right? You can use storage as your host. And so having that capability in Visual Studio to kind of offer those, ideas to you and help you configure those easily is is something that we're looking to do. Very cool. Yeah.
I was really amazed that, like, when I started playing with Azure Serverless, just how, like, seamless it was. Because I've been using Google, cloud, and you literally have to upload everything to their cloud to to run it. Mhmm. But, yeah, I loved I loved the fact that you can just run it all locally, and it's exactly the same version. It's you'd find on, when you when you actually finally deploy.
So Yeah. That is cool. That is the same thing. And they're by the way, they they're a dot net core customer as well. I mean, that you know, a big part of our adoption is is our own first parties.
Right? You know, more than just eating our dog food, like like running it in production. And functions is an is an awesome dot net customer for us, among other Also, the back end is always in dotnetcore. Mhmm. Okay.
Cool. Cool. Did not know that. Alright. So I think we should start wrapping up here.
Any other final questions? I'm good. I'm good. Alright. Well, thanks, Tim, for, spending the time with us today.
Yeah. A pleasure. Appreciate the conversation. So for the end of the show, I guess we'll go into fix then, and I'll start it off today. One thing I found recently was a release by JetBrains, you know, the makers of ReSharper.
They came out with a developer font called mono. And the page that they've got out there to show you all the different aspects of mono is kinda one of the most fancy marketing pages for a free font I've ever saw. So, yeah, if if you're if you're interested and you're you're brave person, you'd like to try different fonts in your editor, check out the the new font. It's free from JetBrains. Alright.
Cool. Yeah. And so I'll go next. Mine are gonna be, a couple of podcasts, and, we'll put them in the show notes. But one is, Malicious Life, and the other is Darknet Diaries.
And they deal with, you know, computer viruses and hacking and how to to deal with those things and some of the history of it. And it's, it's it's interesting to to listen to. So Okay. I'll go next. So, today's book I'll tell you today's pick, is a book I read a long time ago called, Blindness by Jose, Saramago.
And I've kinda thought about this book just because of events that's been happening recently, in the world. But the premise is that there's this illness that's going around where essentially everyone in the entire world goes blind. And kind of what happens as society kind of breaks down. It's actually it's actually dark. But but, yeah, it's a it's a it's a pretty good book, based on that premise.
So Alright. Tim, what do you what do you think you're gonna have your pick be today? I'm gonna give you 2. So, I'll give you a technical one and then, a little bit something about me. So I I have been, deep into DevOps as a developer.
I am a firm believer now. I don't start a project. The first thing I do in a project now is configure a CICD, flow. So very much, into that. And so I've been spending a lot of time in GitHub actions.
And so if you haven't, explored that, that is something that, is extremely flexible, amazingly diverse, and you can you can pretty much do anything. And if it's not there, you can write the code to do it. So it's been exciting to kind of play around and and have some fun there. Second thing is I'm a true crime nut. That actually is my educational background as law, and, I'll give you a podcast.
There's one called Bardstown. It's like bardstownpodcast.com. Crazy stories. But the true crime nut is a good podcast, so I enjoy this. I'll add it to my list.
Awesome. Awesome. So if, any of our listeners have questions, they is there a way they can reach out and get in touch with you? For me, yeah. Sure.
I'm pretty much available. My email and everything is, wide open. So, timhughar.com is is my site. Timguer is my Twitter handle as well, and that's also my alias at Microsoft. So you can reach me, at any time.
I don't always claim to know the answer, but I'm always willing to help route it to to to people that that I think know the answer. So always always happen to be an open door. Thank you. Thank you. If people wanna reach out to the show and get in touch with me, they can also find me on Twitter.
I am at dotnetsuperhero. And I think you can find both me and why on LinkedIn because I don't really do social media. Yep. Always stick to those links, so, yeah, on the show notes, I guess. But Yes.
Yeah. I'll add mine. Alright. Just leave it up to me, guys. Right?
Right. Yeah. Oh, yeah. Yeah. It's all you.
Alright, guys. Thanks for a great episode. We'll catch everybody on the next one. Bye bye. Thanks.
Bye.
NET Tools and Azure for .NET developers with Tim Heuer - .NET 196
0:00
Playback Speed: