The Modern .NET Show

Episode 98 - AWS Microservices Extractor for .NET with Josh Hurley and Norm Johanson

Embedded Player

Episode 98 - AWS Microservices Extractor for .NET with Josh Hurley and Norm Johanson
The .NET Core Podcast

Episode 98 - AWS Microservices Extractor for .NET with Josh Hurley and Norm Johanson

Supporting The Show

If this episode was interesting or useful to you, please consider supporting the show with one of the above options.

Episode Transcription

Hello everyone and welcome to THE .NET Core Podcast. An award-winning podcast where we reach into the core of the .NET technology stack and, with the help of the .NET community, present you with the information that you need in order to grok the many moving parts of one of the biggest cross-platform, multi-application frameworks on the planet.

I am your host, Jamie “GaProgMan” Taylor. In this episode, I talked with Josh Hurley and Norm Johanson about the AWS Microservice Extractor for .NET, and a whole heap of .NET things that AWS are doing with .NET. - things like the .NET deployment tool, which allow you to deploy a .NET application to AWS in as few as two mouse clicks, even if you don’t know the names of AWS services yet. We also talked about the fact that AWS was the first cloud services provider to offer .NET hosting, and the fact that the AWS SDK for .NET was one of the first public NuGet packages.

So let’s sit back, open up a terminal, type in dotnet new podcast and let the show begin.

The following is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Jamie

So first thing I’d like to say, gentlemen, is thank you ever so much for being on the show. I really appreciate the time that you’ve taken to chat with me today, because we’re across loads of different time zones. And so it’s middle of the afternoon for me, potentially early morning for yourselves. So thank you ever so much for being on the show.

Josh

Well, thanks for having us. I really look forward to talking to you today.

Norm

Yeah, thanks for having us.

Jamie

Excellent. Excellent. So for the people who are tuning in, we’ve got Josh Hurley and Norm Johansson, from Amazon, ostensibly, from the AWS team, I believe. And they are going to talk to us about some .NET stuff that you can do on AWS. Part of it is for the microservices extractor, but there’s loads of stuff happening. So let’s just sort of connect and talk about all these different things. Right.

Josh

Sounds great.

Jamie

Yeah. Excellent. Um, so I was wondering, before we start with all of that, would you mind, perhaps introducing yourself. So listeners, maybe a bit of an elevator pitch about you both, just so we know, you know, who we’re talking to that kind of thing?

Josh

Sure. I’m Josh Hurley. I’m a .NET developer advocate here at Amazon Web Services. I started out my career way back in the 90s. As the web was growing, I basically got more and more excited about that. In fact, actually dropped out of I was applied to an accepted to law school and decided, hey, you know, this, this thing called the web sounds much more interesting. And I went and continued to pursue it. And then when .NET came out, I was at a startup and got really excited. It was in beta, I think, just like everyone else, and, you know, recording right now, we’re just celebrating the 20th anniversary of it. And I got had stories about you know, from version one on, and it’s been a great ride for that. I’ve, you know, not only did I have to sell my services, but I’ve sometimes had to sell .NET, especially with the startups I work with, they’re like, Yeah, because whatever the current flavour was, was always more popular than .NET. But consistently, I was able to build solid applications, and also worked with a lot of enterprises to Fortune 50 kind of companies. Eventually, Amazon called and said, you know, what they were doing with .NET. And I said, you know, this sounds exciting, came aboard here. And, you know, my days are filled with helping customers with that are looking to migrate, modernise or even just build net new applications here on AWS with .NET.

Jamie

Cool.

Norm

Yeah. And then for myself, yeah, I’ve been, I think Josh and I have similar length of career. Here’s we’ve been doing this for quite a while. Been doing .NET for a long time, used to build a lot of web apps and things like that. But somehow, I always focused on developer tools that somehow I always sort of came back to that one, I think I just liked the audience and building tools for developers. I was always that guy that would, yeah, we’re building a website. But let’s build some tools to make it easier. I was always that guy on the team that would do that, you know, which I think those are very helpful guys to have around.

Yeah, I had an interesting start my first exposure to .NET. It was again, yeah, the one of days I was working for Rational Software. If you remember, back then the rational rose tool, we were going to make the next generation of UML modelling. So it was gonna be 1.0 version of that one, which was going to integrate with the Eclipse 1.0 and Visual Studio .NET 1.0. So it was a trilogy of 1.0 products that were all going to mesh together. And it didn’t necessarily work out the best we’ll say at that. But I can definitely say that the Visual Studio done inside was very exciting. It was like .NET is a really cool looking thing. And so pretty soon after that I jumped ship for a startup for .NET. And then yeah, about 12 years ago, I jumped shipped over to AWS, and it was much smaller than it is today, to start building out their .NET developer experience. I’ve been working as a developer, they’re building that up.

Jamie

That’s really cool. I feel like I’m definitely the junior in this instance, because I’ve only been working in .NET for around 11 years. So I am definitely looking to you both as you know, the the the Oracles have all of the information.

Norm

I just meant those we remember where all the bodies were buried in .NET. That’s what it is. That life before generics and things like that. No LINQ and things. So we all remember this.

Jamie

Oh, my goodness, my my first programming job. We were building some stuff. We were building a, a sort of low level hardware testing tool in - so we were building the GUI for it in .NET. And it would communicate with a low level driver over USB, and things like that. But we were stuck in the 3.0 days. And they were like yeah, just write loads of stuff to the database and read it back out. And I’m like, this would be really good if I could use LINQ but I’m not allowed. We can’t upgrade.

Norm

Yeah, the language has definitely come a long way. It’s come a lot easier. I remember we fought some painful issues in the 1.0 . I mean, overall 1.0 for .NET was was still great. Coming from the the C and C++ world back then it’s like, oh, my life is so much nicer. But yeah, thinking about where we come from those 1.0 days and then we’re Visual Studio has come from those days. I feel like we’re we’re doing the .NET pitch right now. But yeah, it’s been. It’s been a good ride for us. I think it’s done in developers. We’ve had cool stuff. So…

Josh

Yeah, exciting. Yeah. As you’re mentioned, changes, C# obviously. I was actually that was the only thing I was late to the bandwagon a lot of the apps because I was writing classic ASP apps before dotnet. So I was doing VB script. So, you know, the companies, startups I was at when I was convincing them to transfer. I didn’t try to also say, oh, we should also switch the language to a brand new language. Yeah, so VB dotnet, was it. So I was a little bit late on that. I think it was by 2005 2006. I finally like, Okay, we really need to standardise because I had a couple of projects where Okay, well write the back end in C# and the front end will keep the VB so everyone’s a VB .NET. So we’ll keep everyone happy, which just became more insane than anything. So just, we’ve finally but yeah, right, right there with you. The improvements over time, we’ve just been fantastic with the language if it was C#.

Jamie

Absolutely. You know, I just as this tangential thing, I think it would be a really fun thought experiment - but really cruel to someone - to take a sort of modern .NET developer and put them on a Windows XP machine with .NET 1.0 with Visual Studio as it existed then and say go ahead, go build go build your your app. Let’s see what happens.

Josh

What’s funny, is…

Norm

I building some beautiful wind forms. Oh, yeah, I’m guessing.

Josh

Well, you joke about that I’ve actually had back in the day when I had my own business, I have customers that are still using WinForm applications I created in 2006. To run and it’s been like mine, I think they’re up to like 4.7.1 or whatever. I don’t think that 4.8, but there but basically what what language do you think of that or platform can you think of that has had that longevity? Where minor little tweaks? Have they’ve been essentially using 95% of the same code for that long? Yeah, it’s just amazing. Just to see that progression, obviously they today they could take if you’re going to rewrite it, you use something more modern, and that looked a lot better to this thing doesn’t look great. But it functions and achieves their goals. Yeah, it’s great.

