S07E20 - .NET Aspire: How Maddy Montaquila and the .NET Team Are Revolutionizing Development
Sponsors
Support for this episode of The Modern .NET Show comes from the following sponsors. Please take a moment to learn more about their products and services:
- RJJ Software’s Software Development Services, whether your company is looking to elevate its UK operations or reshape its US strategy, we can provide tailored solutions that exceed expectations.
Please also see the full sponsor message(s) in the episode transcription for more details of their products and services, and offers exclusive to listeners of The Modern .NET Show.
Thank you to the sponsors for supporting the show.
Embedded Player

The Modern .NET Show
S07E20 - .NET Aspire: How Maddy Montaquila and the .NET Team Are Revolutionizing Development
Supporting The Show
If this episode was interesting or useful to you, please consider supporting the show with one of the above options.
Episode Summary
In this episode, we dive deep into the innovative features of .NET Aspire, with Maddy Montaquila from Microsoft, who shares insights about this groundbreaking tool for developers. As someone who transitioned to this new technology from a background at Xamarin and .NET MAUI, Maddy brings a fresh perspective on how .NET Aspire aims to streamline the development process and improve overall productivity.
Maddy elaborates on the essence of Aspire, describing it as a robust set of tools, templates, and packages designed for building modern, observable, and distributed applications. She explains how Aspire simplifies the development journey by enabling developers to launch projects with minimal configuration. The community often views this technology as the key to accelerated development, treating complex integrations—such as OpenTelemetry and container orchestration—as a seamless part of the development experience, rather than daunting tasks.
The conversation touches on the ecosystem of .NET, noting how Aspire can be beneficial not just for .NET applications but also for polyglot shops that utilise various technologies, such as JavaScript, Python, and more. Maddy points out the importance of making it accessible for developers who are reluctant to try new tools, highlighting that Aspire caters to a broad audience, regardless of their primary technology stack. By enabling quick setups and deployment options across different platforms including Azure and AWS. Aspire effectively reduces the barriers to entry for developers looking to modernize their applications.
Maddy also addresses the nuances of vendor lock-in and deployment flexibility, reassuring developers that Aspire’s tools are designed to be versatile for various cloud environments, making it a worthy asset for any team regardless of their existing infrastructure. The episode concludes with Maddy inviting listeners to engage with her and the Aspire project team, highlighting ongoing updates and encouraging developers to share their success stories and challenges.
Overall, the conversation illuminates how .NET Aspire is poised to transform the developer landscape, making the journey from concept to production smoother and more efficient than ever before.
Episode Transcription
If your app has a backend, it’s Aspire-able. And so it’s tools, templates, and packages for really any type of app… So just being able to walk up to a repo, clone it, and hit F5. When was the last time we were able to do that? Like, ten years ago, maybe?
Welcome friends to The Modern .NET Show; the premier .NET podcast, focusing entirely on the knowledge, tools, and frameworks that all .NET developers should have in their toolbox. We are the go-to podcast for .NET developers worldwide, and I am your host: Jamie “GaProgMan” Taylor.
In this episode, we talk with Maddy Montaquila about .NET Aspire, what it is, how it’s not just for .NET developers, and how it can help you to run a repo by simply hitting F5, regardless of what’s in there.
To me, it really is just a dev tool in a bunch of different ways. It makes you just hit F5 again, no matter how many containers, or local, or deployed services you have to deal with, or projects, or languages, or if you’re in VS, or VS Code, or on a Mac, or on a command line, or on a Linux machine. Like Aspire just makes all that magical without replatforming
Along the way, we also talk about the importance of reducing the complexity of going from, “I have an idea,” to, “my app is running in the cloud.” And Maddy drops a wonderful metaphor for .NET Aspire using a Logo-based metaphor. And we address the community invented elephant in the room: that .NET Aspire, somehow, locks you into using one vendor.
Spoiler alert: it can deploy to any cloud vendor, and even to on-prem servers.
Anyway, without further ado, let’s sit back, open up a terminal, type in dotnet new podcast
and we’ll dive into the core of Modern .NET.
Jamie : [0:00] So, Maddy, welcome back to the show. It’s not been that long since we talked, but it’s a new technology we’re going to talk about, or at least a new technology to me. I don’t get a chance to play with what we’re about to talk about. So, I am literally coming at this with the wide-eyed, “wow, this is awesome!” But first of all, welcome back to the show.
Maddy : [0:18] Thank you. I’m so excited. It’s funny because it really wasn’t that long ago I was here, but it feels like an eternity ago. Like, it feels like it could have been a decade. So, so much has happened. But, yeah, we are working on some fun stuff.
Jamie : [0:33] Real quick, for some of the folks who maybe haven’t heard the previous episode, could you give the folks just a quick 411 or whatever it is, 101 or whatever it is, intro to Maddy?
Maddy : [0:42] Yeah. Oh, my gosh. I’m Maddy. Hi. No. I’m Maddy Montaquila. I am on the .NET team at Microsoft. I started at Xamarin and then, well, I started at Xamarin at Microsoft. So, right after they got acquired. And then I was part of the whole journey from Xamarin into .NET MAUI and that evolution. And then about a year ago now, I abandoned my first child and the love of my life and came over to help .NET Aspire get its–I’m not going to swear this early in the podcast–get itself together a little bit, especially in terms of just like, you know, launching and messaging. And we had just gone through all this with MAUI and they were like, “we need some, we need an adult in the room.” And for some reason I’m the adult. So I don’t know how that happened, but, uh, yeah.
Jamie
:
[1:31] We’re doomed!
Music:
[1:33] Yep. Yep. But here we are. So a year into Aspire.
Jamie : [1:39] For me, Aspire feels like one of those things, kind of likeOpenAI a few years back. It just kind of appeared out of nowhere and has grown really quickly. Like I’m sitting here going, “wow.” I mean, I usually get to play with a lot of technologies in my own time and for work, but Apire has completely passed me by what is this magic?
Maddy : [2:00] Yeah, that has been the biggest thing we have with it: is people just don’t get it. And so they don’t want to try it because they think it’s going to take them a while to learn. And that’s fair. I mean, I don’t like to try new things. It’s difficult. That’s why I laboured for three months if I thought I was going to actually switch a team or not. I was like, “I’m going to have to learn. I know everything now. This is terrible.” Just kidding. Mostly kidding.
Maddy : [2:24] But yeah, it’s pretty cool. It’s a lot of things, depending on who you ask. Everyone has a different favorite part of Aspire. To me, it really is just a dev tool in a bunch of different ways. It makes you just hit F5 again, no matter how many containers, or local, or deployed services you have to deal with, or projects, or languages, or if you’re in VS, or VS Code, or on a Mac, or on a command line, or on a Linux machine. Like Aspire just makes all that magical without replatforming.
Maddy : [2:58] And then you ask the same thing to like, you know, some of my colleagues and they’ll be like, “oh, Aspire is built in like automagic Open Telemetry and the ability to actually see all of the data flowing in your system when you’re developing locally, instead of having to deploy it to see everything working together.” And then you ask like, you know, David Fowler’s latest project has been fixing deployment, and he says, “it’s the new platform for deploying apps.” And I say, “okay Fowler. Whatever you say.” But you know depending on the Time of day, and who, and when, and what we’re excited about, it really is a whole bunch of different things. So I do not blame you for not diving in headfirst it’s kind of a lot.
Maddy : [3:37] Yeah. So like I remember I was watching a demo of Aspire and I’m like, “cool. Oh Open Telemetry that is actually, genuinely , a non-trivial task to set up. The fact that it does that, that is awesome.” And then I was like, “but wait. It’s docker and kubernetes. And so is it that?” And then somebody went, “no, no, no, no, no. It is. But it’s all in .NET.” I’m like, w"hat!? This is crazy!"
Maddy : [4:04] Yeah and explaining to people: it’s not like a different app, or like a replatforming, or something that you’re going to get like stuck into or a vendor locked into. But that it is also like strongly typed, and it’s C#, and you can edit the code. It’s so hard to believe it without seeing it.
Jamie : [4:21] Which is going to be difficult to do because obviously this is an audio podcast.
Maddy : [4:26] Well, hopefully I’ve learned some skills in the past year. And so we’ll see what we’ll see how we do.
Jamie : [4:31] You can focus on that bit. I’m dreadful at describing things with audio. That’s why I started an audio podcast, right?
Maddy : [4:38] Perfect. That’s a great way to get better at something, right? Just do it.
Jamie : [4:42] Absolutely. Yeah, just do it. Just that’s the Nike thing, right? Just do it. That’s fine.
Jamie : [4:46] Yeah. Okay, so we’ve kind of danced around it a little bit, and you’ve said that it’s difficult to tie it down to something, but I’m going to ask you anyway, what is .NET Aspire? Or what is Aspire? Are we calling it .NET Aspire? Are we calling it Aspire? What are you all calling it?
Maddy : [5:01] So we’ll start with that. We’ll start with the name, which we have been .NET Aspire. That was the brand we were given. We kind of had to do some wrestling to say that we weren’t just like a feature of .NET or whatever. We wanted a brand name. What we’ve realized is this is actually very useful for people who aren’t just .NET. And this has come up a lot from folks in polyglot shops, which everybody’s polyglot now. Like, no company. I mean, there are some, like, true Java, .NET shops, whatever you want to call them. And, of course, startups are all JavaScript, or all Go, or whatever the flavor of the week is. But most companies have a mix, whether that’s, like, a team that builds their services in .NET, a team that builds their services in Java, frontends in JavaScript, server-side things in JavaScript, Python for inference scripts, blah, blah, blah.
Maddy : [5:48] So all this to say, we are in the process of un .NET-ifying the brand. So it’s still a .NET built tool in the way that Docker is built with Go, right? So Aspire is built with .NET, and it’s going to work the best for .NET and C# and all of that, because that’s, first of all, my favourite. So obviously, I’m going to pay more attention to it. But everybody else on the team, we’re all .NET people. But we are starting to just call it Aspire. Hopefully, we can get a domain one day. But, you know, we’ll see.
Maddy : [6:22] So yeah, Aspire. The marketing description that we settled on is it’s a set of tools, templates, and packages for building modern, observable, distributed, whatever kind of modifier for app you want to put in there that makes sense in the context that you’re talking about it in, right? But what that really means is an app that has, you know, more than one static website. It has a frontend and a backend. It has a container and a database or anything. And really, all apps are like that now. They started to do this thing where we really wanted to call it cloud native, but cloud native doesn’t mean anything. And so we started saying, like, “what even, who even thinks they are a cloud native developer?” And nobody thinks they’re a cloud native developer. I don’t know if you are. But to me, cloud native is, “if you run in the cloud, you’re cloud native.” Okay?
Maddy : [7:14] The CNCF and all of them are like, “yes, if you use Kubernetes, you’re cloud native.” I’m like, “cool, cool, cool, cool. I don’t care.” If your app has a backend, it’s aspirable. And so it’s tools, templates and packages for really any type of app that helps from development.
Maddy : [7:29] So just being able to walk up to a repo, clone it and hit F5. When’s the last time we were able to do that? Like 10 years ago, maybe? From that to turning on sane defaults. So wiring up the Open Telemetry, wiring up service discovery so you don’t have to handle that in environment variables, turning on logging, just good .NET practices that we’ve had in the box for a long time that we never turned on. And then it’s extensible. It’s totally plug and playable.
Maddy : [7:55] We like to use Lego as the analogy all the time because you can just kind of build your own integrations for whatever it is and plug that into Aspire, and let Aspire orchestrate it.
Maddy : [8:05] And then the, now maturing, part of the story is deployment. And so you can actually now publish to a Docker Compose file. So take your Aspire app and turn it into YAML, which, you know, is just the anti-Aspire, but that’s okay. Or you can actually, we’re still working on it, but it works. Turn it into like pure Kubernetes. I think Helm is kind of what we’re going with right now. So you can turn it into artifacts, we’re calling it “publishing”, that can then be deployed. Which is crazy, it’s crazy you can write your architecture in C# and then you can stick that on the cloud, and you don’t have to touch any of the in-between just nuts.
Jamie : [8:43] That is. Like, just, thinking about that, right mean, we in .NET eat pretty good, right. Because , I mean, if U use azure as the example–side note, I’ve noticed that when I’m speaking to folks in America, I refer to Microsoft cloud platform as Azure (American pronuncation). And then when I speak to, shall we say my fellow countryman, I say, as Azure (British English pronunciation).
Maddy : [9:07] That is funny because my boss on MAUI was British and he says Azure, and I used to always make fun of him for it. So that actually works.
Jamie : [9:14] But yeah, in .NET world, we eat pretty well, right? If you’re only, um, publishing to Azure, Azure, whatever.
Jamie : [9:22] Like everything is set up for you, right? There’s the GitHub pipelines, or if you’re using Auser DevOpsthat exists, and you can just literally right-click publish if that’s what you want, right? We eat pretty well. And my experience of the other ecosystems is that perhaps not so well for varying reasons. And I don’t want to go into those, but like being able to take my entire application as all of those discrete parts, like you said, the Lego metaphor, and go, “publish that. You figure it out tooling. Here’s the cloud platform I want to go to, do it, right. Because I’m not a Dev Ops expert. Just get it done,” I, genuinely, really like that; because that just makes it feel like it takes all of the stress and difficulty away from going into that first step of ideation, right: where I’m, like, I’ve just created the groundwork for my application.
Jamie : [10:13] So I personally will not touch a project unless there is source control involved, right. So even when i’m writing the show notes pages for the website, that’s all in source control, right. So all of that is in source control, everything to do with the podcast is in source control. So I get source control going, cool get in it whatever, and then I do whatever I need to do with Aspire to start something new. It gives me a bunch of stuff I can then push that to my cloud place of choice, and I’ve got something immediately, right. That journey from ideation to seeing it live feels like it’s way shorter from what you were saying.
Maddy : [10:47] Yeah, it’s amazing. And now one of the engineers on our team has been exclusively using Codespaces to build Aspire, which it mind boggles me. I’m still like afraid of the browser. I don’t know. Maybe it’s because I come from the mobile world. But I’m like, “I have to connect to the cloud to type?!” And it’s amazing. You can go into any Aspire-ified repo now, and open it in a Codespace and run it, and get the dashboard on your browser. Like you don’t even have to have the tools anymore. It’s bonkers. I truly do not understand, like, I know how it works because I read the code, and I work with the engineers; and every time I complain about something they tell me why it’s impossible to fix it. But I also, like, mentally still have such a hard time grokking just how simple it feels. I don’t know. So yeah, it’s pretty cool.
Maddy
:
[11:36] Thatm, and just being able to add a project by saying var newProject= MyProject();
or whatever. Builder.AddProject()
and that’s it. Oh it’s so, it’s just code, it’s just code. It’s beautiful.
Jamie : [11:51] I had no idea that you could do the whole thing inside of Codespaces as well. That’s, so like, why do we need powerful computers anymore? Other than ask the boss for a powerful computer so that when we’re done at work we can play video games, right
Maddy : [12:07] Right, exactly. My problem is, I leave all my imporant conference talks until I’m on the plane to the conference. And so that does make it really hard to work on demos when you’re on plane Wi-Fi. So, until they’ve sorted that out, I think I will at least be flying with a heavy laptop. But once that’s done, I was on vacation a couple months ago on my iPad editing release notes for Aspire 9.2 in a Codespace. Like, on the beach with a Corona in my hand. And I was like, “this is crazy. This is the future.
Jamie : [12:43] It’s the dream of remote work, right? You can work from the beach.
Maddy : [12:47] Perfect.
Jamie : [12:48] Maybe that should be the tagline Aspire: “work from the beach
Maddy : [12:52] Aspire: “get your beer, and sit in the beach it’s time.”
Jamie : [12:57] Nice. And you were saying there that you can bring any–I’m gonna put the bunny quotes here, because I don’t know whether the bunny quotes are needed–“any” kind of project, as long as it’s some kind of web technology, right? So, like, a backend, a frontend, maybe some kind of middleware? Something like that. As long as it’s dockerifiable. I don’t know if that’s a word.
Maddy
:
[13:18] So anything. We have two types of things that can Aspire can run, two kinds of resources, right. So resources are the things you define in the Aspire app host. One is an executable, so that would be anything you run locally when you F5 in visual studio, or if you do npm run dev
or beat
, or insert javascript flavour of the week, or Python. Anything that you’re running locally, or if you’re doing something in VS Code and you hit F5, that kind of thing. That’s an executable. That also means any type of script that you have, anything that executes on a machine, that works natively.
Maddy : [13:57] Containers are where we start to pull in Docker or Podman. Podman is also a very popular alternative. Both of them work. I think if you’re in Visual Studio, Docker is a little bit easier because they have more built-in communication things. But Podman is great. So all of it works. Those are for things that when you want to pull down an image of something; so I want the latest tag of what Redis posts or publishes, that’s how I would do that. And I’d run it in a container on my machine, which means I don’t have to run a whole emulator or blah, blah, blah, blah, blah, blah, blah. Insert word workaround here.
Maddy : [14:32] What’s cool about Aspire too, though, is that you can choose, I’m going to say this about a hundred times, sorry in advance, everything’s code. So you can write as many if statements as you want. And you can say, “if environment is dev offline, " you can make everything containerized. But you can also then say, “if environment is dev online,” you can put the things that you don’t really feel like running in the container locally, you can just put them in the cloud and hit them as endpoints. That’s totally valid. You can provision things and deploy them on F5 if you want to.
Maddy : [15:03] So depending on the level of control you want over all the different pieces of your stack, you can plug it in whichever way makes sense. It’s, yeah, it’s very cool.
Jamie : [15:16] Yeah, that is very cool. Okay let’s hit pause on that, just that thought that I was just about to have there. So it’s dev containers?
Maddy : [15:25] Ha ha. Yeah. It’s like a layer on top of devcontainers, right? Right. Not only is it the devcontainer with the stuff installed, it’s now also how to actually run everything. And so instead of a PowerShell script or a Bash script and those steps in the readme being like, “set this environment variable. Make sure that this is set to this. Make sure you have this permission set up.” Aspire just does it.
Jamie : [15:51] It’s like, “yo fam, I’ve got you.
Maddy : [15:53] Yeah, exactly. Like, “yeah, You guys you use what?! Scripts? Eew!”
Maddy : [16:00] Plus, oh my gosh, tangentially, you guys are going to get all the insights: I’m very excited! We’re in the middle of planning, this is a month before Microsoft Build where we’re recording this right now. And so we’re in the middle of planning you know what we’re going to talk about, and all that; so you guys are getting a lot of very future looking excitement as a listener to this, which is great.
Maddy
:
[16:19] But we’re working on single file dotnetrun.
So dotnetrun myApp.cs.
And outside of the context of Aspire, that’s amazing because, hypothetically, you could replace every script in every repo with a C# file and just .NET run it as you need it, which is very, very nice. But for Aspire, my dream is that it’s dotnet run apphost.cs
and then you don’t even need any of the project stuff, you just have like an Aspire filethere , and that does all the orchestration.
Maddy : [16:52] So it becomes as simple as having like a docker-compose. yaml, right. And then you can always add the project stuff back, we’re not getting rid of projects, we’re not crazy. We’re crazy, but we’re not crazy like that. So, you know, when you’re ready to grow up into adult .NET you go right ahead. But to get started, just a C# file? Oh I love it.
Jamie : [17:14] Yeah. So that kind of takes me back to when I was doing my comp sci degree: The first year or so was done at the command line with the C# compiler. So this was like 2004, right.
Maddy : [17:28] C# on the command line? That was very cutting edge. Wow.
Jamie
:
[17:32] Well, so this was… I asked the lecturer was like, “but Visual Studio exists.” And he said, “yes. But I’m not teaching you Visual Studio. I’m teaching you C#,” right. And so he’d set his laptop up, put it onto the projector or whatever, open up his command prompt–because he was on Windows XP– do notepad.exe program.cs
Maddy : [17:54] Oh my god.
Jamie
:
[17:55] And then notepad would open up with a file created called program.cs, he’d do what he needed to, do type all the code in, then go back to the terminal do csc.exe program.cs
and it would compile the… so well [it] kind of It feels like I’m going kind of back into that direction.
Maddy : [18:10] Yeah.
Jamie : [18:10] Now we’ll run it as well, not just compile it.
Maddy : [18:13] When I was in college, which we’re coming up on–oh, my God. It’s been like 10 years. I still feel like I’m new at everything here. And so I don’t. .. I learned to C++ and C. That was what they taught us the first two years. And everything was command line, Vim, GDB. You know, I was debugging on the command line like a real hardcore engineer. I thought I was going to go into like GPU design and optimization. And then I was like, “that sounds terrible. Nope, not for me.”
Maddy : [18:42] But it then, I started and I was on Linux for most of college, like i really thought it was very cool. And I started [at Microsoft], and they gave me a Macbook and Visual Studio for Mac, and were like, “okay , cool. Developer experience.” And i was like, “what are all these buttons? I don’t know what I’m doing.” So I spent the last six/seven years like teaching myself how to use an IDE, and really becoming one with the IDE developer. Just for us fire to revert everything, because now we’re looking at command line stuff and VS code. And I’m like, “wait, I feel like I’m going back to my old ways. Like, this is so exciting. But oh, what a journey.” Everything comes back in a style eventually, huh?
Jamie : [19:25] Absolutely. It’s all cyclical, right? So like containers go all the way back to the 1980s with BSD jails, right? So we’re just going rounded circles. That’s all it is.
Jamie : [19:35] Yep. Just making it a little bit better every time. just a little bit.
Jamie : [19:38] So let’s say I have some kind of .NET app and I want to “Aspirify” it, if that is a word.
Maddy : [19:45] Yes, that is the word. Good job.
Jamie : [19:46] Oh, excellent. Okay. So there’s some tooling somewhere, some process somewhere I could put it into Aspire. So that’s my API. And then my UI engineer comes to me and says, “hey, I’ve built this amazing UI and it’s in Node version 12” or whatever. I don’t know what the good version of Node is, “but it’s in this really esoteric version of Node because, you know, I’m a proper hipster and that’s what Ido. And it’s using this tool set that you’ve never even heard of” And I’m like, “right. Awesome.”
Jamie : [20:14] I need to Aspire-ify that , So that I can hit F5 and do that. So assuming that there is some tooling that exists somewhere, I can do that, right? I could just take this UI project, I may have to do something crazy with it, just mess around with it to get it working; but then it will run in Aspire because I have node installed, or I can put it in a container, right?
Maddy
:
[20:36] Yep. So we have two in-the-box, like, abstracted out Node APIs in Aspire hosting node.js. One is AddNodeApp
, one is AddNpmApp
. Nobody considers themselves someone who builds an npm app, so we need to, we’re thinking about like how to rename that. I don’t know, but they’re just running an executable, and so they’re saying npm run dev
or I don’t know, whatever commands you want, pick your bundler.
Maddy : [21:03] And then in the community toolkit, folks have actually taken those very vanilla abstractions and done a bunch of specific things. So there’s a PNPM one now. There’s stuff specifically for Dino and Bun and Vite and, again, insert JavaScript flavor.
Maddy : [21:20] And so what we’re doing in the box now… So yes, everything works today. Go nuts. You can also run things in a container. So if you want to like run the JavaScript in a Docker container and run it there instead of on your machine, you could do that with Aspire. It’s all pretty cool. I just run everything locally mostly because I’m lazy, but it works. So whatever.
Maddy : [21:43] What we’re looking at now is an even more abstracted version of the JavaScript APIs for two reasons. One, because nobody thinks they build an NPM app. And so having it named that, as we’re trying to, you know, appeal to non-.NETers, the JavaScript people are like, “what are you talking about? Don’t, that’s weird.” So that’s one thing. But two, so that it can set up Open Telemetry for frontends. Which I know that you are a professional developer, and so you have felt at least once the pain of CORS or, you know, all of it, all of it, TLS, all of it.
Maddy : [22:19] And so to get Open Telemetry to flow from your frontend to your backend… .NET, we do it magically because we own the stack and we know how to do it and we’ve done it. JavaScript is totally different. And so you can’t do it with gRPC like you would a backend. You have to do a bunch of magic dev certs and CORS stuff and all that. So what we’re looking at now is how to create an abstraction for JavaScript frontends and JavaScript backends where the frontend handles that kind of junk and the backend handles whatever backend needs to be handled. And then you can put whatever executable you want in it.
Maddy
:
[22:56] So if it’s npm run dev
or vue serve
or bun run
, that’s just what you put in the add JavaScript frontend or whatever we call it. We also want to give you the option to be able to, like, run your install command. So every time you F5, it runs an npm install
. It pulls the latest packages. When you deploy it, it makes sure it pulls the latest packages, right? Like, taking those steps out of your CI and your local dev loop, too.
Maddy : [23:24] Those are, there’s a lot. JavaScript is the big focus right now. We’re going to probably go back and do the same thing for Python. And then Go is in the community toolkit. Go is actually fairly straightforward. So it’s in pretty good shape. I’m not going to change that one too much. But we’re all over the place.
Jamie : [23:39] Yeah, that’s pretty cool. Because like you said, like most development shops are polyglot, right? I remember I worked on a project a number of years ago that was .NET, Python, React. And I think, I can’t remember what the other container was. I had to containerize everything and manage that all manually with like a compose file, because I was the .NET engineer and the python engineer, and someone else was the UI engineer, and someone else was like a database engineer; and being able to run all of that at a button push was required. But that required me to do all of the the, I guess, the legwork. That’s probably the wrong metaphor, but do all of that work ahead of time to figure out how that all glues together. But now I guess I can just… I could have just thrown that at Aspire and said, “you figure it out.”
Maddy
:
[24:28] Yeah. Pretty much, pretty much. I mean, you still have to figure it out, right. Like you have to say, “run this thing and connect it to the backend.” But it’s just .WithReference(theThing)
you know. It’s, intellisense does half of it for you now.
Maddy : [24:45] I will say “AI” because I have to, I guess I should mention that it’s only we’re like 30 minutes in and i haven’t said it, yet oh my gosh. So AI has a hard time with Aspire still because it’s so new. What we’re working on, kind of tangentially to everything else, is an MCP server: Model Context Protocol. That’s like the new hotness. So that would know a lot about Aspire. And that way, when you’re trying to Aspiriify a repo, you can ask the Aspire agent to do that. And it knows how to do all that stuff, which then it’s a whole new level of magic. Yeah, I try not to dive into the AI stuff too much because I feel like it’s just an endless abyss of stuff to do and learn. So I obviously do not sound super well versed on it because I am not. But I do know that using this Aspire agent, it can walk up to a repo and Aspiriify it and it’s crisp. And then maybe there’s things you tweak, but it knows what to do. And that’s kind of insane.
Jamie : [25:53] That is insane. Just like, “hey, AI that I’ve never met before, make my thing work.” That’s, wow.
Maddy : [26:02] And it cracks me up because, like, my mental model of it is there’s Copilot or whatever AI you’re using for your editor. And Copilot now has all these friends that it calls when it needs help, like phone a friend and Who Wants To Be A Millionaire. So it’s like, “oh, I need to Aspirify this. Let me call my Aspire friend. Oh, you want to do some SQL stuff? I’m going to call my SQL MCP. Oh I know a guy who’s really really good at Vue, I’m gonna go have him come in and help me with this.” Like it just cracks me up.
Jamie : [26:31] That is crazy. Yeah , yeah. The MCP stuff is really, really, interesting to me. But I know it’s not the topic of what we’re talking about today, but it is very interesting. Because, like, that is something that I feel like happened yesterday it didn’t; it happened, like six, months ago or something. And I’m like," what? Where did the industry go? What’s happening?"
Maddy : [26:54] Yep. It just keeps changing.
Jamie : [26:56] Yeah.
Jamie : [26:57] Just real quick then for folks who are listening in going, “MP what?” My understanding, and I am happy to be completely corrected on this because Maddy, I’m treating you as the expert here, is that I ask an LLM to do something, like you said, it doesn’t know how to do it, but it knows who to ask to get that information. So there’s maybe a different LLM or some kind of other agentic workflow that is trained specifically on the thing that I want to do. So my LLM talks to that LLM, gets the information back from it, and then may decide to rewrite the content around it to make it more human friendly to read.
Jamie : [27:34] So, like, I may be using Phi-4 locally so that’s one of the small language models created by your colleagues over in the AI department over at Microsoft–I can have a conversation with that. And if it gets stuck, I can have that talk to, let’s call it Aspire or whatever, right?
Maddy : [27:50] Yeah.
Jamie : [27:51] And then it will go to AspireAI. AspireAI will do what it needs to do, comes back, and then Phi-4 might go, “well. Yep the code looks good because I’m not an expert. But let me write some description around that so that you understand what I’m showing you.”
Maddy : [28:03] Yeah.
Jamie : [28:04] Which is really quite cool like LLMs talking to LLMs.
Maddy : [28:07] Yeah. It’s like having your own personal consultancy team. Like, you just complain to one guy and he goes and he figures it out, and he comes back and he fixes it. It’s crazy.
Maddy : [28:17] I mean this is all super aspirational–that’s first time I’ve done that today, that’s good–I don’t… I use Copilot a lot. I’m big into vibe coding these days, because I want to stay hip and know what’s up with the world. But it’s not going to replace me, and and maybe it will get to that point. But right now, I mean, it just gets you started. And for me, that’s always the biggest barrier, especially with trying to Aspirify an app. Like, I come into repos and I’m like, “I’m going to Aspirify this for myself to see what the experience is, what the gaps are, product development, good PM, yada yada.” But I’ve tried to do it with AI and, it does a pretty good job. I think with an MCP, it’ll do a better job. But still, there are just things that I’m like, “no, that needs a human touch. I am needed. I’m important.”
Sponsor Message
The following is a paid advertisement.
Welcome back, .NET enthusiasts! Today's special episode of The Modern .NET Show is brought to you with the help of Jamie Taylor - a renowned expert in software development and artificial intelligence. You may recognize his name from your favourite episodes, but did you know that he plays an even bigger role at RJJ Software?
As our lead consultant, Jamie has guided numerous businesses to unlock their digital potential with bespoke solutions tailored to their unique needs. From crafting cutting-edge software to integrating advanced AI technologies, he's been pivotal in transforming challenges into opportunities.
If your company is seeking a partner who can provide expert guidance and deliver exceptional results, look no further than RJJ Software. With Jamie at the helm of our consultancy team, we guarantee that we won't just meet expectations—we will exceed them. Dive into the digital future with us today.
The audio for this advertisement was created with AI
Jamie : [29:12] Yeah. And like, you still need to like, this is like the super, not very helpful way to put it, but it still needs someone to prompt it, right?
Maddy : [29:21] Exactly.
Jamie : [29:22] It still needs something to prompt it. Like the AI coding assistants, and that’s why they’re called “Assistants” and that’s why “copilot” is the word for the Microsoft ones. Because it is an assistant. You can’t just have it do the thing for you. You need to tell it what you want it to do.
Maddy : [29:38] Mm-hmm. Yeah. And you have to know where to look when it screws it up.
Jamie : [29:42] Exactly. Like, I remember about a week, maybe two weeks ago as of recording. So we’re recording this April 18th [2025], right? And this isn’t something that… I don’t bring this up to make fun of the person, but they’d said on X, “hey, I’ve built my entire application using Vibe Coding
Jamie : [29:57] I know what you’re gonna say! and it’s awesome and it’s pushed to production. "
Jamie : [30:02] And then like two days later or a couple of hours later, it was like, “hey guys, can you kind of, like, not break my app anymore? Because I don’t know how to fix it.” It wasn’t those words, but it was like along those lines: “I have no idea how to fix this. It is broken. It is charging me loads of money because you all are being really mean and, basically, hammering it with lots of requests. Please don’t do that. "
Jamie : [30:22] Like, I don’t say that to make fun of the person, but like what I’m saying is that person doesn’t know that they have that, what is it called? Unconscious incompetence, right?
Maddy : [30:31] Yeah.
Jamie : [30:31] They don’t know what they don’t know in order to fix it. And vibe coding can’t replace that.
Maddy : [30:35] Right.
Jamie : [30:35] It can get you from, “I have an idea,” to something in front of me, but it can’t get you to, “I have an idea,” to, “I have a product.”
Maddy : [30:44] Right.
Jamie : [30:44] It can’t get you there.
Maddy : [30:45] Right. Especially with dev tools, I feel like to explain to someone what I’m trying to propose or show them, having it in hand is so much more useful than trying to use the words. And so when it comes to Aspire, like I can fake a feature pretty easily or I can fake a dashboard icon pretty easily now with Copilot. And then I can just send a screenshot of that and be like, “I want this. Do you get it?” Instead of, “oh, I really want an icon in the top right that will do this, but it needs to be, you know, toggleable,” you know, words. I don’t want words. I just want to tell the thing and then show the picture and then it’s all good. You know?
Jamie : [31:23] Yeah, because a picture is a thousand words, right?
Maddy : [31:26] Oh, yes. Good. very good.
Jamie : [31:28] Okay so thinking about Aspire then so, I know you said it earlier on but I just want to explicitly ask this question: so Aspire is for only when you’re pushing to Azure right
Maddy : [31:39] No. It’s for anybody pushing to anywhere including on prem.
Maddy : [31:42] For what it’s worth, if you go back to the Lego metaphor Aspire is the green base plate, that’s the Aspire app host, right: the big green thing that you can put anything on. And so let’s say that you have a bunch of really cool Star Wars Lego sets, the mini ones, and you put them all on the same green base plate and you carry them around. That’s aspirifying your repo. So now everything’s strung together, even though they’re all still separate. Maybe you’ve connected some things with, you know, an extra long Lego piece. I don’t know. But you can take all of those things off the base plate and put them on the shelf, which is my metaphor for deployment, without breaking them. You just have to reconnect them once they’re back on the shelf. You don’t have to keep it on the Aspire baseplate. And so what that means is if you’re deploying and you have a DevOps team and the thought of a developer tool doing your ops gives you heartburn, do not use Aspire for deployment. Just pluck your Lego pieces off the baseplate in your CI/CD and put them on the shelf however you want.
Maddy : [32:47] So that’s the first, That’s the most generic answer to, “Aspire works everywhere.”
Maddy : [32:52] There’s also special stuff for AWS and AZD. This is a good question, actually. How would you say the abbreviation, the CLI command for the Azure Developer CLI?
Jamie : [33:03] So this is the fun, right? Because it’s got that final letter of the alphabet in it.
Maddy : [33:06] Yes.
Jamie : [33:07] I say it A-Zed-D, but then that’s kind of like, that feels weird because the Zee-Dee, because they sort of rhyme, they flow together easier.
Maddy : [33:16] Yeah.
Jamie : [33:17] But I just can’t bring myself to say it.
Maddy : [33:19] Yeah. The problem I have with that in particular is it just sounds to me like I should be able to say AZ, but AZ is the Azure CLI. And you need the D to differentiate that it’s the developers.
Maddy : [33:32] Anyways, tangent aside. So A, Z, D. That has a bunch of built-in stuff now to understand Aspire and deploy to Azure Container Apps and do this one-stop shop deployment into the Container Apps environment. And magic and service discovery. And we even have a version of the dashboard we build as a container in Azure Container Apps. So that can run within the kind of environment VNet that ACA creates for you. And you can monitor not long term, like it’s not a replacement for a data egress pipeline and proper telemetry tools, but you can go and click on it and get a really quick status of your system.
Maddy : [34:16] But we did very similar with AWS. So the AWS folks, actually, who work on the .NET AWS team, they went and they built a whole integration for Aspire publishing that actually also works with the Visual Studio tooling. So you can see everything that’s on AWS that’s Aspirified in your app, and right-click publish that way or deploy.
Maddy
:
[34:39] So those are the golden paths right now. And then, like I said at the beginning, we’re working on the more abstract paths. So Docker Compose works, and you can just do docker up
then. Or you could publish to a Kubernetes manifest. We’re also looking at how we could do Terraform modules, because Terraform is super popular.
Maddy : [34:57] Other deployment things. We’re joking about building, like, a joke one. Like, I want one that deploys my Minecraft server. So I don’t know how. I really… orchestrating a Minecraft server in Aspire is like a level of overkill that is just almost unnecessary even for me. But I still want to say I did it. So, you know, that’s kind of where I’m at.
Jamie : [35:21] That feels like something that you could challenge David Fowler to and he’d do it in a weekend.
Maddy : [35:26] Oh, yeah. In a weekend. He’s probably going to be listening to this episode. He’s going to have it done before we finish.
Jamie : [35:33] He gets to this point of the episode it goes, “I’m gonna do it live.”
Maddy : [35:37] Yeah, yeah. You’re just like, “hmm. Bet.
Jamie : [35:43] Well David let me know, I would love to know .
Jamie : [35:47] So we can deploy to Azure, Azure, whatever, Microsoft’s cloud platform. So that’s the thing that I find that I’m challenging the most when I’m talking to developers and I’m saying, “maybe we could use .NET for this. " They say, “yeah, but that’s just Azure. We’re on AWS.” So knowing that there is a path for Aspire to AWS, that because it’s the AWS .NET team, it’s like officially supported by them. So, like, having that built into the tooling to be able to just go, “hey Aspire, whatever arcane command Aspire publish AWS, there’s my token or whatever, go do it.” Like, that feels really good; like if I wanted to go to AWS, I’m more of an Azure person, but like for the people who are like, “I don’t want vendor lock-in, there isn’t vendor lock-in.
Maddy : [36:36] Yeah, it’s… the AWS .NET people too, as a side note, are just awesome. Every single one. We’ve had folks who’ve worked on the .NET team like end up over there and vice versa. We all love each other. There’s no hard feelings. Where things get complicated is obviously we have to work on Azure before we work on AWS or alongside when we work on AWS. And generally, if I go to the Azure AI conference and I say, “look at how cool Aspire is, it runs on AWS,” Scott Hunter is going to come out from behind the curtain and yank me off with a giant cane, even though he also loves the AWS team. So he’s generally more lenient.
Maddy : [37:15] And so we have to really walk this fine line as the .NET team where we pay all the love we can to AWS and the other various deployment stuff. I mean, on-prem is a huge thing still. It shouldn’t be, but it’s fine. But even just like littler ones like Cloudflare or Rapid API or insert thing. But we also, we have to be Azure first. So we’re not doing a great job attacking the vendor lock-in messaging, because we don’t want to come off as if we don’t want to prioritize Azure, I guess. But the good news is we have people like you, and now people who are listening to this who are going around saying, “no, it works at AWS. Just look at this repo. It’s literally right there.” And we say that when we can. We just we have to say it in the appropriate contexts. So you, You know, that’s where the politics of the big company always starts to trickle in.
Jamie : [38:05] Of course. You know, we’re just people who love making cool things, right?
Maddy : [38:09] Exactly.
Jamie : [38:10] And then unfortunately, something gets in the way.
Jamie : [38:11] So real quick then, what does the on-prem journey look like? Because obviously someone’s going to come to me and say, “yeah, but Aspire is cloud only.” And you said yourself at the beginning, “we avoided saying cloud first because nobody’s really cloud first, " right? Unless you are cloud first.
Maddy : [38:27] Yeah.
Jamie : [38:28] So like, does the on-prem journey take the Docker containers and the Kubernetes and the YAML files and all that scary stuff? Or like, what does that look like?
Maddy : [38:38] I mean, it really depends. If you deploy today by sticking a thumb drive with an executable into a server, you can do that. You know, just build your APIs the way that you built them before. And now you have a fancy dev tool that turns everything on for you. If you are containerized, I was talking to a customer that has a fully custom Elasticsearch, like internal on-prem instance, where they ripped apart Elasticsearch and rebuilt it for their purposes, which, you know, it’s amazing that anything works anywhere on this planet in software, because people keep doing things like this, and it is so complicated. B ut, you know, how they deploy that is the same.
Maddy
:
[39:20] If you are sophisticated enough on-prem to be able to run docker up
and everything’s Dockerized or, you know, you have a bunch of Linux machines and you just want to run them as executables on Linux, but you have a deployment mechanism, you can do that, too. And so with these new publishers now, we’ll get you the extra step where instead of having to write the YAML, we’ll give you the YAML and then that you can deploy. Or instead of having to write the Helm chart and do the optimizations, we’ll give it to you and we’ll set your min, and max, and yada yada for your resources. So it’s getting more and more flexible.
Maddy : [39:54] The other thing we hear about a lot, because, you know, .NET, we’re a little old here. We’re a little old. Lots of people on 4.8. And a lot of those people still deploy on-prem because it’s Windows, and they have Windows machines, and they can’t deploy to Linux yet. And so you can use Aspire with 4.8 because, again, it’s just an executable. You’re just running an executable locally. So you can use it to orchestrate running a 4.8 backend locally if you’re on a Windows machine. What it doesn’t do is turn on all the magic.
Maddy : [40:26] So 4.8.NET Framework does not have as the cross-platform logging, health checks, telemetry, service discovery, resilience, and all that that is built in in Core now. So we can’t turn that on for you because it doesn’t exist. So you don’t get all of that, the opinionated part of Aspire, but you can still get the fancy app launcher. So you can bring your friends in 4.8 along and then that’s usually how I convince them to upgrade to core. I’m like, “look at all this cool stuff you get. Whoa logging? Whoa!”
A Request To You All
If you're enjoying this show, would you mind sharing it with a colleague? Check your podcatcher for a link to show notes, which has an embedded player within it and a transcription and all that stuff, and share that link with them. I'd really appreciate it if you could indeed share the show.
But if you'd like other ways to support it, you could:
- Leave a rating or review on your podcatcher of choice
- Head over to dotnetcore.show/review for ways to do that
- Consider buying the show a coffee
- The BuyMeACoffee link is available on each episode's show notes page
- This is a one-off financial support option
-
Become a patron
- This is a monthly subscription-based financial support option
- And a link to that is included on each episode's show notes page as well
I would love it if you would share the show with a friend or colleague or leave a rating or review. The other options are completely up to you, and are not required at all to continue enjoying the show.
Anyway, let's get back to it.
Jamie : [41:00] We talked a little bit about OTel there it’s doing loads of OTel stuff, which is really cool. I’m a big fan of Open Telemetry; just being able to see at a glance, “what the heck si happening with my app?” and being able to travel back in time a little bit, and through stuff. That is really cool.
Jamie : [41:16] However, I do have a question that is related to everything you just said about, from what iI’ve gathered from you today, and from my conversations with people about Aspire in the past which have not been very deep; this has been very deep. It feels very much like Aspire is trying its best to give me what I’ve wanted for a long time and that is: best practices , by default.
Jamie : [41:40] That’s not me trying to say .NET isn’t best practices by default, but like you just said, “hey, we’ll set up the helm chart for you, and set your min-max to sane values, right. And we’ll set this up for you, we’ll set that…” so I don’t have to spend hours figuring out, “okay. So I set that, and then I pass this connection string here, and open that port there, and do this thing here, and pass all of these things around backwards and forwards. And I’ve got to add all of these different checks in places and all that kind of,” it just does it for me, right?
Maddy : [42:08] Yeah, you don’t have to become an expert until you want to. Which is, I mean, when I started, the amount of words, and even still, I’m down to maybe like a couple words a week that I have to Google. And by words, I mean like cloud services that exist. You know but at first you’re just inundated there’s, “oh well I use Octopus,” and I’m like, “this is fake. You guys are just saying things.” “Well we’re a big Snowflake shop.” “What? I’m sorry.”
Maddy : [42:33] And so for me, as a mobile dev who only really built basic REST API backends for my apps, getting into this more optimized cloud world where I was building these microservices and they had to have all these different things working. I was super overwhelmed because to do anything, you had to not only learn what the thing is, but then pick from an infinite slew of things, figure out which one’s going to be the best choice for you, and then become the expert on how that thing works to actually turn it on to test if it’s going to be the best thing for you. And we take away that becoming the expert. So we don’t do everything everywhere.
Maddy : [43:13] We don’t always have like the perfect opinions for your stack, which is why we’re super code first in the service defaults project, which is where everything gets turned on. It’s just C#. You comment things out that you don’t like. You replace things that you do like or that you don’t want to keep. Yeah, so that’s been, for me, helpful, just that I can walk up to something and I don’t have to learn how to orchestrate a Redis cache, and how to plug that into my .NET API, because Aspire has an integration that will set it all up for me. And then when I’m starting to optimize things or things start to get complicated or I need to start breaking out of the pattern, the regular Redis NuGet package is there. It’s pulled in as part of the Aspire integration. And so I don’t have to remove anything, or undo what I did, or un-Aspirify it. I just grow up into like the big girl Redis, basically.
Jamie : [44:03] Yeah. Because like you’re saying you shouldn’t have to spend hours, days, weeks, months figuring out, “how do I configure this thing so that I can just use it? right. Because that’s eating into my development time where I’ve told whomever the project manager, program manager, whatever, it will take me three days to set this up and actually it takes you a week just to get the background services up and running, and you haven’t even actually touched the code yet right.
Maddy : [44:29] Yep.
Jamie : [44:30] Ask me how I know.
Maddy : [44:32] Yep. Yep. We have internal teams at Microsoft, too, that go and work with customers, like big Azure customers, and help them spin up new solutions. And I was talking to someone a couple weeks ago, and she was like, “yeah, right now it’s at like about two weeks until we can get the customer to start contributing code to their own code base.” And I’m like, ‘okay, Aspire probably a day, maybe two, depending on how many permissions you have to propagate in Azure." It’s wild.
Jamie : [44:59] Yeah, the quicker that we can get from ideation to something running, which I guess is why vibe coding is a thing. But the quicker we can get from “I’ve had an idea,” to, “I have the beginnings of something,” the better. Because that ceremony of wiring things together and setting everything up just drains you. Some people find that super exciting. Other people don’t. I’m in the “other people don’t” side of things. If I’m building something, I don’t want to be spending hours connecting things together.
Jamie : [45:29] And worse yet, I don’t want to be following the online tutorial. And I’ve brought up this loads of times with engineers. I don’t want to be following the online tutorial that was written as a quick start guide that I’m never going to have the time to go back to, to then implement best practices. I want best practices from the start, right?
Maddy : [45:47] Yeah, we’re all lazy. And my favorite thing in a code base is refactoring. Like, I am a sucker for refactoring, especially things like styles, you know? And so the sooner that people can create a disaster of an application that I can go in and clean up, the happier I am, generally. And that’s probably why I ended up as a product manager and not a full-time engineer. I think I would never build a feature. I think I would just move things into different files and call it a day.
Jamie : [46:16] “Hey, dudes, I finished a big refactor. All I’ve done is just rename the file, but it’s refactored.”
Maddy : [46:21] Pretty much it.
Maddy : [46:22] We’ve been working on an Aspire command line. And so this is part of our “beyond .NET” journey, I guess you could say. And the engineer who works on it is in Australia, Mitch. He’s the best. I love him. As a PM, having someone that I can shoot a message to at 3 p.m. And just be like, “what if we did this?” And then I wake up the next morning and he’s built it and it is just correct. Amazing.
Maddy : [46:44] But I’ll contribute things into the repo and styles usually like, “oh, I want the spinny thing to be purple,” or, “oh, this is what the words should be here.” You know, normal PM things, not real code. But he was doing an all in one file. And so I actually took a couple hours one afternoon and I bumped a bunch out, and I refactored it to a couple of different files, just so I could use my brain functionally in the repo. And Mitch woke up and was like, “what did you do?” “I’m sorry. I just tried to organize it.” And he was like, “no, this is not even how I’m going to refactor it. I’m going to refactor it. Don’t. No, this is not.” I was like, “I know. I’m just a little OCD. It’s not my fault.”
Maddy : [47:32] Oh, so, you know, I’m contributing. It’s very useful.
Jamie : [47:36] Important contributions. That’s it. You’re doing very important work.
Jamie : [47:41] So one last really silly question. This is the silly question, right? We’re running out of time, and I appreciate you’re a very busy person, but this is the silly question put to me by someone in the community that I talk to a lot. And they said these words in verbatim.
Jamie : [47:58] Okay.
Jamie : [47:58] “Level with me. Is David Fowler a genius? Because i think he might just be one.”
Maddy : [48:04] So he is, maybe, the smartest person I know; and he is also probably the stupidest person I know. Like, he’s just one of those people, the way his brain works is so beyond lightning fast. Like, he’ll figure out the solution to a problem before I’ve even identified what the problem is, it’s amazing. But I’ve also watched this man try to create an account on a website for, like, 20 minutes before. Like, he for some reason doesn’t know how to, like, look at a box and click on it and do what he’s doing. It’s fascinating. It is fascinating.
Maddy : [48:38] And it’s funny because you have Fowler, and then on the other hand, you have Damien, who is very, very methodical and, like, super, you know, everything is perfect, and he thinks through everything, and he doesn’t just throw [redacted] out and make it happen magically. And so he’s really smart in that way, but when him and Fowler get into, like, because they argue all the time, And it’s nice. They’ve adopted me into the arguing circle, which I really appreciate. The way they argue is Fowler’s like, “but this! " And then he takes Damien along on the journey, lets Damien think through all of it, and he’s like, “oh, I get it.” But then he immediately pins out the thing that Fowler had been missing the whole time, because Damien actually just went along the whole journey, and is like, “yeah, but what about this?” And then Fowler’s like, “oh.”
Maddy : [49:22] It’s amazing to watch. It’s amazing. The more and more I just spend watching people on the .NET team do their jobs, the more I think everybody on .NET is probably a genius. We have a lot of really smart people. It’s really cool. But yeah, Fowler’s a genius, but he’s also an idiot. He’s also a terrible nerd. He totally pretends he’s a nerd, but he doesn’t get Star Wars references. He’s awful. Damien builds his computers for him. He can’t build his own computer. He’s a pretend nerd because he’s spending too much time writing code. So… Anyways, but yeah.
Jamie : [50:00] We said earlier on, you don’t need a supercomputer to write code anymore, right?
Maddy : [50:03] Exactly.
Jamie : [50:03] Because you can just Aspirify everything.
Maddy : [50:05] Exactly.
Maddy : [50:06] But yeah, he’s, I mean, he’s pretty smart. And whenever he says “I’m right,” I screenshot it and I save it to send it to him later. So.
Jamie : [50:15] I love that. That goes in the brag journal.
Maddy : [50:17] Yeah.
Jamie : [50:17] On Friday, 18th of April, Fowler said I was right."
Maddy : [50:21] Yep.
Jamie : [50:22] “Save. I don’t care what I was right about. I was right.
Maddy : [50:24] Yep. That’s not going to be my performance review this year is just screenshots of Fowler saying I was right.
Jamie : [50:32] So where’s the best place for folks to go learn about Aspire then? Is it like Aspire.NET, or is it just Microsoft Learn and the documentation?
Maddy : [50:40] If you just go to dot.net and then in the top bar, I think, Features, Cloud is probably where Aspire is right now. We want to move it but we’re trying to… the website is a whole marketing… there’s people much smarter than Iwho know how websites are supposed to work, and they tell me where things are supposed to go. Yeah, it’s on the .NET website. It’s on Learn. If you just Google “.NET Aspire, " that’s the quickest way to get it.
Maddy : [51:04] We’re pretty good about blogging. So we just had the release for 9.2 last week. And so we’ll blog releases, but we also have really good what’s new on the docs, and they all link to each other. So if you get onto a Microsoft .NET Aspire property, you’ll be able to find your way around everything else.
Maddy
:
[51:21] If you really want to just get started with it “File > New > .NET Aspire Starter Project”, or in vs code or command line dotnet new aspire-starter
and it will show you everything. And you can hit F5 and you’ll be like, “oh whoa! What! Hold on,” and that’s it. So that’s how I recommend getting started.
Jamie : [51:43] I love that about stuff like that, where I can just do “File > New” or whatever on the command line, and I get, for want of a better phrase, it’s opinionated, it’s best practices.
Maddy : [51:52] Yep.
Jamie : [51:52] It’s all wired up together so I can go, “cool, That’s working. I can now build the thing that I’m supposed to be building,” right?
Maddy : [51:59] Exactly, exactly. It’s so cool. I love it. I have the coolest job. So, sorry.
Jamie : [52:04] Okay, so Maddy we are running out of time. Do you welcome people reaching out and going, “hey Maddy, I’m having this problem,” then maybe you can point them in the right direction of someone or something? Or is it a case of, like, you just want to hear people having success stories with Aspire and stuff like that?
Maddy : [52:21] Oh, my gosh. If you just want to yap, feel free to hit me on Blue Sky. It’s @maddymontaquila.net. I only check my DMs periodically because it usually involves drinking a glass of wine to read like a good chunk of my DMs. So I go through occasionally, and then I’ll like reply to things there. But if you just at me and I can pull people in that way.
Maddy : [52:42] Or if you just want to say, “hey, we’re building this cool thing.” If you want a customer story on our blog, so we’ve been writing on customers.microsoft.com or dot.netcustomers, depending on the size. We write stories about people who use .NET to do stuff. And it’s very, very cool and really easy because the people who do it on our side are very smart and good at their jobs. And so you just kind of talk to them and then they turn it into a blog, or you write the blog and send it and they post it. It’s really flexible.
Maddy : [53:11] So there’s a URL that I never remember, which maybe I’ll get you before this is published so you can put it in the show notes, but you can also just email me, Maddy, M-A-D-D-Y at Microsoft.com. And I’ll pull the right people into that. That’s also a great way to reach out if you have questions, just want to talk. If you’re having any grief with Aspire, feel free to email me as well. But just know the first thing I’m going to ask you to do is file a GitHub issue. So if you have not filed a GitHub issue, I’m going to say, “well, file an issue and then we can talk about it. " And I am really bad at email, as Jamie intricately knows. So anytime you send me an email that then requires a follow-up, you might be adding a couple of weeks to your life. So file the GitHub issue first, and then you can mail it to me and then we’ll get you sorted out.
Maddy : [53:58] But we love hearing about all this stuff. We watch the content that comes out on YouTube as much as possible. And we listen to the podcasts. And we read the Reddit posts. And we have a really good time with it. So we’re around whether or not you see us. So yeah, keep telling us what we’re doing good and what we’re doing bad that we need to fix because we’ll fix it.
Jamie : [54:18] I’ll get all of those put into the show notes and the transcription. So if you’re, please don’t grab your phone if you’re driving folks, if you’re driving along, later on when you are not driving you can check your device that you are listening to this on, and there will be some show notes with some links; so that will help you out.
Jamie : [54:35] Well Maddy, I always enjoy having our chats. It’s been a lot of fun. Thank you ever so much for this. I now, I’m genuinely–I say this all the time, but I’m genuinely going to go ahead and build something with Aspire this afternoon, because one of the things that i’m going to try and do is a little spoiler alert: I’m doing like a Getting Into GenAI session with a local college, and I’m going to try and build an API that the students at the college can, sort of, hit hundreds of thousands of times across five days for eight hours, and give them access to a locally running LLM. I know that I can get them GitHub stuff, but I figure, let’s get them started, because I’m gonna have to teach them HTTP calls as well.
Maddy : [55:20] Yeah, that’s the perfect Aspire scenario. Let me know how that goes. Oh my gosh, email me if you have any issues. We’ll sort this out. We also, we have an Ollama integration in the community toolkit now too. So you can run Ollama models locally when you just clone an Aspirified repo.
Jamie : [55:37] That will work even better because, yeah, so folks, you’re learning about this as I’m going, because I need to be able to walk into that room with a device, a laptop, a computer, maybe a Mac Mini or something have the app running on it, connect it to their network, and it just work. So that sounds like it would be the fantastic, the most perfect thing that I need to do. Awesome.
Maddy : [56:00] Okay, Let me know how it goes.
Jamie : [56:03] I will, I will. And everyone here will will hear how it goes, too.
Jamie : [56:06] Awesome. Maddy, thank you ever so much for your time this morning for you, this afternoon for me, because time zones are weird… and in the past for everyone listening but in the future for us. I don’t know. Anyway, yeah. Awesome. Thank you ever so much.
Maddy : [56:19] Thank you, Jamie. See you next time.
Wrapping Up
Thank you for listening to this episode of The Modern .NET Show with me, Jamie Taylor. I’d like to thank this episode’s guest for graciously sharing their time, expertise, and knowledge.
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 the podcast's website, 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/review for ways to do that—reach out via our contact page, or join our discord server at dotnetcore.show/discord—all of which are linked in the show notes.
But above all, I hope you have a fantastic rest of your day, and I hope that I’ll see you again, next time for more .NET goodness.
I will see you again real soon. See you later folks.
Useful Links
- Maddy on Bluesky
- CNCF
- OpenTelemetry
- Helm
- Codespaces
- Podman
- Devcontainers
- Vim
- GDB
- FreeBSD Jail
- .NET Aspire Community Toolkit
- CORS
- MCP
- Phi-4
- Four stages of competence
- dot.net
- Customer Stories:
- Ollama
- Supporting the show:
- Getting in touch:
- Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET Show