Speaker 1: How'd you like to listen to dot NetRocks with no ads?
Speaker 2: Easy?
Speaker 1: Become a patron for just five dollars a month. You
Speaker 1: get access to a private RSS feed where all the
Speaker 1: shows have no ads. Twenty dollars a month, we'll get
Speaker 1: you that and a special dot NetRocks patron mug. Sign
Speaker 1: up now at Patreon dot dot NetRocks dot com. Hey,
Speaker 1: welcome back to dot net rocks. I'm Carl Franklin and
Speaker 1: Averchard Campbell. We're here again for your listening pleasure and
Speaker 1: you're geeking out pleasure and all of the things that
Speaker 1: come with dot NetRocks. It's not just about dot net
Speaker 1: as you know. Geez, We've been doing this since two
Speaker 1: thousand and two, Richard, can you believe it?
Speaker 2: Yeah?
Speaker 3: Well, wow, be clear. I was a guest in two
Speaker 3: thousand and four. I only came on routinely two thousand
Speaker 3: and vivees, Oh, come on, man, you know I'm the
Speaker 3: new guy, the new guy. Yeah.
Speaker 1: It is kind of funny when people ask us, you know, hey,
Speaker 1: do you have ever heard of podcasts? I'm like, no,
Speaker 1: never heard of never heard of them. And then when
Speaker 1: I actually tell them, you know, like what what? Okay,
Speaker 1: let's get into better no framework.
Speaker 2: All right, man, what do you go? You know what,
Speaker 2: this is.
Speaker 1: The first time I've actually looked at Microsoft power toys.
Speaker 3: Oh really, yeah, I just I've done shows over on
Speaker 3: run as on them. Well yeah, I think we've even
Speaker 3: done them on Rock. Yeah, but I mean, I'm just
Speaker 3: I'm not one to do that, right but right. However,
Speaker 3: I did notice that a lot of Mark Rosenovic's tools
Speaker 3: have made their way into power tools, such as zoom It,
Speaker 3: you know, And so I took a look and there's
Speaker 3: one thing in there that just lows me away. Then
Speaker 3: I'm going to start using right away. It's advanced paced.
Speaker 3: Oh so, there's a tool that.
Speaker 1: Enables you to paste the content from your clipboard into
Speaker 1: any format needed. It can paste as plain text, mark
Speaker 1: down Jason, a text file, an HTML file, or a
Speaker 1: PNG file directly within the user experience, or with a
Speaker 1: direct keystroke invoke and get this. It can also extract
Speaker 1: and paste the text directly from an image in your clipboard,
Speaker 1: or transcode audio or video from your clipboard into an
Speaker 1: MP three or MP four file.
Speaker 2: What. Yeah, that's impressive. When did this happen? That's crazy?
Speaker 2: This is some good stuff.
Speaker 3: Yeah, there's a lot. I mean, there's so many zoom
Speaker 3: it's an obvious win. Yeah. The mouse utilities, you know,
Speaker 3: I have a lot of screens. Yeah, and they're not
Speaker 3: all symmetrical, so being able to turn on where the
Speaker 3: hell's the mouse?
Speaker 2: You have it light up?
Speaker 1: It's I know, I have three screens, and every time
Speaker 1: Kelly and I play like a game or something, she's
Speaker 1: like she's ticking the mouse and then she's like rolling
Speaker 1: it around on the desktop to find out where it is.
Speaker 2: Where is the mouse? Where's the mouse? Look out?
Speaker 3: The mouse finders great, The imageer sizer is amazing, Like
Speaker 3: just a great tool. There's so many good tools in this.
Speaker 3: If you're not using power toys, you're missing out.
Speaker 1: Oh I totally have been. So I am definitely installed.
Speaker 1: I've already downloaded. I didn't install it before the show,
Speaker 1: but definitely installing it. This is good, good, good, good.
Speaker 2: Yes.
Speaker 1: Yeah, So Richard, before we do the comment, let's talk
Speaker 1: about nineteen forty two.
Speaker 2: Okay, what do you want to talk about.
Speaker 1: Well, many significant events took place in nineteen forty two,
Speaker 1: many many, including the Battle of Los Angeles, the Second
Speaker 1: Battle of l La Main, and the Battle of midway
Speaker 1: right where the US Navy defeated the Japanese Navy, which
Speaker 1: was a turning point.
Speaker 2: Of the war. Yeah, they never recovered.
Speaker 1: Right, And while in Germany, Nazi officials met to plan
Speaker 1: the quote unquote Final Solution of God and Ann Frank's
Speaker 1: family went into hiding. Also teen forty two, and this
Speaker 1: is probably what you were going to talk about. The
Speaker 1: Manhattan Project needed to create a chain reaction, a crucial
Speaker 1: step toward proving that it would be possible to make
Speaker 1: an atomic bomb. And these scientists achieved this sustained nuclear reaction,
Speaker 1: the first created by humans, on December two, nineteen forty two,
Speaker 1: in a squash court under the stands of the.
Speaker 2: Stag under the squash court.
Speaker 1: Yeah, yeah, under the stands the stag field at the
Speaker 1: University of Chicago.
Speaker 2: Now that's America. Now listen.
Speaker 3: Pile one was not a lot of power, right, It
Speaker 3: was just a little bit, but it was Remember this
Speaker 3: was all theoretical. Is it actually possible to have a
Speaker 3: chain reaction to heat up?
Speaker 2: Right?
Speaker 3: And so literally there's they learned that they had to
Speaker 3: use graphite, and it had to be very pure graph
Speaker 3: light or it would burn blocks of graphite, blocks of
Speaker 3: aluminum of uranium oxide blocks of metallic uranium, and they
Speaker 3: would literally slide them in these tubes closer together, further apart,
Speaker 3: and so forth. So they got to they were pursuing
Speaker 3: this thing called K, the rate of reaction. They were
Speaker 3: trying to get a K above one. So there was
Speaker 3: an increasing chain reaction.
Speaker 2: But not a lot above one.
Speaker 3: But it just sort of proved the point that criticality
Speaker 3: was a real thing. You know, they the physicists had
Speaker 3: figured this out. And this is weird, right, And most
Speaker 3: of the time we have empirical data, like we know,
Speaker 3: this natural thing does this thing, and then we use
Speaker 3: science to figure out why it does it. Right, here
Speaker 3: was science saying this should happen, and now that we're
Speaker 3: physically doing it to prove that it did app.
Speaker 1: Yeah, wow, big big invention innovation there. But I just
Speaker 1: like how you know it was like a squash court
Speaker 1: at the University of Chicago.
Speaker 3: Yeah yeah, And not only that, but they left it
Speaker 3: down there for years before they finally we should take
Speaker 3: that away.
Speaker 1: Yeah, anything else you want to say about nineteen forty two.
Speaker 3: This was the year of the creation of cyanoacrolytes, or
Speaker 3: what you would know as super Glue. Oh Eastman Kodak.
Speaker 1: Superglue is currently holding one of the arms onto my
Speaker 1: metaquest two.
Speaker 2: There you go, because this is funny.
Speaker 1: When I went to, you know, figure out how to
Speaker 1: take it apart and put things on, I misread the
Speaker 1: instructions and ended up pulling one of the straps off.
Speaker 1: So oops, Yeah, that wasn't good.
Speaker 2: But super Glues to the rescue.
Speaker 3: This is also the forty two is also the first
Speaker 3: year that they sort of began the idea of radio astronomy.
Speaker 3: There was so much advancements in radar during the war
Speaker 3: that the idea that we could actually detect radio ways
Speaker 3: from other sources. So they're trying to read their own
Speaker 3: radio waves to find aircraft coming towards them, but they
Speaker 3: realized there's other ones going on and these were actually
Speaker 3: emissions coming from the Sun, and so the research that
Speaker 3: guys like James Stanley Hay did in the early days
Speaker 3: became radio astronomy. But the first sort of written down
Speaker 3: version of there are radio waves coming from the summays
Speaker 3: in nineteen forty two.
Speaker 1: Well, I guess that's enough geeking out for now. Who's
Speaker 1: talking to us today?
Speaker 3: Richard grabbed a comment off show nineteen oh nine, the
Speaker 3: one we did back in augusta twenty four with jah
Speaker 3: Shen Shang, which was talking about Aspire, specifically an approach
Speaker 3: to using containers because the spier gives you a framework
Speaker 3: to kind of go about that. We got this great
Speaker 3: comment from Michael Warrence who said, a great episode. Although
Speaker 3: I noticed a slight weariness in Carl at the start
Speaker 3: of this episode. I know it's been a long strange
Speaker 3: journey for you guys, but you do a great job
Speaker 3: that is widely appreciated developer community. Still thanks, But in
Speaker 3: this episode, hearing Jian Shen's down to earth approach, which
Speaker 3: is what we really liked about talking here, which she
Speaker 3: immediately practical, super easy to engage with. All my knowledge
Speaker 3: has come from screwon around and getting burned. The great
Speaker 3: thing about Donna Rodgs is the way a given topic
Speaker 3: off and triggers super interesting chats about deeper subjects. During
Speaker 3: your conversation, a couple of topics emerged. Opinionatedness, this is
Speaker 3: such a word, and also the definition of micro services,
Speaker 3: which we pressed on both right and Michael goes out
Speaker 3: to say, it seems that the fellow developers have been
Speaker 3: most opposed to opinionated software are the most opinionated developers. Yeah,
Speaker 3: it's usually the person who wants to be able to
Speaker 3: do whatever they want, however they want.
Speaker 4: Right.
Speaker 3: It gets annoyed when tools are built to be opinioned.
Speaker 3: They want ultimate flexibility, which creates more problems I think
Speaker 3: than it solved.
Speaker 2: Yeah, my opinion, not yours. Right.
Speaker 3: As for micro services, all I can say is that
Speaker 3: all the software I've worked on the past ten years
Speaker 3: has distributed components in it which all need to be
Speaker 3: coordinated correctly.
Speaker 2: For the application to run.
Speaker 3: And as they used to say, the sum is greater
Speaker 3: than the whole, right, So having an opinionated orchestration approach
Speaker 3: like a spire is great. Dashboard telemetry, service discovery all
Speaker 3: out of the box. And I very much agree on
Speaker 3: XML XAMAL YAML versus Jason. I thought Jason was a
Speaker 3: great improvement to XML, but I can see the place
Speaker 3: for XML and MAUI to continue the concept of markup.
Speaker 3: It was a great guest and a great show. Keep
Speaker 3: on rocking.
Speaker 2: You know.
Speaker 1: I had a meeting with the customer today and they
Speaker 1: asked me if I'd ever done EXSLT transformed. Oh my goodness,
Speaker 1: and I said, Yeah, back in the early two thousands,
Speaker 1: I tried it once and I had to have therapy afterwards.
Speaker 2: Yeah, we all did it. May rest in peace. Yeah,
Speaker 2: so it's okay, we can let it go.
Speaker 1: Yeah. Well, and what I got to say about that
Speaker 1: comment is that, yeah, I love dot net Aspire because
Speaker 1: you know, it's opinion, ain't but it's flexible. You know. Yeah,
Speaker 1: we're going with my opinion first, but if you've got
Speaker 1: another opinion, it's okay.
Speaker 2: You swap it in and it's all right.
Speaker 3: I just like, Yeah, I like that ability to experiment,
Speaker 3: to try different services and so forth, to not be
Speaker 3: locked into something right up front.
Speaker 2: Right.
Speaker 3: Yeah, so, Michael, thank you so much for your comment.
Speaker 3: Any copy of music Cobey is on its way to you.
Speaker 3: And if you'd like a copy of music Code, I
Speaker 3: write a comment on the website at dot net rocks
Speaker 3: dot com or all the facebooks you publish every show there,
Speaker 3: and you comment there and I read on the show.
Speaker 2: We'll send your copy. Music go buy a music.
Speaker 1: Code by has a new track track twenty two, and
Speaker 1: the orders are coming in, and not only just for
Speaker 1: twenty two, but for the collections. We have MP three,
Speaker 1: Wave and Flak collections now all twenty two track. If
Speaker 1: you're a flacker, yeah, if you're a flacker.
Speaker 2: Uh.
Speaker 1: Maybe people don't know what flak is. Flak is lossless
Speaker 1: like wave, but it's half the size.
Speaker 2: Yeah.
Speaker 1: So you can download the flack zip file which is
Speaker 1: half the size. Unzip it, convert him back to waves
Speaker 1: and you've got perfect audio again.
Speaker 2: Nice.
Speaker 1: Yeah, so it's good. All right, let's bring in our
Speaker 1: friend Rob Richardson. We haven't talked to in a long time.
Speaker 2: Too long. Yeah.
Speaker 1: So Rob is a software craftsman building web properties in ASP,
Speaker 1: neut and Node, React and View. He is a Microsoft MVP,
Speaker 1: a published author, frequent speaker at conferences, user groups, and
Speaker 1: community events, and a diligent teacher and student of high
Speaker 1: quality software development. You can find his talks on robrich
Speaker 1: dot org, slash presentations and follow him on masthodon at,
Speaker 1: Rob rich at Hackeyderm dot io. Welcome back, old friend.
Speaker 1: How are you, dude?
Speaker 4: Well, it's great to be here. It's fun to be
Speaker 4: able to dig into all things code.
Speaker 2: Yeah, sure is.
Speaker 1: I was hanging out with you and a bunch of
Speaker 1: people after Tulsa Users Group, and that's when I almost
Speaker 1: did a double take because the last time I saw
Speaker 1: you in person, you looked like a yogi. I did
Speaker 1: you know long hair, long beard? I mean you're and
Speaker 1: you're tall. So yeah, it was quite a striking presence.
Speaker 1: And now short hair, no facial hair. You like cleaning
Speaker 1: up real good?
Speaker 4: Thanks?
Speaker 2: Yeah.
Speaker 4: Yeah, my niece has started calling me sasquatch.
Speaker 2: Yeah, there's a line. Do you just grunt er?
Speaker 4: Yeah? After a while I was Uncle Harry dude, and
Speaker 4: now I'm uncle Unhirry dude.
Speaker 1: Ye.
Speaker 2: Anyway, what you've been doing lately.
Speaker 4: I've been doing a bunch of conference speaking and a
Speaker 4: bunch of coding. It's fun to dig into all things
Speaker 4: dot net and dot net Aspire came about, which is
Speaker 4: really cool. It kind of brings open telemetry into view,
Speaker 4: and so it's been fun to dig into the DevOps
Speaker 4: parts of all the things doctor and kupernettes, but also
Speaker 4: fun to kind of dig into the code too. With
Speaker 4: open telemetry and dot net Aspire, it's been a lot
Speaker 4: of fun.
Speaker 1: Do you think more people are using open telemetry as
Speaker 1: a result of embracing dot net Aspire that otherwise would
Speaker 1: not have I.
Speaker 4: Think so open telemetry has kind of become the de
Speaker 4: facto standard for how we do logging, tracing and metrics,
Speaker 4: and so it's getting built into appliances and software frameworks.
Speaker 4: And so the really cool part is now we get
Speaker 4: to play with that in dot net as well. You know,
Speaker 4: we've already always had activities and interesting things there, but
Speaker 4: now because it's a very well paved paths it works
Speaker 4: out really well.
Speaker 1: Yeah, isn't Azure app insights using open telemetry in the
Speaker 1: background now?
Speaker 2: I think?
Speaker 4: So it becomes an open telemetry sink in a really
Speaker 4: elegant way. Yeah, it did speak its own protocol for
Speaker 4: a time, but yeah, we're all kind of moving towards
Speaker 4: open telemetry as the protocol for how to do these things.
Speaker 1: I think the first time that we heard about open
Speaker 1: telemetry was with Leila in Porto, and yeah, kind of
Speaker 1: kind of blew our mind. But I also thought about
Speaker 1: all of the third party telemetry packages that you could
Speaker 1: buy or subscribe to, you know, and what was their
Speaker 1: reaction to to it. And you don't really hear too
Speaker 1: much about these guys anymore, although I don't. I don't,
Speaker 1: but maybe you do.
Speaker 4: Yeah, the cool part is now that we kind of
Speaker 4: have reached a standard. Maybe we don't mind. You know,
Speaker 4: I can still pipe it off to Splunk or new
Speaker 4: Relic or wherever I want to send it, but now
Speaker 4: we're all speaking the same protocol.
Speaker 2: Yeah.
Speaker 4: So for example, I was futzing with engine X and
Speaker 4: I'm like, hey, I wonder if engine X can do
Speaker 4: open telemetry.
Speaker 2: YEP.
Speaker 4: I just pull in the engine X protocol and the
Speaker 4: way it goes and now I get tracing through Engine
Speaker 4: X on the way past. It's really cool.
Speaker 2: Just comes by default. Yeah.
Speaker 3: Yeah, And that's the whole thing is like it's part
Speaker 3: of the plumbing. It kind of it's there automatically, like
Speaker 3: you've got to fight to turn it off. It's just
Speaker 3: normally there and it complies all these standards, so it
Speaker 3: appears everywhere like that's the advantage. It's just because they
Speaker 3: open tell them stuff really comes out of the Linux world.
Speaker 2: It's just we had to adopt it. We're kind of
Speaker 2: late comers to this.
Speaker 4: Thing, right, And it's not so much that I have
Speaker 4: to fight to turn it off, but rather the moment
Speaker 4: that I handed a place to go, it'll just light up.
Speaker 4: And so until I tell it where to go, then
Speaker 4: it really doesn't impact my app at all.
Speaker 2: Yeah, and it's just it's yeah, it's just lost bits.
Speaker 2: They don't go nowhere, right, Yeah, that's a good point.
Speaker 1: And people may think that, you know, I don't want
Speaker 1: to turn something on that's going to take my cycles
Speaker 1: in the background, and you know, steel performance and blah
Speaker 1: blah blah.
Speaker 2: But you're right, unless.
Speaker 1: Unless you can figure it, it's just sitting there.
Speaker 2: Yeah.
Speaker 4: And there is a little bit of a sharp edge
Speaker 4: right there, because well, as I'm working with these activities
Speaker 4: inside of dot net, I may go reach for the
Speaker 4: current activity and if nothing's listening, it could be NOLL.
Speaker 4: So I do need to check to see if it's
Speaker 4: NOLL on the way past.
Speaker 2: Right, Yeah, we dot net programmers have gotten used to that. Yeah,
Speaker 2: nols will never hurt you. Well, maybe a little. Well.
Speaker 1: The language, though, sea sharp really evolved to handle knowles,
Speaker 1: didn't it.
Speaker 4: Yeah, now that we have noble reference types, this is
Speaker 4: really not a big deal.
Speaker 2: It's not a big deal.
Speaker 1: And the c sharp expressions to if noel do this,
Speaker 1: if not do that, I think you can't read them, but.
Speaker 2: Certainly is expressive.
Speaker 4: Well, the Coole syntax is that we just put a
Speaker 4: question mark before the dot and you know, coding and
Speaker 4: audio is always weird. Yeah, but like that same syntax
Speaker 4: works in JavaScript and in other languages as well. So
Speaker 4: I think as a programming community we've kind of figured
Speaker 4: out that NOLL handling is easy. You just question mark
Speaker 4: first and it just works.
Speaker 1: It's great, right, And if you're using visual Studio, Copilot's
Speaker 1: going to tell you the rest of it anyway. Just
Speaker 1: hit tab, Yeah, question mark dot tab.
Speaker 4: There you go.
Speaker 2: What could happen?
Speaker 3: Yeah, it's funny how much we're copilots now, reflect like
Speaker 3: already it's only been a couple of years and we're
Speaker 3: already like, yeah, you just do it this way.
Speaker 2: Yeah. I like Copilot finish that for me. I love that.
Speaker 4: In the latest VS Code there's an experiment where Copilot
Speaker 4: has a Clippy icon.
Speaker 2: Ah. Oh no, we kept threatening to bring that back.
Speaker 2: Why not?
Speaker 3: Why what's wrong with a paper clip? Animated paper clips
Speaker 3: are your friend? No?
Speaker 2: No, they're not.
Speaker 3: Can't have a little fun, They're evil? Yeah, they the
Speaker 3: whole trick there. You know what went wrong with Clippy
Speaker 3: back in the day is the interruption. You think about
Speaker 3: how much smarter we are with you access today, Well,
Speaker 3: how carefully studio tries not to interrupt you, tries to
Speaker 3: still provide the hint, the swiggle or the little light
Speaker 3: up tool or all of those things, that there's something
Speaker 3: I could help you with here without actually interrupting your food.
Speaker 1: Well, is it that, Richard, or is it that we've
Speaker 1: all become much more eighty eight so we don't notice
Speaker 1: it because everything interrupts us all the time. I tend
Speaker 1: to think it's somewhere in the middle degrees of interruption.
Speaker 1: I thought Clippy died a long time ago. You know, hey,
Speaker 1: it did. Is that Is that a business graver or
Speaker 1: a personal grave you're digging?
Speaker 2: Can I help you with that?
Speaker 4: And what was hilarious about Clippy was how irrelevant the
Speaker 4: suggestions were, Right, I think, you know, co Pilot is
Speaker 4: so much more relevant now and that can be really
Speaker 4: really helpful.
Speaker 3: And Aaron lies the point, right, It's like, I don't
Speaker 3: mind you interrupting me if you're actually providing me help,
Speaker 3: like you're going to shorten my effort. I just you know,
Speaker 3: we're all pretty skeptical of that because we've had pretty
Speaker 3: bad experiences with right, well had options.
Speaker 1: Yeah, I mean AI for coding help in general is
Speaker 1: really good.
Speaker 2: Yeah.
Speaker 1: I was just today I'm working on an old project
Speaker 1: that needs to be brought into the you know, twenty
Speaker 1: first century. Starting there with, there was no models. You know,
Speaker 1: the models were part of a SPX pages that were
Speaker 1: all combined with Java script, and so there was no
Speaker 1: fresh model. So the first thing I had to do
Speaker 1: is go to the database. And I know that there's
Speaker 1: ways to scaffold that, but I just did a create
Speaker 1: two clipboard for a table, pasted into chat GPT and said, hey,
Speaker 1: make me a class from this. I was like, yeah,
Speaker 1: no problem.
Speaker 3: It's great because conversational mindset with your software is just interesting, right, Yeah,
Speaker 3: And I think the interesting part of that is you
Speaker 3: would do this with a person anyway, and you tend
Speaker 3: to make better software when you explain yourself.
Speaker 2: Yeah.
Speaker 3: How many times have I gone to write something in
Speaker 3: stack overflow and the process of writing it answered it? Yeah,
Speaker 3: and then I've never posted it absolutely, And so this
Speaker 3: tool stimulates that behavior really well. Rubber ducking.
Speaker 2: You're ducking all the time.
Speaker 4: Interesting thing about that process though, Yeah, I spent the
Speaker 4: time kind of interviewing myself to figure out the proper question.
Speaker 4: And now that I'm on stack overflow and I have
Speaker 4: figured it out part of me wants to just ask
Speaker 4: the question and then answer it because good for tomorrow
Speaker 4: or next week, some ignorant developer me is going to
Speaker 4: ask that question again, and so can I pave the
Speaker 4: path a little bit better for the next generation m.
Speaker 2: M, yeah, the next generation of you.
Speaker 1: Yeah.
Speaker 4: What's really annoying is when I'm really struggling with something
Speaker 4: and I go to Google it and I find this
Speaker 4: really cool post on my blog explaining it, and I'm like,
Speaker 4: oh wait.
Speaker 3: I figured this out a while Well that was Handsoman's line, right,
Speaker 3: I'm just writing this down so I don't have to
Speaker 3: remember it because I'm.
Speaker 1: Not gonna yea And then anytime anybody asks him a question,
Speaker 1: he just answers it with a ur l.
Speaker 3: Yeah it's not real sociable, but okay, now sufficient.
Speaker 2: True enough?
Speaker 3: So you you've already Carl's already said scaffold, but I
Speaker 3: heard it's a dirty word with dot net aspire. What
Speaker 3: is is dot aspire scaffolding or is it a framework?
Speaker 2: Like? Because what is it?
Speaker 4: And that's one of the weird things is as we
Speaker 4: look at dot net Aspire, we kind of go, what
Speaker 4: is it? You know, what are we trying to solve
Speaker 4: here what is and we say words like open telemetry
Speaker 4: and service discovery and all those kind of get around
Speaker 4: the topic. But yeah, it is kind of difficult to quantify.
Speaker 4: The biggest purpose of dot Net Aspire is to help
Speaker 4: us fall into the pit of success, right, to help
Speaker 4: us build distributed software. And so there's a whole bunch
Speaker 4: of stuff in there to facilitate this, all of the
Speaker 4: web's best practices like open telemetry and service discovery and
Speaker 4: injecting environment variables to do cool things. But as we
Speaker 4: start peeling the onion there, then we end up with
Speaker 4: just really cool experiences that allow us to do really
Speaker 4: fun things. And so in there is launching projects all together.
Speaker 4: Project tie did this for us back in the day,
Speaker 4: where we could say, hey, I want to get this
Speaker 4: project to call that project, and I don't want to
Speaker 4: have to figure out open ports, just like kind of
Speaker 4: do that. And so then we also get really cool
Speaker 4: container orchestration where we can say and start this container
Speaker 4: as part of it, and if it's a database container,
Speaker 4: let me inject in the data that I need to
Speaker 4: be able to spin it up. And so now we
Speaker 4: can orchestrate containers and dot net projects and command line
Speaker 4: executables and inject environment variable so that they can all
Speaker 4: get to talk to each other. And that's a big
Speaker 4: piece of it. But then we also have kind of
Speaker 4: the piece coming back where we can say, well, let's
Speaker 4: collect all the logs and traces and metrics and surface
Speaker 4: them in a really cool discoverable dashboard so that no
Speaker 4: longer do you have to figure out how does this
Speaker 4: call that, what was the error there, which console window
Speaker 4: was it? And so there's that part of it, But
Speaker 4: then there's also another part of it of simplifying dot
Speaker 4: net experiences. So we have a bunch of two projects
Speaker 4: that it creates, the app host project, but also the
Speaker 4: service defaults project. And in that service defaults project, it
Speaker 4: will rig up health checks, and it will rig up
Speaker 4: open telemetry, and it will rig up all kinds of
Speaker 4: interesting things. But unlike some of the other places where
Speaker 4: they kind of hide that away, they're actually giving us
Speaker 4: the code, so if we have different opinions, we can
Speaker 4: express those opinions in there too. And then as part
Speaker 4: of that, there are dot net Aspire components that just
Speaker 4: make connection strings kind of melt away, so no longer
Speaker 4: do I need to rig up the details of how
Speaker 4: this connects to that or even how this connects to
Speaker 4: that database. I just kind of say, hey, I would
Speaker 4: like this Aspire component that hooks me to, for example,
Speaker 4: Postcress or redd Us, and then with an app host,
Speaker 4: I say, oh, and by the way, spin up postgrass
Speaker 4: or redd Us. And now there aren't connection strings in
Speaker 4: my application at all.
Speaker 2: Right.
Speaker 4: Dot net Aspire just kind of handles that with environment
Speaker 4: variables poked into it. And so it's all of these pieces.
Speaker 4: It's the dot net best practices at the service discovery,
Speaker 4: it's the launching multiple things at the same time. It's
Speaker 4: the simplifying configuration pieces. And because it's all of those
Speaker 4: things kind of wrapped into one, then we kind of go,
Speaker 4: well what is this? And it's really easy then to say, well,
Speaker 4: this is huge and overwhelming, and I have opinions on
Speaker 4: that and I don't want to do that. But what's
Speaker 4: beautiful about dot net Aspire is that I can use
Speaker 4: as much or as little of it as I want.
Speaker 4: And so if I like this opinion, I can do that,
Speaker 4: and if I don't like this opinion, I can do
Speaker 4: something else.
Speaker 1: Yeah, and the thing that the red flag goes off
Speaker 1: in my head probably a lot of listeners who aren't
Speaker 1: using this and who don't have experience with it, is, well,
Speaker 1: how am I going to know how to do that?
Speaker 2: Like?
Speaker 1: How am I going to say? Am I going to
Speaker 1: be ab test you know, my way versus Aspire's way?
Speaker 1: And am I going to screw anything up if I
Speaker 1: change any configuration?
Speaker 2: Yeah?
Speaker 1: You kind of have to understand the whole thing. It's
Speaker 1: kind of like co generators. You know, stuff that generates code.
Speaker 1: You use it and it's great, but if you don't
Speaker 1: really know what it's generating.
Speaker 2: Should you?
Speaker 1: How do you trust it? How do you know when
Speaker 1: things go wrong what to do, how to fix it?
Speaker 1: So there's some trepidation I think among some people to
Speaker 1: jump in because they think, oh, this is going to
Speaker 1: do all this work for me. Where am I going
Speaker 1: to look when something doesn't do what I wanted to do?
Speaker 4: And the cool part there is, for the most part,
Speaker 4: the majority of open telemetry can be a development tool.
Speaker 4: So it's not like I'm expressing opinions into production that
Speaker 4: I may not agree with or may do ut understand.
Speaker 4: But instead I can say, well, let me see if
Speaker 4: this makes my developers more productive, and I'll deploy the
Speaker 4: way I deploy today, or maybe I'll even rig up
Speaker 4: connection strings the way I do it today. But let
Speaker 4: me in development start up all the micro services that
Speaker 4: I need to be able to accomplish this, startup containerized
Speaker 4: data stores or other dependencies. And if that's helpful, then
Speaker 4: that's great. Maybe I can retire the doctor composed file
Speaker 4: that I was using before, But if it isn't, then yeah,
Speaker 4: it's just a new get package. I don't need to.
Speaker 4: You know, I had a friend that talked about, well,
Speaker 4: it's kind of nice, but you have to make it
Speaker 4: look like Chicago. Well what if I wanted to make
Speaker 4: it look like Chicago? And d net Aspire has some opinions,
Speaker 4: but doesn't really force those opinions on you. If you
Speaker 4: don't want it to look like Chicago, then don't.
Speaker 2: Okay Chicago meaning the version of Windows.
Speaker 4: Well, it was like, well, I can configure this one
Speaker 4: little thing and I can adjust my car in a
Speaker 4: certain way, But now I have to make the skyline
Speaker 4: look like Chicago. I see, And what if I don't
Speaker 4: like Chicago? What if I like New York or what
Speaker 4: if I like the country?
Speaker 1: Right, But it's not really a visual style, it's a yeah,
Speaker 1: it's stuff that helps you on the back.
Speaker 2: End with your plumbing code.
Speaker 4: Really yeah, yeah, exactly. It's configuration details, not so much
Speaker 4: user experience details.
Speaker 1: I like to think of Aspire as a sort of
Speaker 1: a gigantic visual studio template, you know, if you think
Speaker 1: of it that way, like when you when you go
Speaker 1: to create a new project, you create a Blazer project,
Speaker 1: you can create a you know, Docker whatever you're going
Speaker 1: to do, asp Net, empty core, and there's some stuff
Speaker 1: that's set up for you there to make it easy
Speaker 1: for you to get started. Yeah, if it's a Blazer project,
Speaker 1: you're going to delete the counterpage, and you're going to
Speaker 1: delete the weather page, or you might not even include
Speaker 1: those at all, but at least you know where you're starting, right,
Speaker 1: And I think of Aspires like that. When you create
Speaker 1: an Aspire project, Yeah, you got some checks and some
Speaker 1: options and things, and then you've started and it's already
Speaker 1: done so many things for you that you probably are
Speaker 1: going to do yourself at some point, but they're already done.
Speaker 1: So that makes it easy to discover how Aspire works,
Speaker 1: just by creating a project and seeing what you get.
Speaker 4: Yeah, the new project template for Aspire is amazing. One
Speaker 4: of the things that I do. And the talk that
Speaker 4: you actually saw in Tulsa was highlight how you might
Speaker 4: get started with an existing project as well. It's not
Speaker 4: like you can't do dot net Aspire inside of an
Speaker 4: existing thing. And inside an existing project, you already have
Speaker 4: configuration details, you already have logging, you already have connection strings,
Speaker 4: and so you can just not use those opinions from
Speaker 4: dot net Aspire and instead just use it as an
Speaker 4: open telemetry sink a dashboard.
Speaker 1: I think I said this before on a different show,
Speaker 1: but one of my customers we did that for them.
Speaker 1: We added Aspire to their existing application. The only problem
Speaker 1: we really had, ironically was with Polly HM, you know,
Speaker 1: because of the difference between using polydirectly and then using
Speaker 1: the HTDP request factory. I think it was the HDP
Speaker 1: client factory. Yeah, yeah, those Poly guys, which is I know,
Speaker 1: good thing. We're not like them, I know.
Speaker 2: Screw those guys.
Speaker 3: But he's in poll part of a spire like it's
Speaker 3: deployed a lot as part of the scaffolding.
Speaker 4: It's one of the best practices that it pulls in
Speaker 4: part of the service defaults. And if we like that opinion,
Speaker 4: we definitely can and if we don't, we can rip
Speaker 4: it up.
Speaker 2: Right.
Speaker 1: But here's the thing, though, Polly has a project. If
Speaker 1: you have it in your project, right, and then you
Speaker 1: go to using HTDP client factory that uses the stuff
Speaker 1: from Polly that's in dot net core. So it's already
Speaker 1: doing or doing a resilient strategy. Now you've got to
Speaker 1: pick one or the other. That's the thing.
Speaker 2: Too many resilient strategies at once.
Speaker 4: Yeah, yeah, yeah, it's like too many cashes.
Speaker 2: Yeah, you already have a cash? Would you like to
Speaker 2: cash the cash? No, you really shouldn't do that. That's
Speaker 2: not a good idea. Oh, not a good idea.
Speaker 3: Yeah, we should take a break for a minute, friends, Yeah,
Speaker 3: let's take a break. We'll be right back after these
Speaker 3: very important messages. And as a reminder, if you don't
Speaker 3: want to hear these messages, you can become a patron
Speaker 3: at Patreon at dot netroocks dot com for five bucks
Speaker 3: a month and you get an ad free fee.
Speaker 2: All right, here we go.
Speaker 1: Did you know that you can work with AWS directly
Speaker 1: from your ID. AWS provides toolkits for visual studio, visual
Speaker 1: studio code, and jet Brains rider. Learn more at Aws
Speaker 1: dot Amazon dot com. Slash Net, slash Tools, and we're back.
Speaker 1: It's dot in a Rocks and Carl Franklin, that's Richard Campbell,
Speaker 1: hey in the fine country of Canada, indeed, and our
Speaker 1: friend Rob Richardson, who we're talking about dot net Aspire
Speaker 1: in detail now, but I got a feeling that we're
Speaker 1: you know, we've been talking about more things than just Aspire.
Speaker 1: But the latest template is what you were just talking about,
Speaker 1: the latest visual studio template.
Speaker 4: Yeah, it's really cool because getting started with dot net
Speaker 4: Aspire is super easy. I used to have to install
Speaker 4: a visual studio workload. That's no longer a thing in
Speaker 4: using dot net Aspire in net nine and so now
Speaker 4: I just file new project and I there's a dot
Speaker 4: net Aspire starter template. I can check whether I want
Speaker 4: to include Reddus or not. If I include Rettus, then
Speaker 4: I need to have a container orchestrator like Podman or
Speaker 4: Docker desktop. And if I unchecked that, then it just
Speaker 4: won't include those bits. I can fire it up and
Speaker 4: I can get a feel for how dot net Aspire
Speaker 4: might integrate into an application. It's a great way to
Speaker 4: get started, really really easily.
Speaker 3: And we just got to We just had a version
Speaker 3: number update Right, it's nine point one. Now, I mean
Speaker 3: they started with nine cheating.
Speaker 4: Well they started with eight. But yeah, now that we
Speaker 4: have nine point one, it's pretty cool.
Speaker 2: Okay, what's the point one?
Speaker 4: The number after nine?
Speaker 2: Nice?
Speaker 4: What I found really cool is even the upgrade from
Speaker 4: dot net eight to dot net nine or dot net
Speaker 4: Aspire eight to nine wasn't all that significant. It wasn't
Speaker 4: all that changing. We now had the ability to wait
Speaker 4: for services to start up, which is really cool. But
Speaker 4: what's new in nine dot one? The command that you
Speaker 4: need to run update.
Speaker 3: It I see in the notes here it's like Polish,
Speaker 3: Polish Polish, Like they're just making a little easier for
Speaker 3: things to have to happen.
Speaker 4: There's a bunch of new features in nine point one.
Speaker 4: The one I'm most excited about is that you can
Speaker 4: start services on demand, rather than having them start at
Speaker 4: the beginning as the app post starts. But you can
Speaker 4: now do nested resources. For example, you create a database server,
Speaker 4: and then you create a database on that server. The
Speaker 4: database is now nested under the server. You can now
Speaker 4: clear and download the logs and traces, which is really cool.
Speaker 4: They're still not durable, they're not still not saved to memory,
Speaker 4: but you can clear them and download them, and so
Speaker 4: if you download them now you can compare them to
Speaker 4: what you did yesterday. The resource can fig screens on
Speaker 4: the dashboard now show not only the configuration details, but
Speaker 4: which resources depend on them, which resources it depends on,
Speaker 4: and so that can kind of help you discover dependencies.
Speaker 4: Previously you could emulate Azure storage, which with an Azurite container,
Speaker 4: but now there's emulators for Azure Service, Bus, Cosmos dB,
Speaker 4: and Signal R. There's some testing improvements, like you can
Speaker 4: add disabled randomized ports and enable the dashboard during tests.
Speaker 4: That can be really helpful, and the release notes doesn't
Speaker 4: call it out. I'm sure everything is more, better, faster.
Speaker 4: They're always doing performance improvements in everything. It was so
Speaker 4: amazing to me in dot net six how span of
Speaker 4: t just made everything faster just by upgrading. So I
Speaker 4: wouldn't doubt that there are some performance enhancements here too.
Speaker 4: But the one I'm the most excited about is starting
Speaker 4: services on demand. For example, I don't want my Azure
Speaker 4: functions to start every time. I mostly want to work
Speaker 4: on the website, so now I can figure the function
Speaker 4: apps to not start automatically. And instead when I started
Speaker 4: the app post, the website starts up and the other
Speaker 4: ones are stopped, and so I can just go push
Speaker 4: play if I need them. But in most cases I
Speaker 4: just I don't need those resources, and so it can
Speaker 4: work out really great. These are a lot of new
Speaker 4: things in dot net Aspire nine point one. But the
Speaker 4: cool part is, Yeah, the upgrade is just you know,
Speaker 4: upgrade and everything that you've used before. There's no breaking changes,
Speaker 4: I believe, and so the upgrade is just super simple,
Speaker 4: and if you happen on features that are really interesting
Speaker 4: to you, it can be really great.
Speaker 2: Yeah.
Speaker 3: I think the dashboard is a thing that hooks people. Yeah,
Speaker 3: because you're going to need to build one. So the
Speaker 3: fact that it just generated for you and then you
Speaker 3: can tweak it is a great hook besides all the
Speaker 3: other stuff.
Speaker 4: And here's where my opinions probably differ from others opinions.
Speaker 4: But I would say that that dashboard is great for
Speaker 4: local development, but you probably want to use a different
Speaker 4: dashboard in production. That dashboard doesn't have any durable storage.
Speaker 4: There are plugins that allow you to get durable stores,
Speaker 4: but it's like I found an error that happened yesterday.
Speaker 4: It stores it in memory and that's already gone.
Speaker 2: Oh.
Speaker 4: It also collects all of the configuration details for all
Speaker 4: of your applications. And so if we deployed this and
Speaker 4: put it in production and accidentally exposed it publicly, then
Speaker 4: we've just exposed the entirety of the configuration of all
Speaker 4: of our application.
Speaker 2: Right the black hats, thank you for your service.
Speaker 4: Yes, But the cool part is you can use this
Speaker 4: dashboard as a standalone container. And so if you have
Speaker 4: a Python app, or I actually have a JavaScript front
Speaker 4: end to React app in my demo, I'm doing view,
Speaker 4: which then pipes all the data into open telemetry. And
Speaker 4: so a View front end and a Python back end
Speaker 4: using dot net Aspyrus dashboard without dot net running? Are
Speaker 4: you really cool? Hey?
Speaker 1: Say where are you from anyway?
Speaker 3: You know it's called dot net is fire. Yeah, yeah,
Speaker 3: I don't know what you think you're up to.
Speaker 4: Right, Well, the cool part is it just becomes an
Speaker 4: open telemetry think.
Speaker 1: So there's no Windows servers here anywhere, It's not, it's
Speaker 1: just dot net is all about it.
Speaker 3: Like you can't if you're deploying any the cloud, you're
Speaker 3: still deploying on a Windows instance. It's you're literally throwing
Speaker 3: money away, right, Like if you're running modern dot net,
Speaker 3: it runs on a Linux instance and it's literally like
Speaker 3: a twenty five percent price cut.
Speaker 1: Yeah. The point there was that there's still a large
Speaker 1: group of people who haven't looked in dot net in
Speaker 1: fifteen years because they think it's all about Windows. Yeah,
Speaker 1: and it's kind of stinks that that branding has stuck.
Speaker 3: Well and it's a non trivial mom folks that are
Speaker 3: still on you know, four or five two, Like they're
Speaker 3: for a reason, They've got dependencies, They're not going to
Speaker 3: give up their web forms, Like it's just not that simple.
Speaker 2: There's a lot of work done.
Speaker 4: Yep, I agree. I have a dot net for it's
Speaker 4: now dot Net four seven app runs with Crystal Reports
Speaker 4: and Windows forms and it's like, yeah, that's not going anywhere.
Speaker 2: Oh man, oh that hurts.
Speaker 3: Yeah, no kidding, Like Crystal Reports. You said that with
Speaker 3: words out loud, like what the what the what?
Speaker 1: I remember I remember being at a v bits and
Speaker 1: it was in the early days of Internet Information server
Speaker 1: and a guy from Crystal Reports came up to me
Speaker 1: and he said, Hey, we've got Crystal Reports running on
Speaker 1: the back end in iis isn't that awesome? And I'm like,
Speaker 1: oh my god, how much memory do you have to
Speaker 1: have to have that behemoth of an application running in
Speaker 1: the background, which, by the way, was apartment threaded, so
Speaker 1: you could only use it one at a time.
Speaker 2: Oh my god, what a nightmare. Yeah.
Speaker 4: I found a similar app where they were launching Excel
Speaker 4: from the web server and I'm like, yeah, I'm not
Speaker 4: sure if you get this.
Speaker 2: It's just because you could, doesn't mean you should.
Speaker 3: And then and then it would crash or fail to close,
Speaker 3: and so you'd end up with multiple instances of Excel
Speaker 3: on the machine. Yeah, and then you eventually write an
Speaker 3: Excel watcher that pokes in yeah to task manager and
Speaker 3: kills orphan a instance of Excel. Why do I know
Speaker 3: this stuff? Why is this stuff? Fill in my head?
Speaker 3: I remember I did that.
Speaker 1: You know, I tried it, and you know it was possible,
Speaker 1: but nobody really understood the whole apartment threading thing.
Speaker 2: Yeah, I'm sorry, I want to bring us back to
Speaker 2: the nineties.
Speaker 4: But geez, And that's really cool. Is you set all
Speaker 4: that aside and you can run dot net inside of
Speaker 4: Linux containers in community hosting and it is just amazing.
Speaker 4: Dot Net has come a long way.
Speaker 2: Certainly has well.
Speaker 3: This sort of explains the spire, right, It's like, this
Speaker 3: is the language that once upon a time was for
Speaker 3: building client server apps, and then you know, evolved into
Speaker 3: web as well, and now it's cloudland, and so give
Speaker 3: us a set of defaults that are for cloud Land.
Speaker 1: Should we take a moment to just praise Microsoft for
Speaker 1: making dot Net nine so much more performance crazy and
Speaker 1: memory less memory use. It's just ridiculous.
Speaker 4: Dot Net six was that way as well. It was
Speaker 4: a major sure was a breakthrough performance boost. And it's
Speaker 4: really cool because upgrading from dot net three to one
Speaker 4: all the way up to dot Net nine is just
Speaker 4: really easy. You know, change the version number in the
Speaker 4: cs prog files, update new get packages, and you're there.
Speaker 1: Yeah, it's that whole update new get packages thing that
Speaker 1: usually people have a problem with, only because some of
Speaker 1: those new get packages don't exist anymore. They don't work
Speaker 1: in dot net core or whatever. Yeah, do it nine rather, Yeah, Yeah.
Speaker 4: Dot standard was an interesting dilemma. And yeah, now that
Speaker 4: we've set that aside too, yeah, it's just smooth.
Speaker 3: In Well, it's a good reminder that dot Net standard
Speaker 3: wasn't for US.
Speaker 2: It was actually for Microsoft.
Speaker 3: Yeah right, it was Microsoft trying to get all of
Speaker 3: their internal versions of dot net aligned, and we may
Speaker 3: have been the beneficiaries of it, but once that alignment
Speaker 3: was done, they really didn't care about anymore.
Speaker 4: It was no longer necessary.
Speaker 2: Yeah, just wasn't the thing. And you know that.
Speaker 3: It's also why xammal standard failed because they couldn't get
Speaker 3: all of those internal versions of Exammal aligned.
Speaker 1: Wishful thinking, like running Excel in iis.
Speaker 2: That's going to be.
Speaker 3: Burned in like a norphan Excel instance on a server
Speaker 3: somewhere somewhere.
Speaker 2: Wow.
Speaker 3: Yeah, I'm just double checking the version numbers, and four
Speaker 3: eight one last updated August of twenty two, so it's
Speaker 3: two and a half years since that Windows only frame
Speaker 3: version was updated.
Speaker 2: Yeah.
Speaker 3: I feel for folks that have to use it, because
Speaker 3: there's folks who have to use it in the two
Speaker 3: ways about it, right, But there are I, meantime, living
Speaker 3: over here in dot net Nineland, where things are really.
Speaker 2: Fast and well real.
Speaker 1: Cloud friendly, I still have to write tools that work
Speaker 1: with Windows that only work with Windows every once in
Speaker 1: a while. And thank god the dotnat framework is there
Speaker 1: because damn yeah yeah, send keys.
Speaker 2: I love send keys. Yeah, that's amazing what that can do.
Speaker 4: I also love how diverse it is. You know, previously,
Speaker 4: when I wanted a really little thing, I would have
Speaker 4: to reach for nude, and now I can use minimal
Speaker 4: ap eyes for that.
Speaker 3: Yeah yep, yeah, And you don't have to open studio.
Speaker 3: You really can do what you need to do inside
Speaker 3: of code if you want to, like or nope, pad
Speaker 3: we've stripped away the battleshipness if you don't value the
Speaker 3: battleship like I, studio is my happy place. But maybe
Speaker 3: it's just because I'm old. I just feel like that's
Speaker 3: the tool i'd want to point a beginner too, because
Speaker 3: it has everything in it already. You don't have to
Speaker 3: roll your own you don't have to figure that stuff out.
Speaker 3: The problem is it's intimidating. It's like a cockpit of
Speaker 3: a seven forty seven. Inside of there, everything's there, you're
Speaker 3: just afraid to touch any of it.
Speaker 4: And you don't have to collect all the plugins. With
Speaker 4: vs code, it's like it's completely useful by itself.
Speaker 2: You have to assemble a deb environment.
Speaker 4: Yeah, but the moment that you start doing anything, really
Speaker 4: you want a collection of plugins that do all kinds
Speaker 4: of wonderful things.
Speaker 3: It's exactly it. And for a beginner that's a challenge.
Speaker 3: Not that we haven't made it easier. There are good
Speaker 3: templates and things like that.
Speaker 4: But and vus code's also pretty good at noticing, Hey,
Speaker 4: it looks like you're doing this. Is this the plug
Speaker 4: in that you want to help you with that?
Speaker 1: So it's like Clippy, that's what you're saying.
Speaker 3: This is clippy? Is that a code? And it wants
Speaker 3: to help you get a plug in that's going to
Speaker 3: make your life better. Weird, it's a weird time to
Speaker 3: be a software developer man, and then probably the conversations
Speaker 3: of my software.
Speaker 2: But I have a digital duck.
Speaker 1: It's a good time to be an old timer like
Speaker 1: me though, because in you guys, because we've lived through
Speaker 1: the whole progression of it and we felt the pain
Speaker 1: and we saw the problem areas, and we feel elated
Speaker 1: that I feel like I could do anything right now.
Speaker 1: It's like there's nothing, there's no challenge. Somebody could say hey,
Speaker 1: could you write? And I say, yes, hey could you possibly?
Speaker 2: Yes? Yeah?
Speaker 4: And I love it too because my stakeholders, my users
Speaker 4: are starting to get really creative here they are chatting
Speaker 4: with chat GPT and it's generating all kinds of stuff
Speaker 4: and they're like and now they're just thinking really big, Yeah, hey,
Speaker 4: can you create this thing that automatically does it? And yeah,
Speaker 4: I love getting to build really cool experiences like that.
Speaker 4: It's a lot of fun.
Speaker 1: It's a lot of fun. It's like, yeah, it's a
Speaker 1: good time.
Speaker 2: Yeah, really good time.
Speaker 4: It's kind of open their creativity.
Speaker 1: So what haven't we talked about that's lighting your fire
Speaker 1: with Aspire?
Speaker 3: What are the rough bits of Aspire? Like what do
Speaker 3: you still have to sit down and fight with to
Speaker 3: be successful?
Speaker 4: So that Aspire has some conventions that allow you to
Speaker 4: automatically rig up dependencies, and sometimes those conventions can be
Speaker 4: a little bit weird, especially as I'm starting to talk
Speaker 4: about deployment. Deployment to Azure container apps is really really
Speaker 4: well baked. Deployment to Kubernetes is a little bit less baked,
Speaker 4: but still doing pretty good. But when I start getting
Speaker 4: outside of just those standard to Azure deployment mechanisms, then
Speaker 4: it's like, well, so how do I want to deploy it?
Speaker 4: And as I'm deploying, how do I match the conventions
Speaker 4: that dot not Aspire Local dashboard was doing for me automatically.
Speaker 4: It's like, well, now I need to form this environment
Speaker 4: variable using exactly the syntax to be able to get
Speaker 4: it to inject the dependencies just so. And so it
Speaker 4: feels like deployment is that sharp edge still sure?
Speaker 3: And what's the strongest deployment path right now? Is it's
Speaker 3: containers more than Kubernetes. Is like az your container service, or.
Speaker 4: It's Azure Container apps, which is Azure's abstraction over the
Speaker 4: top of Kupernetes.
Speaker 2: Right.
Speaker 4: You know, apparently Kupernetes yembo files are too complicated, so
Speaker 4: let's all invent our own.
Speaker 3: Lots of people struggle with them, rob like, let's be fair.
Speaker 4: Yeah, And fargate is interesting in this way as well
Speaker 4: on AWS, where it's kind of an abstraction over top
Speaker 4: of Kupernetes. Right, but as your container apps is Microsoft
Speaker 4: substraction over Kupernetes. And so that's their very very well
Speaker 4: paved path.
Speaker 3: Well, and I do appreciate the idea of, hey, you
Speaker 3: probably don't need anything exotic in containers, so let me
Speaker 3: just give you a default set of configuration, which if
Speaker 3: you end up needing something exotic, you can haul all
Speaker 3: this back out known it yourself, but since you probably don't,
Speaker 3: you're in the eighty ninety percent case that defaults are
Speaker 3: going to be fine for you.
Speaker 4: Yeah, And the cool part is it will automatically package
Speaker 4: up my dot net projects into containers and automatically push
Speaker 4: them to Azure container registry and rig up other best practices,
Speaker 4: like it'll put connection strings into key vault and day.
Speaker 4: It does all the best practices, which is great, right
Speaker 4: for you if you subscribe to that as your deployment mechanism.
Speaker 3: I love key vault, Yeah, and it's a good thing
Speaker 3: to use, but it's also not trivial steps and it's repetitive.
Speaker 3: So the fact that the tool will just do it,
Speaker 3: presume you're using qu vault, give me the credentials off
Speaker 3: we go is good.
Speaker 2: Yeah.
Speaker 3: Just again, it's that pitt success thing that Rob mentioned
Speaker 3: up front that we've never used that term before, but
Speaker 3: you know, I'm going to let you own it today, Rob.
Speaker 3: There you Yeah, just doing all the right things. That
Speaker 3: to me is what really gets me excited about a
Speaker 3: spire is like, the right way to deal with telemetry
Speaker 3: is this way, and the right way to deal with
Speaker 3: secrets is this way and the right we'll do cashing,
Speaker 3: and you still have choices like which cash do you
Speaker 3: want to use? You like reddits final, let's use reddis
Speaker 3: you want to last a gal to use elastic like
Speaker 3: it's just youuration setting.
Speaker 1: Are there architectures where aspired doesn't make that much sense.
Speaker 4: If you already have a whole lot of opinions about
Speaker 4: how you want to do logging, metrics and tracing, you
Speaker 4: already have a whole lot of opinions about how you
Speaker 4: want to do deployment. If you have a large monolith
Speaker 4: that you know really doesn't have a whole lot of
Speaker 4: web request dependencies, yeah, like a single server, then it
Speaker 4: may not make sense because well, you don't need the
Speaker 4: service discovery, you don't have services. You don't need the
Speaker 4: configuration or deployment piece because you already have those solved.
Speaker 4: So you really don't need a dashboard that helps you
Speaker 4: aggregate things because you don't have pieces.
Speaker 1: I'm thinking of a Blazer server web app where you
Speaker 1: can scale out just by adding more servers and it's
Speaker 1: completely invisible to you, and you know the servers, the
Speaker 1: users have affinity for one server or another. There really
Speaker 1: isn't much that you need to do. And like you said,
Speaker 1: there's no service layer, so yeah, you know, everything's sort
Speaker 1: of baked into this one thing. I guess that's the
Speaker 1: thing I'm thinking about.
Speaker 4: Yeah, if you already have a whole lot of opinions,
Speaker 4: you've already climbed these hills, then maybe it isn't necessary.
Speaker 3: Right, Yeah, And by that token is just more of
Speaker 3: a greenfield tool than a brownfield.
Speaker 4: To I would argue that it's not. It's more of
Speaker 4: a web tool than a greenfield or brownfield. I've added
Speaker 4: it to a bunch of brownfield projects. I've also used
Speaker 4: it in a bunch of greenfield projects, and it's just
Speaker 4: really nice to be able to discover all the things
Speaker 4: you know. In visual studio, you write click on the
Speaker 4: solution manager and you say configure startup projects, and that
Speaker 4: dialogue is nasty. Just having just being able to say
Speaker 4: goodbye to that dialogue is worth the weight in gold.
Speaker 2: Yeah right, yep, I agree.
Speaker 4: If you use dot net Aspire for nothing else than
Speaker 4: being able to launch all your projects simultaneously, it is
Speaker 4: worth it.
Speaker 2: Yeah, yep, that's interesting, it's good.
Speaker 3: It's funny. The plumbing pain. We still have building building
Speaker 3: software in studios.
Speaker 1: So multiple projects, multiple machines, clients, servers, services. That's where
Speaker 1: Aspire is really going to help you.
Speaker 4: Yeah, and container orchestration like as part of launching this solution,
Speaker 4: I also want to launch all of those containers for
Speaker 4: data stores or external services or whatever.
Speaker 2: What does it do to Kubernetes.
Speaker 4: The cool part is there's a project called Aspirate Aspirate
Speaker 4: I'm not quite sure how to pronounce it that allows
Speaker 4: you to connect dot Net Aspire deployment into Kubernetes. And
Speaker 4: it has two different modes. The one is it will
Speaker 4: do the same deployment like you do to Azure container apps,
Speaker 4: where it will automatically do all the things. And the
Speaker 4: other mode is where it scaffolds out the Kubernetes bits
Speaker 4: that you need, and it doesn't scaffold out all the dependencies.
Speaker 4: You know, it won't spin up your Rettis cluster or
Speaker 4: your postcrests or sql server database, but it will get
Speaker 4: all of your dot Net projects into place in a
Speaker 4: really elegant way. So I really like to use Aspirate
Speaker 4: to scaffold out my deployments and services, and then I
Speaker 4: already have ingress and secrets and can fig maps associated
Speaker 4: with other places then when I get to Kupernetes, I
Speaker 4: just keep ctl to apply and I've got my all
Speaker 4: of my services that dot net Aspire was orchestrating locally
Speaker 4: orchestrated by Kupernetes in production.
Speaker 1: So it snugges up to Kubernetes nicely when you already
Speaker 1: have that infrastructure. But if you don't have a Kubernantes infrastructure,
Speaker 1: does it make sense to you know, Okay, we're going
Speaker 1: to use Aspire, but we're also going to use Kubernetest.
Speaker 2: Does that make sense?
Speaker 4: They are super correlated. But the cool part is typically
Speaker 4: when you're reaching for a whole lot of micro services,
Speaker 4: you know, if you embrace that micro service architecture, then
Speaker 4: you need the ability to host all of those pieces. Sure,
Speaker 4: and if you're starting to look at I'll use Azure
Speaker 4: as my cloud of choice. If you're looking at your cloud, okay,
Speaker 4: and Azure, I could run each of those micro services
Speaker 4: as an Azure web app. But now I have a
Speaker 4: whole lot of web apps, right, it would be easier
Speaker 4: for me to put these in a spot where it
Speaker 4: can handle a lot of micro services, right. And so
Speaker 4: that's where Kupernetes was really built to host micro services.
Speaker 4: So dot net aspire.
Speaker 2: But if you have a container service.
Speaker 4: Yeah, Azu container service is a simpler paradigm there. Yeah,
Speaker 4: but dot net Aspire and Kupernetes then kind of solve
Speaker 4: two sides of the same coin, where dot net Aspire
Speaker 4: solves it really nicely in local development and Kupernetes solves
Speaker 4: it really nicely in production.
Speaker 2: Okay, that's well.
Speaker 3: If you have the amens who want to administer Kubernetes,
Speaker 3: yes you are not that automated. Folks need to needs
Speaker 3: care and feeding. Like if you're going down that path,
Speaker 3: other way, I stay in the Azure Container apps land.
Speaker 3: But if they need more dynamic control I want They've
Speaker 3: got other ways they want to do things. You got
Speaker 3: somebody who knows their way around Kubernetes in ops bhind Yeah.
Speaker 2: Yeah.
Speaker 4: The people who administer Kupernetes and the people who use
Speaker 4: Kupernetes are usually different people.
Speaker 3: And you need both, right, Like that's that you get it.
Speaker 3: I get a dev team all jacked up to use Kubernetes,
Speaker 3: and it's like, so you guys going to stay here
Speaker 3: and offer rate this because it doesn't just offerate on
Speaker 3: its own, like it needs some care and feeding.
Speaker 4: Azri Kupernetti service does a pretty good job of keeping
Speaker 4: track of it. For example, upgrading Kupernettes versions in Azure
Speaker 4: is just super simple. I just picked the new version
Speaker 4: from the drop down right. Doing that by hand is
Speaker 4: way hard. So you don't need a dedicated ops team
Speaker 4: to manage Kupernettes in Azure, but it helps.
Speaker 3: If you're using Azure Cubineti service, you're not running your
Speaker 3: own Kubernetess instance switch and you know, folks go down
Speaker 3: that path. I don't know why, but they do.
Speaker 4: And there are definitely reasons for that. But if you're
Speaker 4: getting started with Kupernettes, then my first instruction is don't
Speaker 4: install Kupernettes. Go to your cloud and click that create
Speaker 4: a Kupernettes button.
Speaker 2: Yes, the first rule of Kubernetes. Don't install Kubernetes.
Speaker 3: Now, have you done the path of like from Azure
Speaker 3: Container Apps to Azure Community Kuberneti Service.
Speaker 4: I actually got into Kupernettes before Azure Container Apps was
Speaker 4: a thing, right, and so I kind of look at
Speaker 4: Azure Container Apps as like the train wheels to the
Speaker 4: gateway drug to get you to Kupernetes. Yeah, and I'm like,
Speaker 4: I'm already at Kupernettes. I don't really need to step backwards.
Speaker 2: Yeah, I've just heard.
Speaker 3: It's not that easy to move between these things, Like,
Speaker 3: it's not a trivial thing to pick up and shift over.
Speaker 3: There's no butt that says, hey, I want to run
Speaker 3: this in AKS now, please.
Speaker 4: Right, the config files are significantly different. Yeah, if you
Speaker 4: understand Kupernetes, you can look at the Azure Container Apps
Speaker 4: Gammo files and kind of see the Kupernetes bits kind
Speaker 4: of starting to come through. But yeah, there's a whole
Speaker 4: lot more concepts in kupernettes that you don't see in
Speaker 4: Azure container apps. For example, Kupernettes has a difference between
Speaker 4: services and pods, and Azure Container apps kind of paves
Speaker 4: over that to make them one thing.
Speaker 2: Oh yambo.
Speaker 1: Yeah, yeah, so much hammal, so much ammal.
Speaker 2: All right, there is asure Migrate apparently for doing this.
Speaker 4: But yeah, yeah, it's not impossible. And the cool part
Speaker 4: is that your dot net projects probably don't change at
Speaker 4: all when you move from Azure Container apps to Azrikruperneti service.
Speaker 4: It's just all of the DEVA and ops things under
Speaker 4: the hood.
Speaker 3: Yeah, that's what I figured. It's just you know, we
Speaker 3: also keep offering this whole. You can start here and
Speaker 3: move there. But it's question is how hard is the move.
Speaker 4: And if you're building all these things with Polumi or
Speaker 4: Terraform or even Bicep, then you're rebuilding a.
Speaker 2: Bunch yeah right now.
Speaker 3: And we've done shows before on Bicep and Polumine and
Speaker 3: even Terrorform.
Speaker 2: Do you have a preference?
Speaker 4: I really like Terraform, a project that I'm working on,
Speaker 4: has a whole lot of platform engineering things built up
Speaker 4: in Terraform, and so that was the one that they
Speaker 4: handed us. I like that Terraform now is starting to
Speaker 4: embrace other programming languages. CDK is the project that allows
Speaker 4: you to start writing Terraform in other programming languages like
Speaker 4: c Sharp or JavaScript or other things. And that was
Speaker 4: kind of the big draw of Polumi is to be
Speaker 4: able to get this outside of Terraform into real languages.
Speaker 2: Right.
Speaker 4: Bicep is interesting, but it's Azure only and.
Speaker 2: In the end, it's just generating arm files under the hood.
Speaker 4: And your Terraform or Pulumi files won't go between clouds automatically.
Speaker 4: You know, Amazon's content is different than Azure's content, but
Speaker 4: having a single language across all of the clouds is
Speaker 4: really nice. So yeah, I've really embraced Terrorform.
Speaker 3: Okay, Yeah, and it feels like Polumi pressed Terraform to
Speaker 3: do a better job because Tariform was there first, oh
Speaker 3: of course. And it's never been window centric. I mean,
Speaker 3: the biggest complaint I've ever heard from Terraform from an
Speaker 3: Azure perspective is that they're behind on new Azure features
Speaker 3: that if you're in Terraform, you don't get access those
Speaker 3: feature right away.
Speaker 2: Takes time for their interface to catch up.
Speaker 4: Right, And that's unfortunate. But if you're not on the
Speaker 4: bleeding edge of Azure, then you're not really bothered by that.
Speaker 1: Yeah, And there are two different things, right, isn't Polumi
Speaker 1: like a c Sharp based and Terraform is PowerShell based
Speaker 1: or something like that.
Speaker 4: Terraform has HCl files, which if you squint real hard
Speaker 4: you can see JSON or graph ql, and by comparison,
Speaker 4: Polumi is in Typescript or c sharp or you know
Speaker 4: any language right, right, And so at the end of
Speaker 4: the day, you build these files defining all the configuration
Speaker 4: that you want, and so you know, do you have
Speaker 4: semi colons and curly braces. That's kind of the big
Speaker 4: difference here and then you run on firm command line.
Speaker 1: Eight yamil in ein' yamil. That's good enough for me.
Speaker 2: Uh, Robs, the.
Speaker 3: I see more BICEP folks from the men side of
Speaker 3: DevOps more than the dev side of DevOps, where I
Speaker 3: think Pulumi was very much a dev centric DevOps tool,
Speaker 3: And yeah, Terrorform certainly was, but was embraced by Mode. Again,
Speaker 3: Terraform has the avengage of being the oldest and the
Speaker 3: large largest diversity, and it just felt like they fell
Speaker 3: behind and it was innovation spots. But with CDK, Terraform
Speaker 3: seems to be there, like you get your biggest pool.
Speaker 3: You're definitely platform agnostic, like it's it's a really strong choice, and.
Speaker 4: You have access to all the Terraform providers and modules
Speaker 4: that you always had with Polumi. Yeah, you kind of
Speaker 4: had to make sure that they got them too.
Speaker 1: Yeah, you're starting over, rob, Is there anything we missed,
Speaker 1: anything that you want to mention before we go?
Speaker 4: What's really cool at dot net as is that it
Speaker 4: gives you the chance to do as much or as
Speaker 4: little with it as you want. And so whether you're
Speaker 4: coming at it from a greenfield or a brown field, perspective.
Speaker 4: I think dot net Aspire has really intriguing options for you.
Speaker 4: It's definitely worth kicking the tires there.
Speaker 1: Definitely, Rob Richison, thank you very much. It's a pleasure
Speaker 1: catching up with you again on this show. It's been
Speaker 1: far too long and I hope it's not too long
Speaker 1: before the next time.
Speaker 4: Yeah, I can't wait to do it again. It's great
Speaker 4: catching up with.
Speaker 2: Kill you too. Thanks Matt.
Speaker 1: All right, and we'll talk to you later on dot
Speaker 1: net Rocks. Dot net Rocks is brought to you by
Speaker 1: Franklin's Net and produced by Pop Studios, a full service audio,
Speaker 1: video and post production facility located physically in New London, Connecticut,
Speaker 1: and of course in the cloud online at pwop dot com.
Speaker 1: Visit our website at d O T N E t
Speaker 1: R O c k S dot com for RSS feeds, downloads,
Speaker 1: mobile apps, comments, and access to the full archives going
Speaker 1: back to show number one, recorded in September two thousand
Speaker 1: and two. And make sure you check out our sponsors.
Speaker 1: They keep us in business. Now go write some code.
Speaker 2: See you next time. You got jam Vans
Speaker 4: And