Jamie

And that’s exactly it, right? I often say to people look, okay, the current code is working, and it’s doing whatever it needs to do is making you money somehow it’s solving some goal. If we were to rewrite it in some new paradigm, that code that we would run, the new version doesn’t exist yet. And so it’s gonna waste you money until it’s ready, right? The current running code is infinitely more valuable than the code which isn’t running. Right. And so the old the old grades of if it ain’t broke, don’t fix it just fits really well.

Josh

Yep. Yeah, absolutely. I mean, that’s a conversation customers have all the time with us. I mean, it’s, you know, why, you know, why? Why do I need to port it? And a lot of cases you don’t I mean, Microsoft is extending support. It’s tied to the OS, the .NET frameworks. Now, it does what you said, you know, meets meets their existing goals. Now, at some point, though, there’s that where you’re saying, Okay, we’ve got to, we’ve got to, we want to be able to take advantage of, and it’s usually usually UI specific, we will, this thing is, you know, just falling out, we’re getting complaints from users about, you know, if they don’t know, the exact workflow, it fails, you know, this kind of thing is just clunky, that kind of thing, then, you know, you’re trying to are trying to leverage other third party libraries, and so forth. And you’re like, wow, that no longer supporting framework or not putting any effort into it, you know, that that time.

Or you got the other customers we’re talking to where they’re moving a lot from on prem onto the cloud. Their, you know, one of their concerns, is, you know, frankly, what, what’s it going to cost? And yeah, you can go from virtual machine to our EC2 instances, customers do that all the time, or lift and shift, but you’re really not getting a lot of the benefit. You know, it’s when you start refactoring, replatform, whether you’re going to containers from virtual machines, or you’re actually refactoring to use lamda. In our case for serverless. You know, that’s when you start really leveraging all the value of the cloud has to offer. And once you start going down that path, you’re like, especially on the serverless side, you want to be in, you know, modern .NET, you don’t want to try it with lambda, you wouldn’t be able to use .NET framework with that.

Jamie

Yeah, absolutely. And I guess at that point, as long as you have engineered your code well enough, then you should be able to just swap a piece out, right? You know, we talk about this all the time where we talk about like SOLID and things like that, right? Those important, the important principles that we all should really be engineering our code towards, you can then swap a piece out any we’ll just carry on working, you need to replace the front end, the winforms with maybe UWP or some other technology, as long as you swap it out and the API contract stays the same. It “should” - in bunny quotes - just work. Or if you’re moving from on prem to in the cloud, you all you’re changing is the underlying bits, right? If you’ve done it right, then you should just be able to flip it over, deal with one or two tiny things, and then boom, you’re up and running. Or maybe you don’t even need to deal with the water do tiny things. You know, it depends entirely, I suppose on how you’ve built your application. And you know, all of your stuff, right?

Josh

Exactly. Actually, that’s maybe a good segue into the AWS microservice extractor for .NET. Yeah, we were talking about, you know, you’re I think you’re alluding a little bit to strangler pattern. You know, it’s, you know, most companies don’t want to try to take that huge monolithic kind of application and try to put it all at once, right? It’s, it’s, you know, maybe you have that luxury, I’ve yet to be on a team where there’s like, we’re going to stop everything, so that the dev team can go for six months or a year and go refactor this to this brilliant, new good. No, of course not, they’re gonna, they’re gonna say, how do we just as you mentioned, you know, especially if you’re an Agile shop, which most companies are now, they’re gonna say, how can we, you know, in a same kind of fashion, peel offer or take a vertical slice of our application, and then take that, and then we can refactor that, as you said, you know, host that where we want to host it, and use the latest technology for that.

And I think that the extractor comes in, and that I think that plays a valuable role. You know, that’s what I get excited about when I started learning about the tool, because it really allows you to, you know, say, Okay, we’re going to break it up. Now, one interesting bit is that it focuses on framework, and that’s one of the questions I get a lot is, you know, why don’t we get why isn’t it? You know, why can’t I take a .NET, Core .NET, Five or Six app and extract it that way? And in to me, at least for the conversations we’ve had with customers, many of them are still based on these are dependent on these legacy .NET framework applications. And if I put on my architect hat, my even my Scrum Master hat, I took a little detour earlier in my career. Yeah, I try to think of the smallest units of work that’s still meaningful, that can be done, like in a sprint, and so forth. And yeah, then I said, Okay, well, what might actually make more sense that we take the existing framework app, extract pieces out of that to another framework, and then only worry about refactoring that code to modern .NET at that point, and then you can host it. And if you’ve decoupled it correctly, you’re calling API. So it doesn’t matter if it’s .NET Six API base that you’re calling from your old .NET framework, as long as you coded it, right, and remove those dependencies.

So I think that to me, is, you know, I think, a natural progression there.

Jamie

I suppose that’s like, that’s one of the hardest parts, though, I guess, is identifying those vertical slices. And I mean, is that what the AWS extractor for .NET does? Does it help me to identify those? Or does he just do that for me?

Josh

It does it basically, we don’t like the sort of that black box magic thing. So we want to, we want to give you control. And but we also want to give you some some guidance on, you know, here’s some suggestions. So and then ultimately, try to port it, or try to extract it for you, once you’ve identified it.

So essentially, the process is you take you point to a existing framework application - 4.x application - and it will import that in analyse it, and then it will give you a visualisation of all your dependencies within that. And there’s a couple of different views that you get, the standard view shows you whether it’s a incoming dependency on external dependency. And then there’s a couple other views that we also have. But ultimately, it’s up to you. Because you know, your application to say, Okay, this is a logical grouping, that makes sense. I’m going to move these together box them, these nodes into a group, and then you can extract that group out, and it will actually take your code and extract that and create another - in the case of ASP. NET MVC - another ASP. NET MVC project with that same code in it, and then it will give you an updated version of your what is left of your monolith and says, Okay, this is now going to call that extracted code for you.

We don’t guarantee that it’s going to compile, we’re hopefully, you know, a lot of the times when I’ve tested that and I have a whole bunch of apps I’ve tested it usually works but there’s sometimes you got to tweak a few things. You know, you can’t automation isn’t 100% And again, it’s a version 1 product. So there’s always these corner cases, we haven’t seen that we definitely want to hear about them. But you know, for the most part, you might have to tweak a few things and then get it out but that’s the general process that you use with the extractor.

Jamie

I like that. And like you say, there may be some corner cases where maybe I as a developer doing something that the extractor tool can’t really figure out, like, maybe I’m doing something that’s just a little bit too off piste. And the extractor goes, I’m just going to leave you to figure that out. I like that. Because then I like that, it’s then down to me to then go ahead and test my thing to make sure that it all like you said, I know the code that I’ve written best, you know, your tool, as good as the tool may be, it won’t know how I write code, it won’t know, the domain, it won’t know any of the constraints, right. And so it’s kind of like, I’m seeing it more as like a helping hand rather than a, you must do it like this. You know, it’s more like, let me show you, I think it works like this, go have a look.

Josh

And along those lines as a couple of little helping hand things. They’re optional, but you can, depending on what you’re trying to do, if you’ve got an app, and you’re you know, I think we’ve all been guilty of it, we keep adding more and more functionality. And we, as developers, and as teams, we sometimes say, you know, this is no longer going to be used and yeah, but nobody wants to go through that extra effort saying, Alright, well deprecate that, okay, when there’s always Bob or Sue in the corner says, Oh, they really love it, but nobody else in the company uses it. And we just got to teach them the new way of doing it, you know, those kinds of features. But you know, one of the interesting things is that within this tool is you can actually put a profiler on to running applications. And we’ll actually see how often and what is calling what from a class to a class. And you can get that runtime metrics profile in with that visualisation. So not only do you know, okay, these three classes called this service, oh, this, this class in particular calls it a lot more and more frequently than the others, this is probably a more valuable use of our time, because that is used so heavily opposed to the other, these other ones. And if you actually see something that has almost no usage, it’s like, that might be that case, where we just kind of bite the bullet and say, I think I don’t think we need this around anymore. But you can’t, or it’s a low priority on migrating there.

The other interesting helpful hand kind of thing is the integration, if you’ve got Porting Assistant, which is our tool that basically analyses your code, before you go to try to port it to modern .NET, it will give you an analysis of what what are compatible and not compatible for like NuGet libraries and things like that, and will actually create a shell or attempt to create a shell of what is compatible. So you can actually get an idea of tha. You still, it’s not rewriting any of your code for you. But it at least gives you that helping hand. But if you do have that Porting Assistant tool with the Microservice Extractor, it will actually tell you okay, these things, these libraries are .NET compatible - modern .NET compatible - or not. And that will actually help aid you as well, when you’re deciding how, what you’re going to extract.

Jamie

I can then taken take that to whoever the decision maker is and say, Look, this codebase is huge to do it will take this much time. These are the paths that we can see are the most sort of often hit. And then the decision maker can go right, okay, ABC do those. Because they are the moneymakers, they are the most important things, they are the things our customers need. D E and F, don’t worry about it. Because that’s like that’s internal stuff. You know, maybe there’s some other tool like you say maybe someone in the office or some other tool is communicating with those steps, it’s fine, leave those as they are, because that’s not maybe not customer facing or something. But these three bits here, go and focus your time on those. And I like the idea, like you were saying there of the it takes a look at the NuGet packages and things like that and says, Okay, so maybe this path, you will, you might have to stay on framework, because you’re using some API that isn’t in Core or Five or Six or anything like that. Maybe it’s not a cross platform thing, either yet, or it may not be a cross platform thing. And so then you’re able to even more I guess granularly target things and say Right, okay, if we are going to extract this, we need to know about this pitfal. Because I’ve been in that situation myself where we’ve gone and extracted something and started working on it. And then some brightspark goes, we’ll put it in Docker, and then nothing works because it requires like Windows authentication or something, you know?

Josh

Oh, yeah. Absolutely. Yep.

Jamie

Excellent. So, um, so we’ve talked a little bit about the microservices extractor. Norm, we haven’t really included you in the conversation. I do apologise.

I was wondering because there’s there’s lots going on at AWS for .NET right now, right? There’s the Microservices Extractor. Lambda has always been a thing. I was wondering would you mind, are you guys able to talk about some of the exciting stuff that’s happening in AWS for .NET developers? Because I feel like and I feel like a lot of .NET devs. Go Yeah, Azure that’s a Microsoft thing. .NET is a Microsoft thing. I’ll stay over there, because I know the state. But obviously, there are other cloud providers. So let’s talk a little bit about AWS for .NET.

Norm

Sure. Yeah, it’s interesting. That, you know, a lot of people, they don’t think first on AWS but for .NET, but in reality, I think we actually have more tooling for .NET than I think any other actual language. There’s a lot of stuff we have for that.

One project had been working on the last year, I think is pretty interesting. Is we’ve been kind of rethinking how you should come to deploying your application on .NET. Right? I mean, if you haven’t come to AWS before, right, you come to it, and you see holy cow, there’s a tonne of services. And I don’t know who came up with their naming scheme but I don’t follow along, right. So it’s challenging to figure out where do I go? Right? So that’s been sort of a change in our tooling. We’ve been thinking about of like, don’t think about how do I get my application deployed to x service. But like, I just have my application, how do I get it deployed? Like just where do we get it deployed AWS? So we’ve been thinking of this new deployment tool we’re working on is like, let’s start from the application, let’s look at your application and say we judging by what you’ve got here, this looks like you want to do containers, or maybe this is more of a monolithic application, you know, let’s look at this. And then let us present you like, this is probably where you want to go, you you should deploy to here. And then we’ll help you deploy there. So it’s sort of like just thinking of like, how do I deploy it to AWS. We’ll see, oh, this is a monolithic kind of looking application, which is still fine. All good. And the ops, I’m not killing off the model this in the world, and will let you easily deploy that out to Beanstalk. Right? And let’s say this is a good one to go to Elastic Beanstalk. And we’ll go run it, you know, straight unmanaged, EC2 instances. Or we see, yeah, you got a dockerfile, you’re clearly look like you want to containerize, this one will let you see oh, well, you know, let’s get you running on ECS Fargate, where you don’t have to manage any services there. Or you can try out our new App Runner. So sort of takes a lot of that initial thought process of like, Where do I even land, which I think is very hard for new people to come to AWS because it is, somany things you can do.

So that’s a big part we’re doing. You know, the the goal of this tooling, though, is to not just make it sort of this, like it’s a great demoware right yeah, like, No, I figured it out. And I don’t need to use this tool. But like, how can we use this tool for once like, you can start in Visual Studio, we have the toolkit for Visual Studio, you’ll be able to just right click and just say publishe to AWS, and we’ll figure out how to get there. And that’s great for when you’re prototyping, right, you’re trying to figure out but you know, few of us I know there are some but few of us deploy to prod from Visual Studio. I’ve been in those calls. But you know, you can learn in there, you can get the interactive experience. But the experience or the way we design the tool is you can easily switch from Visual Studio to a command line experience. Right, you can then also just, you know, we sort of integrated with .NET CLI, because you can just say, you know dotnet tool install --global aws.deploy.cli, it’s one of those .NET tools. And everything you did in Visual Studio, you can easily do on the command line. And you can script that. That was actually kind of a one of our fun things from you know, me geeking out on the tech part of this, we actually make it so the Visual Studio in the CLI actually use the same thing. Because this the there’s basically a SignalR connection between the CLI and Visual Studio, to do all that. So that was sort of the fun coding of like, hey, we found a use for SignalR besides making a chat application. That was really fun to do for us. But yeah, it allowed us to easily do the automation part in there.

But we also sort of recognise that so many people like yeah, we can come up with this is what we think you want to do. But you know, every company, they have their architect, this is what you got to do. This is the rules that we do, you know, in the you know, it’s great, they those people need to know their domain, they know their their company needs. And we want to make sure that those people can help out too, they can define this is the deployment architecture that you want for it.

So that’s where, you know, we built the tooling under the the underlying deployment code is called CDK. I don’t know if your audience knows that. But that’s what we call the cloud development kit. It is allows you to write infrastructure as code and that’s what we use under the covers to do the deployment for you. We basically you know, we look at your project and we say okay for this let’s generate some CDK code and let’s go execute that. And it creates all your infrastructure as sort of one single unit that you can then like, tear down and other things. But we also wanted to make it so like the architects of your of your companies can say, this is really how we want us to deploy. So you can create what we call a deployment project, that hooks up into our deployment tooling that you know, has their own CDK project, which can be based off of our initial ones, you can start from scratch, you can start from ours, customise it to add your own rules, maybe you have your own, you know, server and VPC settings, or, you know, side cars, you have to add to your containers, all those things that, you know, everyone has their special requirements, they can do that, they can check that into to their repos. And then as their developers, check out the code, like you can share it, you know, Jamie, you can then check out the repo and you go Visual Studio. And now you’ll see here’s Josh’s preferred architecture for when you’re deploying this is what you need to do.

So, you know, you as a company can actually change the UI experience inside Visual Studio, or the CLI to define this is what our company’s best practices, but get that same sort of experience for it. And it’s a unified experience. We don’t support Lamda yet with it, which I know it’s kind of so right now, we sort of focusing on like all the non lambda cases. But you know, all for all those cases, it’s sort of that unified experience where I can just like right click, and see, hey, this is a batch batch application, or this is a web application. It’s a Blazor web assembly application, you know, we’ll look at all those and say, This is what you should do.

So I’m, you know, it’s still in preview stages. Right now. We’re getting pretty far on that one. I think that the CLI has come a long ways, the Visual Studio integration is getting pretty close there, I think for we’ve got sort of like two different experiences right now and Visual Studio, the legacy wizards that we’ve had, for a long time in the toolkit, but then, you know, we’re putting in this new one that’s sort of giving that unified experience.

So that one I’m pretty excited about for what that’s going to mean for us as we go, like, you look at the where we’re going to be in six months in a year on that project, I think we’re going to have a lot of powerful flexibility for our customers there.

Josh

And just to just to add on to while he was saying, or clarify, for the toolkit there, if you want to actually see all this in action, AWS toolkit for Visual Studio, and we do support Visual Studio 2020 22, brother, as well as 1719. But there’s a previous norm was alluding to, there’s a preview option. And I’m really blown away about how nice the tool is, it’s still in preview, but how nice it is. And the recommendations make sense. And what norm saying I like being able to know that it’s not a black box that I can actually look under the covers to see what it’s built, and then be able to reuse that in a different way, in the way that I want to and a c ci, CD or script, use a command line version of scripted. Yeah, I mean, it’s, it’s definitely I think, is for our customers something that’s compelling. And as norm saying, we do have so many different options. When I do when I go out and talk to customers, but it’s like, you know, from Compute, we got the, you know, if you’re just in from the on prem world, you’re like, Okay, virtual machines, and then you probably containers, right, but companies are more and more adopting that. But there’s everything else in between, for all these different types of ways to get out of me, we have so many various types of containers, because, you know, customers are asking for Kubernetes. So we have Kubernetes support, then they’re asking for more abstraction away from saying, I really don’t want to have to have a whole team of DevOps people to manage the containers. So we have fargate, which manages a lot of that. And then the tool that norm is talking about .NET deployment to the users app runner. And then the app runner actually even takes that for web applications and takes care of abstracts a lot more from a scaling and deployment standpoint. So I think there’s that, you know, that whole breadth and depth and just getting getting a footing, I think this tool eliminates a lot. It gives you a better on ramp onto AWS for, as you said, for a .NET developer that might just be solely focused on the other cloud provider out there that’s known with .NET. This is a good way to get into it.

Jamie

Sure. And what I like about that is it’s lower, it’s like a common theme that we’re that I keep coming back to in 2022 is it’s it’s lowering that barrier to entry, right? If if I can run a CLI tool that will do its best to sort of figure out maybe you want to host it here, maybe you want to host it here, maybe you need this component. Maybe you need to split it up in house, this part here and this part here. That makes it easier for me to go from, you know, especially if I’m a solo developer, right? Imagine this situation, right? I’m learning .NET and I want to host it on AWS. Well, first off, I gotta go learn .NET before I can land on it, I got to learn C#. Once I’ve learned those two, I then need to learn what AWS is and I need to figure out like you were saying earlier on, I’m about which thing Do I hosted on? Right? Where do I go with an ECG? Do I go with this? Do I go with that? Do I go with this? Do I just bite the bullet and do a virtual machine and just hope that I can afford it? You know, and I’m not saying the virtual machines are expensive, but virtual machines, regardless of where you are hosting can get very expensive very quickly, right, compared to other options that are available. And I like that idea of reducing that barrier to entry. And I feel like one of the things with because so how do I put this as plainly and on political as possible, right? Microsoft makes dotnet, Microsoft, other people who make Azure, so it would make sense that they tutorials like, hey, and when you’re done, host it on Azure, and we’ll make it super easy. And so because AWS don’t, you know, the folks that ate at Amazon who work on AWS will be contributing to .NET. They’re not writing the core documentation for .NET. So it won’t be, hey, also, you can go to MSDN and look for AWS, and it’ll be there. Because it may not be. And so you folks are having to fight a I suppose fight is the wrong word. But you folks are in a different paradigm. Yeah. Okay. Okay. So let me get norm who’s great at work building tools, and get norm to build this tool, they will make it super easy for you to just go, here’s my project, go host it, I don’t care. What not that I don’t care. But like, right now, at this moment in time, when my job is getting hosted. And I don’t know how to host it. Do that before me?

Josh

Yeah, we’ve had that customers, once they realised what they can do. They are happy. But you’re absolutely right. You know, it’s conveniently enough in Visual Studio, you can publish to Azure very easily right? With us, once you download the AR extension, you can do the same, and especially really well with the new .NET deployment tool that norm and his team’s work on. But it is that barrier of just one it’s awareness that, you know, hey, we’ve got a great set of tools. And norm didn’t mention, but yeah, we norm correct me if I’m wrong, I think the .NET SDK goes back to 2008. So it preceded all the other cloud providers even opening. So that’s how long, AWS has been doing. .NET and supporting dotnet. So it’s like we know it, our team’s excited. There’s very passionate people, you should see our internal Slack channels, talking about .NET. And, you know, we sometimes have little quizzes that, you know, test to see how efficiently how many, how few characters, you can do something and and all kinds of things. And it’s like, people just pile I just I’m sure it’s like in other shops too. But it’s, you know, there internally, we do have a lot of passion around .NET from our teams, including norm steam.

Norm

And interesting the interesting trivia point there is yeah, the age of the .NET SDK also is unknown. Yeah, it is the first actual ATBS SDK. So people don’t really like the first SDK that actually the eight of us came up with, like, I think we qualified as the first unified SDK. Because if you remember the early aughts, right, there was you know, it was a different world back then, right? And then eventually, you know, we decided that at best, it’s like, we should just have here’s like, a whole, this is the SDK for this language. And .NET was the first one to do that. So it’s, people get surprised when they find out that .NET was our first SDK, which has changed a lot. And again, that’s been one of my, you know, I was originally hired, that was my job to work on this ticket, which is still, that’s my day job is to make sure that that the you know, that that keeps going, you know, and I started, you know, at best was about 15 or so services back then. So quite a bit different than we are today. Yeah. And we, you know, I came in and I think the SDK was launched in November 2008. And I think I started, you know, four months later, and then they said, you get to take care of it. But yeah, we used to release new versions of the SDK, like maybe once a month or so when SDK, you know, there’s some service came in, but the explosion is just kind of hard for me to fathom, even now of like, you know, now I just double checked before we talked today. And so the SDK now supports 299 services. So so probably by the time this airs will cross the 300. Cross. So, and that’s just kind of crazy to me of like, you know, we used to be this one little DLL, it was all fine. And then, you know, eventually we, I think, in the, yeah, we’re on the v3 of our SDK right now, version three, and so like v2 was still like a single DLL, but it got to this point where it’s like, well, this is an eight Meg DLL, everyone’s dragging in just to access one service. And that was like six years ago, imagine what it would have been like, now. So you know, just like the v3 was like, Hey, let’s break this up into separate sir resist, so it can be more manageable of that just dealing. And then yeah, the definitely is an interesting challenge for my group to make keep up. Because, you know, we as the org, so you know, my org, you know, I, you know, I work with all the other SDKs, too, right so that all the other languages, so you can imagine a bunch of devs, all passionate about their own language, how heated conversations we have whose language is best. But yeah, we have to make make sure that we are not the bottleneck for at Best Innovation, right? So AWS is innovating, as we all see how fast they’re throwing things out. And no one’s gonna say, well, we innovate, but the SDK hasn’t gotten up yet. Right? So we have to keep up with that. And if you have 300 services, and every service has a couple lunches a day or a year, that basically means every single day, something is coming out. So you know, like I said, like we used to release once a month or so now it’s every single, we get the weekends off, but basically every other that every day, we were releasing new new versions of the SDK just to keep up with things.

Josh

Aren’t you at something maybe mistaken? Over 500 New get packages out there now, instead of having that single? The SDK

Norm

is 300. And then yeah, there, we have lots of other things. And then you have the CDK itself has separate packages. And yeah, we give a new get a pounding on this. We push out stuff all the time. We stress that system out. So

Jamie

So then, sorry,

Josh

go ahead. Oh, no, no, I was just going to add, you know, I think that alludes to the fact that you know, you know, when you’re developing for .NET, on AWS, it’s, it’s the common things. It’s not an AWS specific, quirky thing. You know, there’s some vendors out there that you have to get into their mindset of saying, Okay, well, this is how they do it, which is odd from normal development. What I like about the SDK, team, and I’m, I’ve been here about three years. So I think I was at service at six was the count when I started a little newer than norm. But I was always impressed by you know, they’re following the standards that we’re used to as developers, and new get being one of them. And I liked the parsing out and only need, you know, keep the, your deployment package as small as possible. And that’s one of the strategies you know, only only get what you need, call what you need, rather reference what you need through that.


Episode 100 Announcement

Hello everyone,

I am very sorry to interrupt this episode of the show, but I wanted to ask a favour of you all. As you will have known by looking at the podcatcher that you’re listening to this on, episode 100 of the show is coming up really quickly and I’m having an AMA (or an “ask me anything”) to celebrate. To collect questions, I’ve set up an ama page on the website over at dotnetcore.show/2022-ama. If you have any questions on .NET (and any of the related technologies), podcasting, or literally anything else then do head over to dotnetcore.show/2022-ama.

I’d love to add your question to the episode, but the only way to make sure that it’s added is for you to submit it in time. We do have a cut off point and that’s June 1st, 2022. So get your questions in quickly. and I’ll make sure to put a link into the podcatcher you’re listening to this on, so you don’t have to make any notes or anything. Just press through on the podcatcher and type up your question.

Anyway, back to the episode.


Jamie

So just to set a little bit of cash, because you mentioned there about .NET on AWS. The SDK goes all the way back to 2008. Right, so that predates .NET Five obviously predates .NET. Core, obviously, it goes all the way back to

Norm

dotnet. framework 2.0 When I started, that’s it. I quickly got that one. Yeah, it was a little too painful for me.

Jamie

Oh, my goodness, this is another another little sidebar. I wonder whether if you could pull that version of the code. Could you run that today?

Norm

Oh, yeah, you can. I mean, it’s out on nougat. I mean, that’s the great thing that I have nougat and I have had, I’ve been on customer calls, it’s, uh, yeah, I downloaded the one Oh, version of the SDK. I don’t think the one Oh, version is not because we want to the 100 that predates Nougat, we were like, one of the first people that actually got onto Nougat, like, I remember getting a GitHub issue that said, Hey, there’s this new good thing, you guys should try it out. And like, I had to email the nougat team to get access to publish there. But yeah, those packages are still there. And, you know, one of the things I’ve always strived for this to get, in my view, done and developers, I mean, we all love new hotness. I mean, no one’s gonna deny that. But we also don’t like to just change for the sake of change and break my code. Right? We love the fact that, you know, like, like we talked before, like, all those applications that we wrote, you know, 15 years ago, there’s a good chance they still work, right? So for the most part, you know, even like, we’re on re v3 of the SDK, the coding pattern hasn’t changed a lot. Because I wanted, I’ve always wanted to make it easy to upgrade between versions, we fix a lot of the things under the covers. But we like to keep that and so yeah, I’ve had customer calls to say yeah, I downloaded the one a version from nougat that one, it works. You know, there’s some feature missing, because obviously, it’s 10 years old, and I’m like, You really need to upgrade. I mean, to be clear, one Oh, and two o are not supported. But they are available. So I would not recommend anyone doing but yeah, the code ways and Ella that still works. And because in you know, that’s not just the SDK, that’s also AWS of, you know, we, you know, there’s a high bar of keeping things up and running, like even, you know, we might, you know, to remove our API’s or change API’s, you know, one of my other many jobs is running the API bar raiser programme inside ADB as for the services and you know, I calling out like, No, you can’t make this breaking change. We don’t do this and it’d be So this is why we, you know, we keep it so you applications keep working

Jamie

like that, I guess like you were saying earlier on about one of the first sort of cloud services to offer .NET hosting, and you have the AWS .NET library and the SDK and things like that. So if I’m listening in, and I’m working for a really large enterprise, and we’re still in dotnet, 3.5 4.1, whatever, I don’t have to then immediately go, everyone, we have to upgrade or rewrite to modern .NET. So we can also know AWS read, I should be able to take my application, maybe do some jiggery pokery to make sure I’m not doing anything that requires filesystem access of my machine and, you know, find a way to host that on AWS. Right, you’re not saying that I have to be on the latest and greatest to host on AWS.

Norm

Yeah, we’ve always tried to keep a very large support matrix, you know, because, you know, obviously, it we’re supporting .NET, Six, the latest. We’re very excited and anxious for .NET. Seven as well, I you know that I think the preview is going to come up for that soon. But yeah, we still support Wait, I’ve done a framework, we go all the way back right now to dotnet. Framework three, five, so you can still do those in the SDK. So, you know, we try really hard to make sure we don’t leave customers behind on that. Because yeah, we done that’s been around a long time, and no one wants to rewrite that application that’s making the money.

Jamie

All right. Absolutely. Absolutely. And you know, like I said earlier on it working code is infinitely more has infinitely more worth than any code I’ve got in my head right. Now, and you never know, like, the person who wrote the original application may have moved on to greater things and taking that knowledge with them, right. And so part of that knowledge will not be around. And so rewriting an application may actually be a lot more difficult than you initially thought. And so being able to just lift and shift as is, is probably the better option. Until you can have that deep discussion of do we really, like is um, so just to sidetrack a little bit. I remember one of the places that I used to work. When .NET Core two came out, they were like, right, from now on, everything is a .NET core two. And at that point, I’d already been writing about .NET core for a year and a half. And I was starting to think about doing the podcast, and I said, Okay, so I’ve got a question, why? And you know, not in an interrogative way, just like, why are we moving to .NET? Core? Is it easy, because if it is just like to put on the website and say we use the latest and greatest, that’s fine. But also there are some pitfalls. And you know, migrating things is a trivial is a very, it’s not a trivial task. And so it just yeah, I, whenever someone says to me, when migrating to the latest version, I immediately pump your brakes.

Josh

No, I remember I remember when core I was excited, like everyone else. In 2016, when it wasn’t going to be .NET. Five it was they’re like, Nope, we’re doing it all. And we’re going to we don’t have to deal with all this legacy stuff. We’re going to have something really performant that and so forth. got excited. But I remember going through the decision process, and it sounds like you had to do it as well, where, you know, in my case, I had my own business, I was trying to sell these applications to customers. I was like, well, there’s a sexy new version of .NET that’s coming out completely rebuilt. And one oh, it just Yeah, as exciting as it was was, you know, pretty limited in feature set compared to framework. And it really wasn’t until 2.1, that I was actually building production apps that I that when we went through the decision process, upfront that we said, yes, it actually makes more sense for us to now target to one opposed to using framework. So yeah, and it’s just that, you know, businesses aren’t just that they don’t get as excited as the rest of us that are you know, they’re geeking out on the tech. It’s like, Oh, don’t you know, it’s 10 times faster. But no, it’s, you know, they Yeah, it’s like, no, the average person in a business case I have a decision maker is going to have to evaluate a whole set of things. But yeah, it was too one for at least for me when I was like that. That was the magic point where I was like, Okay, I think this is really has legs and has the feature set. And I can tell it,

Norm

I think even for AWS that that’s true, too. I mean, we definitely jumped in and you know, as soon as the .NET Core came announced, I was super excited. Because I will admit I was having, you know, clear doubts of like, should I be focusing on .NET because I don’t know if done it’s got a future in the world of cloud and stuck on Windows. You know, and then when .NET Core Kinya was announced, I was super excited and And we were, we were pushing hard. And I remember when we went done a core one came out and we push to have lambda support. Right. So that was certainly our serverless support, supporting .NET. Core one Oh, which was really exciting for us. Because, you know, when lambda first came out, and we were like, Oh, we’re gonna get left behind, because it’s Windows, and that’s never gonna really be a great thing there. And then we knew well, we have a future now, as done developers, but I will say that one Oh, experience was pretty rough. You know, the project json and all those fun things back then. And you know, I think in a lot of ways are the .NET. Core one Oh, lambda. It worked for, for quite a few people. But it was also like, yeah, come back to me when when you get to the next version? Right. And I think it was the two, one version of lambda that really made it so Oh, now I see that this is actually like the tooling is now firmed up. The platform is solid. And I think that’s when we started hitting our stride there with with lambda and .NET. Core is the two one launch.

Jamie

Yeah, I feel like that’s like par for the course with almost any new technology, right? Regardless of whether you’re the technology vendor, or like a holster, or a tool builder. Version one is always painful. You know, there’s a reason why, you know, people say I don’t work, I always wait for version two, because all of the people that are that are the early adopters. There’s the word about the word evangelist, but like the early adopters, the advocates of the early, early version of like, Oh, my goodness, this is awesome. I can’t do anything with it. But it’s amazing. Those folks then have all of the problems that that need to be solved to get to version two, right? Because whoever it is that’s making if it’s Microsoft, if it’s Amazon, if it’s, you know, the mom and pop shop down the street, whoever is making version one, they can, it’s all about that domain knowledge, right? I can see, it’s almost like we’ve got the blinkers that our horse will have when they’re in a horse race, I can see the path in front of me, and I can see where I’m going. But what I don’t don’t understand because I don’t understand the users of this thing. Because I’m not dogfooding it yet. I can’t see the corner cases, the edge cases where you know, when .NET Core one Oh, first came out immediately the question on other people’s tongues was, but where’s the GUI? Where’s the GUI. And what a lot of people didn’t realise at the time is the cross platform UI is so difficult to the point where it’s taken until 2022. For Microsoft’s to be able to say, hey, we’ve got a cross platform, UI application framework ish. And if you want to do it, he’ll work everywhere except radix. And you can carry on. But then But then that, you know, I said that jokingly, but like Linux as a desktop is hard to programme for because I mean, I’m using to talk to you chaps. Now I’m using a Linux desktop. And I has a complete that uses cosmic, which is a desktop environment created by system 76. But it’s based on Ubuntu. and Ubuntu has uses Genau. Ubuntu is based on Debian. And that uses, you know, you can have kinome, you can use XFCE, you can use, there’s a whole bunch of acronyms that maybe don’t mean a lot to the majority of Windows developers. But the point I’m getting at is that on Windows or on the or indeed on Mac, you’ve got Explorer, or finder, there’s one way to draw a window, you want a window, we will draw it this way. And it will look like this, because this is the operating system paradigm. But on many of the Lennox’s there are upwards of 10s of different desktop environments, all with their own sort of paradigms and designs and design language. And so that chunk is so hard to do. And so for a lot of people who jumped on the 1.0 bandwagon, they were like, well, but I want to build desktop apps. Well, that’s not happening, right? Because we’ve only just come up with this thing, right? In fact, I believe in the early days, it was still using, like some some note technologies in the background just to do as a as a, because I believe cash flow users. Was it was it?

Norm

Oh, libuv.

Jamie

Yeah. Yeah. So they wasn’t even using all Microsoft technology. But that’s fine, because open source is a thing. And that’s what you do. And it was only in the 2.0 space when they actually said yeah, you can you don’t have to put anything in front of your app now because Kestrel is more battle tested. Whereas a V one it was like okay, you can use it, but put it behind ng engine X product by behind is is put it behind something because we can’t guarantee that it will stay stable because it’s an early version, because it’s version one right? And I feel like that happens with everything right? Version one of a new line of cars version one of microphones version one of video games consoles. One of my one of my one of my hobbies is video games. Right. And I love to do that. I love to play video games with the kids to play video games with my brother. But we all know everyone across the world knows never buy a video game console at launch, because it will have a terrible launch. Right? And that’s not to do with who makes the console. That’s just because there’s so much stuff going on V one of the software isn’t going to be great. And V one of anything is not great. That’s the point. I’m trying to get it right. And so if you if you guys were trying to host V one, all I can say is thank you ever so much for putting the effort in because I can’t even imagine like, because like V 1.0 to 1.1. Like in that minor change. They ditched project json, which I would say is a pretty big change.

Norm

Oh, yeah. caused a lot of headache for the tooling experience of GAC because everything was geared towards 1.1 Now, and is like, No, we have to make you some do lots of weird settings to force it to be the go into one out work and lambda. So I was super excited to get us off of the one Oh, platform.

Jamie

So So what are the things that are going on? Because like I like I said earlier on, I know the other cloud provider, right? I don’t know so much AWS. In fact, what I have done on AWS is I do some of the transcriptions for the podcast with AWS. But that’s not a .NET thing, right? That’s just like, here’s some, here’s some audio, give me some JSON, and I’ll work on that. And that’s pretty cool. But what are the things that are cooking in .NET, land and AWS?

Norm

Well, I think the big thing everyone is very antsy with exam back to if we go back to lambda, everyone is very curious about .NET, Six and lambda support, which we’re working very hard on. Again, hopefully, by the time this goes goes live, that will be out there. We’ll see. I’m not sure exactly when we’re airing. So that’s why I’m going to be cautious on whatever we’re saying there. And I’m pretty excited about this one because like, this will be our fifth lambda .NET runtime, we did 102021331. And now this be five. So this BF are sick. Yeah. For the most part, all the other ones were sort of just like, let’s, you know, taking the latest Microsoft bits, that’s for the most part what it was, well update the duelling bits. And I feel like we’ve done at six in, we’ve been doing most of all the work out there on GitHub. So that’s, you know, most all this is in the open source. And we’re chained to change things up a bit. And they’re making new features for it’s done, it’s accepted a lot of things for us, right. So we’ve got no done or C# at a top level statements and minimal API’s for a spinet course. So we wanted to make sure that you could actually write your lambda functions taking advantage of those, which is very different than we were used to be. And that’s something that, you know, I don’t know, if all your listeners know that, like, you can actually take your ASP. NET core applications, and host those as a lambda function in there. So And traditionally was using the whole programme and startup and we’d swap out basically, we’d swap out Kestrel with our own implementation. But now Yeah, we did some interesting work, I think to to make it so it works for, you know, when I’m just using that minimal API, so you can write a spinet core in a single file and have a bunch of routes mapped out there, and they can all be deployed to lambda. And you get all the benefits of scaling and pricing for that point of view. And another thing I’m really excited about, that we’ve got going on is we’re actually coming up with a new lamda framework to write your applications with. So the normal programming model with lambda is essentially you get an event, you know, it’s a, it’s a JSON objects that you serialise into a poco, right, that’s the basic programming model go, then you go do the rest, right. And then, you know, in a spinet core world, we basically take that event, and we turn it into an A spinet core request and send it through the smoke request, like that’s how that works at a super high level. So, you know, we kind of have these two different ways you can look at it super low level of here’s your event, you go do everything for you, or you have a spinet core. So we you know, they’ve got a high framework there. And that but we wanted something sort of in the middle for people that maybe want something more lightweight, but maybe not as low level as you know, I gotta do all the plumbing there. So our new framework, it’s a nougat package we have out there, it’s in preview, mostly because we’re it’s going to be targeting .NET Six. It’s called Amazon lambda annotations. Basically, it’s going to use source generators. That’s the new feature that we had come out, I think, well, it came on five, but I think it really came into fruition in .NET Six, where base similarly, we can now write your code in a much more like idiomatic, like, you know, almost like an ascender controller, right? Like this comes from the headers. And this comes from the routes and all, you know, much more idiomatic way. And then with the source generator added to that, we will basically at compile time rate that generate that translation layer of going from that single object event that we came in from lambda and convert it into my much more idiomatic experience. And this is going to then also make an easy way to integrate like, the whole dependency injection, I can have my own, you know, we’re bringing startup class back, where you can have a startup class that defines your dependency injection that will allow you to get and say, these are all of the services I want, and which has been like, sort of a challenge in the current lending programme model, people have been like, kind of homebrewing their own mechanism, but now we’re just gonna make it sort of seamless with the source generator. But of course, it’s still have the same sort of programming model under the covers.

And the nice thing about this with it, I’m excited about because it makes my life easier. And that’s always what I like, because anytime you come with a new framework, now, it’s like, how many tools? Do we have to update to support this? Right? Everyone’s got to know about this new framework and do it. But with a source generator, right, you are just integrating with the compiler. So anything that worked with just .NET assemblies just automatically works. So yeah, we have, we have a lot of .NET deployment tooling already out there. With Visual Studio and CLI. There’s also the SAM CLI tooling out there, and customers that make their own sort of deployment. But all of those ultimately have to use the Delta compiler, right? So the .NET compiler is going to kick in the source generator, and they get all this functionality that we’re going to add, as well. So So that’s gonna be pretty nice. I feel like with our .NET, Six launch, we’re gonna really sort of change the way you I mean, obviously, you be able to easily migrate because the underlying proxy model hasn’t changed. Migration should be just changing target frameworks and things like that. But we’re gonna give you a lot more interesting ways to write your lambda function, I think, when would you get that out there. So I’m very excited for when that comes out.

Jamie

See, I really liked that about, that’s one of the great things I really like about open source is that a seemingly tiny change over here in something that may not be as you may not think is as consequential. Everyone gets the benefit of it, right? I remember, I think it was last year, I was talking to one of the developers of Regenexx, which is a Nintendo Switch emulator written in .NET. Now, we didn’t talk about the grey area of you know, we’re not talking about piracy, we’re talking about emulating an entire system on your computer, using .NET, which, when .NET first came out, it was like, this will never be used for performance. God, I remember at university, I was overweight. And at university, he was saying you will you will never do anything that requires performance in dotnet, you will do it in something else, and call it from dotnet. Right? And then I’m talking to this chap from the Regenexx. Team. And he’s like, Yeah, so what we did was we we submitted a bunch of pull requests to the dotnet. runtime, which made our code faster, but then that has the benefit of making everyone else’s code faster. And you know, the things that you’re talking about, they’re normal, but will if we just hook into the source generators in the compiler, that makes our job so much easier. You know, and, and as a consumer of hosting platforms, if I can hook into the API’s that are provided by yourselves by any of the others, makes my job easier, right? So this inconsequential, tiny thing that happens over here and like the framework, right? Or I’m worried about saying framework, because people might think framework with a capital F read. But I’d like to see this tiny change here, that looks like a tiny change from where I’m sitting. But it’s huge for the people who are writing it, then bubbles up through everyone else until it gets to me. And actually, it’s a huge change, right? Because like, one of the things that I was going to ask you while you’re on norm is that if I want to do a dot a modern .NET, so .NET, Core .NET, Five, .NET, Six, lambda, right? I can’t just give you an ASP .NET project, right? Because there’s way too much going on there. That’s way too heavy. And you sort of answered my question by saying, Yeah, well, we can give you these, these attributes. And we can make it easier for you. Because I know that with the Microsoft hosting platform to do with their version of lambda, you have to write your application in a very specific way. They actually give you a template to follow and you have to do these jump through these hoops to make it work in that way. And my thought was, well, maybe we have to do the same for AWS lambda. But you said yourself there’s this new new set of attributes that are coming that are in app At the moment, that you could just write maybe one or two files through these attributes and and guess what, you got yourself a lambda. And it’s running on sort of on ASP .NET. Core, right. And that makes it easier for me because I understand that paradigm, I understand ASP .NET Core. At the moment, I don’t understand lambda for dotnet. But I will after have used these attributes, right, I’ll get a better understanding, I could just push a button, I can run the CLI tool we talked about earlier on, and it’s gonna go yep, you want to host it over here, I could do that for you now. Or I can give you the tools to, you know, the code or whatever the, the Yamo files or whatever, you need to be able to do that in your tool chain. And guess what, I’ve gone from no code to some code to it’s on a server somewhere, or rather, is not on a server somewhere, it’s running serverless. Man, we

Josh

don’t don’t give that away, nor don’t on the servers involved.

Norm

Just floating around in the cloud ready to be run.

Jamie

It’s a femoral. But that’s what I like, right? Um, like I said earlier on my thing this year is reduced talking about the reduction of barrier to entry. And it also makes me more productive. If I can just type a single line command line into my terminal. And it goes, yep, do in fact, hit enter now, and we’ll do it for you. Perhaps, I’m not saying that your tools do this, but hit enter. Now we’ll do it for you. Right. There was

Norm

one of the girls like, we went, if you want to, can you just push enter a couple times and get deployed? Right? Like, yeah, let’s, you know, like, don’t over, you know, I think that was, so when I made the original wizards inside the Visual Studio Toolkit, right? And I was like, well, there’s all these amazing options. And at best, let’s make sure we expose every one of them to the user. Right? Because they’re cool. And they are cool, right? But when you’re coming new, new and you’re just like, I don’t know what, you know, I don’t know the ATBS vocabulary yet. Right? So it’s challenging, right? So that was sort of one of our design goals, with our new tooling is like, yeah, I can just actually right click, say, Yep, go push Publish button. And I can deploy and you know, two clicks, right? To make it so that it’s not, you know, trying to speak the language that people know. But of course, once you know things, right, you want to do all those tweaks. So that’s the balance, we always play. And we always want to make sure that like, you have all the breadth of databases power at your fingertips. But it doesn’t need to be right in your face, when you’re just trying to figure out where to get started that I think that’s the biggest design change. I think from the the old ways we used to make the wizards inside Visual Studio to this new experience of like, let’s focus on first getting in your face what you need to know. And then you can get into deeper when you know more about which one do.

Josh

Exactly, always make sure there’s an advanced button. But yeah, the default experience. Yeah. Because I think there’s that gratification of you know, you’re brand new, you want that hello world experience in in in the cloud. That means I want to see my Hello World up in my browser hosted in that Magic Mouse serverless space there is lambda. But yeah, but ultimately north, right? I mean, then you’re like, Okay, let’s get serious. Let me do something real. Let me attach a database. Let me call another API. And then then it’s like, yeah, you want to quickly be able to dive in? Do it. So yeah, so get it out, get the Hello World, but then dive deeper under the Advanced Options.

Jamie

Yeah, I often say that in a work context, when working for, I always say working for clients, right? Even if you work inside of a company, the person who makes the decisions on that project is your client, if it’s the PM, if it’s the lead Dev, they are your client, right, that’s the relationship that I have in my head, and that for some people, that’s, well, that’s a bit too clinical or something or separated. But that’s the way I think about it, whoever it is that you’re building the software for, they don’t care how you did it, they don’t care really how you deployed it, they don’t care that you right click Publish to AWS, they don’t care that you build a huge pipeline that has a million checks and gated check ins and tests every single step. They don’t care about any of that they care that they’ve paid you a bunch of money, so that then they can go to a public URL, or perhaps a private one behind a VPN or a VBS, or something. Or any kind of other situation, they can go to a URL, and something happens and it makes them money. That’s all they care about. And so I am all for when it is applicable, right click Publish done, because it’s about getting it to that person getting into it, because until you get the code in the hands of the person who’s going to use it. It’s not doing anything. It’s just sitting there being really shiny and lovely inside your your IDE, but it’s not making that person any money so they are going to be less likely to continue paying you money. So if you’d like receiving money, the goal is getting to them as fast as possible. And like I say, if if, you know, we joke about you shouldn’t be, you know, I’ll rather the accepted practices, not the right click and publish, but right click Publish exists for a reason, right? And if it solves that problem of getting into the customers hands, then let’s do that. Right, you can then build a CI CD pipeline around it later on when you understand what’s going where, but for that initial here is the extremely early 0.000001, beta version. They even publish.

Josh

And you’re saying exactly what I say what I’m talking about these, these tools within Visual Studio, it’s like you have all these options here. It’s great to get that initial feedback, proof of concept testing and development cycles. It’s perfect for that. Yeah. You don’t want to have to spin up and code up your whole CI CD pipeline just for you to go test something. No, but you want to actually validate that, okay, this thing is actually going to work in on this platform. But yeah, but once you know, you’re gonna go production worthy. It’s like, okay, that’s, that’s when I always say, you know, the quickest way to get fired is, you know, right, click publish on a production app, and not ever, you know, say, Oh, well, I’ll get to it eventually. Because it’ll be that time where something critical needs to go and your machines down. Or your or maybe you’re the manager of the person, right clicking. Like, oh, Joe just left for a better job. How can we can’t get this out to production? No one can log into Joe’s laptop. That’s how we published before. Great, yeah. Why don’t you go join Joe?

Jamie

Yeah, that’s a difficult position to be in for sure. Yeah, there’s a there’s a story. I have a story from my own personal past that revolves around a right click publish, as the only way to deploy. It’s not for the show is what else a lot of words that I can’t say on the podcast that were involved in. Oh, my goodness. Okay. So, chaps, where’s the best place to go and learn about both yourselves? And all of these tools we’ve discussed today? I mean, I know that. So inside of baseball, we’ve we’ve got some documentation flying backwards and forwards, I’ve got loads of links. But for for the people who maybe want to catch up with yourselves or maybe want to get an idea of, hey, I totally didn’t know that AWS supports.net Where do I go to start my journey in that?

Josh

Well, if you want to stay up to date on the latest announcements, multiple times a day on Twitter, our .NET handle on Twitter is the best place to go. But our main page is aws.com/ .NET, you can get there and it will get you to basically if it if it deals with .NET on AWS it will be off that. But but it will also I think your published with the show notes there. Things like the microservices extractor that we talked about things like that. And we also have links to SDK and the tool Nora was talking about there. So there’s specific one thing I will plug in there, there is a great workshop that we released about a month ago if you are interested in the AWS micro service extractor for .NET. And I know that is a mouthful, trying to say and they won’t allow me to create an acronym that I really do want to force. But the there’s a workshop will have the link, there’s a bitly link for because that also is a long URL, but it’s fantastic that gets you through it. The one tip I will give on that is in the porting assisting this the same way. There the UI initially, you’ll probably when you use it, you’ll say this seems a little different than what I’m used to. It’s because it’s modelled after the AWS console. So if you’re used, if you’re an AWS customer, you’re like, Oh, this is very intuitive. And that’s that was the whole goal there. But because all of us are .NET. And some of us might not know AWS, that or .NET, I just will say you know, the because it requires an account. It doesn’t require that you host on AWS, what you create from these tools for the extractor and so forth, but go through, create your account, if you play around a little bit, you’ll get the feel of our UI, then once you’re in the tool, it’ll actually seem natural to you, that that’d be my tip for if you’re not used to AWS for those tools.

Jamie

Okay, what about keeping up with yourselves then what’s the best place to go for learning those things? Like let’s say, let’s say I’m listening to this, and I’m thinking, Josh and Norm sound awesome. I want to find out everything they’re working on, because they’re great, right? I want to hear about gnome stools. I want to hear about the talks that Josh has given so then I keep it abreast of what’s happening. How do I do that?

Norm

I tried to stay myself pretty active on Twitter. I use it that’s mostly my tech outlet. So my handle there is socket norm. I don’t know why I chose that. I think it was a homework assignment like in college and like just Kept, like, if basically, if you find a socket norm playing Diablo or whatever other video game, it’s probably me because no one else has ever picked that name. It’s like once you find a unique thing, you just go with it right? So yeah, that’s where I do most of my sort of outlet there. And I do love when people reach out to me, they’re talking to me ask me questions, you know, I, you know, it’s great to interacting with people. That’s the fun part about this job is there’s a lot of people doing some cool stuff and seeing what they’re doing and asking, it’s all fun. So

Josh

and I’m on Twitter as well. Hurley in cloud might handle not as exciting a socket.

Jamie

Excellent. Well, what I want to say chaps is thank you very much for spending some time with us this afternoon. I know, I even like if we take the AWS stuff to one side, I’ve learned a whole bunch of stuff today as well, just about like, like, the fact that you guys were the first sort of external company, one of the first external companies to use starting to use new get and one of the first sort of like, cloud hosts to support it and stuff like that. So that’s all really cool. But then obviously, I’m looking forward to showing off the AWS micro service extracted for .NET Some of the people I know that is still own framework, and there’s nothing wrong with being on framework, but to show them hey, look, you can split everything out and there’s this tool that shows you how to do it. And if you want to go down that route you can or you could just keep on innovating in framework that’s totally fine. Because I think that’s that’s something that a lot of people don’t get is that like when a new technology when a new way of doing something comes out they’re always like but but I don’t want to do the new thing we you don’t have to you can stay where you are if you want that’s not a problem. There’s nothing wrong with that. But you may get some benefits from from doing things a different way. Right. But yeah, like I say, thank you ever so much chaps for spending part of your I guess afternoon by this point. With me and

Norm

still morning. It’s still way

Jamie

early today. Time Zones are so difficult.

Josh

I really appreciate JB I love talking to you. And it was very enjoyable. Thank you so much for having us. Yeah, thanks. It was a lot of fun.

Jamie

No worries. Thank you so much.

The above is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Wrapping Up

That was my interview with Josh Hurley and Norm Johanson. Be sure to check out the show notes for a bunch of links to some of the stuff that we covered, and full transcription of the interview. The show notes, as always, can be found at dotnetcore.show, and there will be a link directly to them in your podcatcher.

And don’t forget to spread the word, leave a rating or review on your podcatcher of choice - head over to dotnetcore.show/subscribe for ways to do that - reach out via out contact page, and to come back next time for more .NET goodness.

I will see you again real soon. See you later folks.

Follow the show

You can find the show on any of these places